HollowAPIGenerator.Builder builder = new HollowAPIGenerator.Builder(); HollowObjectMapper mapper = new HollowObjectMapper(engine); ArgumentParser<GeneratorArguments> argumentParser = new ArgumentParser(GeneratorArguments.class, args); break; case apiClassName: builder.withAPIClassname(arg.getValue()); break; case classPostfix: builder.withClassPostfix(arg.getValue()); break; case getterPrefix: builder.withGetterPrefix(arg.getValue()); break; case packageName: builder.withPackageName(arg.getValue()); break; case pathToGeneratedFiles: builder.withDestination(arg.getValue()); break; case parameterizeAllClassNames: builder.withParameterizeAllClassNames(Boolean.valueOf(arg.getValue())); break; default: builder.withDataModel(engine).build().generateSourceFiles();
private HollowAPIGenerator buildHollowAPIGenerator(ApiGeneratorExtension extension, HollowWriteStateEngine writeStateEngine, String apiTargetPath) { HollowAPIGenerator.Builder builder = new HollowAPIGenerator.Builder() .withAPIClassname(extension.apiClassName) .withPackageName(extension.apiPackageName) .withDataModel(writeStateEngine) .withDestination(apiTargetPath) .withParameterizeAllClassNames(extension.parameterizeAllClassNames) .withAggressiveSubstitutions(extension.useAggressiveSubstitutions) .withBooleanFieldErgonomics(extension.useBooleanFieldErgonomics) .reservePrimaryKeyIndexForTypeWithPrimaryKey(extension.reservePrimaryKeyIndexForTypeWithPrimaryKey) .withHollowPrimitiveTypes(extension.useHollowPrimitiveTypes) .withVerboseToString(extension.useVerboseToString); if(extension.getterPrefix != null && !extension.getterPrefix.isEmpty()) { builder.withGetterPrefix(extension.getterPrefix); } if(extension.classPostfix != null && !extension.classPostfix.isEmpty()) { builder.withClassPostfix(extension.classPostfix); } if(extension.useErgonomicShortcuts) { builder.withErgonomicShortcuts(); } if(extension.usePackageGrouping) { builder.withPackageGrouping(); } if(extension.restrictApiToFieldType) { builder.withRestrictApiToFieldType(); } return builder.build(); }
@Test public void testGenerateWithPostfix() throws Exception { runGenerator(API_CLASS_NAME, PACKAGE_NAME, Movie.class, builder -> builder.withClassPostfix("Generated").withPackageGrouping()); }
@Test public void testWithPostfix() throws Exception { String apiClassName = "PrimaryKeyIndexTestAPI"; String packageName = "codegen.primarykey"; runGenerator(apiClassName, packageName, Movie.class, builder -> builder.withClassPostfix("Generated").withPackageGrouping()); }
@Test public void test() throws Exception { String apiClassName = "BooleanErgoTestAPI"; String packageName = "codegen.booleanfield.ergo"; runGenerator(apiClassName, packageName, Movie.class, builder -> builder.withBooleanFieldErgonomics(true)); }
@Test public void testGenerateWithPostfixAndPrimitiveTypes() throws Exception { runGenerator("MyClassTestAPI", "codegen.api", MyClass.class, builder -> builder.withClassPostfix("Generated").withPackageGrouping() .withHollowPrimitiveTypes(true)); assertFileDoesNotExist("codegen/api/core/StringGenerated.java"); assertFileDoesNotExist("codegen/api/StringGenerated.java"); }
@Test public void testGenerateWithPostfixAndPackageGrouping() throws Exception { runGenerator("MyClassTestAPI", "codegen.api", MyClass.class, builder -> builder.withClassPostfix("Generated").withPackageGrouping()); assertNonEmptyFileExists("codegen/api/core/StringGenerated.java"); }
@Test public void testGenerateWithPostfix() throws Exception { runGenerator("MyClassTestAPI", "codegen.api", MyClass.class, builder -> builder.withClassPostfix("Generated")); assertNonEmptyFileExists("codegen/api/StringGenerated.java"); }
@Test public void test_withClassPostfix() throws Exception { runGenerator(API_CLASS_NAME, PACKAGE_NAME, Gru.class, builder -> builder.withPackageGrouping().withClassPostfix("Generated")); }
@Test public void test() throws Exception { runGenerator(API_CLASS_NAME, PACKAGE_NAME, Movie.class, builder -> builder.withAggressiveSubstitutions(true)); }
@Test public void test() throws Exception { String apiClassName = "PrimaryKeyIndexTestAPI"; String packageName = "codegen.primarykey"; runGenerator(apiClassName, packageName, Movie.class, builder -> builder.reservePrimaryKeyIndexForTypeWithPrimaryKey(true)); }
void runGenerator(String apiClassName, String packageName, Class<?> clazz, UnaryOperator<HollowAPIGenerator.Builder> generatorCustomizer) throws Exception { System.out.println(String.format("Folders (%s) : \n\tsource=%s \n\tclasses=%s", getClass().getSimpleName(), sourceFolder, clazzFolder)); // Setup Folders HollowCodeGenerationCompileUtil.cleanupFolder(new File(sourceFolder), null); HollowCodeGenerationCompileUtil.cleanupFolder(new File(clazzFolder), null); // Run Generator HollowAPIGenerator generator = generatorCustomizer.apply(new HollowAPIGenerator.Builder()) .withDataModel(clazz).withAPIClassname(apiClassName).withPackageName(packageName) .withDestination(sourceFolder).build(); generator.generateSourceFiles(); // Compile to validate generated files HollowCodeGenerationCompileUtil.compileSrcFiles(sourceFolder, clazzFolder); }
@Test public void testGenerateWithPostfixAndAggressiveSubstitutions() throws Exception { runGenerator("MyClassTestAPI", "codegen.api", MyClass.class, builder -> builder.withClassPostfix("Generated").withPackageGrouping() .withHollowPrimitiveTypes(true).withAggressiveSubstitutions(true)); assertFileDoesNotExist("codegen/api/core/StringGenerated.java"); assertFileDoesNotExist("codegen/api/StringGenerated.java"); }