private MethodSpec getParseFieldMethod() { MethodSpec.Builder builder = MethodSpec.methodBuilder("parseField") .addAnnotation(Override.class) .addModifiers(Modifier.PUBLIC) .addParameter(mJsonObjectHolder.objectTypeName, "instance") .addParameter(String.class, "fieldName") .addParameter(JsonParser.class, JSON_PARSER_VARIABLE_NAME) .addException(IOException.class); int parseFieldLines = addParseFieldLines(builder); if (mJsonObjectHolder.hasParentClass()) { if (parseFieldLines > 0) { builder.nextControlFlow("else"); builder.addStatement("$L.parseField(instance, fieldName, $L)", PARENT_OBJECT_MAPPER_VARIABLE_NAME, JSON_PARSER_VARIABLE_NAME); } else { builder.addStatement("$L.parseField(instance, fieldName, $L)", PARENT_OBJECT_MAPPER_VARIABLE_NAME, JSON_PARSER_VARIABLE_NAME); } } if (parseFieldLines > 0) { builder.endControlFlow(); } return builder.build(); }
builder.beginControlFlow("if (" + ifStatement.toString() + ")", args.toArray(new Object[args.size()])); } else { builder.nextControlFlow("else if (" + ifStatement.toString() + ")", args.toArray(new Object[args.size()]));
@Override public void serialize(Builder builder, int depth, String fieldName, List<String> processedFieldNames, String getter, boolean isObjectProperty, boolean checkIfNull, boolean writeIfNull, boolean writeCollectionElementIfNull) { if (!isPrimitive && checkIfNull) { builder.beginControlFlow("if ($L != null)", getter); } if (isObjectProperty) { builder.addStatement("$L.writeNumberField($S, $L)", JSON_GENERATOR_VARIABLE_NAME, fieldName, getter); } else { builder.addStatement("$L.writeNumber($L)", JSON_GENERATOR_VARIABLE_NAME, getter); } if (!isPrimitive && checkIfNull) { if (writeIfNull) { builder.nextControlFlow("else"); if (isObjectProperty) { builder.addStatement("$L.writeFieldName($S)", JSON_GENERATOR_VARIABLE_NAME, fieldName); } builder.addStatement("$L.writeNull()", JSON_GENERATOR_VARIABLE_NAME); } builder.endControlFlow(); } }
builder.nextControlFlow("else"); builder.addStatement("throw new $T(\"Missing required attribute \'$L\' while styling \'$L\'\")", IllegalStateException.class, binding.name, targetClass); } else if (binding.hasDefaultValue()) { builder.nextControlFlow("else"); if (binding.kind != FRACTION && binding.kind != DIMEN && ("float".equals(binding.type) || "java.lang.Float".equals(binding.type))) {
.nextControlFlow("catch ($T e)", Exception.class) .addStatement("e.printStackTrace()") .endControlFlow();
constructorBuilder.beginControlFlow("if ($L.equals(type))", typeName); constructorBuilder.addStatement("$L = ($T)this", jsonMapperVariableName, JsonMapper.class); constructorBuilder.nextControlFlow("else"); constructorBuilder.addStatement("$L = $T.mapperFor($L, partialMappers)", jsonMapperVariableName, LoganSquare.class, typeName); constructorBuilder.endControlFlow();
result.addCode(";\n"); if (useBuilder) { result.nextControlFlow("catch ($T e)", EnumConstantNotFoundException.class); result.addStatement("builder.addUnknownField(tag, $T.VARINT, (long) e.value)", FieldEncoding.class); result.nextControlFlow("catch ($T ignored)", EnumConstantNotFoundException.class);
if (writeCollectionElementIfNull) { builder .nextControlFlow("else") .addStatement("$L.writeNull()", JSON_GENERATOR_VARIABLE_NAME);
.nextControlFlow("else") .addStatement("$L.writeNull()", JSON_GENERATOR_VARIABLE_NAME);
.nextControlFlow("else") .addStatement(setter, expandStringArgs(setterFormatArgs, "null")) .endControlFlow();
.nextControlFlow("else") .addStatement("$L.writeNull()", JSON_GENERATOR_VARIABLE_NAME);
.beginControlFlow("if ($L)", Strings.FIELD_ENABLED) .addCode(whenAnnotationPresent.build()) .nextControlFlow("else") .addCode(whenAnnotationMissing.build()) .endControlFlow();
@Override public void parse(Builder builder, int depth, String setter, Object... setterFormatArgs) { Type parameterType = parameterTypes.get(1); final String mapVariableName = "map" + depth; final String keyVariableName = "key" + depth; final String instanceCreator = String.format("$T<$T, %s> $L = new $T<$T, %s>()", parameterType.getParameterizedTypeString(), parameterType.getParameterizedTypeString()); final Object[] instanceCreatorArgs = expandStringArgs(getTypeName(), String.class, parameterType.getParameterizedTypeStringArgs(), mapVariableName, getTypeName(), String.class, parameterType.getParameterizedTypeStringArgs()); builder.beginControlFlow("if ($L.getCurrentToken() == $T.START_OBJECT)", JSON_PARSER_VARIABLE_NAME, JsonToken.class) .addStatement(instanceCreator, instanceCreatorArgs) .beginControlFlow("while ($L.nextToken() != $T.END_OBJECT)", JSON_PARSER_VARIABLE_NAME, JsonToken.class) .addStatement("$T $L = $L.getText()", String.class, keyVariableName, JSON_PARSER_VARIABLE_NAME) .addStatement("$L.nextToken()", JSON_PARSER_VARIABLE_NAME) .beginControlFlow("if ($L.getCurrentToken() == $T.VALUE_NULL)", JSON_PARSER_VARIABLE_NAME, JsonToken.class) .addStatement("$L.put($L, null)", mapVariableName, keyVariableName) .nextControlFlow("else"); parameterType.parse(builder, depth + 1, "$L.put($L, $L)", mapVariableName, keyVariableName); builder .endControlFlow() .endControlFlow() .addStatement(setter, expandStringArgs(setterFormatArgs, mapVariableName)) .nextControlFlow("else") .addStatement(setter, expandStringArgs(setterFormatArgs, "null")) .endControlFlow(); }
@Override public void serialize(Builder builder, int depth, String fieldName, List<String> processedFieldNames, String getter, boolean isObjectProperty, boolean checkIfNull, boolean writeIfNull, boolean writeCollectionElementIfNull) { if (checkIfNull) { builder.beginControlFlow("if ($L != null)", getter); } if (isObjectProperty) { builder.addStatement("$L.writeStringField($S, $L)", JSON_GENERATOR_VARIABLE_NAME, fieldName, getter); } else { builder.addStatement("$L.writeString($L)", JSON_GENERATOR_VARIABLE_NAME, getter); } if (checkIfNull) { if (writeIfNull) { builder.nextControlFlow("else"); if (isObjectProperty) { builder.addStatement("$L.writeFieldName($S)", JSON_GENERATOR_VARIABLE_NAME, fieldName); } builder.addStatement("$L.writeNull()", JSON_GENERATOR_VARIABLE_NAME); } builder.endControlFlow(); } } }
@Override public void serialize(Builder builder, int depth, String fieldName, List<String> processedFieldNames, String getter, boolean isObjectProperty, boolean checkIfNull, boolean writeIfNull, boolean writeCollectionElementIfNull) { if (!isPrimitive && checkIfNull) { builder.beginControlFlow("if ($L != null)", getter); } if (isObjectProperty) { builder.addStatement("$L.writeBooleanField($S, $L)", JSON_GENERATOR_VARIABLE_NAME, fieldName, getter); } else { builder.addStatement("$L.writeBoolean($L)", JSON_GENERATOR_VARIABLE_NAME, getter); } if (!isPrimitive && checkIfNull) { if (writeIfNull) { builder.nextControlFlow("else"); if (isObjectProperty) { builder.addStatement("$L.writeFieldName($S)", JSON_GENERATOR_VARIABLE_NAME, fieldName); } builder.addStatement("$L.writeNull()", JSON_GENERATOR_VARIABLE_NAME); } builder.endControlFlow(); } } }
@Override public void parse(Builder builder, int depth, String setter, Object... setterFormatArgs) { Type parameterType = parameterTypes.get(0); final String collectionVarName = "collection" + depth; final String valueVarName = "value" + depth; final String instanceCreator = String.format("$T<%s> $L = new $T<%s>()", parameterType.getParameterizedTypeString(), parameterType.getParameterizedTypeString()); final Object[] instanceCreatorArgs = expandStringArgs(getTypeName(), parameterType.getParameterizedTypeStringArgs(), collectionVarName, getTypeName(), parameterType.getParameterizedTypeStringArgs()); builder.beginControlFlow("if ($L.getCurrentToken() == $T.START_ARRAY)", JSON_PARSER_VARIABLE_NAME, JsonToken.class) .addStatement(instanceCreator, instanceCreatorArgs) .beginControlFlow("while ($L.nextToken() != $T.END_ARRAY)", JSON_PARSER_VARIABLE_NAME, JsonToken.class) .addStatement("$T $L", parameterType.getTypeName(), valueVarName); parameterType.parse(builder, depth + 1, "$L = $L", valueVarName); builder .addStatement("$L.add($L)", collectionVarName, valueVarName) .endControlFlow(); builder .addStatement(setter, expandStringArgs(setterFormatArgs, collectionVarName)) .nextControlFlow("else") .addStatement(setter, expandStringArgs(setterFormatArgs, "null")) .endControlFlow(); }
@Override public void serialize(Builder builder, int depth, String fieldName, List<String> processedFieldNames, String getter, boolean isObjectProperty, boolean checkIfNull, boolean writeIfNull, boolean writeCollectionElementIfNull) { if (checkIfNull) { builder.beginControlFlow("if ($L != null)", getter); } if (isObjectProperty) { builder.addStatement("$L.writeFieldName($S)", JSON_GENERATOR_VARIABLE_NAME, fieldName); } builder.addStatement("$L.serialize($L, $L, true)", mMapperVariableName, getter, JSON_GENERATOR_VARIABLE_NAME); if (checkIfNull) { if (writeIfNull) { builder.nextControlFlow("else"); if (isObjectProperty) { builder.addStatement("$L.writeFieldName($S)", JSON_GENERATOR_VARIABLE_NAME, fieldName); } builder.addStatement("$L.writeNull()", JSON_GENERATOR_VARIABLE_NAME); } builder.endControlFlow(); } }
@Override public void serialize(Builder builder, int depth, String fieldName, List<String> processedFieldNames, String getter, boolean isObjectProperty, boolean checkIfNull, boolean writeIfNull, boolean writeCollectionElementIfNull) { if (checkIfNull) { builder.beginControlFlow("if ($L != null)", getter); } if (isObjectProperty) { builder.addStatement("$L.writeFieldName($S)", JSON_GENERATOR_VARIABLE_NAME, fieldName); } builder.addStatement("$L.serialize($L, $L, true)", mJsonMapperVariableName, getter, JSON_GENERATOR_VARIABLE_NAME); if (checkIfNull) { if (writeIfNull) { builder.nextControlFlow("else"); if (isObjectProperty) { builder.addStatement("$L.writeFieldName($S)", JSON_GENERATOR_VARIABLE_NAME, fieldName); } builder.addStatement("$L.writeNull()", JSON_GENERATOR_VARIABLE_NAME); } builder.endControlFlow(); } }
@Override public void serialize(Builder builder, int depth, String fieldName, List<String> processedFieldNames, String getter, boolean isObjectProperty, boolean checkIfNull, boolean writeIfNull, boolean writeCollectionElementIfNull) { if (!mTypeName.isPrimitive() && checkIfNull) { builder.beginControlFlow("if ($L != null)", getter); } builder.addStatement("$T.typeConverterFor($T.class).serialize($L, $S, $L, $L)", LoganSquare.class, mTypeName, getter, isObjectProperty ? fieldName : null, isObjectProperty, JSON_GENERATOR_VARIABLE_NAME); if (!mTypeName.isPrimitive() && checkIfNull) { if (writeIfNull) { builder.nextControlFlow("else"); if (isObjectProperty) { builder.addStatement("$L.writeFieldName($S)", JSON_GENERATOR_VARIABLE_NAME, fieldName); } builder.addStatement("$L.writeNull()", JSON_GENERATOR_VARIABLE_NAME); } builder.endControlFlow(); } }
@Override public void serialize(Builder builder, int depth, String fieldName, List<String> processedFieldNames, String getter, boolean isObjectProperty, boolean checkIfNull, boolean writeIfNull, boolean writeCollectionElementIfNull) { if (checkIfNull) { builder.beginControlFlow("if ($L != null)", getter); } builder.addStatement("$L.serialize($L, $L, $L)", ObjectMapperInjector.getMapperVariableName(ObjectMapper.class), getter, JSON_GENERATOR_VARIABLE_NAME, isObjectProperty); if (checkIfNull) { if (writeIfNull) { builder.nextControlFlow("else"); if (isObjectProperty) { builder.addStatement("$L.writeFieldName($S)", JSON_GENERATOR_VARIABLE_NAME, fieldName); } builder.addStatement("$L.writeNull()", JSON_GENERATOR_VARIABLE_NAME); } builder.endControlFlow(); } }