public ClassStructureBuilder<?> generate() { final String safeProxyClassName = remote.getFullyQualifiedName().replace('.', '_') + "Impl"; final ClassStructureBuilder<?> classBuilder = ClassBuilder.define(safeProxyClassName, AbstractRpcProxy.class) .packageScope() .implementsInterface(remote) .body(); for (final MetaMethod method : remote.getMethods()) { if (ProxyUtil.shouldProxyMethod(method)) { generateMethod(classBuilder, method); } } return classBuilder; }
public static ClassStructureBuilder<?> implement(final Class<?> clazz) { return ClassBuilder.define(clazz.getPackage().getName() + "." + clazz.getSimpleName() + "Impl") .publicScope() .implementsInterface(clazz) .body(); }
public static ClassStructureBuilder<?> implement(final Class<?> clazz) { return ClassBuilder.define(clazz.getPackage().getName() + "." + clazz.getSimpleName() + "Impl") .publicScope() .implementsInterface(clazz) .body(); }
public static ClassStructureBuilder<?> implement(final Class<?> clazz, final String implClassName) { return ClassBuilder.define(clazz.getPackage().getName() + "." + implClassName) .publicScope() .implementsInterface(clazz) .body(); }
public static ClassStructureBuilder<?> implement(final Class<?> clazz, final String implClassName) { return ClassBuilder.define(clazz.getPackage().getName() + "." + implClassName) .publicScope() .implementsInterface(clazz) .body(); }
public static ClassStructureBuilder<?> implement(final Class<?> clazz, final String implPackageName, final String implClassName) { return ClassBuilder.define(implPackageName + "." + implClassName) .publicScope() .implementsInterface(clazz) .body(); }
public static ClassStructureBuilder<?> implement(final Class<?> clazz, final String implPackageName, final String implClassName) { return ClassBuilder.define(implPackageName + "." + implClassName) .publicScope() .implementsInterface(clazz) .body(); }
public static BuildMetaClass createArrayMarshallerClass(final MetaClass type) { final BuildMetaClass arrayMarshaller = ClassBuilder .define(MARSHALLER_NAME_PREFIX + getVarName(type)).packageScope() .abstractClass() .implementsInterface( MetaClassFactory.get(GeneratedMarshaller.class)) .body().getClassDefinition(); return arrayMarshaller; }
public static BuildMetaClass createArrayMarshallerClass(final MetaClass type) { final BuildMetaClass arrayMarshaller = ClassBuilder .define(MARSHALLER_NAME_PREFIX + getVarName(type)).packageScope() .abstractClass() .implementsInterface( MetaClassFactory.get(GeneratedMarshaller.class)) .body().getClassDefinition(); return arrayMarshaller; }
private MetaClass addFactoryDeclaration(final String factoryName, final MetaClass typeCreatedByFactory, final IOCProcessingContext processingContext) { final ClassStructureBuilder<?> builder = processingContext.getBootstrapBuilder(); final BuildMetaClass factory = ClassBuilder .define(factoryName, parameterizedAs(Factory.class, typeParametersOf(typeCreatedByFactory))) .publicScope().abstractClass().body().getClassDefinition(); builder.declaresInnerClass(new InnerClass(factory)); return factory; }
@Test public void testDefineClassWithInnerClass() { final ClassStructureBuilder<?> innerClass = ClassBuilder.define("Inner") .publicScope().body(); final String cls = ClassBuilder.define("foo.bar.Baz") .publicScope() .body() .declaresInnerClass(new InnerClass(innerClass.getClassDefinition())) .toJavaString(); assertEquals("failed to generate class with method using inner class", CLASS_DECLARING_INNER_CLASS, cls); }
private static String constructTypeWithAnnotation(Annotation... annotations) { ClassStructureBuilder<?> builder = ClassBuilder.define("FooBar").publicScope().body(); for (Annotation annotation : annotations) { builder.getClassDefinition().addAnnotation(annotation); } return builder.toJavaString(); }
@Test public void testDefineClassImplementingInterface() { final String cls = ClassBuilder.define("org.foo.Bar") .publicScope() .implementsInterface(Serializable.class) .body() .privateField("name", String.class) .finish() .toJavaString(); System.out.println(cls); assertEquals("failed to generate class definition implementing an interface", CLASS_IMPLEMENTING_INTERFACE, cls); }
@Test public void testClassComment() throws Exception { final String cls = ClassBuilder.define("org.foo.Bar") .classComment("A foo-ish bar") .publicScope() .body() .toJavaString(); assertEquals(CLASS_WITH_CLASS_COMMENT, cls); } }
@Test public void testDefineAbstractClass() { final String cls = ClassBuilder .define("org.foo.Foo") .publicScope() .abstractClass() .body() .publicConstructor() .finish() .toJavaString(); assertEquals("failed to generate abstract class", ABSTRACT_CLASS, cls); }
@Test public void testDefineClassWithConstructorCallingSuper() { final String cls = ClassBuilder.define("org.foo.Foo") .publicScope() .body() .publicConstructor() .callSuper() .finish() .toJavaString(); assertEquals("failed to generate class with constructor calling super()", CLASS_WITH_CONSTRUCTOR_CALLING_SUPER, cls); }
@Test public void testDefineClassWithParent() { final String cls = ClassBuilder .define("org.foo.Foo", String.class) .publicScope() .body() .publicConstructor(Parameter.of(int.class, "i")) .finish() .toJavaString(); assertEquals("failed to generate class with parent", CLASS_WITH_PARENT, cls); }
@Test public void testDefineClassImplementingMultipleInterfaces() { final String cls = ClassBuilder.define("org.foo.Bar") .publicScope() .implementsInterface(Serializable.class) .implementsInterface(Cloneable.class) .body() .privateField("name", String.class) .finish() .toJavaString(); assertEquals("failed to generate class definition implementing multiple interfaces", CLASS_IMPLEMENTING_MULTIPLE_INTERFACES, cls); }
@Test public void testDefineClassWithStaticMethod() { final String cls = ClassBuilder.define("my.test.Clazz") .publicScope().body() .publicMethod(void.class, "test").modifiers(Modifier.Static) .body() .append(Stmt.loadStatic(System.class, "out").invoke("println", "Hello, World!")) .finish() .toJavaString(); assertEquals("failed to generate class with static method", CLASS_WITH_STATIC_METHOD, cls); }
@Test public void testDefineClassWithJSNIMethod() { final String cls = ClassBuilder.define("my.test.Clazz") .publicScope().body() .publicMethod(void.class, "test").modifiers(Modifier.JSNI) .body() .append(Stmt.loadStatic(System.class, "out").invoke("println", "Hello, World!")) .finish() .toJavaString(); assertEquals("failed to generate class with JSNI method", CLASS_WITH_JSNI_METHOD, cls); }