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 testDefineAbstractClass() { final String cls = ClassBuilder .define("org.foo.Foo") .publicScope() .abstractClass() .body() .publicConstructor() .finish() .toJavaString(); assertEquals("failed to generate abstract class", ABSTRACT_CLASS, cls); }
public void addMarshaller(final MetaClass type) { if (!mappingContext.isRendered(type)) { mappingContext.markRendered(type); BuildMetaClass customMarshaller = null; if (target == MarshallerOutputTarget.GWT) { customMarshaller = ClassBuilder .define(MARSHALLER_NAME_PREFIX + getVarName(type)).packageScope() .abstractClass() .implementsInterface( MetaClassFactory.get(GeneratedMarshaller.class)) .body().getClassDefinition(); } else { final MappingStrategy strategy = MappingStrategyFactory .createStrategy(false, GeneratorMappingContextFactory.getFor(context, target), type); final String marshallerClassName = generateMarshallerImplClassName(type, target == MarshallerOutputTarget.GWT); final ClassStructureBuilder<?> marshaller = strategy.getMapper().getMarshaller(marshallerClassName); customMarshaller = marshaller.getClassDefinition(); } classStructureBuilder.declaresInnerClass(new InnerClass(customMarshaller)); addMarshaller(customMarshaller, type); } }
public void addMarshaller(final MetaClass type) { if (!mappingContext.isRendered(type)) { mappingContext.markRendered(type); BuildMetaClass customMarshaller = null; if (target == MarshallerOutputTarget.GWT) { customMarshaller = ClassBuilder .define(MARSHALLER_NAME_PREFIX + getVarName(type)).packageScope() .abstractClass() .implementsInterface( MetaClassFactory.get(GeneratedMarshaller.class)) .body().getClassDefinition(); } else { final MappingStrategy strategy = MappingStrategyFactory .createStrategy(false, GeneratorMappingContextFactory.getFor(context, target), type); final String marshallerClassName = generateMarshallerImplClassName(type, target == MarshallerOutputTarget.GWT); final ClassStructureBuilder<?> marshaller = strategy.getMapper().getMarshaller(marshallerClassName); customMarshaller = marshaller.getClassDefinition(); } classStructureBuilder.declaresInnerClass(new InnerClass(customMarshaller)); addMarshaller(customMarshaller, type); } }
@Test public void testDefineAbstractClassWithAbstractMethods() { final String cls = ClassBuilder .define("org.foo.Foo") .publicScope() .abstractClass() .body() .publicConstructor() .finish() .publicAbstractMethod(void.class, "foo") .finish() .protectedAbstractMethod(void.class, "bar") .finish() .publicMethod(void.class, "baz") .finish() .toJavaString(); assertEquals("failed to generate abstract class with abstract method", ABSTRACT_CLASS_WITH_ABSTRACT_METHODS, cls); }
@SuppressWarnings("unchecked") @Test public void testDefineAbstractClassWithAbstractMethods2() { final String cls = ClassBuilder .define("org.foo.Foo") .publicScope() .abstractClass() .body() .publicConstructor() .finish() .publicAbstractMethod(MetaClassFactory.get(String.class), "someString").finish() .publicAbstractMethod(Integer.class, "someInteger", Parameter.finalOf(long.class, "aLong")).finish() .publicAbstractMethod(void.class, "foo", String.class, Integer.class).throws_(Throwable.class) .protectedAbstractMethod(void.class, "bar", Long.class, Double.class).throws_(UnsupportedOperationException.class) .protectedAbstractMethod(Long.class, "funTimes", Parameter.finalOf(String.class, "str")).finish() .packageAbstractMethod(void.class, "foobaz", Map.class) .throws_(MetaClassFactory.get(ClassNotFoundException.class)) .packageAbstractMethod(Float.class, "boringTimes", Parameter.of(byte[].class, "byteArr")).finish() .publicMethod(void.class, "baz") .finish() .toJavaString(); assertEquals(ABSTRACT_CLASS_WITH_ABSTRACT_METHODS_2, cls); }