@Override protected HollowAPIGenerator instantiateGenerator() { return new HollowAPIGenerator(apiClassname, packageName, dataset, parameterizedTypes, parameterizeAllClassNames, useErgonomicShortcuts, destinationPath); }
protected void generateSourceFile(HollowJavaFileGenerator generator) throws IOException { this.generateFile(destinationPath.toFile(), generator); }
/** * Generate all files under {@code destinationPath} * * @throws IOException if the files cannot be generated */ public void generateSourceFiles() throws IOException { generateFiles(destinationPath.toFile()); }
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); }
if (config.isUseHollowPrimitiveTypes() && HollowCodeGenerationUtils.isPrimitiveType(type)) continue; // skip if using hollow primitive type generateFile(directory, getStaticAPIGenerator(schema)); generateFile(directory, getHollowObjectGenerator(schema)); generateFile(directory, getHollowFactoryGenerator(schema)); generateFile(directory, new HollowObjectDelegateInterfaceGenerator(packageName, objSchema, ergonomicShortcuts, dataset, config)); generateFile(directory, new HollowObjectDelegateCachedImplGenerator(packageName, objSchema, ergonomicShortcuts, dataset, config)); generateFile(directory, new HollowObjectDelegateLookupImplGenerator(packageName, objSchema, ergonomicShortcuts, dataset, config)); generateFile(directory, new HollowDataAccessorGenerator(packageName, apiClassname, objSchema, dataset, config)); if (!config.isReservePrimaryKeyIndexForTypeWithPrimaryKey()) { generateFile(directory, new LegacyHollowPrimaryKeyIndexGenerator(packageName, apiClassname, objSchema, dataset, config)); } else if ((objSchema).getPrimaryKey() != null) { generateFile(directory, new HollowPrimaryKeyIndexGenerator(dataset, packageName, apiClassname, objSchema, config)); generateFile(directory, new HollowUniqueKeyIndexGenerator(packageName, apiClassname, objSchema, dataset, config));
/** * Generate files under the specified directory * * @param directory the directory under which to generate files * @throws IOException if the files cannot be generated * @deprecated construct {@code HollowAPIGenerator} with a {@code destinationPath} then call {@link #generateSourceFiles()} */ public void generateFiles(File directory) throws IOException { if (packageName != null && !packageName.trim().isEmpty()) { String packageDir = packageName.replace(".", File.separator); if (!directory.getAbsolutePath().endsWith(packageDir)) { directory = new File(directory, packageDir); } } directory.mkdirs(); HollowAPIClassJavaGenerator apiClassGenerator = new HollowAPIClassJavaGenerator(packageName, apiClassname, dataset, parameterizeClassNames, config); HollowAPIFactoryJavaGenerator apiFactoryGenerator = new HollowAPIFactoryJavaGenerator(packageName, apiClassname, dataset, config); HollowHashIndexGenerator hashIndexGenerator = new HollowHashIndexGenerator(packageName, apiClassname, dataset, config); generateFile(directory, apiClassGenerator); generateFile(directory, apiFactoryGenerator); generateFile(directory, hashIndexGenerator); generateFilesForHollowSchemas(directory); }
/** * Generate files based on dataset schemas under {@code destinationPath} * * @throws IOException if the files cannot be generated */ protected void generateSourceFilesForHollowSchemas() throws IOException { this.generateFilesForHollowSchemas(destinationPath.toFile()); }
protected HollowAPIGenerator(String apiClassname, String packageName, HollowDataset dataset, Set<String> parameterizedTypes, boolean parameterizeAllClassNames, boolean useErgonomicShortcuts, Path destinationPath) { this.apiClassname = apiClassname; this.packageName = packageName; this.dataset = dataset; this.hasCollectionsInDataSet = hasCollectionsInDataSet(dataset); this.parameterizedTypes = parameterizedTypes; this.parameterizeClassNames = parameterizeAllClassNames; this.ergonomicShortcuts = useErgonomicShortcuts ? new HollowErgonomicAPIShortcuts(dataset) : HollowErgonomicAPIShortcuts.NO_SHORTCUTS; if (destinationPath != null && packageName != null && !packageName.trim().isEmpty()) { Path packagePath = Paths.get(packageName.replace(".", File.separator)); if (!destinationPath.toAbsolutePath().endsWith(packagePath)) { destinationPath = destinationPath.resolve(packagePath); } } this.destinationPath = destinationPath; }
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(); }
/** * Generate files under the specified directory * * @param directory the directory under which to generate files * @throws IOException if the files cannot be generated * @deprecated construct {@code HollowAPIGenerator} with a {@code destinationPath} then call {@link #generateSourceFiles()} */ public void generateFiles(String directory) throws IOException { generateFiles(new File(directory)); }