diff --git a/java/util/src/main/java/com/google/protobuf/util/JsonFormat.java b/java/util/src/main/java/com/google/protobuf/util/JsonFormat.java index 97bdbb0b70f8..7901a89a9e70 100644 --- a/java/util/src/main/java/com/google/protobuf/util/JsonFormat.java +++ b/java/util/src/main/java/com/google/protobuf/util/JsonFormat.java @@ -178,6 +178,35 @@ public Printer usingTypeRegistry(com.google.protobuf.TypeRegistry registry) { sortingMapKeys); } + /** + * Creates a new {@link Printer} that will always print fields unless they are a message type or + * in a oneof. + * + *
Note that this does print Proto2 Optional but does not print Proto3 Optional fields, as + * the latter is represented using a synthetic oneof. + * + *
The new Printer clones all other configurations from the current {@link Printer}. + * + * @deprecated This method is deprecated, and slated for removal in the next Java breaking + * change (5.x). Prefer {@link #alwaysPrintFieldsWithNoPresence} + */ + @Deprecated + public Printer includingDefaultValueFields() { + if (shouldPrintDefaults != ShouldPrintDefaults.ONLY_IF_PRESENT) { + throw new IllegalStateException( + "JsonFormat includingDefaultValueFields has already been set."); + } + return new Printer( + registry, + oldRegistry, + ShouldPrintDefaults.ALWAYS_PRINT_EXCEPT_MESSAGES_AND_ONEOFS, + ImmutableSet.of(), + preservingProtoFieldNames, + omittingInsignificantWhitespace, + printingEnumsAsInts, + sortingMapKeys); + } + /** * Creates a new {@link Printer} that will also print default-valued fields if their * FieldDescriptors are found in the supplied set. Empty repeated fields and map fields will be