protected String hollowImplClassname(String typeName) { return HollowCodeGenerationUtils.hollowImplClassname(typeName, config.getClassPostfix(), config.isUseAggressiveSubstitutions(), config.isUseHollowPrimitiveTypes()); }
public HollowObjectJavaGenerator(String packageName, String apiClassname, HollowObjectSchema schema, Set<String> parameterizedTypes, boolean parameterizeClassNames, HollowErgonomicAPIShortcuts ergonomicShortcuts, HollowDataset dataset, CodeGeneratorConfig config) { super(packageName, computeSubPackageName(schema), dataset, config); this.apiClassname = apiClassname; this.schema = schema; this.className = hollowImplClassname(schema.getName()); this.parameterizedTypes = parameterizedTypes; this.parameterizeClassNames = parameterizeClassNames; this.getterPrefix = config.getGetterPrefix(); this.ergonomicShortcuts = ergonomicShortcuts; this.useBooleanFieldErgonomics = config.isUseBooleanFieldErgonomics(); this.restrictApiToFieldType = config.isRestrictApiToFieldType(); }
public HollowHashIndexGenerator(String packageName, String apiClassname, HollowDataset dataset, CodeGeneratorConfig config) { super(packageName, apiClassname, dataset, config); this.className = apiClassname + "HashIndex"; this.dataset = dataset; this.isListenToDataRefreah = config.isListenToDataRefresh(); }
protected void appendPackageAndCommonImports(StringBuilder builder, String apiClassname, List<HollowSchema> schemasToImport) { String fullPackageName = createFullPackageName(packageName, subPackageName, config.isUsePackageGrouping()); if (!isEmpty(fullPackageName)) { builder.append("package ").append(fullPackageName).append(";\n\n"); if (config.isUseHollowPrimitiveTypes()) { builder.append("import com.netflix.hollow.core.type.*;\n"); if (config.isUsePackageGrouping()) { if (apiClassname != null) { appendImportFromBasePackage(builder, apiClassname); appendImportFromBasePackage(builder, schemaName + config.getClassPostfix());
for(HollowSchema schema : dataset.getSchemas()) { String type = schema.getName(); if (config.isUseHollowPrimitiveTypes() && HollowCodeGenerationUtils.isPrimitiveType(type)) continue; // skip if using hollow primitive type if (!config.isReservePrimaryKeyIndexForTypeWithPrimaryKey()) { generateFile(directory, new LegacyHollowPrimaryKeyIndexGenerator(packageName, apiClassname, objSchema, dataset, config));
public G build() { if (apiClassname == null) throw new IllegalStateException("Please specify an API classname (.withAPIClassname()) before calling .build()"); if (packageName == null) throw new IllegalStateException("Please specify a package name (.withPackageName()) before calling .build()"); if (dataset == null) throw new IllegalStateException("Please specify a data model (.withDataModel()) before calling .build()"); if(config.isRestrictApiToFieldType() && !useErgonomicShortcuts) { throw new IllegalStateException(" restrictApiToFieldType requires withErgonomicShortcuts"); } G generator = instantiateGenerator(); generator.setCodeGeneratorConfig(config); return generator; } }
/** * @param directory the directory under which to generate a file * @param generator the file generator * @throws IOException if the file cannot be generated * @deprecated construct {@code HollowAPIGenerator} with a {@code destinationPath} then call {@link #generateSourceFile(HollowJavaFileGenerator)} */ protected void generateFile(File directory, HollowJavaFileGenerator generator) throws IOException { // create sub folder if not using default package and sub packages are enabled if ((packageName!=null && !packageName.trim().isEmpty()) && config.isUsePackageGrouping() && (generator instanceof HollowConsumerJavaFileGenerator)) { HollowConsumerJavaFileGenerator consumerCodeGenerator = (HollowConsumerJavaFileGenerator)generator; if (hasCollectionsInDataSet) consumerCodeGenerator.useCollectionsImport(); directory = new File(directory, consumerCodeGenerator.getSubPackageName()); } if (!directory.exists()) directory.mkdirs(); FileWriter writer = new FileWriter(new File(directory, generator.getClassName() + ".java")); writer.write(generator.generate()); writer.close(); }
@Override public String generate() { StringBuilder classBuilder = new StringBuilder(); appendPackageAndCommonImports(classBuilder, apiClassname); classBuilder.append("import " + HollowObject.class.getName() + ";\n"); classBuilder.append("import " + HollowObjectSchema.class.getName() + ";\n\n"); classBuilder.append("import " + HollowRecordStringifier.class.getName() + ";\n\n"); classBuilder.append("@SuppressWarnings(\"all\")\n"); classBuilder.append("public class " + className + " extends HollowObject {\n\n"); appendConstructor(classBuilder); appendAccessors(classBuilder); appendAPIAccessor(classBuilder); appendTypeAPIAccessor(classBuilder); appendDelegateAccessor(classBuilder); if (config.isUseVerboseToString()) { appendToString(classBuilder); } classBuilder.append("}"); return classBuilder.toString(); }
builder.append("public class ").append(className).append(" extends HollowAPI "); if (config.isUseHollowPrimitiveTypes() && !primitiveTypes.isEmpty()) { builder.append("implements "); int itemCount = 0;