private void addShortcutAccessMethod()

in hollow/src/main/java/com/netflix/hollow/api/codegen/delegate/HollowObjectDelegateLookupImplGenerator.java [157:244]


    private void addShortcutAccessMethod(StringBuilder builder, String methodFieldName, Shortcut shortcut) {
        String finalFieldName = substituteInvalidChars(uppercase(shortcut.getPath()[shortcut.getPath().length-1]));
        String finalTypeAPI = typeAPIClassname(shortcut.getPathTypes()[shortcut.getPathTypes().length-1]);

        switch(shortcut.getType()) {
        case BOOLEAN:
            builder.append("    public boolean get").append(methodFieldName).append("(int ordinal) {\n");
            builder.append("        ordinal = typeAPI.get").append(methodFieldName).append("Ordinal(ordinal);\n");
            addShortcutTraversal(builder, shortcut);
            builder.append("        return ordinal == -1 ? false : typeAPI.getAPI().get" + finalTypeAPI + "().get").append(finalFieldName).append("(ordinal);\n");
            builder.append("    }\n\n");
            builder.append("    public Boolean get").append(methodFieldName).append("Boxed(int ordinal) {\n");
            builder.append("        ordinal = typeAPI.get").append(methodFieldName).append("Ordinal(ordinal);\n");
            addShortcutTraversal(builder, shortcut);
            builder.append("        return ordinal == -1 ? null : typeAPI.getAPI().get" + finalTypeAPI + "().get").append(finalFieldName).append("Boxed(ordinal);\n");
            builder.append("    }\n\n");
            break;
        case BYTES:
            builder.append("    public byte[] get").append(methodFieldName).append("(int ordinal) {\n");
            builder.append("        ordinal = typeAPI.get").append(methodFieldName).append("Ordinal(ordinal);\n");
            addShortcutTraversal(builder, shortcut);
            builder.append("        return ordinal == -1 ? null : typeAPI.getAPI().get" + finalTypeAPI + "().get").append(finalFieldName).append("(ordinal);\n");
            builder.append("    }\n\n");
            break;
        case DOUBLE:
            builder.append("    public double get").append(methodFieldName).append("(int ordinal) {\n");
            builder.append("        ordinal = typeAPI.get").append(methodFieldName).append("Ordinal(ordinal);\n");
            addShortcutTraversal(builder, shortcut);
            builder.append("        return ordinal == -1 ? Double.NaN : typeAPI.getAPI().get" + finalTypeAPI + "().get").append(finalFieldName).append("(ordinal);\n");
            builder.append("    }\n\n");
            builder.append("    public Double get").append(methodFieldName).append("Boxed(int ordinal) {\n");
            builder.append("        ordinal = typeAPI.get").append(methodFieldName).append("Ordinal(ordinal);\n");
            addShortcutTraversal(builder, shortcut);
            builder.append("        return ordinal == -1 ? null : typeAPI.getAPI().get" + finalTypeAPI + "().get").append(finalFieldName).append("Boxed(ordinal);\n");
            builder.append("    }\n\n");
            break;
        case FLOAT:
            builder.append("    public float get").append(methodFieldName).append("(int ordinal) {\n");
            builder.append("        ordinal = typeAPI.get").append(methodFieldName).append("Ordinal(ordinal);\n");
            addShortcutTraversal(builder, shortcut);
            builder.append("        return ordinal == -1 ? Float.NaN : typeAPI.getAPI().get" + finalTypeAPI + "().get").append(finalFieldName).append("(ordinal);\n");
            builder.append("    }\n\n");
            builder.append("    public Float get").append(methodFieldName).append("Boxed(int ordinal) {\n");
            builder.append("        ordinal = typeAPI.get").append(methodFieldName).append("Ordinal(ordinal);\n");
            addShortcutTraversal(builder, shortcut);
            builder.append("        return ordinal == -1 ? null : typeAPI.getAPI().get" + finalTypeAPI + "().get").append(finalFieldName).append("Boxed(ordinal);\n");
            builder.append("    }\n\n");
            break;
        case INT:
            builder.append("    public int get").append(methodFieldName).append("(int ordinal) {\n");
            builder.append("        ordinal = typeAPI.get").append(methodFieldName).append("Ordinal(ordinal);\n");
            addShortcutTraversal(builder, shortcut);
            builder.append("        return ordinal == -1 ? Integer.MIN_VALUE : typeAPI.getAPI().get" + finalTypeAPI + "().get").append(finalFieldName).append("(ordinal);\n");
            builder.append("    }\n\n");
            builder.append("    public Integer get").append(methodFieldName).append("Boxed(int ordinal) {\n");
            builder.append("        ordinal = typeAPI.get").append(methodFieldName).append("Ordinal(ordinal);\n");
            addShortcutTraversal(builder, shortcut);
            builder.append("        return ordinal == -1 ? null : typeAPI.getAPI().get" + finalTypeAPI + "().get").append(finalFieldName).append("Boxed(ordinal);\n");
            builder.append("    }\n\n");
            break;
        case LONG:
            builder.append("    public long get").append(methodFieldName).append("(int ordinal) {\n");
            builder.append("        ordinal = typeAPI.get").append(methodFieldName).append("Ordinal(ordinal);\n");
            addShortcutTraversal(builder, shortcut);
            builder.append("        return ordinal == -1 ? Long.MIN_VALUE : typeAPI.getAPI().get" + finalTypeAPI + "().get").append(finalFieldName).append("(ordinal);\n");
            builder.append("    }\n\n");
            builder.append("    public Long get").append(methodFieldName).append("Boxed(int ordinal) {\n");
            builder.append("        ordinal = typeAPI.get").append(methodFieldName).append("Ordinal(ordinal);\n");
            addShortcutTraversal(builder, shortcut);
            builder.append("        return ordinal == -1 ? null : typeAPI.getAPI().get" + finalTypeAPI + "().get").append(finalFieldName).append("Boxed(ordinal);\n");
            builder.append("    }\n\n");
            break;
        case STRING:
            builder.append("    public String get").append(methodFieldName).append("(int ordinal) {\n");
            builder.append("        ordinal = typeAPI.get").append(methodFieldName).append("Ordinal(ordinal);\n");
            addShortcutTraversal(builder, shortcut);
            builder.append("        return ordinal == -1 ? null : typeAPI.getAPI().get" + finalTypeAPI + "().get").append(finalFieldName).append("(ordinal);\n");
            builder.append("    }\n\n");
            builder.append("    public boolean is").append(methodFieldName).append("Equal(int ordinal, String testValue) {\n");
            builder.append("        ordinal = typeAPI.get").append(methodFieldName).append("Ordinal(ordinal);\n");
            addShortcutTraversal(builder, shortcut);
            builder.append("        return ordinal == -1 ? testValue == null : typeAPI.getAPI().get" + finalTypeAPI + "().is").append(finalFieldName).append("Equal(ordinal, testValue);\n");
            builder.append("    }\n\n");
            break;
        default:
            throw new IllegalArgumentException();
        }
    }