| // Copyright (c) 2019, the R8 project authors. Please see the AUTHORS file | |
| // for details. All rights reserved. Use of this source code is governed by a | |
| // BSD-style license that can be found in the LICENSE file. | |
| package proto2; | |
| import com.android.tools.r8.proto2.TestProto.NestedMessage; | |
| import com.android.tools.r8.proto2.TestProto.OuterMessage; | |
| import com.android.tools.r8.proto2.TestProto.Primitives; | |
| public class BuilderTestClass { | |
| public static void main(String[] args) { | |
| builderWithPrimitiveSetters(); | |
| builderWithReusedSetters(); | |
| builderWithProtoBuilderSetter(); | |
| builderWithProtoSetter(); | |
| builderWithOneofSetter(); | |
| } | |
| public static void builderWithPrimitiveSetters() { | |
| System.out.println("builderWithPrimitiveSetters"); | |
| Primitives primitives = Primitives.newBuilder().setFooInt32(17).build(); | |
| Primitives other = Primitives.newBuilder().setBarInt64(16).build(); | |
| System.out.println(primitives.getFooInt32()); | |
| System.out.println(other.getBarInt64()); | |
| } | |
| public static void builderWithReusedSetters() { | |
| System.out.println("builderWithReusedSetters"); | |
| Primitives.Builder builder = Primitives.newBuilder().setFooInt32(1); | |
| Primitives primitives = builder.build(); | |
| // Reusing the builder after a build should force copyOnWrite to be kept. | |
| Primitives other = builder.setQuxString("qux").build(); | |
| System.out.println(primitives.getFooInt32()); | |
| System.out.println(other.getQuxString()); | |
| } | |
| public static void builderWithProtoBuilderSetter() { | |
| System.out.println("builderWithProtoBuilderSetter"); | |
| OuterMessage outerMessage = | |
| OuterMessage.newBuilder() | |
| .setNestedField(NestedMessage.newBuilder().setFooInt64(42)) | |
| .build(); | |
| System.out.println(outerMessage.getNestedField().getFooInt64()); | |
| } | |
| public static void builderWithProtoSetter() { | |
| System.out.println("builderWithProtoSetter"); | |
| OuterMessage outerMessage = | |
| OuterMessage.newBuilder() | |
| .setNestedField(NestedMessage.newBuilder().setFooInt64(42).build()) | |
| .build(); | |
| System.out.println(outerMessage.getNestedField().getFooInt64()); | |
| } | |
| public static void builderWithOneofSetter() { | |
| System.out.println("builderWithOneofSetter"); | |
| Primitives primitives = Primitives.newBuilder().setOneofString("foo").build(); | |
| System.out.println(primitives.getOneofString()); | |
| } | |
| } |