in hollow/src/main/java/com/netflix/hollow/api/codegen/delegate/HollowObjectDelegateLookupImplGenerator.java [49:155]
public String generate() {
StringBuilder builder = new StringBuilder();
appendPackageAndCommonImports(builder);
builder.append("import ").append(HollowObjectAbstractDelegate.class.getName()).append(";\n");
builder.append("import ").append(HollowObjectTypeDataAccess.class.getName()).append(";\n");
builder.append("import ").append(HollowObjectSchema.class.getName()).append(";\n");
appendGeneratedAnnotation(builder);
builder.append("\n@SuppressWarnings(\"all\")\n");
builder.append("public class ").append(className).append(" extends HollowObjectAbstractDelegate implements ").append(delegateInterfaceName(schema.getName())).append(" {\n\n");
builder.append(" private final ").append(typeAPIClassname(schema.getName())).append(" typeAPI;\n\n");
builder.append(" public ").append(className).append("(").append(typeAPIClassname(schema.getName())).append(" typeAPI) {\n");
builder.append(" this.typeAPI = typeAPI;\n");
builder.append(" }\n\n");
for(int i=0;i<schema.numFields();i++) {
String methodFieldName = substituteInvalidChars(uppercase(schema.getFieldName(i)));
switch(schema.getFieldType(i)) {
case BOOLEAN:
builder.append(" public boolean get").append(methodFieldName).append("(int ordinal) {\n");
builder.append(" return typeAPI.get").append(methodFieldName).append("(ordinal);\n");
builder.append(" }\n\n");
builder.append(" public Boolean get").append(methodFieldName).append("Boxed(int ordinal) {\n");
builder.append(" return typeAPI.get").append(methodFieldName).append("Boxed(ordinal);\n");
builder.append(" }\n\n");
break;
case BYTES:
builder.append(" public byte[] get").append(methodFieldName).append("(int ordinal) {\n");
builder.append(" return typeAPI.get").append(methodFieldName).append("(ordinal);\n");
builder.append(" }\n\n");
break;
case DOUBLE:
builder.append(" public double get").append(methodFieldName).append("(int ordinal) {\n");
builder.append(" return typeAPI.get").append(methodFieldName).append("(ordinal);\n");
builder.append(" }\n\n");
builder.append(" public Double get").append(methodFieldName).append("Boxed(int ordinal) {\n");
builder.append(" return typeAPI.get").append(methodFieldName).append("Boxed(ordinal);\n");
builder.append(" }\n\n");
break;
case FLOAT:
builder.append(" public float get").append(methodFieldName).append("(int ordinal) {\n");
builder.append(" return typeAPI.get").append(methodFieldName).append("(ordinal);\n");
builder.append(" }\n\n");
builder.append(" public Float get").append(methodFieldName).append("Boxed(int ordinal) {\n");
builder.append(" return typeAPI.get").append(methodFieldName).append("Boxed(ordinal);\n");
builder.append(" }\n\n");
break;
case INT:
builder.append(" public int get").append(methodFieldName).append("(int ordinal) {\n");
builder.append(" return typeAPI.get").append(methodFieldName).append("(ordinal);\n");
builder.append(" }\n\n");
builder.append(" public Integer get").append(methodFieldName).append("Boxed(int ordinal) {\n");
builder.append(" return typeAPI.get").append(methodFieldName).append("Boxed(ordinal);\n");
builder.append(" }\n\n");
break;
case LONG:
builder.append(" public long get").append(methodFieldName).append("(int ordinal) {\n");
builder.append(" return typeAPI.get").append(methodFieldName).append("(ordinal);\n");
builder.append(" }\n\n");
builder.append(" public Long get").append(methodFieldName).append("Boxed(int ordinal) {\n");
builder.append(" return typeAPI.get").append(methodFieldName).append("Boxed(ordinal);\n");
builder.append(" }\n\n");
break;
case STRING:
builder.append(" public String get").append(methodFieldName).append("(int ordinal) {\n");
builder.append(" return typeAPI.get").append(methodFieldName).append("(ordinal);\n");
builder.append(" }\n\n");
builder.append(" public boolean is").append(methodFieldName).append("Equal(int ordinal, String testValue) {\n");
builder.append(" return typeAPI.is").append(methodFieldName).append("Equal(ordinal, testValue);\n");
builder.append(" }\n\n");
break;
case REFERENCE:
Shortcut shortcut = ergonomicShortcuts.getShortcut(schema.getName() + "." + schema.getFieldName(i));
if(shortcut != null) {
addShortcutAccessMethod(builder, methodFieldName, shortcut);
}
builder.append(" public int get").append(methodFieldName).append("Ordinal(int ordinal) {\n");
builder.append(" return typeAPI.get").append(methodFieldName).append("Ordinal(ordinal);\n");
builder.append(" }\n\n");
break;
}
}
builder.append(" public ").append(typeAPIClassname(schema.getName())).append(" getTypeAPI() {\n");
builder.append(" return typeAPI;\n");
builder.append(" }\n\n");
builder.append(" @Override\n");
builder.append(" public HollowObjectSchema getSchema() {\n");
builder.append(" return typeAPI.getTypeDataAccess().getSchema();\n");
builder.append(" }\n\n");
builder.append(" @Override\n");
builder.append(" public HollowObjectTypeDataAccess getTypeDataAccess() {\n");
builder.append(" return typeAPI.getTypeDataAccess();\n");
builder.append(" }\n\n");
builder.append("}");
return builder.toString();
}