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 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 MetaClass cls) { return new ClassBuilder<DefaultClassStructureBuilder>(cls.getFullyQualifiedName() + "Impl", null, Context.create() .autoImport()) .publicScope() .implementsInterface(cls).body(); }
public static ClassStructureBuilder<?> implement(final MetaClass cls) { return new ClassBuilder<DefaultClassStructureBuilder>(cls.getFullyQualifiedName() + "Impl", null, Context.create() .autoImport()) .publicScope() .implementsInterface(cls).body(); }
@Before @SuppressWarnings({ "unchecked", "rawtypes" }) public void setup() { MetaClassFactory.getMetaClassCache().clear(); FactoryGenerator.setDependencyGraph(null); final QualifierFactory qualFactory = new DefaultQualifierFactory(); when(injContext.getQualifierFactory()).thenReturn(qualFactory); when(injContext.getInjectableProviders()).thenReturn(HashMultimap.create()); when(injContext.getExactTypeInjectableProviders()).thenReturn(HashMultimap.create()); when(injContext.getAnnotationsForElementType(DependentBean)).thenReturn(Arrays.asList(Dependent.class)); when(injContext.getAnnotationsForElementType(NormalScopedBean)).thenReturn(Arrays.asList(ApplicationScoped.class)); when(injContext.getAnnotationsForElementType(PseudoScopedBean)).thenReturn(Arrays.asList(Singleton.class, Dependent.class)); when(injContext.getAnnotationsForElementType(AlternativeBean)).thenReturn(Arrays.asList(Alternative.class)); when(injContext.getAnnotationsForElementType(InjectionPoint)).thenReturn(Arrays.asList(Inject.class)); when(injContext.getAnnotationsForElementType(ProducerElement)).thenReturn(Arrays.asList(IOCProducer.class)); when(injContext.getAnnotationsForElementType(Provider)).thenReturn(Arrays.asList(IOCProvider.class)); when(injContext.isWhitelisted(any())).thenReturn(true); when(injContext.isBlacklisted(any())).thenReturn(false); final ClassStructureBuilder<?> classBuilder = ClassBuilder .define("org.jboss.errai.ioc.FakeBootstrapperImpl") .publicScope() .implementsInterface(Bootstrapper.class) .body(); final BlockBuilder blockBuilder = classBuilder.publicMethod(ContextManager.class, "bootstrap").body(); when(procContext.getBlockBuilder()).thenReturn(blockBuilder); when(procContext.getBootstrapBuilder()).thenReturn(classBuilder); when(procContext.getBootstrapClass()).thenReturn(classBuilder.getClassDefinition()); processor = new IOCProcessor(injContext); }
@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); }
.implementsInterface(IOCEnvironment.class) .body() .publicMethod(boolean.class, "isAsync")
.define(injectable.getFactoryName() + "ProxyImpl") .privateScope() .implementsInterface(parameterizedAs(Proxy.class, typeParametersOf(injectedType))) .implementsInterface(injectedType).body(); declareAndInitializeProxyHelper(injectable, proxyImpl); .define(injectable.getFactoryName() + "ProxyImpl", injectedType) .privateScope() .implementsInterface(parameterizedAs(Proxy.class, typeParametersOf(injectedType))).body(); declareAndInitializeProxyHelper(injectable, proxyImpl); } else if (!requiresProxy) {
@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 testCollidingImportsWithInnerClassFirst() { final String cls = ClassBuilder.define("my.test.Clazz") .publicScope() .implementsInterface(TestInterface.class) .implementsInterface(org.jboss.errai.codegen.test.model.TestInterface.class) .implementsInterface(Serializable.class) .body() .privateField("name", String.class) .finish() .toJavaString(); assertEquals("failed to generate class with colliding imports", CLASS_WITH_COLLIDING_IMPORTS_WITH_INNER_CLASS_FIRST, cls); }
@Test public void testCollidingImportsWithInnerClass() { final String cls = ClassBuilder.define("my.test.Clazz") .publicScope() .implementsInterface(org.jboss.errai.codegen.test.model.TestInterface.class) .implementsInterface(TestInterface.class) .implementsInterface(Serializable.class) .body() .privateField("name", String.class) .finish() .toJavaString(); assertEquals("failed to generate class with colliding imports", CLASS_WITH_COLLIDING_IMPORTS_WITH_INNER_CLASS, cls); }
@Test public void testMethodAnnotated() { final String cls = ClassBuilder.define("MyRunnable") .publicScope().implementsInterface(Runnable.class) .body() .publicMethod(void.class, "run") .annotatedWith(new SuppressWarnings() { @Override public String[] value() { return new String[]{"blah"}; } @Override public Class<? extends Annotation> annotationType() { return SuppressWarnings.class; } }).body() .append(Stmt.returnVoid()) .finish().toJavaString(); assertEquals("public class MyRunnable implements Runnable {\n" + " @SuppressWarnings(\"blah\") public void run() {\n" + " return;\n" + " }\n" + "}", cls); }
@Test public void testDefineInnerClassInMethod() { final ClassStructureBuilder<?> innerClass = ClassBuilder.define("Inner") .packageScope() .implementsInterface(Serializable.class) .body() .privateField("name", String.class) .finish() .publicMethod(void.class, "setName", Parameter.of(String.class, "name", true)) .append(Stmt.loadClassMember("name").assignValue(Variable.get("name"))) .finish(); final String cls = ClassBuilder.define("foo.bar.Baz") .publicScope() .body() .publicMethod(void.class, "someMethod") .append(new InnerClass(innerClass.getClassDefinition())) .append(Stmt.newObject(innerClass.getClassDefinition())) .finish() .toJavaString(); assertEquals("failed to generate class with method using inner class", CLASS_WITH_METHOD_USING_INNER_CLASS, cls); }
.define("Dynamic" + fullyQualifiedClassNameToCamelCase(validator.getFullyQualifiedName()), validator) .publicScope() .implementsInterface(parameterizedAs(GeneratedDynamicValidator.class, typeParametersOf(valueType))) .body();