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(); }
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 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 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 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 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 testCollidingImportsWithJavaLang() { final String cls = ClassBuilder.define("my.test.Clazz") .publicScope() .body() .privateField("i", org.jboss.errai.codegen.test.model.Integer.class) .finish() .privateField("j", Integer.class) .finish() .toJavaString(); assertEquals("failed to generate class with colliding imports", CLASS_WITH_COLLIDING_IMPORTS_WITH_JAVA_LANG, cls); }
@Test public void testCollidingImportsWithJavaLangFirst() { final String cls = ClassBuilder.define("my.test.Clazz") .publicScope() .body() .privateField("i", Integer.class) .finish() .privateField("j", org.jboss.errai.codegen.test.model.Integer.class) .finish() .toJavaString(); assertEquals("failed to generate class with colliding imports", CLASS_WITH_COLLIDING_IMPORTS_WITH_JAVA_LANG_FIRST, 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); }
@Test public void testDefineClassWithFieldInheritance() { final String cls = ClassBuilder .define("org.foo.Foo", Parent.class) .publicScope() .body() .publicConstructor() .append(Stmt.loadVariable("parentProtected").assignValue(0)) .append(Stmt.loadVariable("parentPublic").assignValue(0)) .finish() .toJavaString(); assertEquals("failed to generate class with parent", CLASS_WITH_FIELD_INHERITANCE, cls); }
/** Regression test for ERRAI-363. */ @Test public void testReferenceToAnonymousClassMember() throws Exception { ClassStructureBuilder<?> builder = ClassBuilder.define("com.foo.A").publicScope().body(); builder.privateMethod(void.class, "method") .append(ObjectBuilder.newInstanceOf(Runnable.class).extend() .privateField("memberOfRunnable", Object.class).finish() .publicOverridesMethod("run").append(Stmt.loadVariable("memberOfRunnable").invoke("hashCode")).finish() .finish()) .finish(); String javaString = builder.toJavaString(); assertEquals("package com.foo; public class A { private void method() { new Runnable() { private Object memberOfRunnable; public void run() { memberOfRunnable.hashCode(); } }; } }", javaString); }