private EventRequest createMethodRequest(JDXDebugTarget target, Object classFilter, boolean entry) throws CoreException { EventRequest request = null; EventRequestManager manager = target.getEventRequestManager(); if (manager == null) { target.requestFailed( JDXMessages.JDXMethodBreakpoint_Unable_to_create_breakpoint_request___VM_disconnected__1, null); //$NON-NLS-1$ } try { if (entry) { if (classFilter instanceof ClassType && getMethodName() != null && getMethodSignature() != null) { ClassType clazz = (ClassType) classFilter; if (clazz.name().equals(getTypeName())) { Method method = clazz.concreteMethodByName(getMethodName(), getMethodSignature()); if (method != null && !method.isNative()) { Location location = method.location(); if (location != null && location.codeIndex() != -1) { request = manager.createBreakpointRequest(location); } } } } if (request == null) { request = manager.createMethodEntryRequest(); if (classFilter instanceof String) { ((MethodEntryRequest) request).addClassFilter((String) classFilter); } else if (classFilter instanceof ReferenceType) { ((MethodEntryRequest) request).addClassFilter((ReferenceType) classFilter); } } } else { request = manager.createMethodExitRequest(); if (classFilter instanceof String) { ((MethodExitRequest) request).addClassFilter((String) classFilter); } else if (classFilter instanceof ReferenceType) { ((MethodExitRequest) request).addClassFilter((ReferenceType) classFilter); } } configureRequest(request, target); } catch (VMDisconnectedException e) { if (!target.isAvailable()) { return null; } Plugin.log(e); } catch (RuntimeException e) { target.internalError(e); } return request; }