Class TextFormat


  • public final class TextFormat
    extends java.lang.Object
    This class implements the Protobuf Text Format.

    Printing and parsing protocol messages in text format is useful for debugging and human editing of messages.

    Unlike the Binary and ProtoJSON formats, Text Format is not designed to be used as a wire format; instead it is intended for human-in-the-loop configuration use-cases.

    Systems processing untrusted inputs should strongly prefer to use Binary format instead. If a textual format of untrusted inputs is required, consider using ProtoJSON format instead.

    • Method Detail

      • shortDebugString

        @Deprecated
        public static java.lang.String shortDebugString​(MessageOrBuilder message)
        Deprecated.
        Use printer().emittingSingleLine(true).printToString(MessageOrBuilder)
        Generates a human readable form of this message, useful for debugging and other purposes, with no newline characters. This is just a trivial wrapper around TextFormat.Printer.shortDebugString(MessageOrBuilder).
      • printUnknownFieldValue

        public static void printUnknownFieldValue​(int tag,
                                                  java.lang.Object value,
                                                  java.lang.Appendable output)
                                           throws java.io.IOException
        Outputs a textual representation of the value of an unknown field.
        Parameters:
        tag - the field's tag number
        value - the value of the field
        output - the output to which to append the formatted value
        Throws:
        java.lang.ClassCastException - if the value is not appropriate for the given field descriptor
        java.io.IOException - if there is an exception writing to the output
      • printer

        public static TextFormat.Printer printer()
        Printer instance which escapes non-ASCII characters.
      • debugFormatPrinter

        public static TextFormat.Printer debugFormatPrinter()
        Printer instance which escapes non-ASCII characters and prints in the debug format.
      • defaultFormatPrinter

        public static TextFormat.Printer defaultFormatPrinter()
        Printer instance which escapes non-ASCII characters and prints in the debug format.
      • print

        @Deprecated
        @InlineMe(replacement="TextFormat.printer().print(message, output)",
                  imports="com.google.protobuf.TextFormat")
        public static void print​(MessageOrBuilder message,
                                 java.lang.Appendable output)
                          throws java.io.IOException
        Deprecated.
        Use printer().print(MessageOrBuilder, Appendable)
        Outputs a textual representation of the Protocol Message supplied into the parameter output. (This representation is the new version of the classic "ProtocolPrinter" output from the original Protocol Buffer system)
        Throws:
        java.io.IOException
      • printUnicode

        @Deprecated
        public static void printUnicode​(MessageOrBuilder message,
                                        java.lang.Appendable output)
                                 throws java.io.IOException
        Deprecated.
        Use printer().escapingNonAscii(false).print(MessageOrBuilder, Appendable)
        Same as print(), except that non-ASCII characters are not escaped.
        Throws:
        java.io.IOException
      • printToString

        @Deprecated
        public static java.lang.String printToString​(MessageOrBuilder message)
        Deprecated.
        Use message.toString()
        Like print(), but writes directly to a String and returns it.
      • printToUnicodeString

        @Deprecated
        public static java.lang.String printToUnicodeString​(MessageOrBuilder message)
        Deprecated.
        Use printer().escapingNonAscii(false).printToString(MessageOrBuilder)
        Same as printToString(), except that non-ASCII characters in string type fields are not escaped in backslash+octals.
      • printFieldValue

        @Deprecated
        @InlineMe(replacement="TextFormat.printer().printFieldValue(field, value, output)",
                  imports="com.google.protobuf.TextFormat")
        public static void printFieldValue​(Descriptors.FieldDescriptor field,
                                           java.lang.Object value,
                                           java.lang.Appendable output)
                                    throws java.io.IOException
        Deprecated.
        Use printer().printFieldValue(FieldDescriptor, Object, Appendable)
        Outputs a textual representation of the value of given field value.
        Parameters:
        field - the descriptor of the field
        value - the value of the field
        output - the output to which to append the formatted value
        Throws:
        java.lang.ClassCastException - if the value is not appropriate for the given field descriptor
        java.io.IOException - if there is an exception writing to the output
      • unsignedToString

        public static java.lang.String unsignedToString​(int value)
        Convert an unsigned 32-bit integer to a string.
      • unsignedToString

        public static java.lang.String unsignedToString​(long value)
        Convert an unsigned 64-bit integer to a string.
      • merge

        public static void merge​(java.lang.Readable input,
                                 Message.Builder builder)
                          throws java.io.IOException
        Parse a text-format message from input and merge the contents into builder.
        Throws:
        java.io.IOException
      • merge

        public static void merge​(java.lang.Readable input,
                                 ExtensionRegistry extensionRegistry,
                                 Message.Builder builder)
                          throws java.io.IOException
        Parse a text-format message from input and merge the contents into builder. Extensions will be recognized if they are registered in extensionRegistry.
        Throws:
        java.io.IOException
      • parse

        public static <T extends Message> T parse​(java.lang.CharSequence input,
                                                  ExtensionRegistry extensionRegistry,
                                                  java.lang.Class<T> protoClass)
                                           throws TextFormat.ParseException
        Parse a text-format message from input. Extensions will be recognized if they are registered in extensionRegistry.
        Returns:
        the parsed message, guaranteed initialized
        Throws:
        TextFormat.ParseException
      • escapeBytes

        public static java.lang.String escapeBytes​(ByteString input)
        Escapes bytes in the format used in protocol buffer text format, which is the same as the format used for C string literals. All bytes that are not printable 7-bit ASCII characters are escaped, as well as backslash, single-quote, and double-quote characters. Characters for which no defined short-hand escape sequence is defined will be escaped using 3-digit octal sequences.
      • escapeBytes

        public static java.lang.String escapeBytes​(byte[] input)
        Like escapeBytes(ByteString), but used for byte array.
      • escapeDoubleQuotesAndBackslashes

        public static java.lang.String escapeDoubleQuotesAndBackslashes​(java.lang.String input)
        Escape double quotes and backslashes in a String for emittingUnicode output of a message.