private static String[] interfaceNamesForProxyClass(final Class[] interfaces) { String[] interfaceNames = new String[interfaces.length + 1]; for (int i = 0; i < interfaces.length; i++) { interfaceNames[i] = toInternalClassName(interfaces[i]); } // all proxies implement our InternalJavaProxy interface : interfaceNames[interfaces.length] = toInternalClassName(InternalJavaProxy.class); return interfaceNames; }
private String[] interfaceNamesForProxyClass(final Class[] interfaces) { String[] interfaceNames = new String[interfaces.length + 1]; for (int i = 0; i < interfaces.length; i++) { interfaceNames[i] = toInternalClassName(interfaces[i]); } interfaceNames[interfaces.length] = toInternalClassName(InternalJavaProxy.class); return interfaceNames; }
private static String[] interfaceNamesForProxyClass(final Class[] interfaces) { String[] interfaceNames = new String[interfaces.length + 1]; for (int i = 0; i < interfaces.length; i++) { interfaceNames[i] = toInternalClassName(interfaces[i]); } // all proxies implement our InternalJavaProxy interface : interfaceNames[interfaces.length] = toInternalClassName(InternalJavaProxy.class); return interfaceNames; }
private String[] interfaceNamesForProxyClass(final Class[] interfaces) { String[] interfaceNames = new String[interfaces.length + 1]; for (int i = 0; i < interfaces.length; i++) { interfaceNames[i] = toInternalClassName(interfaces[i]); } interfaceNames[interfaces.length] = toInternalClassName(InternalJavaProxy.class); return interfaceNames; }
private static String toInternalClassName(Class clazz) { return toInternalClassName(clazz.getName()); }
private static String toInternalClassName(Class clazz) { return toInternalClassName(clazz.getName()); }
private static String toInternalClassName(Class clazz) { return toInternalClassName(clazz.getName()); }
private static String toInternalClassName(Class clazz) { return toInternalClassName(clazz.getName()); }
Type selfType = Type.getType("L" + toInternalClassName(targetClassName) + ";"); proxyClass = generate(loader, targetClassName, superClass, interfaces, collectMethods(superClass, interfaces, names), selfType);
Type selfType = Type.getType("L" + toInternalClassName(targetClassName) + ";"); proxyClass = generate(loader, targetClassName, superClass, interfaces, collectMethods(superClass, interfaces, names), selfType);
public JavaProxyClass newProxyClass(final Ruby runtime, ClassDefiningClassLoader loader, String targetClassName, Class superClass, Class[] interfaces, Set<String> names) throws InvocationTargetException { if (targetClassName == null) { targetClassName = targetClassName(superClass); } validateArgs(runtime, targetClassName, superClass); Type selfType = Type.getType('L' + toInternalClassName(targetClassName) + ';'); Map<MethodKey, MethodData> methods = collectMethods(superClass, interfaces, names); return generate(loader, targetClassName, superClass, interfaces, methods, selfType); }
public JavaProxyClass newProxyClass(final Ruby runtime, ClassDefiningClassLoader loader, String targetClassName, Class superClass, Class[] interfaces, Set<String> names) throws InvocationTargetException { if (targetClassName == null) { targetClassName = targetClassName(superClass); } validateArgs(runtime, targetClassName, superClass); Type selfType = Type.getType('L' + toInternalClassName(targetClassName) + ';'); Map<MethodKey, MethodData> methods = collectMethods(superClass, interfaces, names); return generate(loader, targetClassName, superClass, interfaces, methods, selfType); }
private ClassWriter beginProxyClass(final String className, final Class superClass, final Class[] interfaces) { ClassWriter cw = new ClassWriter(ClassWriter.COMPUTE_MAXS); // start class cw.visit(Opcodes.V1_3, Opcodes.ACC_PUBLIC | Opcodes.ACC_FINAL | Opcodes.ACC_SUPER, toInternalClassName(className), /*signature*/ null, toInternalClassName(superClass), interfaceNamesForProxyClass(interfaces)); cw.visitField(Opcodes.ACC_PRIVATE, INVOCATION_HANDLER_FIELD_NAME, INVOCATION_HANDLER_TYPE.getDescriptor(), null, null).visitEnd(); cw.visitField(Opcodes.ACC_PRIVATE | Opcodes.ACC_STATIC, PROXY_CLASS_FIELD_NAME, PROXY_CLASS_TYPE.getDescriptor(), null, null).visitEnd(); return cw; }
private ClassWriter beginProxyClass(final String className, final Class superClass, final Class[] interfaces) { ClassWriter cw = new ClassWriter(ClassWriter.COMPUTE_MAXS); // start class cw.visit(Opcodes.V1_3, Opcodes.ACC_PUBLIC | Opcodes.ACC_FINAL | Opcodes.ACC_SUPER, toInternalClassName(className), /*signature*/ null, toInternalClassName(superClass), interfaceNamesForProxyClass(interfaces)); cw.visitField(Opcodes.ACC_PRIVATE, INVOCATION_HANDLER_FIELD_NAME, INVOCATION_HANDLER_TYPE.getDescriptor(), null, null).visitEnd(); cw.visitField(Opcodes.ACC_PRIVATE | Opcodes.ACC_STATIC, PROXY_CLASS_FIELD_NAME, PROXY_CLASS_TYPE.getDescriptor(), null, null).visitEnd(); return cw; }
private static ClassWriter beginProxyClass(final String className, final Class superClass, final Class[] interfaces, final ClassDefiningClassLoader loader) { ClassWriter cw = ASM.newClassWriter(loader.asClassLoader()); // start class cw.visit(JAVA_VERSION, Opcodes.ACC_PUBLIC | Opcodes.ACC_FINAL | Opcodes.ACC_SUPER, toInternalClassName(className), /*signature*/ null, toInternalClassName(superClass), interfaceNamesForProxyClass(interfaces)); // private final JavaProxyInvocationHandler __handler; cw.visitField(Opcodes.ACC_PRIVATE | Opcodes.ACC_FINAL, INVOCATION_HANDLER_FIELD_NAME, INVOCATION_HANDLER_TYPE.getDescriptor(), null, null ).visitEnd(); // /* public */ static final JavaProxyClass __proxy_class; cw.visitField(Opcodes.ACC_PUBLIC | Opcodes.ACC_STATIC | Opcodes.ACC_FINAL, PROXY_CLASS_FIELD_NAME, PROXY_CLASS_TYPE.getDescriptor(), null, null ).visitEnd(); return cw; }
private static ClassWriter beginProxyClass(final String className, final Class superClass, final Class[] interfaces, final ClassDefiningClassLoader loader) { ClassWriter cw = ASM.newClassWriter(loader.asClassLoader()); // start class cw.visit(JAVA_VERSION, Opcodes.ACC_PUBLIC | Opcodes.ACC_FINAL | Opcodes.ACC_SUPER, toInternalClassName(className), /*signature*/ null, toInternalClassName(superClass), interfaceNamesForProxyClass(interfaces)); // private final JavaProxyInvocationHandler __handler; cw.visitField(Opcodes.ACC_PRIVATE | Opcodes.ACC_FINAL, INVOCATION_HANDLER_FIELD_NAME, INVOCATION_HANDLER_TYPE.getDescriptor(), null, null ).visitEnd(); // /* public */ static final JavaProxyClass __proxy_class; cw.visitField(Opcodes.ACC_PUBLIC | Opcodes.ACC_STATIC | Opcodes.ACC_FINAL, PROXY_CLASS_FIELD_NAME, PROXY_CLASS_TYPE.getDescriptor(), null, null ).visitEnd(); return cw; }