Package com.google.protobuf
Class Descriptors.FileDescriptor
- java.lang.Object
-
- com.google.protobuf.Descriptors.GenericDescriptor
-
- com.google.protobuf.Descriptors.FileDescriptor
-
- Enclosing class:
- Descriptors
public static final class Descriptors.FileDescriptor extends Descriptors.GenericDescriptor
Describes a.proto
file, including everything defined within. That includes, in particular, descriptors for all the messages and file descriptors for all other imported.proto
files (dependencies).
-
-
Nested Class Summary
Nested Classes Modifier and Type Class Description static interface
Descriptors.FileDescriptor.InternalDescriptorAssigner
Deprecated.static class
Descriptors.FileDescriptor.Syntax
The syntax of the .proto file.
-
Field Summary
Fields Modifier and Type Field Description private Descriptors.FileDescriptor[]
dependencies
private Descriptors.EnumDescriptor[]
enumTypes
private Descriptors.FieldDescriptor[]
extensions
private Descriptors.Descriptor[]
messageTypes
private Descriptors.DescriptorPool
pool
private DescriptorProtos.FileDescriptorProto
proto
private Descriptors.FileDescriptor[]
publicDependencies
private Descriptors.ServiceDescriptor[]
services
-
Constructor Summary
Constructors Modifier Constructor Description private
FileDescriptor(DescriptorProtos.FileDescriptorProto proto, Descriptors.FileDescriptor[] dependencies, Descriptors.DescriptorPool pool, boolean allowUnknownDependencies)
(package private)
FileDescriptor(java.lang.String packageName, Descriptors.Descriptor message)
Create a placeholder FileDescriptor for a message Descriptor.
-
Method Summary
All Methods Static Methods Instance Methods Concrete Methods Deprecated Methods Modifier and Type Method Description static Descriptors.FileDescriptor
buildFrom(DescriptorProtos.FileDescriptorProto proto, Descriptors.FileDescriptor[] dependencies)
Construct aFileDescriptor
.static Descriptors.FileDescriptor
buildFrom(DescriptorProtos.FileDescriptorProto proto, Descriptors.FileDescriptor[] dependencies, boolean allowUnknownDependencies)
Construct aFileDescriptor
.private void
crossLink()
Look up and cross-link all field types, etc.private static Descriptors.FileDescriptor[]
findDescriptors(java.lang.Class<?> descriptorOuterClass, java.lang.String[] dependencyClassNames, java.lang.String[] dependencyFileNames)
Descriptors.EnumDescriptor
findEnumTypeByName(java.lang.String name)
Find an enum type in the file by name.Descriptors.FieldDescriptor
findExtensionByName(java.lang.String name)
Find an extension in the file by name.Descriptors.Descriptor
findMessageTypeByName(java.lang.String name)
Find a message type in the file by name.Descriptors.ServiceDescriptor
findServiceByName(java.lang.String name)
Find a service type in the file by name.java.util.List<Descriptors.FileDescriptor>
getDependencies()
Get a list of this file's dependencies (imports).java.util.List<Descriptors.EnumDescriptor>
getEnumTypes()
Get a list of top-level enum types declared in this file.java.util.List<Descriptors.FieldDescriptor>
getExtensions()
Get a list of top-level extensions declared in this file.Descriptors.FileDescriptor
getFile()
Returns this object.java.lang.String
getFullName()
Returns the same as getName().java.util.List<Descriptors.Descriptor>
getMessageTypes()
Get a list of top-level message types declared in this file.java.lang.String
getName()
Get the file name.DescriptorProtos.FileOptions
getOptions()
Get theFileOptions
, defined indescriptor.proto
.java.lang.String
getPackage()
Get the proto package name.java.util.List<Descriptors.FileDescriptor>
getPublicDependencies()
Get a list of this file's public dependencies (public imports).java.util.List<Descriptors.ServiceDescriptor>
getServices()
Get a list of top-level services declared in this file.Descriptors.FileDescriptor.Syntax
getSyntax()
Get the syntax of the .proto file.static Descriptors.FileDescriptor
internalBuildGeneratedFileFrom(java.lang.String[] descriptorDataParts, Descriptors.FileDescriptor[] dependencies)
This method is to be called by generated code only.static void
internalBuildGeneratedFileFrom(java.lang.String[] descriptorDataParts, Descriptors.FileDescriptor[] dependencies, Descriptors.FileDescriptor.InternalDescriptorAssigner descriptorAssigner)
Deprecated.static Descriptors.FileDescriptor
internalBuildGeneratedFileFrom(java.lang.String[] descriptorDataParts, java.lang.Class<?> descriptorOuterClass, java.lang.String[] dependencyClassNames, java.lang.String[] dependencyFileNames)
This method is to be called by generated code only.static void
internalBuildGeneratedFileFrom(java.lang.String[] descriptorDataParts, java.lang.Class<?> descriptorOuterClass, java.lang.String[] dependencyClassNames, java.lang.String[] dependencyFileNames, Descriptors.FileDescriptor.InternalDescriptorAssigner descriptorAssigner)
Deprecated.static void
internalUpdateFileDescriptor(Descriptors.FileDescriptor descriptor, ExtensionRegistry registry)
This method is to be called by generated code only.private static byte[]
latin1Cat(java.lang.String[] strings)
private void
setProto(DescriptorProtos.FileDescriptorProto proto)
Replace ourDescriptorProtos.FileDescriptorProto
with the given one, which is identical except that it might contain extensions that weren't present in the original.(package private) boolean
supportsUnknownEnumValue()
DescriptorProtos.FileDescriptorProto
toProto()
Convert the descriptor to its protocol message representation.
-
-
-
Field Detail
-
proto
private DescriptorProtos.FileDescriptorProto proto
-
messageTypes
private final Descriptors.Descriptor[] messageTypes
-
enumTypes
private final Descriptors.EnumDescriptor[] enumTypes
-
services
private final Descriptors.ServiceDescriptor[] services
-
extensions
private final Descriptors.FieldDescriptor[] extensions
-
dependencies
private final Descriptors.FileDescriptor[] dependencies
-
publicDependencies
private final Descriptors.FileDescriptor[] publicDependencies
-
pool
private final Descriptors.DescriptorPool pool
-
-
Constructor Detail
-
FileDescriptor
private FileDescriptor(DescriptorProtos.FileDescriptorProto proto, Descriptors.FileDescriptor[] dependencies, Descriptors.DescriptorPool pool, boolean allowUnknownDependencies) throws Descriptors.DescriptorValidationException
-
FileDescriptor
FileDescriptor(java.lang.String packageName, Descriptors.Descriptor message) throws Descriptors.DescriptorValidationException
Create a placeholder FileDescriptor for a message Descriptor.
-
-
Method Detail
-
toProto
public DescriptorProtos.FileDescriptorProto toProto()
Convert the descriptor to its protocol message representation.- Specified by:
toProto
in classDescriptors.GenericDescriptor
-
getName
public java.lang.String getName()
Get the file name.- Specified by:
getName
in classDescriptors.GenericDescriptor
-
getFile
public Descriptors.FileDescriptor getFile()
Returns this object.- Specified by:
getFile
in classDescriptors.GenericDescriptor
-
getFullName
public java.lang.String getFullName()
Returns the same as getName().- Specified by:
getFullName
in classDescriptors.GenericDescriptor
-
getPackage
public java.lang.String getPackage()
Get the proto package name. This is the package name given by thepackage
statement in the.proto
file, which differs from the Java package.
-
getOptions
public DescriptorProtos.FileOptions getOptions()
Get theFileOptions
, defined indescriptor.proto
.
-
getMessageTypes
public java.util.List<Descriptors.Descriptor> getMessageTypes()
Get a list of top-level message types declared in this file.
-
getEnumTypes
public java.util.List<Descriptors.EnumDescriptor> getEnumTypes()
Get a list of top-level enum types declared in this file.
-
getServices
public java.util.List<Descriptors.ServiceDescriptor> getServices()
Get a list of top-level services declared in this file.
-
getExtensions
public java.util.List<Descriptors.FieldDescriptor> getExtensions()
Get a list of top-level extensions declared in this file.
-
getDependencies
public java.util.List<Descriptors.FileDescriptor> getDependencies()
Get a list of this file's dependencies (imports).
-
getPublicDependencies
public java.util.List<Descriptors.FileDescriptor> getPublicDependencies()
Get a list of this file's public dependencies (public imports).
-
getSyntax
public Descriptors.FileDescriptor.Syntax getSyntax()
Get the syntax of the .proto file.
-
findMessageTypeByName
public Descriptors.Descriptor findMessageTypeByName(java.lang.String name)
Find a message type in the file by name. Does not find nested types.- Parameters:
name
- The unqualified type name to look for.- Returns:
- The message type's descriptor, or
null
if not found.
-
findEnumTypeByName
public Descriptors.EnumDescriptor findEnumTypeByName(java.lang.String name)
Find an enum type in the file by name. Does not find nested types.- Parameters:
name
- The unqualified type name to look for.- Returns:
- The enum type's descriptor, or
null
if not found.
-
findServiceByName
public Descriptors.ServiceDescriptor findServiceByName(java.lang.String name)
Find a service type in the file by name.- Parameters:
name
- The unqualified type name to look for.- Returns:
- The service type's descriptor, or
null
if not found.
-
findExtensionByName
public Descriptors.FieldDescriptor findExtensionByName(java.lang.String name)
Find an extension in the file by name. Does not find extensions nested inside message types.- Parameters:
name
- The unqualified extension name to look for.- Returns:
- The extension's descriptor, or
null
if not found.
-
buildFrom
public static Descriptors.FileDescriptor buildFrom(DescriptorProtos.FileDescriptorProto proto, Descriptors.FileDescriptor[] dependencies) throws Descriptors.DescriptorValidationException
Construct aFileDescriptor
.- Parameters:
proto
- The protocol message form of the FileDescriptor.dependencies
-FileDescriptor
s corresponding to all of the file's dependencies.- Throws:
Descriptors.DescriptorValidationException
-proto
is not a valid descriptor. This can occur for a number of reasons, e.g. because a field has an undefined type or because two messages were defined with the same name.
-
buildFrom
public static Descriptors.FileDescriptor buildFrom(DescriptorProtos.FileDescriptorProto proto, Descriptors.FileDescriptor[] dependencies, boolean allowUnknownDependencies) throws Descriptors.DescriptorValidationException
Construct aFileDescriptor
.- Parameters:
proto
- The protocol message form of the FileDescriptor.dependencies
-FileDescriptor
s corresponding to all of the file's dependencies.allowUnknownDependencies
- If true, non-exist dependenncies will be ignored and undefined message types will be replaced with a placeholder type.- Throws:
Descriptors.DescriptorValidationException
-proto
is not a valid descriptor. This can occur for a number of reasons, e.g. because a field has an undefined type or because two messages were defined with the same name.
-
latin1Cat
private static byte[] latin1Cat(java.lang.String[] strings)
-
findDescriptors
private static Descriptors.FileDescriptor[] findDescriptors(java.lang.Class<?> descriptorOuterClass, java.lang.String[] dependencyClassNames, java.lang.String[] dependencyFileNames)
-
internalBuildGeneratedFileFrom
@Deprecated public static void internalBuildGeneratedFileFrom(java.lang.String[] descriptorDataParts, Descriptors.FileDescriptor[] dependencies, Descriptors.FileDescriptor.InternalDescriptorAssigner descriptorAssigner)
Deprecated.This method is for backward compatibility with generated code which passed an InternalDescriptorAssigner.
-
internalBuildGeneratedFileFrom
public static Descriptors.FileDescriptor internalBuildGeneratedFileFrom(java.lang.String[] descriptorDataParts, Descriptors.FileDescriptor[] dependencies)
This method is to be called by generated code only. It is equivalent tobuildFrom
except that theFileDescriptorProto
is encoded in protocol buffer wire format.
-
internalBuildGeneratedFileFrom
@Deprecated public static void internalBuildGeneratedFileFrom(java.lang.String[] descriptorDataParts, java.lang.Class<?> descriptorOuterClass, java.lang.String[] dependencyClassNames, java.lang.String[] dependencyFileNames, Descriptors.FileDescriptor.InternalDescriptorAssigner descriptorAssigner)
Deprecated.This method is for backward compatibility with generated code which passed an InternalDescriptorAssigner.
-
internalBuildGeneratedFileFrom
public static Descriptors.FileDescriptor internalBuildGeneratedFileFrom(java.lang.String[] descriptorDataParts, java.lang.Class<?> descriptorOuterClass, java.lang.String[] dependencyClassNames, java.lang.String[] dependencyFileNames)
This method is to be called by generated code only. It uses Java reflection to load the dependencies' descriptors.
-
internalUpdateFileDescriptor
public static void internalUpdateFileDescriptor(Descriptors.FileDescriptor descriptor, ExtensionRegistry registry)
This method is to be called by generated code only. It is used to update the FileDescriptorProto associated with the descriptor by parsing it again with the given ExtensionRegistry. This is needed to recognize custom options.
-
crossLink
private void crossLink() throws Descriptors.DescriptorValidationException
Look up and cross-link all field types, etc.
-
setProto
private void setProto(DescriptorProtos.FileDescriptorProto proto)
Replace ourDescriptorProtos.FileDescriptorProto
with the given one, which is identical except that it might contain extensions that weren't present in the original. This method is needed for bootstrapping when a file defines custom options. The options may be defined in the file itself, so we can't actually parse them until we've constructed the descriptors, but to construct the descriptors we have to have parsed the descriptor protos. So, we have to parse the descriptor protos a second time after constructing the descriptors.
-
supportsUnknownEnumValue
boolean supportsUnknownEnumValue()
-
-