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); }
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(); }