public static ElementHandle createElementHandle()

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);
    }