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();
@TaskAction public void generateApi() throws IOException { ApiGeneratorExtension extension = getProject().getExtensions().getByType(ApiGeneratorExtension.class); validatePluginConfiguration(extension); initClassLoader(); HollowWriteStateEngine writeEngine = new HollowWriteStateEngine(); HollowObjectMapper mapper = new HollowObjectMapper(writeEngine); Collection<Class<?>> datamodelClasses = extractClasses(extension.packagesToScan); for (Class<?> clazz : datamodelClasses) { getLogger().debug("Initialize schema for class {}", clazz.getName()); mapper.initializeTypeState(clazz); } String apiTargetPath = extension.destinationPath != null && extension.destinationPath.isEmpty() ? extension.destinationPath : buildPathToApiTargetFolder(extension.apiPackageName); HollowAPIGenerator generator = buildHollowAPIGenerator(extension, writeEngine, apiTargetPath); cleanupAndCreateFolders(apiTargetPath); generator.generateSourceFiles(); }