Package com.google.protobuf
Class TextFormat.Parser
- java.lang.Object
-
- com.google.protobuf.TextFormat.Parser
-
- Enclosing class:
- TextFormat
public static class TextFormat.Parser extends java.lang.ObjectParser for text-format proto2 instances. This class is thread-safe. The implementation largely follows google/protobuf/text_format.cc.Use
TextFormat.getParser()to obtain the default parser, orTextFormat.Parser.Builderto control the parser behavior.
-
-
Nested Class Summary
Nested Classes Modifier and Type Class Description static classTextFormat.Parser.BuilderBuilder that can be used to obtain new instances ofTextFormat.Parser.static classTextFormat.Parser.SingularOverwritePolicyDetermines if repeated values for non-repeated fields and oneofs are permitted.(package private) static classTextFormat.Parser.UnknownField
-
Field Summary
Fields Modifier and Type Field Description private booleanallowUnknownEnumValuesprivate booleanallowUnknownExtensionsprivate booleanallowUnknownFieldsprivate static intBUFFER_SIZEprivate TextFormatParseInfoTree.BuilderparseInfoTreeBuilderprivate intrecursionLimitprivate TextFormat.Parser.SingularOverwritePolicysingularOverwritePolicyprivate TypeRegistrytypeRegistry
-
Constructor Summary
Constructors Modifier Constructor Description privateParser(TypeRegistry typeRegistry, boolean allowUnknownFields, boolean allowUnknownEnumValues, boolean allowUnknownExtensions, TextFormat.Parser.SingularOverwritePolicy singularOverwritePolicy, TextFormatParseInfoTree.Builder parseInfoTreeBuilder, int recursionLimit)
-
Method Summary
All Methods Static Methods Instance Methods Concrete Methods Modifier and Type Method Description private voidcheckUnknownFields(java.util.List<TextFormat.Parser.UnknownField> unknownFields)private voidconsumeFieldValue(TextFormat.Tokenizer tokenizer, ExtensionRegistry extensionRegistry, MessageReflection.MergeTarget target, Descriptors.FieldDescriptor field, ExtensionRegistry.ExtensionInfo extension, TextFormatParseInfoTree.Builder parseTreeBuilder, java.util.List<TextFormat.Parser.UnknownField> unknownFields, int recursionLimit)Parse a single field value fromtokenizerand merge it intobuilder.private voidconsumeFieldValues(TextFormat.Tokenizer tokenizer, ExtensionRegistry extensionRegistry, MessageReflection.MergeTarget target, Descriptors.FieldDescriptor field, ExtensionRegistry.ExtensionInfo extension, TextFormatParseInfoTree.Builder parseTreeBuilder, java.util.List<TextFormat.Parser.UnknownField> unknownFields, int recursionLimit)Parse a one or more field values fromtokenizerand merge it intobuilder.private java.lang.StringconsumeFullTypeName(TextFormat.Tokenizer tokenizer)private voiddetectSilentMarker(TextFormat.Tokenizer tokenizer, Descriptors.Descriptor immediateMessageType, java.lang.String fieldName)A valid silent marker appears between a field name and its value.private voidguessFieldTypeAndSkip(TextFormat.Tokenizer tokenizer, Descriptors.Descriptor type, int recursionLimit)Tries to guess the type of this field and skip it.voidmerge(java.lang.CharSequence input, ExtensionRegistry extensionRegistry, Message.Builder builder)Parse a text-format message frominputand merge the contents intobuilder.voidmerge(java.lang.CharSequence input, Message.Builder builder)Parse a text-format message frominputand merge the contents intobuilder.voidmerge(java.lang.Readable input, ExtensionRegistry extensionRegistry, Message.Builder builder)Parse a text-format message frominputand merge the contents intobuilder.voidmerge(java.lang.Readable input, Message.Builder builder)Parse a text-format message frominputand merge the contents intobuilder.private voidmergeAnyFieldValue(TextFormat.Tokenizer tokenizer, ExtensionRegistry extensionRegistry, MessageReflection.MergeTarget target, TextFormatParseInfoTree.Builder parseTreeBuilder, java.util.List<TextFormat.Parser.UnknownField> unknownFields, Descriptors.Descriptor anyDescriptor, int recursionLimit)private voidmergeField(TextFormat.Tokenizer tokenizer, ExtensionRegistry extensionRegistry, MessageReflection.MergeTarget target, TextFormatParseInfoTree.Builder parseTreeBuilder, java.util.List<TextFormat.Parser.UnknownField> unknownFields, int recursionLimit)Parse a single field fromtokenizerand merge it intotarget.private voidmergeField(TextFormat.Tokenizer tokenizer, ExtensionRegistry extensionRegistry, MessageReflection.MergeTarget target, java.util.List<TextFormat.Parser.UnknownField> unknownFields, int recursionLimit)Parse a single field fromtokenizerand merge it intobuilder.static TextFormat.Parser.BuildernewBuilder()Returns a new instance ofTextFormat.Parser.Builder.private voidskipField(TextFormat.Tokenizer tokenizer, Descriptors.Descriptor type, int recursionLimit)Skips the next field including the field's name and value.private voidskipFieldMessage(TextFormat.Tokenizer tokenizer, Descriptors.Descriptor type, int recursionLimit)Skips the whole body of a message including the beginning delimiter and the ending delimiter.private voidskipFieldShortFormedRepeated(TextFormat.Tokenizer tokenizer, boolean scalarAllowed, Descriptors.Descriptor type, int recursionLimit)Skips a short-formed repeated field value.private voidskipFieldValue(TextFormat.Tokenizer tokenizer)Skips a field value.private static java.lang.StringBuildertoStringBuilder(java.lang.Readable input)
-
-
-
Field Detail
-
typeRegistry
private final TypeRegistry typeRegistry
-
allowUnknownFields
private final boolean allowUnknownFields
-
allowUnknownEnumValues
private final boolean allowUnknownEnumValues
-
allowUnknownExtensions
private final boolean allowUnknownExtensions
-
singularOverwritePolicy
private final TextFormat.Parser.SingularOverwritePolicy singularOverwritePolicy
-
parseInfoTreeBuilder
private TextFormatParseInfoTree.Builder parseInfoTreeBuilder
-
recursionLimit
private final int recursionLimit
-
BUFFER_SIZE
private static final int BUFFER_SIZE
- See Also:
- Constant Field Values
-
-
Constructor Detail
-
Parser
private Parser(TypeRegistry typeRegistry, boolean allowUnknownFields, boolean allowUnknownEnumValues, boolean allowUnknownExtensions, TextFormat.Parser.SingularOverwritePolicy singularOverwritePolicy, TextFormatParseInfoTree.Builder parseInfoTreeBuilder, int recursionLimit)
-
-
Method Detail
-
detectSilentMarker
private void detectSilentMarker(TextFormat.Tokenizer tokenizer, Descriptors.Descriptor immediateMessageType, java.lang.String fieldName)
A valid silent marker appears between a field name and its value. If there is a ":" in between, the silent marker will only appear after the colon. This is called after a field name is parsed, and before the ":" if it exists. If the current token is ":", then containsSilentMarkerAfterCurrentToken indicates if there is a valid silent marker. Otherwise, the current token is part of the field value, so the silent marker is indicated by containsSilentMarkerAfterPrevToken.
-
newBuilder
public static TextFormat.Parser.Builder newBuilder()
Returns a new instance ofTextFormat.Parser.Builder.
-
merge
public void merge(java.lang.Readable input, Message.Builder builder) throws java.io.IOExceptionParse a text-format message frominputand merge the contents intobuilder.- Throws:
java.io.IOException
-
merge
public void merge(java.lang.CharSequence input, Message.Builder builder) throws TextFormat.ParseExceptionParse a text-format message frominputand merge the contents intobuilder.- Throws:
TextFormat.ParseException
-
merge
public void merge(java.lang.Readable input, ExtensionRegistry extensionRegistry, Message.Builder builder) throws java.io.IOExceptionParse a text-format message frominputand merge the contents intobuilder. Extensions will be recognized if they are registered inextensionRegistry.- Throws:
java.io.IOException
-
toStringBuilder
private static java.lang.StringBuilder toStringBuilder(java.lang.Readable input) throws java.io.IOException- Throws:
java.io.IOException
-
checkUnknownFields
private void checkUnknownFields(java.util.List<TextFormat.Parser.UnknownField> unknownFields) throws TextFormat.ParseException
- Throws:
TextFormat.ParseException
-
merge
public void merge(java.lang.CharSequence input, ExtensionRegistry extensionRegistry, Message.Builder builder) throws TextFormat.ParseExceptionParse a text-format message frominputand merge the contents intobuilder. Extensions will be recognized if they are registered inextensionRegistry.- Throws:
TextFormat.ParseException
-
mergeField
private void mergeField(TextFormat.Tokenizer tokenizer, ExtensionRegistry extensionRegistry, MessageReflection.MergeTarget target, java.util.List<TextFormat.Parser.UnknownField> unknownFields, int recursionLimit) throws TextFormat.ParseException
Parse a single field fromtokenizerand merge it intobuilder.- Throws:
TextFormat.ParseException
-
mergeField
private void mergeField(TextFormat.Tokenizer tokenizer, ExtensionRegistry extensionRegistry, MessageReflection.MergeTarget target, TextFormatParseInfoTree.Builder parseTreeBuilder, java.util.List<TextFormat.Parser.UnknownField> unknownFields, int recursionLimit) throws TextFormat.ParseException
Parse a single field fromtokenizerand merge it intotarget.- Throws:
TextFormat.ParseException
-
consumeFullTypeName
private java.lang.String consumeFullTypeName(TextFormat.Tokenizer tokenizer) throws TextFormat.ParseException
- Throws:
TextFormat.ParseException
-
consumeFieldValues
private void consumeFieldValues(TextFormat.Tokenizer tokenizer, ExtensionRegistry extensionRegistry, MessageReflection.MergeTarget target, Descriptors.FieldDescriptor field, ExtensionRegistry.ExtensionInfo extension, TextFormatParseInfoTree.Builder parseTreeBuilder, java.util.List<TextFormat.Parser.UnknownField> unknownFields, int recursionLimit) throws TextFormat.ParseException
Parse a one or more field values fromtokenizerand merge it intobuilder.- Throws:
TextFormat.ParseException
-
consumeFieldValue
private void consumeFieldValue(TextFormat.Tokenizer tokenizer, ExtensionRegistry extensionRegistry, MessageReflection.MergeTarget target, Descriptors.FieldDescriptor field, ExtensionRegistry.ExtensionInfo extension, TextFormatParseInfoTree.Builder parseTreeBuilder, java.util.List<TextFormat.Parser.UnknownField> unknownFields, int recursionLimit) throws TextFormat.ParseException
Parse a single field value fromtokenizerand merge it intobuilder.- Throws:
TextFormat.ParseException
-
mergeAnyFieldValue
private void mergeAnyFieldValue(TextFormat.Tokenizer tokenizer, ExtensionRegistry extensionRegistry, MessageReflection.MergeTarget target, TextFormatParseInfoTree.Builder parseTreeBuilder, java.util.List<TextFormat.Parser.UnknownField> unknownFields, Descriptors.Descriptor anyDescriptor, int recursionLimit) throws TextFormat.ParseException
- Throws:
TextFormat.ParseException
-
skipField
private void skipField(TextFormat.Tokenizer tokenizer, Descriptors.Descriptor type, int recursionLimit) throws TextFormat.ParseException
Skips the next field including the field's name and value.- Throws:
TextFormat.ParseException
-
skipFieldMessage
private void skipFieldMessage(TextFormat.Tokenizer tokenizer, Descriptors.Descriptor type, int recursionLimit) throws TextFormat.ParseException
Skips the whole body of a message including the beginning delimiter and the ending delimiter.- Throws:
TextFormat.ParseException
-
skipFieldValue
private void skipFieldValue(TextFormat.Tokenizer tokenizer) throws TextFormat.ParseException
Skips a field value.- Throws:
TextFormat.ParseException
-
guessFieldTypeAndSkip
private void guessFieldTypeAndSkip(TextFormat.Tokenizer tokenizer, Descriptors.Descriptor type, int recursionLimit) throws TextFormat.ParseException
Tries to guess the type of this field and skip it.If this field is not a message, there should be a ":" between the field name and the field value and also the field value should not start with "{" or "<" which indicates the beginning of a message body. If there is no ":" or there is a "{" or "<" after ":", this field has to be a message or the input is ill-formed. For short-formed repeated fields (i.e. with "[]"), if it is repeated scalar, there must be a ":" between the field name and the starting "[" .
- Throws:
TextFormat.ParseException
-
skipFieldShortFormedRepeated
private void skipFieldShortFormedRepeated(TextFormat.Tokenizer tokenizer, boolean scalarAllowed, Descriptors.Descriptor type, int recursionLimit) throws TextFormat.ParseException
Skips a short-formed repeated field value.Reports an error if scalar type is not allowed but showing up inside "[]".
- Throws:
TextFormat.ParseException
-
-