private static void generateInterfaceProxy(final Ruby runtime, final Class javaClass, final RubyModule proxy) { assert javaClass.isInterface(); // include any interfaces we extend final Class<?>[] extended = javaClass.getInterfaces(); for (int i = extended.length; --i >= 0; ) { RubyModule extModule = getInterfaceModule(runtime, extended[i]); proxy.includeModule(extModule); } Initializer.setupProxyModule(runtime, javaClass, proxy); addToJavaPackageModule(proxy); }
private static void generateInterfaceProxy(final Ruby runtime, final Class javaClass, final RubyModule proxy) { assert javaClass.isInterface(); // include any interfaces we extend final Class<?>[] extended = javaClass.getInterfaces(); for (int i = extended.length; --i >= 0; ) { RubyModule extModule = getInterfaceModule(runtime, extended[i]); proxy.includeModule(extModule); } Initializer.setupProxyModule(runtime, javaClass, proxy); addToJavaPackageModule(proxy); }
proxy.getMetaClass().defineAnnotatedMethods(OldStyleExtensionInherited.class); addToJavaPackageModule(proxy); addToJavaPackageModule(proxy);
proxy.getMetaClass().defineAnnotatedMethods(OldStyleExtensionInherited.class); addToJavaPackageModule(proxy); addToJavaPackageModule(proxy);
proxyClass.getMetaClass().defineAnnotatedMethods(Java.OldStyleExtensionInherited.class); addToJavaPackageModule(proxyClass, javaClass); addToJavaPackageModule(proxyClass, javaClass);
proxyClass.getMetaClass().defineAnnotatedMethods(Java.OldStyleExtensionInherited.class); addToJavaPackageModule(proxyClass, javaClass); addToJavaPackageModule(proxyClass, javaClass);
public static RubyModule getInterfaceModule(Ruby runtime, JavaClass javaClass) { if (!javaClass.javaClass().isInterface()) { throw runtime.newArgumentError(javaClass.toString() + " is not an interface"); } RubyModule interfaceModule; if ((interfaceModule = javaClass.getProxyModule()) != null) { return interfaceModule; } javaClass.lockProxy(); try { if ((interfaceModule = javaClass.getProxyModule()) == null) { interfaceModule = (RubyModule) runtime.getJavaSupport().getJavaInterfaceTemplate().dup(); interfaceModule.setInstanceVariable("@java_class", javaClass); javaClass.setupInterfaceModule(interfaceModule); // include any interfaces we extend Class<?>[] extended = javaClass.javaClass().getInterfaces(); for (int i = extended.length; --i >= 0;) { JavaClass extendedClass = JavaClass.get(runtime, extended[i]); RubyModule extModule = getInterfaceModule(runtime, extendedClass); interfaceModule.includeModule(extModule); } addToJavaPackageModule(interfaceModule, javaClass); } } finally { javaClass.unlockProxy(); } return interfaceModule; }
public static RubyModule getInterfaceModule(Ruby runtime, JavaClass javaClass) { if (!javaClass.javaClass().isInterface()) { throw runtime.newArgumentError(javaClass.toString() + " is not an interface"); } RubyModule interfaceModule; if ((interfaceModule = javaClass.getProxyModule()) != null) { return interfaceModule; } javaClass.lockProxy(); try { if ((interfaceModule = javaClass.getProxyModule()) == null) { interfaceModule = (RubyModule) runtime.getJavaSupport().getJavaInterfaceTemplate().dup(); interfaceModule.setInstanceVariable("@java_class", javaClass); javaClass.setupInterfaceModule(interfaceModule); // include any interfaces we extend Class<?>[] extended = javaClass.javaClass().getInterfaces(); for (int i = extended.length; --i >= 0;) { JavaClass extendedClass = JavaClass.get(runtime, extended[i]); RubyModule extModule = getInterfaceModule(runtime, extendedClass); interfaceModule.includeModule(extModule); } addToJavaPackageModule(interfaceModule, javaClass); } } finally { javaClass.unlockProxy(); } return interfaceModule; }