public static String hollowObjectProviderName(String typeName) { return substituteInvalidChars(lowercase(typeName)) + "Provider"; }
/** * Convert field path into Param name * * Eg: * - Actor {@literal->} actor * - Actor.name {@literal->} actorName * * @param fieldPath the field path * @return the param name */ public static String normalizeFieldPathToParamName(String fieldPath) { String result = null; if (fieldPath.contains(".")) { String[] parts = fieldPath.split("\\."); StringBuilder sb = new StringBuilder(); sb.append(lowercase(parts[0])); for (int i = 1; i < parts.length; i++) { sb.append(uppercase(parts[i])); } result = sb.toString(); } else { result = lowercase(fieldPath); } if (result.endsWith("!")) { return result.substring(0, result.length() - 1); } return result; }
private void generateChainableAddForSetAndList(StringBuilder classBodyBuilder) { for (int i = 0; i < schema.numFields(); i++) { if (schema.getFieldType(i) != FieldType.REFERENCE) { continue; } HollowSchema referencedSchema = dataset.getSchema(schema.getReferencedType(i)); if (referencedSchema instanceof HollowListSchema || referencedSchema instanceof HollowSetSchema) { HollowSchema elementSchema = dataset.getSchema(referencedSchema instanceof HollowListSchema ? ((HollowListSchema) referencedSchema).getElementType() : ((HollowSetSchema) referencedSchema).getElementType()); String elementType = buildFieldType(elementSchema); Class fieldImplementationType = referencedSchema instanceof HollowListSchema ? ArrayList.class : HashSet.class; importClasses.add(fieldImplementationType); classBodyBuilder.append(" public ").append(getClassName()).append(" addTo") .append(uppercase(getFieldName(i))).append("(") .append(elementType).append(" ").append(lowercase(elementType)).append(") {\n"); classBodyBuilder.append(" if (this.").append(getFieldName(i)).append(" == null) {\n"); classBodyBuilder.append(" this.").append(getFieldName(i)).append(" = new ") .append(fieldImplementationType.getSimpleName()).append("<").append(elementType).append(">();\n"); classBodyBuilder.append(" }\n"); classBodyBuilder.append(" this.").append(getFieldName(i)).append(".add(") .append(lowercase(elementType)).append(");\n"); classBodyBuilder.append(" return this;\n"); classBodyBuilder.append(" }\n"); } } }
builder.append(" private final " + typeAPIClassname(schema.getName())).append(" ").append(lowercase(typeAPIClassname(schema.getName()))).append(";\n"); builder.append(" typeDataAccess = dataAccess.getTypeDataAccess(\"").append(schema.getName()).append("\");\n"); builder.append(" if(typeDataAccess != null) {\n"); builder.append(" ").append(lowercase(typeAPIClassname(schema.getName()))).append(" = new ").append(typeAPIClassname(schema.getName())).append("(this, (Hollow").append(schemaType(schema)).append("TypeDataAccess)typeDataAccess);\n"); builder.append(" } else {\n"); builder.append(" ").append(lowercase(typeAPIClassname(schema.getName()))).append(" = new ").append(typeAPIClassname(schema.getName())).append("(this, new Hollow").append(schemaType(schema)).append("MissingDataAccess(dataAccess, \"").append(schema.getName()).append("\"));\n"); builder.append(" }\n"); builder.append(" addTypeAPI(").append(lowercase(typeAPIClassname(schema.getName()))).append(");\n"); builder.append(" factory = factoryOverrides.get(\"").append(schema.getName()).append("\");\n"); builder.append(" if(factory == null)\n"); builder.append(" if(previousCycleAPI != null && (previousCycleAPI.").append(hollowObjectProviderName(schema.getName())).append(" instanceof HollowObjectCacheProvider))\n"); builder.append(" previousCacheProvider = (HollowObjectCacheProvider) previousCycleAPI.").append(hollowObjectProviderName(schema.getName())).append(";\n"); builder.append(" ").append(hollowObjectProviderName(schema.getName())).append(" = new HollowObjectCacheProvider(typeDataAccess, ").append(lowercase(typeAPIClassname(schema.getName()))).append(", factory, previousCacheProvider);\n"); builder.append(" } else {\n"); builder.append(" ").append(hollowObjectProviderName(schema.getName())).append(" = new HollowObjectFactoryProvider(typeDataAccess, ").append(lowercase(typeAPIClassname(schema.getName()))).append(", factory);\n"); builder.append(" }\n\n"); builder.append(" return ").append(lowercase(typeAPIClassname(schema.getName()))).append(";\n"); builder.append(" }\n");