Classes | Public Member Functions | Static Public Member Functions | Private Member Functions | Private Attributes | List of all members
com.google.protobuf.ExtensionRegistry Class Reference
Inheritance diagram for com.google.protobuf.ExtensionRegistry:
Inheritance graph
[legend]

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< ExtensionInfogetAllImmutableExtensionsByExtendedType (final String fullName)
 
Set< ExtensionInfogetAllImmutableExtensionsByExtendedType (final String fullName)
 
Set< ExtensionInfogetAllMutableExtensionsByExtendedType (final String fullName)
 
Set< ExtensionInfogetAllMutableExtensionsByExtendedType (final String fullName)
 
ExtensionRegistry getUnmodifiable ()
 
ExtensionRegistry getUnmodifiable ()
 
- Public Member Functions inherited from com.google.protobuf.ExtensionRegistryLite
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 Public Member Functions inherited from com.google.protobuf.ExtensionRegistryLite
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, ExtensionInfoimmutableExtensionsByName
 
final Map< DescriptorIntPair, ExtensionInfoimmutableExtensionsByNumber
 
final Map< String, ExtensionInfomutableExtensionsByName
 
final Map< DescriptorIntPair, ExtensionInfomutableExtensionsByNumber
 

Detailed Description

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

.proto

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.

Author
kento.nosp@m.n@go.nosp@m.ogle..nosp@m.com Kenton Varda

Definition at line 91 of file bloaty/third_party/protobuf/java/core/src/main/java/com/google/protobuf/ExtensionRegistry.java.

Constructor & Destructor Documentation

◆ ExtensionRegistry() [1/4]

com.google.protobuf.ExtensionRegistry.ExtensionRegistry ( )
inlineprivate

◆ ExtensionRegistry() [2/4]

com.google.protobuf.ExtensionRegistry.ExtensionRegistry ( ExtensionRegistry  other)
inlineprivate

◆ ExtensionRegistry() [3/4]

com.google.protobuf.ExtensionRegistry.ExtensionRegistry ( )
inlineprivate

◆ ExtensionRegistry() [4/4]

com.google.protobuf.ExtensionRegistry.ExtensionRegistry ( ExtensionRegistry  other)
inlineprivate

Member Function Documentation

◆ add() [1/10]

void com.google.protobuf.ExtensionRegistry.add ( final Extension<?, ?>  extension)
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.

◆ add() [2/10]

void com.google.protobuf.ExtensionRegistry.add ( final Extension<?, ?>  extension)
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.

◆ add() [3/10]

void com.google.protobuf.ExtensionRegistry.add ( final ExtensionInfo  extension,
final Extension.ExtensionType  extensionType 
)
inlineprivate

◆ add() [4/10]

void com.google.protobuf.ExtensionRegistry.add ( final ExtensionInfo  extension,
final Extension.ExtensionType  extensionType 
)
inlineprivate

◆ add() [5/10]

void com.google.protobuf.ExtensionRegistry.add ( final FieldDescriptor  type)
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.

◆ add() [6/10]

void com.google.protobuf.ExtensionRegistry.add ( final FieldDescriptor  type)
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.

◆ add() [7/10]

void com.google.protobuf.ExtensionRegistry.add ( final FieldDescriptor  type,
final Message  defaultInstance 
)
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.

◆ add() [8/10]

void com.google.protobuf.ExtensionRegistry.add ( final FieldDescriptor  type,
final Message  defaultInstance 
)
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.

◆ add() [9/10]

void com.google.protobuf.ExtensionRegistry.add ( final GeneratedMessage.GeneratedExtension<?, ?>  extension)
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.

◆ add() [10/10]

void com.google.protobuf.ExtensionRegistry.add ( final GeneratedMessage.GeneratedExtension<?, ?>  extension)
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.

◆ findExtensionByName() [1/2]

ExtensionInfo com.google.protobuf.ExtensionRegistry.findExtensionByName ( final String  fullName)
inline

◆ findExtensionByName() [2/2]

ExtensionInfo com.google.protobuf.ExtensionRegistry.findExtensionByName ( final String  fullName)
inline

◆ findExtensionByNumber() [1/2]

ExtensionInfo com.google.protobuf.ExtensionRegistry.findExtensionByNumber ( final Descriptor  containingType,
final int  fieldNumber 
)
inline

◆ findExtensionByNumber() [2/2]

ExtensionInfo com.google.protobuf.ExtensionRegistry.findExtensionByNumber ( final Descriptor  containingType,
final int  fieldNumber 
)
inline

◆ findImmutableExtensionByName() [1/2]

ExtensionInfo com.google.protobuf.ExtensionRegistry.findImmutableExtensionByName ( final String  fullName)
inline

Find an extension for immutable APIs by fully-qualified field name, in the proto namespace. i.e.

result.descriptor.fullName()

will match

fullName

if a match is found.

Returns
Information about the extension if found, or
null
otherwise.

Definition at line 143 of file bloaty/third_party/protobuf/java/core/src/main/java/com/google/protobuf/ExtensionRegistry.java.

◆ findImmutableExtensionByName() [2/2]

ExtensionInfo com.google.protobuf.ExtensionRegistry.findImmutableExtensionByName ( final String  fullName)
inline

Find an extension for immutable APIs by fully-qualified field name, in the proto namespace. i.e.

result.descriptor.fullName()

will match

fullName

if a match is found.

Returns
Information about the extension if found, or
null
otherwise.

Definition at line 143 of file protobuf/java/core/src/main/java/com/google/protobuf/ExtensionRegistry.java.

◆ findImmutableExtensionByNumber() [1/2]

ExtensionInfo com.google.protobuf.ExtensionRegistry.findImmutableExtensionByNumber ( final Descriptor  containingType,
final int  fieldNumber 
)
inline

Find an extension by containing type and field number for immutable APIs.

Returns
Information about the extension if found, or
null
otherwise.

Definition at line 169 of file bloaty/third_party/protobuf/java/core/src/main/java/com/google/protobuf/ExtensionRegistry.java.

◆ findImmutableExtensionByNumber() [2/2]

ExtensionInfo com.google.protobuf.ExtensionRegistry.findImmutableExtensionByNumber ( final Descriptor  containingType,
final int  fieldNumber 
)
inline

Find an extension by containing type and field number for immutable APIs.

Returns
Information about the extension if found, or
null
otherwise.

Definition at line 169 of file protobuf/java/core/src/main/java/com/google/protobuf/ExtensionRegistry.java.

◆ findMutableExtensionByName() [1/2]

ExtensionInfo com.google.protobuf.ExtensionRegistry.findMutableExtensionByName ( final String  fullName)
inline

Find an extension for mutable APIs by fully-qualified field name, in the proto namespace. i.e.

result.descriptor.fullName()

will match

fullName

if a match is found.

Returns
Information about the extension if found, or
null
otherwise.

Definition at line 153 of file protobuf/java/core/src/main/java/com/google/protobuf/ExtensionRegistry.java.

◆ findMutableExtensionByName() [2/2]

ExtensionInfo com.google.protobuf.ExtensionRegistry.findMutableExtensionByName ( final String  fullName)
inline

Find an extension for mutable APIs by fully-qualified field name, in the proto namespace. i.e.

result.descriptor.fullName()

will match

fullName

if a match is found.

Returns
Information about the extension if found, or
null
otherwise.

Definition at line 153 of file bloaty/third_party/protobuf/java/core/src/main/java/com/google/protobuf/ExtensionRegistry.java.

◆ findMutableExtensionByNumber() [1/2]

ExtensionInfo com.google.protobuf.ExtensionRegistry.findMutableExtensionByNumber ( final Descriptor  containingType,
final int  fieldNumber 
)
inline

Find an extension by containing type and field number for mutable APIs.

Returns
Information about the extension if found, or
null
otherwise.

Definition at line 179 of file bloaty/third_party/protobuf/java/core/src/main/java/com/google/protobuf/ExtensionRegistry.java.

◆ findMutableExtensionByNumber() [2/2]

ExtensionInfo com.google.protobuf.ExtensionRegistry.findMutableExtensionByNumber ( final Descriptor  containingType,
final int  fieldNumber 
)
inline

Find an extension by containing type and field number for mutable APIs.

Returns
Information about the extension if found, or
null
otherwise.

Definition at line 179 of file protobuf/java/core/src/main/java/com/google/protobuf/ExtensionRegistry.java.

◆ getAllImmutableExtensionsByExtendedType() [1/2]

Set<ExtensionInfo> com.google.protobuf.ExtensionRegistry.getAllImmutableExtensionsByExtendedType ( final String  fullName)
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.

Returns
Information about the extensions found, or
null
if there are none.

Definition at line 207 of file bloaty/third_party/protobuf/java/core/src/main/java/com/google/protobuf/ExtensionRegistry.java.

◆ getAllImmutableExtensionsByExtendedType() [2/2]

Set<ExtensionInfo> com.google.protobuf.ExtensionRegistry.getAllImmutableExtensionsByExtendedType ( final String  fullName)
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.

Returns
Information about the extensions found, or
null
if there are none.

Definition at line 207 of file protobuf/java/core/src/main/java/com/google/protobuf/ExtensionRegistry.java.

◆ getAllMutableExtensionsByExtendedType() [1/2]

Set<ExtensionInfo> com.google.protobuf.ExtensionRegistry.getAllMutableExtensionsByExtendedType ( final String  fullName)
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.

Returns
Information about the extensions found, or
null
if there are none.

Definition at line 190 of file protobuf/java/core/src/main/java/com/google/protobuf/ExtensionRegistry.java.

◆ getAllMutableExtensionsByExtendedType() [2/2]

Set<ExtensionInfo> com.google.protobuf.ExtensionRegistry.getAllMutableExtensionsByExtendedType ( final String  fullName)
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.

Returns
Information about the extensions found, or
null
if there are none.

Definition at line 190 of file bloaty/third_party/protobuf/java/core/src/main/java/com/google/protobuf/ExtensionRegistry.java.

◆ getEmptyRegistry() [1/2]

static ExtensionRegistry com.google.protobuf.ExtensionRegistry.getEmptyRegistry ( )
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.

◆ getEmptyRegistry() [2/2]

static ExtensionRegistry com.google.protobuf.ExtensionRegistry.getEmptyRegistry ( )
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.

◆ getUnmodifiable() [1/2]

ExtensionRegistry com.google.protobuf.ExtensionRegistry.getUnmodifiable ( )
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.

◆ getUnmodifiable() [2/2]

ExtensionRegistry com.google.protobuf.ExtensionRegistry.getUnmodifiable ( )
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.

◆ newInstance() [1/2]

static ExtensionRegistry com.google.protobuf.ExtensionRegistry.newInstance ( )
inlinestatic

◆ newInstance() [2/2]

static ExtensionRegistry com.google.protobuf.ExtensionRegistry.newInstance ( )
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.

Member Data Documentation

◆ immutableExtensionsByName

final Map< String, ExtensionInfo > com.google.protobuf.ExtensionRegistry.immutableExtensionsByName
private

◆ immutableExtensionsByNumber

final Map< DescriptorIntPair, ExtensionInfo > com.google.protobuf.ExtensionRegistry.immutableExtensionsByNumber
private

◆ mutableExtensionsByName

final Map< String, ExtensionInfo > com.google.protobuf.ExtensionRegistry.mutableExtensionsByName
private

◆ mutableExtensionsByNumber

final Map< DescriptorIntPair, ExtensionInfo > com.google.protobuf.ExtensionRegistry.mutableExtensionsByNumber
private

The documentation for this class was generated from the following file:
_gevent_test_main.result
result
Definition: _gevent_test_main.py:96
com.google.protobuf.ExtensionRegistry.ExtensionRegistry
ExtensionRegistry()
Definition: bloaty/third_party/protobuf/java/core/src/main/java/com/google/protobuf/ExtensionRegistry.java:270


grpc
Author(s):
autogenerated on Fri May 16 2025 03:03:04