@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 (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 (!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 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(); } }
@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 (!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(); } }
private static MethodSpec createAsSpecMethod(OutputValue value, OutputSpec spec) { List<TypeVariableName> missingTypeVariables = extractMissingTypeVariablesForValue(value, spec); Builder builder = MethodSpec.methodBuilder("as" + spec.outputClass().simpleName()) .addModifiers(Modifier.PUBLIC, Modifier.FINAL) .returns(spec.parameterizedOutputClass()) .addTypeVariables(missingTypeVariables) .addStatement("return ($T) this", spec.parameterizedOutputClass()); // if there are type variables that this sub-type doesn't use, they will lead to 'unchecked // cast' // warnings when compiling the generated code. These warnings are safe to suppress, since this // sub type will never use those type variables. if (!missingTypeVariables.isEmpty()) { builder.addAnnotation(SUPPRESS_UNCHECKED_WARNINGS); } return builder.build(); }
protected void buildExtraMethodSpecs(TypeSpec.Builder typespecbuilder) throws AnnotationProcessingException { MethodInfo methodinfo; CodeBlock.Builder code; for (String name : m_extramtdinfo.keySet()) { methodinfo = m_extramtdinfo.get(name); code = CodeBlock.builder(); switch (name) { case "getNativeFieldInfo_static": code.addStatement("return $1N", m_fieldsinfo.get("nfieldinfo").name); break; default: throw new AnnotationProcessingException(null, "Method %s is not supported.", name); } typespecbuilder.addMethod(methodinfo.specbuilder.addCode(code.build()).build()); } }
/** * Creates the implementation of {@code SensorEventListener#onSensorChanged(SensorEvent)} which * calls the annotated method on our target class. * * @param annotatedMethod Method annotated with {@code OnSensorChanged}. * @return {@link MethodSpec} of {@code SensorEventListener#onSensorChanged(SensorEvent)}. */ @NonNull private static MethodSpec createOnSensorChangedListenerMethod( @Nullable AnnotatedMethod annotatedMethod) { ParameterSpec sensorEventParameter = ParameterSpec.builder(SENSOR_EVENT, "event").build(); Builder methodBuilder = getBaseMethodBuilder("onSensorChanged").addParameter(sensorEventParameter); if (annotatedMethod != null) { ExecutableElement sensorChangedExecutableElement = annotatedMethod.getExecutableElement(); methodBuilder.addStatement("target.$L($N)", sensorChangedExecutableElement.getSimpleName(), sensorEventParameter); } return methodBuilder.build(); }
/** * Creates the implementation of {@code SensorEventListener#onAccuracyChanged(Sensor, int)} * which calls the annotated method on our target class. * * @param annotatedMethod Method annotated with {@link OnAccuracyChanged}. * @return {@link MethodSpec} of {@code SensorEventListener#onAccuracyChanged(Sensor, int)}. */ @NonNull private static MethodSpec createOnAccuracyChangedListenerMethod( @Nullable AnnotatedMethod annotatedMethod) { ParameterSpec sensorParameter = ParameterSpec.builder(SENSOR, "sensor").build(); ParameterSpec accuracyParameter = ParameterSpec.builder(TypeName.INT, "accuracy").build(); Builder methodBuilder = getBaseMethodBuilder("onAccuracyChanged").addParameter(sensorParameter) .addParameter(accuracyParameter); if (annotatedMethod != null) { ExecutableElement accuracyChangedExecutableElement = annotatedMethod.getExecutableElement(); methodBuilder.addStatement("target.$L($N, $N)", accuracyChangedExecutableElement.getSimpleName(), sensorParameter, accuracyParameter); } return methodBuilder.build(); }
public JavaFile getJavaFile() { ClassName bsoneerCodecProviderClassName = ClassName.get(basePackage, "BsoneeCodecProvider"); TypeSpec.Builder codecProviderBuilder = TypeSpec.classBuilder(bsoneerCodecProviderClassName.simpleName()) .addJavadoc(ProcessorJavadocs.GENERATED_BY_BSONEER) .addSuperinterface(CodeUtil.bsonCodecProviderTypeName()) .addModifiers(PUBLIC).addAnnotation(AnnotationSpec.builder(Generated.class) .addMember("value", "$S", BsonProcessor.class.getCanonicalName()) .build());; addBaseConstructor(codecProviderBuilder); addGetCodecMethod(codecProviderBuilder); return JavaFile.builder(bsoneerCodecProviderClassName.packageName(), codecProviderBuilder.build()) .addFileComment(ProcessorJavadocs.GENERATED_BY_BSONEER) .indent("\t") .build(); }
private void addGetCodecMethod(com.squareup.javapoet.TypeSpec.Builder codecProviderBuilder) { TypeVariableName typeVariableName = TypeVariableName.get("T"); TypeName clazzName = ParameterizedTypeName.get(ClassName.get(Class.class), typeVariableName); TypeName codecName = ParameterizedTypeName.get((ClassName) CodeUtil.bsonCodecTypeName(), typeVariableName); Builder methodSpec = MethodSpec.methodBuilder("get") .addAnnotation(Override.class) .addAnnotation(Util.suppressWarningsAnnotation(true, false)) .addModifiers(Modifier.PUBLIC) .addParameter(ParameterSpec.builder(clazzName, "clazz", Modifier.FINAL).build()) .addParameter(CodeUtil.bsonRegistryParameter()) .addTypeVariable(typeVariableName) .returns(codecName) .addJavadoc("{@inhericDoc}\n"); for (ClassName entityClassName : generated) { ClassName bsoneerCodecClassName = Util.bsoneeName(entityClassName, GeneratedClasses.BSONEE_CODEC_SUFFIX); methodSpec.beginControlFlow("if (clazz == $T.class)", entityClassName); methodSpec.addStatement("return (Codec<T>) new $T(registry)", bsoneerCodecClassName); methodSpec.endControlFlow(); } methodSpec.addStatement("return null"); codecProviderBuilder.addMethod(methodSpec.build()); }
public void writeBody(TypeSpec.Builder codecBuilder, ClassName entityClassName) { TypeName setterIface = ParameterizedTypeName.get(ClassName.get(BsoneeBaseSetter.class), entityClassName); Map<String, String> setters = new LinkedHashMap<String, String>(); for (Property property : bean.getOwnAndInheritedProperties()) { String setterClassName = property.getUpperName() + "Setter"; setters.put(property.getBsonNames().iterator().next(), setterClassName); codecBuilder.addType(createSetterClass(entityClassName, setterIface, setterClassName, property).build()); } Builder setupSetterBuilder = MethodSpec.methodBuilder("setupSetters").addModifiers(Modifier.PROTECTED); for (Entry<String, String> entry : setters.entrySet()) { setupSetterBuilder.addStatement("settersByName.put(\"$L\",new $L())", entry.getKey(), entry.getValue()); } codecBuilder.addMethod(setupSetterBuilder.build()); }
@Override public void addDecodeStatements(CodeGeneratorContext ctx) { Builder builder = ctx.builder(); IdModel idModel = ctx.field().idModel(); builder.addStatement("$T id = reader.readObjectId()", ObjectId.class); if (idModel != null) { if (idModel.conversion() == IdConversion.HEX_OBJECTID) { builder.addStatement(ctx.setter("id.toHexString()")); } else if (idModel.conversion() == IdConversion.BASE64_OBJECTID) { builder.addStatement( ctx.setter("$T.getUrlEncoder().encodeToString(id.toByteArray())"), Base64.class); } } }
@Override public void addDecodeStatements(CodeGeneratorContext ctx) { Builder builder = ctx.builder(); IdModel idModel = ctx.field().idModel(); builder.addStatement("$T id = this.uUIDCodec.decode(reader, decoderContext)", UUID.class); if (idModel != null) { if (idModel.conversion() == IdConversion.HEX_UUID) { builder.addStatement(ctx.setter("id.toString()")); } else if (idModel.conversion() == IdConversion.BASE64_UUID) { builder.addStatement("$T bb = $T.wrap(new byte[16])", ByteBuffer.class, ByteBuffer.class); builder.addStatement("bb.putLong(id.getMostSignificantBits())"); builder.addStatement("bb.putLong(id.getLeastSignificantBits())"); builder.addStatement( ctx.setter("$T.getUrlEncoder().encodeToString(bb.array())"), Base64.class); } } }
@Override public void parse(Builder builder, int depth, String setter, Object... setterFormatArgs) { if (isPrimitive) { setter = replaceLastLiteral(setter, "$L.getValueAsBoolean()"); builder.addStatement(setter, expandStringArgs(setterFormatArgs, JSON_PARSER_VARIABLE_NAME)); } else { setter = replaceLastLiteral(setter, "$L.getCurrentToken() == $T.VALUE_NULL ? null : Boolean.valueOf($L.getValueAsBoolean())"); builder.addStatement(setter, expandStringArgs(setterFormatArgs, JSON_PARSER_VARIABLE_NAME, JsonToken.class, JSON_PARSER_VARIABLE_NAME)); } }
@Override public void parse(Builder builder, int depth, String setter, Object... setterFormatArgs) { if (isPrimitive) { setter = replaceLastLiteral(setter, "(byte)$L.getValueAsInt()"); builder.addStatement(setter, expandStringArgs(setterFormatArgs, JSON_PARSER_VARIABLE_NAME)); } else { setter = replaceLastLiteral(setter, "$L.getCurrentToken() == $T.VALUE_NULL ? null : Byte.valueOf((byte)$L.getValueAsInt())"); builder.addStatement(setter, expandStringArgs(setterFormatArgs, JSON_PARSER_VARIABLE_NAME, JsonToken.class, JSON_PARSER_VARIABLE_NAME)); } }
@Override public void parse(Builder builder, int depth, String setter, Object... setterFormatArgs) { if (isPrimitive) { setter = replaceLastLiteral(setter, "$L.getValueAsDouble()"); builder.addStatement(setter, expandStringArgs(setterFormatArgs, JSON_PARSER_VARIABLE_NAME)); } else { setter = replaceLastLiteral(setter, "$L.getCurrentToken() == $T.VALUE_NULL ? null : Double.valueOf($L.getValueAsDouble())"); builder.addStatement(setter, expandStringArgs(setterFormatArgs, JSON_PARSER_VARIABLE_NAME, JsonToken.class, JSON_PARSER_VARIABLE_NAME)); } }
@Override public void parse(Builder builder, int depth, String setter, Object... setterFormatArgs) { if (isPrimitive) { setter = replaceLastLiteral(setter, "$L.getValueAsLong()"); builder.addStatement(setter, expandStringArgs(setterFormatArgs, JSON_PARSER_VARIABLE_NAME)); } else { setter = replaceLastLiteral(setter, "$L.getCurrentToken() == $T.VALUE_NULL ? null : Long.valueOf($L.getValueAsLong())"); builder.addStatement(setter, expandStringArgs(setterFormatArgs, JSON_PARSER_VARIABLE_NAME, JsonToken.class, JSON_PARSER_VARIABLE_NAME)); } }
@Override public void parse(Builder builder, int depth, String setter, Object... setterFormatArgs) { if (isPrimitive) { setter = replaceLastLiteral(setter, "(float)$L.getValueAsDouble()"); builder.addStatement(setter, expandStringArgs(setterFormatArgs, JSON_PARSER_VARIABLE_NAME)); } else { setter = replaceLastLiteral(setter, "$L.getCurrentToken() == $T.VALUE_NULL ? null : new Float($L.getValueAsDouble())"); builder.addStatement(setter, expandStringArgs(setterFormatArgs, JSON_PARSER_VARIABLE_NAME, JsonToken.class, JSON_PARSER_VARIABLE_NAME)); } }
@Override public void parse(Builder builder, int depth, String setter, Object... setterFormatArgs) { if (isPrimitive) { setter = replaceLastLiteral(setter, "$L.getValueAsInt()"); builder.addStatement(setter, expandStringArgs(setterFormatArgs, JSON_PARSER_VARIABLE_NAME)); } else { setter = replaceLastLiteral(setter, "$L.getCurrentToken() == $T.VALUE_NULL ? null : Integer.valueOf($L.getValueAsInt())"); builder.addStatement(setter, expandStringArgs(setterFormatArgs, JSON_PARSER_VARIABLE_NAME, JsonToken.class, JSON_PARSER_VARIABLE_NAME)); } }
@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 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(MethodSpec.Builder builder, int depth, String fieldName, List<String> processedFieldNames, String getter, boolean isObjectProperty, boolean checkIfNull, boolean writeIfNull, boolean writeCollectionElementIfNull) { Type parameterType = parameterTypes.get(0); final String cleanFieldName = TextUtils.toUniqueFieldNameVariable(fieldName, processedFieldNames); final String collectionVariableName = "lslocal" + cleanFieldName; final String elementVarName = "element" + depth; final String instanceCreator = String.format("final $T<%s> $L = $L", parameterType.getParameterizedTypeString()); final Object[] instanceCreatorArgs = expandStringArgs(getGenericClass(), parameterType.getParameterizedTypeStringArgs(), collectionVariableName, getter); final String forLine = String.format("for (%s $L : $L)", parameterType.getParameterizedTypeString()); final Object[] forLineArgs = expandStringArgs(parameterType.getParameterizedTypeStringArgs(), elementVarName, collectionVariableName); builder .addStatement(instanceCreator, instanceCreatorArgs) .beginControlFlow("if ($L != null)", collectionVariableName); if (isObjectProperty) { builder.addStatement("$L.writeFieldName($S)", JSON_GENERATOR_VARIABLE_NAME, fieldName); } builder .addStatement("$L.writeStartArray()", JSON_GENERATOR_VARIABLE_NAME) .beginControlFlow(forLine, forLineArgs) .beginControlFlow("if ($L != null)", elementVarName); parameterType.serialize(builder, depth + 1, collectionVariableName + "Element", processedFieldNames, elementVarName, false, false, false, writeCollectionElementIfNull); if (writeCollectionElementIfNull) { builder .nextControlFlow("else") .addStatement("$L.writeNull()", JSON_GENERATOR_VARIABLE_NAME); } builder .endControlFlow() .endControlFlow() .addStatement("$L.writeEndArray()", JSON_GENERATOR_VARIABLE_NAME) .endControlFlow(); }
public static TypeSpec create( OutputValue value, OutputSpec spec, MatchMethods matchMethods, MapMethods mapMethods) throws ParserException { TypeSpec.Builder typeBuilder = TypeSpec.classBuilder(value.outputClass()) .addTypeVariables(value.typeVariables()) .superclass(getSuperclassForValue(value, spec)) .addModifiers(Modifier.PUBLIC, Modifier.STATIC, Modifier.FINAL); typeBuilder.addMethod(createConstructor(value)); typeBuilder.addFields(createFields(value)); typeBuilder.addMethods(createGetters(value)); typeBuilder.addMethod(createEquals(value)); typeBuilder.addMethod(createHashCode(value)); typeBuilder.addMethod(createToString(value)); typeBuilder.addMethod(matchMethods.createFoldVoidMethod(value)); typeBuilder.addMethod(mapMethods.createFoldMethod(value)); if (spec.hasTypeVariables()) { typeBuilder.addMethod(createAsSpecMethod(value, spec)); } return typeBuilder.build(); }
private static MethodSpec createConstructor(OutputValue value) { MethodSpec.Builder constructor = MethodSpec.constructorBuilder().addModifiers(Modifier.PRIVATE); for (Parameter parameter : value.parameters()) { constructor.addParameter(parameter.type(), parameter.name()); if (parameter.type().isPrimitive() || parameter.canBeNull()) { constructor.addStatement("this.$1L = $1L", parameter.name()); } else { constructor.addStatement("this.$1L = checkNotNull($1L)", parameter.name()); } } return constructor.build(); }
private static MethodSpec createGetter(Parameter parameter) { MethodSpec.Builder builder = MethodSpec.methodBuilder(parameter.name()) .addModifiers(Modifier.PUBLIC, Modifier.FINAL) .returns(parameter.type()) .addStatement("return $L", parameter.name()); if (parameter.canBeNull()) { builder.addAnnotation(Nullable.class); } else if (!parameter.type().isPrimitive()) { builder.addAnnotation(Nonnull.class); } return builder.build(); }
private static MethodSpec createHashCode(OutputValue value) { MethodSpec.Builder result = MethodSpec.methodBuilder("hashCode") .addAnnotation(Override.class) .addModifiers(Modifier.PUBLIC) .returns(int.class); if (!value.hasParameters()) { result.addStatement("return 0"); return result.build(); } result.addStatement("int result = 0"); for (Parameter parameter : value.parameters()) { String fieldName = parameter.name(); result.addCode("result = result * 31 + "); if (parameter.type().isPrimitive()) { TypeName boxedType = parameter.type().box(); result.addStatement("$T.valueOf($L).hashCode()", boxedType, fieldName); } else { if (parameter.canBeNull()) { result.addStatement("($1L != null ? $1L.hashCode() : 0)", fieldName); } else { result.addStatement("$L.hashCode()", fieldName); } } } result.addStatement("return result"); return result.build(); }
private static MethodSpec createToString(OutputValue value) { MethodSpec.Builder result = MethodSpec.methodBuilder("toString") .addAnnotation(Override.class) .addModifiers(Modifier.PUBLIC) .returns(String.class); if (!value.parameters().iterator().hasNext()) { result.addStatement("return \"$L{}\"", value.name()); return result.build(); } result.addStatement("$1T builder = new $1T()", StringBuilder.class); boolean first = true; for (Parameter parameter : value.parameters()) { String fieldName = parameter.name(); if (first) { first = false; result.addStatement("builder.append(\"$2L{$1N=\").append($1L)", fieldName, value.name()); } else { result.addStatement("builder.append(\", $1N=\").append($1L)", fieldName); } } result.addStatement("return builder.append('}').toString()", value.name()); return result.build(); }
public MethodSpec createAsMethod(OutputSpec spec) { Builder builder = MethodSpec.methodBuilder("as" + value.name()) .addModifiers(Modifier.PUBLIC, Modifier.FINAL) .returns(value.parameterizedOutputClass()) .addStatement("return ($T) this", value.parameterizedOutputClass()); if (!ValueTypeFactory.extractMissingTypeVariablesForValue(value, spec).isEmpty() && value.hasTypeVariables()) { builder.addAnnotation(ValueTypeFactory.SUPPRESS_UNCHECKED_WARNINGS); } return builder.build(); }
@Override protected MethodSpec implementDeserializeMethod(TypeElement typeElement, Builder deserializeMethodBuilder) { Name className = typeElement.getSimpleName(); return deserializeMethodBuilder.addStatement("$T codec = $L.getCodec()", ObjectCodec.class, JSON_PARSER_PARAMETER_NAME) .addStatement("$T rootNode = codec.readTree($L)", JsonNode.class, JSON_PARSER_PARAMETER_NAME) .addStatement("return codec.treeToValue(rootNode, $L$L.class)", className, ImplementationCreator.CLASS_IMPLEMENTATION_NAME_SUFFIX) .build(); }
@Override protected MethodSpec implementDeserializeMethod(TypeElement typeElement, Builder deserializeMethodBuilder) { Optional<DeserializationConstructs> constructs = loadConstructs(typeElement); if (!constructs.isPresent()) { return deserializeMethodBuilder.addStatement("return null").build(); } TypeElement enumTypeElement = constructs.get().getEnumTypeElement(); ImmutableList<Element> enumValueElements = constructs.get().getEnumValueElements(); ExecutableElement enumValueAccessorMethod = constructs.get().getEnumValueAccessorMethod(); ExecutableElement enumInstanceAccessorMethod = constructs.get().getEnumInstanceAccessorMethod(); String memberVariableName = this.processorUtil.createMemberVariableName(enumValueAccessorMethod); deserializeMethodBuilder.addStatement("$T codec = $L.getCodec()", ObjectCodec.class, JSON_PARSER_PARAMETER_NAME) .addStatement("$T rootNode = codec.readTree($L)", JsonNode.class, JSON_PARSER_PARAMETER_NAME) .addStatement("$T typeNode = rootNode.get($S)", JsonNode.class, memberVariableName) .beginControlFlow("if (typeNode == null)") .addStatement("$T javaType = $L.constructType($T.class)", JavaType.class, DESERIALIZATION_CONTEXT_PARAMETER_NAME, enumTypeElement) .addStatement("throw new $T($L, \"$L not present\", javaType, null)", InvalidTypeIdException.class, JSON_PARSER_PARAMETER_NAME, memberVariableName) .endControlFlow() .addStatement("$T type = codec.treeToValue(typeNode, $T.$L)", enumTypeElement, enumTypeElement, "class") .beginControlFlow("switch (type)"); enumValueElements.forEach(enumValueElement -> deserializeMethodBuilder .beginControlFlow("case $L:", enumValueElement) .addStatement("return codec.treeToValue(rootNode, $T.$L.$L)", enumTypeElement, enumValueElement, enumInstanceAccessorMethod) .endControlFlow()); return deserializeMethodBuilder.beginControlFlow("default :") .addStatement("return null") .endControlFlow() .endControlFlow() .build(); }
protected void buildFieldSpecs(TypeSpec.Builder typespecbuilder, Map<String, FieldInfo> fieldinfos) { FieldInfo fieldinfo; for (String name : fieldinfos.keySet()) { fieldinfo = fieldinfos.get(name); if (null != fieldinfo.specbuilder) { typespecbuilder.addField(fieldinfo.specbuilder.build()); } } }
/** * Return a {@link Builder} with the given method name and default properties. * * @param name The name of the method. * @return A base {@link Builder} to use for methods. */ @NonNull private static Builder getBaseMethodBuilder(@NonNull String name) { return MethodSpec.methodBuilder(name) .addModifiers(Modifier.PUBLIC) .returns(void.class) .addAnnotation(Override.class); }
@NotNull @Override public MethodSpec create() { Collection<ColumnMethod> setters = mColumnMethodRepository.findSettersForTableClass(mTableClass.getFullyQualifiedName()); ClassName entityClassName = ClassName.get(mTableClass.getPackageName(), mTableClass.getClassName()); Builder methodBuilder = MethodSpec.methodBuilder("read") .addModifiers(PUBLIC) .addParameter(CURSOR, "cursor", FINAL) .returns(entityClassName) .addStatement( "$T result = new $T()", entityClassName, entityClassName ) .addCode("\n"); ReadCursorCreatorFactory creatorFactory = new ReadCursorCreatorFactory("result", "cursor", mSerializerClassRepository); for (ColumnMethod setter : setters) { ReadCursorCreator readCursorCreator = creatorFactory.createReadCursorCreator(setter); methodBuilder.addCode(readCursorCreator.create()); } return methodBuilder.addCode("\n") .addStatement("return result") .build(); }
@NotNull @Override public MethodSpec create() { Parameter parameter = mMethod.getParameter(); Builder builder = MethodSpec.methodBuilder(mMethod.getMethodName()) .addJavadoc(createJavadoc()) .addAnnotation(Override.class) .addModifiers(PUBLIC) .addParameter(ClassName.bestGuess(parameter.getFullyQualifiedType()), parameter.getVariableName(), FINAL) .returns(Long.class) .addStatement("$T result = null", Long.class) .addCode("\n") .addStatement("$T contentValues = $N($L)", CONTENT_VALUES, mCreateContentValuesSpec, parameter.getVariableName()) .addStatement("$T id = mDatabase.insert($S, null, contentValues)", long.class, mTableClass.getTableName()) .beginControlFlow("if (id != -1)"); if (mPrimaryKeySetter != null && Long.class.getName().equals(mPrimaryKeySetter.getType())) { builder.addStatement("$L.$L(id)", parameter.getVariableName(), mPrimaryKeySetter.getMethodName()); } builder.addStatement("result = id") .endControlFlow() .addCode("\n") .addStatement("return result"); return builder.build(); }
@NotNull @Override public MethodSpec create() { ClassName entityClassName = ClassName.get(mTableClass.getPackageName(), mTableClass.getClassName()); Parameter parameter = mMethod.getParameter(); if (parameter == null) { throw new IllegalStateException("Missing parameter."); } Builder builder = MethodSpec.methodBuilder(mMethod.getMethodName()) .addJavadoc(createJavadoc()) .addAnnotation(Override.class) .addModifiers(PUBLIC) .addParameter(TypeName.get(parameter.getType()), parameter.getVariableName(), FINAL) .beginControlFlow("try") .addStatement("$N.beginTransaction()", mDatabaseFieldSpec) .addCode("\n") .beginControlFlow("for ($T entity: $L)", entityClassName, parameter.getVariableName()) .addStatement("$T contentValues = $N(entity)", CONTENT_VALUES, mCreateContentValuesSpec) .addStatement("$N.insert($S, null, contentValues)", mDatabaseFieldSpec, mTableClass.getTableName()) .endControlFlow() .addCode("\n") .addStatement("$N.setTransactionSuccessful()", mDatabaseFieldSpec) .nextControlFlow("finally") .addStatement("$N.endTransaction()", mDatabaseFieldSpec) .endControlFlow(); return builder.build(); }
public void writeBody(Builder p) { for (Property property : bean.getOwnAndInheritedProperties()) { TypeMirror key = property.getResolvedType(); String accessName = property.getGetterCall(); boolean isPrimitive = key.getKind().isPrimitive(); for (String bsonName : property.getBsonNames()) { com.squareup.javapoet.CodeBlock.Builder codeBuilder = CodeBlock .builder(); codeBuilder.addStatement("writer.writeName(\"$L\")", bsonName); for(EncodeCodeProvider scp:codeProviders){ if ( scp.applies(property) ){ scp.putEncodeCode(codeBuilder, property.getResolvedType(), codeProviders, "value." + property.getGetterCall()); break; } } CodeBlock codeBlock = codeBuilder.build(); if ("_id".equals(bsonName)) { codeBlock = writeAsId(codeBlock, false); } if (isPrimitive) { p.addCode(codeBlock); } else { writeCheckingForNull(p, accessName, codeBlock); } } } }