in remoting/ide/api/src/org/netbeans/modules/jackpot30/remoting/api/Utilities.java [192:242]
public static ElementHandle<?> createElementHandle(ElementKind kind, String clazz, String simpleName, String signature) {
LOG.setLevel(Level.ALL);
try {
Class<?> elementHandleAccessor = Class.forName("org.netbeans.modules.java.source.ElementHandleAccessor", false, ElementHandle.class.getClassLoader());
Field instance = elementHandleAccessor.getDeclaredField("INSTANCE");
instance.setAccessible(true);
Method m = elementHandleAccessor.getDeclaredMethod("create", ElementKind.class, String[].class);
String[] signatures;
switch (kind) {
case PACKAGE:
case CLASS:
case INTERFACE:
case ENUM:
case ANNOTATION_TYPE:
case OTHER:
signatures = new String[] {clazz};
break;
case METHOD:
case CONSTRUCTOR:
case FIELD:
case ENUM_CONSTANT:
signatures = new String[] {clazz, simpleName, signature};
break;
case INSTANCE_INIT:
case STATIC_INIT:
signatures = new String[] {clazz, simpleName};
break;
default:
kind = ElementKind.OTHER;
signatures = new String[] {clazz};
break;
}
return (ElementHandle<?>) m.invoke(instance.get(null), kind, signatures);
} catch (IllegalAccessException ex) {
LOG.log(Level.INFO, null, ex);
} catch (IllegalArgumentException ex) {
LOG.log(Level.INFO, null, ex);
} catch (InvocationTargetException ex) {
LOG.log(Level.INFO, null, ex);
} catch (NoSuchMethodException ex) {
LOG.log(Level.INFO, null, ex);
} catch (NoSuchFieldException ex) {
LOG.log(Level.INFO, null, ex);
} catch (SecurityException ex) {
LOG.log(Level.INFO, null, ex);
} catch (ClassNotFoundException ex) {
LOG.log(Level.INFO, null, ex);
}
return ElementHandle.createTypeElementHandle(ElementKind.CLASS, clazz);
}