private IGosuClass createJavaInterfaceProxy(final IJavaType type) { final IModule module = type.getTypeLoader().getModule(); GosuClassTypeLoader loader = GosuClassTypeLoader.getDefaultClassLoader(module); return loader.makeNewClass( new LazyStringSourceFileHandle( type, new Callable<StringBuilder>() { public StringBuilder call() { module.getExecutionEnvironment().pushModule(module); try { return genJavaInterfaceProxy(type); } finally { module.getExecutionEnvironment().popModule(module); } } })); }
private IGosuClass createJavaClassProxy(final IJavaType type) { String strProxy = IGosuClass.PROXY_PREFIX + '.' + type.getName(); IType compilingType = GosuClassCompilingStack.getCompilingType(strProxy); if (compilingType != null) { return (IGosuClass) compilingType; } final IModule module = type.getTypeLoader().getModule(); return GosuClassTypeLoader.getDefaultClassLoader(module) .makeNewClass( new LazyStringSourceFileHandle( type, new Callable<StringBuilder>() { public StringBuilder call() { module.getExecutionEnvironment().pushModule(module); try { return genJavaClassProxy(type); } finally { module.getExecutionEnvironment().popModule(module); } } })); }