| // 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()); |
| } |
| } |