log.info("generating RPC proxy loader class..."); ClassStructureBuilder<?> classBuilder = ClassBuilder.implement(RpcProxyLoader.class); final long time = System.currentTimeMillis(); final MethodBlockBuilder<?> loadProxies =
public static ClassStructureBuilder<?> implement(final Class<?> cls) { return implement(MetaClassFactory.get(cls)); }
public static ClassStructureBuilder<?> implement(final Class<?> cls) { return implement(MetaClassFactory.get(cls)); }
@Test public void testDefineClassByImplementingInterface() { final String cls = ClassBuilder.implement(Baz.class) .publicMethod(void.class, "someMethod") .finish().toJavaString(); assertEquals("failed to generate class by implementing an interface", CLASS_DEFINITION_BY_IMPLEMENTING_INTERFACE, cls); }
log.info("generating RPC proxy loader class..."); ClassStructureBuilder<?> classBuilder = ClassBuilder.implement(RpcProxyLoader.class); final long time = System.currentTimeMillis(); final MethodBlockBuilder<?> loadProxies =
@Override protected String generate(final TreeLogger logger, final GeneratorContext context) { ClassStructureBuilder<?> classBuilder = ClassBuilder.implement(BindableProxyLoader.class); final MethodBlockBuilder<?> loadProxies = classBuilder.publicMethod(void.class, "loadBindableProxies");
@Override protected String generate(final TreeLogger logger, final GeneratorContext context) { ClassStructureBuilder<?> classBuilder = ClassBuilder.implement(BindableProxyLoader.class); final MethodBlockBuilder<?> loadProxies = classBuilder.publicMethod(void.class, "loadBindableProxies");
@Override protected String generate(final TreeLogger logger, final GeneratorContext context) { ClassStructureBuilder<?> classBuilder = ClassBuilder.implement(JaxrsProxyLoader.class); MethodBlockBuilder<?> loadProxies = classBuilder.publicMethod(void.class, "loadProxies"); final InterceptorProvider interceptorProvider = getInterceptorProvider(context); final Multimap<MetaClass, MetaClass> exceptionMappers = getClientExceptionMappers(context); Collection<MetaClass> remotes = ClassScanner.getTypesAnnotatedWith(Path.class, RebindUtils.findTranslatablePackages(context), context); addCacheRelevantClasses(remotes); for (MetaClass remote : remotes) { if (remote.isInterface()) { // create the remote proxy for this interface ClassStructureBuilder<?> remoteProxy = new JaxrsProxyGenerator(remote, context, interceptorProvider, exceptionMappers).generate(); loadProxies.append(new InnerClass(remoteProxy.getClassDefinition())); // create the proxy provider Statement proxyProvider = ObjectBuilder.newInstanceOf(ProxyProvider.class) .extend() .publicOverridesMethod("getProxy") .append(Stmt.nestedCall(Stmt.newObject(remoteProxy.getClassDefinition())).returnValue()) .finish() .finish(); // create the call that registers the proxy provided for the generated proxy loadProxies.append(Stmt.invokeStatic(RemoteServiceProxyFactory.class, "addRemoteProxy", remote, proxyProvider)); } } classBuilder = (ClassStructureBuilder<?>) loadProxies.finish(); return classBuilder.toJavaString(); }