From 38fbbf20419ce76152a1c3d024a5fedfef47403a Mon Sep 17 00:00:00 2001 From: shahan Date: Fri, 29 Jun 2018 14:08:49 -0700 Subject: Deletes AutoCodec.PUBLIC_FIELDS strategy. Superseded by DynamicCodec. PiperOrigin-RevId: 202704472 --- .../serialization/autocodec/AutoCodec.java | 7 --- .../autocodec/AutoCodecProcessor.java | 60 ---------------------- 2 files changed, 67 deletions(-) (limited to 'src/main/java/com/google/devtools/build/lib/skyframe/serialization/autocodec') diff --git a/src/main/java/com/google/devtools/build/lib/skyframe/serialization/autocodec/AutoCodec.java b/src/main/java/com/google/devtools/build/lib/skyframe/serialization/autocodec/AutoCodec.java index 840e7dfaef..fd8635d45f 100644 --- a/src/main/java/com/google/devtools/build/lib/skyframe/serialization/autocodec/AutoCodec.java +++ b/src/main/java/com/google/devtools/build/lib/skyframe/serialization/autocodec/AutoCodec.java @@ -63,13 +63,6 @@ public @interface AutoCodec { * otherwise one must be selected using the {@link AutoCodec.Instantiator} annotation. */ INSTANTIATOR, - /** - * Uses the public fields to infer serialization code. - * - *

Serializes each public field. Calls the no-arg constructor of the class to instantiate an - * instance for deserialization. - */ - PUBLIC_FIELDS, /** * For use with {@link com.google.auto.value.AutoValue} classes with an {@link * com.google.auto.value.AutoValue.Builder} static nested Builder class: uses the builder when diff --git a/src/main/java/com/google/devtools/build/lib/skyframe/serialization/autocodec/AutoCodecProcessor.java b/src/main/java/com/google/devtools/build/lib/skyframe/serialization/autocodec/AutoCodecProcessor.java index 41909261a9..b50681db91 100644 --- a/src/main/java/com/google/devtools/build/lib/skyframe/serialization/autocodec/AutoCodecProcessor.java +++ b/src/main/java/com/google/devtools/build/lib/skyframe/serialization/autocodec/AutoCodecProcessor.java @@ -108,9 +108,6 @@ public class AutoCodecProcessor extends AbstractProcessor { case INSTANTIATOR: codecClassBuilder = buildClassWithInstantiatorStrategy(encodedType, annotation); break; - case PUBLIC_FIELDS: - codecClassBuilder = buildClassWithPublicFieldsStrategy(encodedType, annotation); - break; case AUTO_VALUE_BUILDER: codecClassBuilder = buildClassWithAutoValueBuilderStrategy(encodedType, annotation); break; @@ -632,45 +629,6 @@ public class AutoCodecProcessor extends AbstractProcessor { return serializeBuilder.build(); } - private TypeSpec.Builder buildClassWithPublicFieldsStrategy( - TypeElement encodedType, AutoCodec annotation) { - TypeSpec.Builder codecClassBuilder = - AutoCodecUtil.initializeCodecClassBuilder(encodedType, env); - ImmutableList publicFields = - ElementFilter.fieldsIn(env.getElementUtils().getAllMembers(encodedType)) - .stream() - .filter(this::isPublicField) - .collect(toImmutableList()); - codecClassBuilder.addMethod( - buildSerializeMethodWithPublicFields(encodedType, publicFields, annotation)); - MethodSpec.Builder deserializeBuilder = - AutoCodecUtil.initializeDeserializeMethodBuilder(encodedType, env); - buildDeserializeBody(deserializeBuilder, publicFields); - addInstantiatePopulateFieldsAndReturn(deserializeBuilder, encodedType, publicFields); - codecClassBuilder.addMethod(deserializeBuilder.build()); - return codecClassBuilder; - } - - private boolean isPublicField(VariableElement element) { - if (matchesType(element.asType(), Void.class)) { - return false; // Void types can't be instantiated, so the processor ignores them completely. - } - Set modifiers = element.getModifiers(); - return modifiers.contains(Modifier.PUBLIC) && !modifiers.contains(Modifier.STATIC); - } - - private MethodSpec buildSerializeMethodWithPublicFields( - TypeElement encodedType, List fields, AutoCodec annotation) { - MethodSpec.Builder serializeBuilder = - AutoCodecUtil.initializeSerializeMethodBuilder(encodedType, annotation, env); - for (VariableElement parameter : fields) { - String paramAccessor = "input." + parameter.getSimpleName(); - marshallers.writeSerializationCode( - new Marshaller.Context(serializeBuilder, parameter.asType(), paramAccessor)); - } - return serializeBuilder.build(); - } - /** * Adds a body to the deserialize method that extracts serialized parameters. * @@ -736,24 +694,6 @@ public class AutoCodecProcessor extends AbstractProcessor { return parameter.getSimpleName() + "_"; } - /** - * Invokes the constructor, populates public fields and returns the value. - * - *

Used by the {@link AutoCodec.Strategy#PUBLIC_FIELDS} strategy. - */ - private static void addInstantiatePopulateFieldsAndReturn( - MethodSpec.Builder builder, TypeElement type, List fields) { - builder.addStatement( - "$T deserializationResult = new $T()", - TypeName.get(type.asType()), - TypeName.get(type.asType())); - for (VariableElement field : fields) { - String fieldName = field.getSimpleName().toString(); - builder.addStatement("deserializationResult.$L = $L", fieldName, fieldName + "_"); - } - builder.addStatement("return deserializationResult"); - } - /** * Adds fields to the codec class to hold offsets and adds a constructor to initialize them. * -- cgit v1.2.3