classBuilder = (ClassStructureBuilder<?>) loadProxies.finish();
private void addCssResourceMethod( final ClassStructureBuilder<ClassStructureBuilderAbstractMethodOption> componentTemplateResource, final String templateStyleSheetPath) { componentTemplateResource.publicMethod(CssResource.class, "getStyle").annotatedWith(new Source() { @Override public Class<? extends Annotation> annotationType() { return Source.class; } @Override public String[] value() { return new String[] { templateStyleSheetPath }; } }, new CssResource.NotStrict() { @Override public Class<? extends Annotation> annotationType() { return CssResource.NotStrict.class; } }).finish(); }
private void addCssResourceMethod( final ClassStructureBuilder<ClassStructureBuilderAbstractMethodOption> componentTemplateResource, final String templateStyleSheetPath) { componentTemplateResource.publicMethod(CssResource.class, "getStyle").annotatedWith(new Source() { @Override public Class<? extends Annotation> annotationType() { return Source.class; } @Override public String[] value() { return new String[] { templateStyleSheetPath }; } }, new CssResource.NotStrict() { @Override public Class<? extends Annotation> annotationType() { return CssResource.NotStrict.class; } }).finish(); }
cmm.finish();
classBuilder = (ClassStructureBuilder<?>) loadProxies.finish();
/** * Create an inner interface for the given {@link MessageBundle} class and its corresponding JSON * resource. * * @param bundlePath * path to the message bundle */ private BuildMetaClass generateMessageBundleResourceInterface(final String bundlePath) { final ClassStructureBuilder<?> componentMessageBundleResource = ClassBuilder .define(getMessageBundleTypeName(bundlePath)).publicScope() .interfaceDefinition().implementsInterface(MessageBundle.class) .implementsInterface(ClientBundle.class).body() .publicMethod(TextResource.class, "getContents") .annotatedWith(new Source() { @Override public Class<? extends Annotation> annotationType() { return Source.class; } @Override public String[] value() { return new String[] { bundlePath }; } }).finish(); return componentMessageBundleResource.getClassDefinition(); }
/** * Create an inner interface for the given {@link MessageBundle} class and its corresponding JSON * resource. * * @param bundlePath * path to the message bundle */ private BuildMetaClass generateMessageBundleResourceInterface(final String bundlePath) { final ClassStructureBuilder<?> componentMessageBundleResource = ClassBuilder .define(getMessageBundleTypeName(bundlePath)).publicScope() .interfaceDefinition().implementsInterface(MessageBundle.class) .implementsInterface(ClientBundle.class).body() .publicMethod(TextResource.class, "getContents") .annotatedWith(new Source() { @Override public Class<? extends Annotation> annotationType() { return Source.class; } @Override public String[] value() { return new String[] { bundlePath }; } }).finish(); return componentMessageBundleResource.getClassDefinition(); }
@Test public void testDefineClassWithMethodHavingThrowsDeclaration() { @SuppressWarnings("unchecked") final String cls = ClassBuilder .define("org.foo.Foo") .publicScope() .body() .publicMethod(void.class, "initialize") .throws_(Exception.class, IllegalArgumentException.class) .finish() .toJavaString(); assertEquals("failed to generate class with method having throws declaration", CLASS_WITH_METHOD_HAVING_THROWS_DECLARATION, cls); }
cmm.finish();
classBuilder = (ClassStructureBuilder<?>) loadProxies.finish(); return classBuilder.toJavaString();
classBuilder = (ClassStructureBuilder<?>) loadProxies.finish(); return classBuilder.toJavaString();
@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(); }
final AnonymousClassStructureBuilder classStructureBuilder = isEqualBuilder.finish();