Classes | |
class | DescriptorIntPair |
class | ExtensionInfo |
Public Member Functions | |
void | add (final Extension<?, ?> extension) |
void | add (final Extension<?, ?> extension) |
void | add (final FieldDescriptor type) |
void | add (final FieldDescriptor type) |
void | add (final FieldDescriptor type, final Message defaultInstance) |
void | add (final FieldDescriptor type, final Message defaultInstance) |
void | add (final GeneratedMessage.GeneratedExtension<?, ?> extension) |
void | add (final GeneratedMessage.GeneratedExtension<?, ?> extension) |
ExtensionInfo | findExtensionByName (final String fullName) |
ExtensionInfo | findExtensionByName (final String fullName) |
ExtensionInfo | findExtensionByNumber (final Descriptor containingType, final int fieldNumber) |
ExtensionInfo | findExtensionByNumber (final Descriptor containingType, final int fieldNumber) |
ExtensionInfo | findImmutableExtensionByName (final String fullName) |
ExtensionInfo | findImmutableExtensionByName (final String fullName) |
ExtensionInfo | findImmutableExtensionByNumber (final Descriptor containingType, final int fieldNumber) |
ExtensionInfo | findImmutableExtensionByNumber (final Descriptor containingType, final int fieldNumber) |
ExtensionInfo | findMutableExtensionByName (final String fullName) |
ExtensionInfo | findMutableExtensionByName (final String fullName) |
ExtensionInfo | findMutableExtensionByNumber (final Descriptor containingType, final int fieldNumber) |
ExtensionInfo | findMutableExtensionByNumber (final Descriptor containingType, final int fieldNumber) |
Set< ExtensionInfo > | getAllImmutableExtensionsByExtendedType (final String fullName) |
Set< ExtensionInfo > | getAllImmutableExtensionsByExtendedType (final String fullName) |
Set< ExtensionInfo > | getAllMutableExtensionsByExtendedType (final String fullName) |
Set< ExtensionInfo > | getAllMutableExtensionsByExtendedType (final String fullName) |
ExtensionRegistry | getUnmodifiable () |
ExtensionRegistry | getUnmodifiable () |
![]() | |
final void | add (ExtensionLite<?, ?> extension) |
final void | add (ExtensionLite<?, ?> extension) |
final void | add (final GeneratedMessageLite.GeneratedExtension<?, ?> extension) |
final void | add (final GeneratedMessageLite.GeneratedExtension<?, ?> extension) |
Static Public Member Functions | |
static ExtensionRegistry | getEmptyRegistry () |
static ExtensionRegistry | getEmptyRegistry () |
static ExtensionRegistry | newInstance () |
static ExtensionRegistry | newInstance () |
![]() | |
static boolean | isEagerlyParseMessageSets () |
static boolean | isEagerlyParseMessageSets () |
static void | setEagerlyParseMessageSets (boolean isEagerlyParse) |
static void | setEagerlyParseMessageSets (boolean isEagerlyParse) |
Private Member Functions | |
void | add (final ExtensionInfo extension, final Extension.ExtensionType extensionType) |
void | add (final ExtensionInfo extension, final Extension.ExtensionType extensionType) |
ExtensionRegistry () | |
ExtensionRegistry () | |
ExtensionRegistry (ExtensionRegistry other) | |
ExtensionRegistry (ExtensionRegistry other) | |
Private Attributes | |
final Map< String, ExtensionInfo > | immutableExtensionsByName |
final Map< DescriptorIntPair, ExtensionInfo > | immutableExtensionsByNumber |
final Map< String, ExtensionInfo > | mutableExtensionsByName |
final Map< DescriptorIntPair, ExtensionInfo > | mutableExtensionsByNumber |
A table of known extensions, searchable by name or field number. When parsing a protocol message that might have extensions, you must provide an
in which you have registered any extensions that you want to be able to parse. Otherwise, those extensions will just be treated like unknown fields.
For example, if you had the
file:
option java_class = "MyProto";
message Foo { extensions 1000 to max; }
extend Foo { optional int32 bar; }
Then you might write code like:
ExtensionRegistry registry = ExtensionRegistry.newInstance(); registry.add(MyProto.bar); MyProto.Foo message = MyProto.Foo.parseFrom(input, registry);
Background:
You might wonder why this is necessary. Two alternatives might come to mind. First, you might imagine a system where generated extensions are automatically registered when their containing classes are loaded. This is a popular technique, but is bad design; among other things, it creates a situation where behavior can change depending on what classes happen to be loaded. It also introduces a security vulnerability, because an unprivileged class could cause its code to be called unexpectedly from a privileged class by registering itself as an extension of the right type.
Another option you might consider is lazy parsing: do not parse an extension until it is first requested, at which point the caller must provide a type to use. This introduces a different set of problems. First, it would require a mutex lock any time an extension was accessed, which would be slow. Second, corrupt data would not be detected until first access, at which point it would be much harder to deal with it. Third, it could violate the expectation that message objects are immutable, since the type provided could be any arbitrary message class. An unprivileged user could take advantage of this to inject a mutable object into a message belonging to privileged code and create mischief.
Definition at line 91 of file bloaty/third_party/protobuf/java/core/src/main/java/com/google/protobuf/ExtensionRegistry.java.
|
inlineprivate |
Definition at line 270 of file bloaty/third_party/protobuf/java/core/src/main/java/com/google/protobuf/ExtensionRegistry.java.
|
inlineprivate |
Definition at line 277 of file bloaty/third_party/protobuf/java/core/src/main/java/com/google/protobuf/ExtensionRegistry.java.
|
inlineprivate |
Definition at line 270 of file protobuf/java/core/src/main/java/com/google/protobuf/ExtensionRegistry.java.
|
inlineprivate |
Definition at line 277 of file protobuf/java/core/src/main/java/com/google/protobuf/ExtensionRegistry.java.
|
inline |
Add an extension from a generated file to the registry.
Definition at line 218 of file bloaty/third_party/protobuf/java/core/src/main/java/com/google/protobuf/ExtensionRegistry.java.
|
inline |
Add an extension from a generated file to the registry.
Definition at line 218 of file protobuf/java/core/src/main/java/com/google/protobuf/ExtensionRegistry.java.
|
inlineprivate |
Definition at line 301 of file bloaty/third_party/protobuf/java/core/src/main/java/com/google/protobuf/ExtensionRegistry.java.
|
inlineprivate |
Definition at line 301 of file protobuf/java/core/src/main/java/com/google/protobuf/ExtensionRegistry.java.
|
inline |
Add a non-message-type extension to the registry by descriptor.
Definition at line 247 of file bloaty/third_party/protobuf/java/core/src/main/java/com/google/protobuf/ExtensionRegistry.java.
|
inline |
Add a non-message-type extension to the registry by descriptor.
Definition at line 247 of file protobuf/java/core/src/main/java/com/google/protobuf/ExtensionRegistry.java.
|
inline |
Add a message-type extension to the registry by descriptor.
Definition at line 259 of file bloaty/third_party/protobuf/java/core/src/main/java/com/google/protobuf/ExtensionRegistry.java.
|
inline |
Add a message-type extension to the registry by descriptor.
Definition at line 259 of file protobuf/java/core/src/main/java/com/google/protobuf/ExtensionRegistry.java.
|
inline |
Add an extension from a generated file to the registry.
Definition at line 228 of file bloaty/third_party/protobuf/java/core/src/main/java/com/google/protobuf/ExtensionRegistry.java.
|
inline |
Add an extension from a generated file to the registry.
Definition at line 228 of file protobuf/java/core/src/main/java/com/google/protobuf/ExtensionRegistry.java.
|
inline |
Deprecated. Use findImmutableExtensionByName(String) instead.
Definition at line 133 of file protobuf/java/core/src/main/java/com/google/protobuf/ExtensionRegistry.java.
|
inline |
Deprecated. Use findImmutableExtensionByName(String) instead.
Definition at line 133 of file bloaty/third_party/protobuf/java/core/src/main/java/com/google/protobuf/ExtensionRegistry.java.
|
inline |
Deprecated. Use findImmutableExtensionByNumber( Descriptors.Descriptor, int)
Definition at line 159 of file protobuf/java/core/src/main/java/com/google/protobuf/ExtensionRegistry.java.
|
inline |
Deprecated. Use findImmutableExtensionByNumber( Descriptors.Descriptor, int)
Definition at line 159 of file bloaty/third_party/protobuf/java/core/src/main/java/com/google/protobuf/ExtensionRegistry.java.
|
inline |
Find an extension for immutable APIs by fully-qualified field name, in the proto namespace. i.e.
will match
if a match is found.
Definition at line 143 of file bloaty/third_party/protobuf/java/core/src/main/java/com/google/protobuf/ExtensionRegistry.java.
|
inline |
Find an extension for immutable APIs by fully-qualified field name, in the proto namespace. i.e.
will match
if a match is found.
Definition at line 143 of file protobuf/java/core/src/main/java/com/google/protobuf/ExtensionRegistry.java.
|
inline |
Find an extension by containing type and field number for immutable APIs.
Definition at line 169 of file bloaty/third_party/protobuf/java/core/src/main/java/com/google/protobuf/ExtensionRegistry.java.
|
inline |
Find an extension by containing type and field number for immutable APIs.
Definition at line 169 of file protobuf/java/core/src/main/java/com/google/protobuf/ExtensionRegistry.java.
|
inline |
Find an extension for mutable APIs by fully-qualified field name, in the proto namespace. i.e.
will match
if a match is found.
Definition at line 153 of file protobuf/java/core/src/main/java/com/google/protobuf/ExtensionRegistry.java.
|
inline |
Find an extension for mutable APIs by fully-qualified field name, in the proto namespace. i.e.
will match
if a match is found.
Definition at line 153 of file bloaty/third_party/protobuf/java/core/src/main/java/com/google/protobuf/ExtensionRegistry.java.
|
inline |
Find an extension by containing type and field number for mutable APIs.
Definition at line 179 of file bloaty/third_party/protobuf/java/core/src/main/java/com/google/protobuf/ExtensionRegistry.java.
|
inline |
Find an extension by containing type and field number for mutable APIs.
Definition at line 179 of file protobuf/java/core/src/main/java/com/google/protobuf/ExtensionRegistry.java.
|
inline |
Find all extensions for immutable APIs by fully-qualified name of extended class. Note that this method is more computationally expensive than getting a single extension by name or number.
Definition at line 207 of file bloaty/third_party/protobuf/java/core/src/main/java/com/google/protobuf/ExtensionRegistry.java.
|
inline |
Find all extensions for immutable APIs by fully-qualified name of extended class. Note that this method is more computationally expensive than getting a single extension by name or number.
Definition at line 207 of file protobuf/java/core/src/main/java/com/google/protobuf/ExtensionRegistry.java.
|
inline |
Find all extensions for mutable APIs by fully-qualified name of extended class. Note that this method is more computationally expensive than getting a single extension by name or number.
Definition at line 190 of file protobuf/java/core/src/main/java/com/google/protobuf/ExtensionRegistry.java.
|
inline |
Find all extensions for mutable APIs by fully-qualified name of extended class. Note that this method is more computationally expensive than getting a single extension by name or number.
Definition at line 190 of file bloaty/third_party/protobuf/java/core/src/main/java/com/google/protobuf/ExtensionRegistry.java.
|
inlinestatic |
Get the unmodifiable singleton empty instance.
Reimplemented from com.google.protobuf.ExtensionRegistryLite.
Definition at line 98 of file protobuf/java/core/src/main/java/com/google/protobuf/ExtensionRegistry.java.
|
inlinestatic |
Get the unmodifiable singleton empty instance.
Reimplemented from com.google.protobuf.ExtensionRegistryLite.
Definition at line 98 of file bloaty/third_party/protobuf/java/core/src/main/java/com/google/protobuf/ExtensionRegistry.java.
|
inline |
Returns an unmodifiable view of the registry.
Reimplemented from com.google.protobuf.ExtensionRegistryLite.
Definition at line 105 of file bloaty/third_party/protobuf/java/core/src/main/java/com/google/protobuf/ExtensionRegistry.java.
|
inline |
Returns an unmodifiable view of the registry.
Reimplemented from com.google.protobuf.ExtensionRegistryLite.
Definition at line 105 of file protobuf/java/core/src/main/java/com/google/protobuf/ExtensionRegistry.java.
|
inlinestatic |
Construct a new, empty instance.
Reimplemented from com.google.protobuf.ExtensionRegistryLite.
Definition at line 93 of file bloaty/third_party/protobuf/java/core/src/main/java/com/google/protobuf/ExtensionRegistry.java.
|
inlinestatic |
Construct a new, empty instance.
Reimplemented from com.google.protobuf.ExtensionRegistryLite.
Definition at line 93 of file protobuf/java/core/src/main/java/com/google/protobuf/ExtensionRegistry.java.
|
private |
Definition at line 286 of file bloaty/third_party/protobuf/java/core/src/main/java/com/google/protobuf/ExtensionRegistry.java.
|
private |
Definition at line 288 of file bloaty/third_party/protobuf/java/core/src/main/java/com/google/protobuf/ExtensionRegistry.java.
|
private |
Definition at line 287 of file bloaty/third_party/protobuf/java/core/src/main/java/com/google/protobuf/ExtensionRegistry.java.
|
private |
Definition at line 289 of file bloaty/third_party/protobuf/java/core/src/main/java/com/google/protobuf/ExtensionRegistry.java.