in hollow/src/main/java/com/netflix/hollow/api/codegen/objects/HollowObjectJavaGenerator.java [207:275]
private String generateReferenceFieldAccessor(int fieldNum) {
Shortcut shortcut = ergonomicShortcuts == null ? null : ergonomicShortcuts.getShortcut(schema.getName() + "." + schema.getFieldName(fieldNum));
String fieldName = substituteInvalidChars(schema.getFieldName(fieldNum));
StringBuilder builder = new StringBuilder();
if(shortcut != null) {
switch(shortcut.getType()) {
case BOOLEAN:
case DOUBLE:
case FLOAT:
case INT:
case LONG:
String methodName = (shortcut.getType()==FieldType.BOOLEAN) ? generateBooleanAccessorMethodName(fieldName, useBooleanFieldErgonomics) : "get" + uppercase(fieldName);
builder.append(" public ").append(HollowCodeGenerationUtils.getJavaBoxedType(shortcut.getType())).append(" ").append(getterPrefix).append(methodName);
if(!restrictApiToFieldType) {
builder.append("Boxed");
}
builder.append("() {\n");
builder.append(" return delegate().get" + uppercase(fieldName) + "Boxed(ordinal);\n");
builder.append(" }\n\n");
if(!restrictApiToFieldType) {
builder.append(" public ").append(HollowCodeGenerationUtils.getJavaScalarType(shortcut.getType())).append(" ").append(getterPrefix).append(methodName + "() {\n");
builder.append(" return delegate().get" + uppercase(fieldName) + "(ordinal);\n");
builder.append(" }\n\n");
}
break;
case BYTES:
builder.append(" public byte[] ").append(getterPrefix).append("get" + uppercase(fieldName) + "() {\n");
builder.append(" return delegate().get" + uppercase(fieldName) + "(ordinal);\n");
builder.append(" }\n\n");
break;
case STRING:
builder.append(" public String ").append(getterPrefix).append("get" + uppercase(fieldName) + "() {\n");
builder.append(" return delegate().get" + uppercase(fieldName) + "(ordinal);\n");
builder.append(" }\n\n");
builder.append(" public boolean ").append(getterPrefix).append("is" + uppercase(fieldName) + "Equal(String testValue) {\n");
builder.append(" return delegate().is" + uppercase(fieldName) + "Equal(ordinal, testValue);\n");
builder.append(" }\n\n");
break;
default:
}
}
String referencedType = schema.getReferencedType(fieldNum);
boolean parameterize = parameterizeClassNames || parameterizedTypes.contains(referencedType);
String methodName = null;
if (shortcut != null) {
methodName = getterPrefix + "get" + uppercase(fieldName) + "HollowReference";
} else {
boolean isBooleanRefType = Boolean.class.getSimpleName().equals(referencedType);
methodName = getterPrefix + (isBooleanRefType ? generateBooleanAccessorMethodName(fieldName, useBooleanFieldErgonomics) : "get" + uppercase(fieldName));
}
if(parameterize)
builder.append(" public <T> T ").append(methodName).append("() {\n");
else
builder.append(" public ").append(hollowImplClassname(referencedType)).append(" ").append(methodName).append("() {\n");
builder.append(" int refOrdinal = delegate().get" + uppercase(fieldName) + "Ordinal(ordinal);\n");
builder.append(" if(refOrdinal == -1)\n");
builder.append(" return null;\n");
builder.append(" return ").append(parameterize ? "(T)" : "").append(" api().get" + hollowImplClassname(referencedType) + "(refOrdinal);\n");
builder.append(" }");
return builder.toString();
}