RubyClass superClass = null; if (clazz.isInterface()) { proxy = (RubyModule) runtime.getJavaSupport().getJavaInterfaceTemplate().dup(); } else { if (clazz.isArray()) {
RubyClass superClass = null; if (clazz.isInterface()) { proxy = (RubyModule) runtime.getJavaSupport().getJavaInterfaceTemplate().dup(); } else { if (clazz.isArray()) {
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; }