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.protofile, including everything defined within. That includes, in particular, descriptors for all the messages and file descriptors for all other imported.protofiles (dependencies).
-
-
Nested Class Summary
Nested Classes Modifier and Type Class Description static interfaceDescriptors.FileDescriptor.InternalDescriptorAssignerDeprecated.
-
Field Summary
Fields Modifier and Type Field Description private Descriptors.FileDescriptor[]dependenciesprivate Descriptors.EnumDescriptor[]enumTypesprivate Descriptors.FieldDescriptor[]extensionsprivate booleanfeaturesResolvedprivate Descriptors.Descriptor[]messageTypesprivate DescriptorProtos.FileOptionsoptionsprivate booleanplaceholderprivate DescriptorProtos.FileDescriptorProtoprotoprivate Descriptors.FileDescriptor[]publicDependenciesprivate Descriptors.ServiceDescriptor[]servicesprivate Descriptors.FileDescriptorTablestables-
Fields inherited from class com.google.protobuf.Descriptors.GenericDescriptor
features
-
-
Constructor Summary
Constructors Modifier Constructor Description privateFileDescriptor(DescriptorProtos.FileDescriptorProto proto, Descriptors.FileDescriptor[] dependencies, Descriptors.FileDescriptorTables tables, 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.FileDescriptorbuildFrom(DescriptorProtos.FileDescriptorProto proto, Descriptors.FileDescriptor[] dependencies)Construct aFileDescriptor.static Descriptors.FileDescriptorbuildFrom(DescriptorProtos.FileDescriptorProto proto, Descriptors.FileDescriptor[] dependencies, boolean allowUnknownDependencies)Construct aFileDescriptor.private static Descriptors.FileDescriptorbuildFrom(DescriptorProtos.FileDescriptorProto proto, Descriptors.FileDescriptor[] dependencies, boolean allowUnknownDependencies, boolean allowUnresolvedFeatures)voidcopyHeadingTo(DescriptorProtos.FileDescriptorProto.Builder protoBuilder)private voidcrossLink()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.EnumDescriptorfindEnumTypeByName(java.lang.String name)Find an enum type in the file by name.Descriptors.FieldDescriptorfindExtensionByName(java.lang.String name)Find an extension in the file by name.Descriptors.DescriptorfindMessageTypeByName(java.lang.String name)Find a message type in the file by name.Descriptors.ServiceDescriptorfindServiceByName(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).(package private) DescriptorProtos.EditiongetEdition()Get the edition of the .proto file.Descriptors.EnumDescriptorgetEnumType(int index)intgetEnumTypeCount()java.util.List<Descriptors.EnumDescriptor>getEnumTypes()Get a list of top-level enum types declared in this file.Descriptors.FieldDescriptorgetExtension(int index)intgetExtensionCount()java.util.List<Descriptors.FieldDescriptor>getExtensions()Get a list of top-level extensions declared in this file.Descriptors.FileDescriptorgetFile()Returns this object.java.lang.StringgetFullName()Returns the same as getName().Descriptors.DescriptorgetMessageType(int index)intgetMessageTypeCount()java.util.List<Descriptors.Descriptor>getMessageTypes()Get a list of top-level message types declared in this file.java.lang.StringgetName()Get the file name.DescriptorProtos.FileOptionsgetOptions()Get theFileOptions, defined indescriptor.proto.java.lang.StringgetPackage()Get the proto package name.(package private) Descriptors.GenericDescriptorgetParent()java.util.List<Descriptors.FileDescriptor>getPublicDependencies()Get a list of this file's public dependencies (public imports).Descriptors.ServiceDescriptorgetService(int index)intgetServiceCount()java.util.List<Descriptors.ServiceDescriptor>getServices()Get a list of top-level services declared in this file.(package private) DescriptorProtos.FeatureSetinferLegacyProtoFeatures()static Descriptors.FileDescriptorinternalBuildGeneratedFileFrom(java.lang.String[] descriptorDataParts, Descriptors.FileDescriptor[] dependencies)This method is to be called by generated code only.static voidinternalBuildGeneratedFileFrom(java.lang.String[] descriptorDataParts, Descriptors.FileDescriptor[] dependencies, Descriptors.FileDescriptor.InternalDescriptorAssigner descriptorAssigner)Deprecated.Any gencode which is using this method is far out of support and should be regenerated with a newer version of the protobuf compiler.static Descriptors.FileDescriptorinternalBuildGeneratedFileFrom(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 voidinternalUpdateFileDescriptor(Descriptors.FileDescriptor descriptor, ExtensionRegistry registry)This method is to be called by generated code only.booleanisPlaceholder()private static byte[]latin1Cat(java.lang.String[] strings)voidresolveAllFeaturesImmutable()private voidresolveAllFeaturesInternal()This method is to be called by generated code only.private voidsetProto(DescriptorProtos.FileDescriptorProto proto)Replace ourDescriptorProtos.FileDescriptorProtowith the given one, which is identical except that it might contain extensions that weren't present in the original.DescriptorProtos.FileDescriptorPrototoProto()Convert the descriptor to its protocol message representation.-
Methods inherited from class com.google.protobuf.Descriptors.GenericDescriptor
getFeatures, resolveFeatures, validateFeatures
-
-
-
-
Field Detail
-
proto
private DescriptorProtos.FileDescriptorProto proto
-
options
private volatile DescriptorProtos.FileOptions options
-
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
-
tables
private final Descriptors.FileDescriptorTables tables
-
placeholder
private final boolean placeholder
-
featuresResolved
private volatile boolean featuresResolved
-
-
Constructor Detail
-
FileDescriptor
private FileDescriptor(DescriptorProtos.FileDescriptorProto proto, Descriptors.FileDescriptor[] dependencies, Descriptors.FileDescriptorTables tables, boolean allowUnknownDependencies) throws Descriptors.DescriptorValidationException
-
FileDescriptor
FileDescriptor(java.lang.String packageName, Descriptors.Descriptor message) throws Descriptors.DescriptorValidationExceptionCreate a placeholder FileDescriptor for a message Descriptor.
-
-
Method Detail
-
toProto
public DescriptorProtos.FileDescriptorProto toProto()
Convert the descriptor to its protocol message representation.
-
getName
public java.lang.String getName()
Get the file name.- Specified by:
getNamein classDescriptors.GenericDescriptor
-
getFile
public Descriptors.FileDescriptor getFile()
Returns this object.- Specified by:
getFilein classDescriptors.GenericDescriptor
-
getParent
Descriptors.GenericDescriptor getParent()
- Specified by:
getParentin classDescriptors.GenericDescriptor
-
isPlaceholder
public boolean isPlaceholder()
-
getFullName
public java.lang.String getFullName()
Returns the same as getName().- Specified by:
getFullNamein classDescriptors.GenericDescriptor
-
getPackage
public java.lang.String getPackage()
Get the proto package name. This is the package name given by thepackagestatement in the.protofile, 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.
-
getMessageTypeCount
public int getMessageTypeCount()
-
getMessageType
public Descriptors.Descriptor getMessageType(int index)
-
getEnumTypes
public java.util.List<Descriptors.EnumDescriptor> getEnumTypes()
Get a list of top-level enum types declared in this file.
-
getEnumTypeCount
public int getEnumTypeCount()
-
getEnumType
public Descriptors.EnumDescriptor getEnumType(int index)
-
getServices
public java.util.List<Descriptors.ServiceDescriptor> getServices()
Get a list of top-level services declared in this file.
-
getServiceCount
public int getServiceCount()
-
getService
public Descriptors.ServiceDescriptor getService(int index)
-
getExtensions
public java.util.List<Descriptors.FieldDescriptor> getExtensions()
Get a list of top-level extensions declared in this file.
-
getExtensionCount
public int getExtensionCount()
-
getExtension
public Descriptors.FieldDescriptor getExtension(int index)
-
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).
-
getEdition
DescriptorProtos.Edition getEdition()
Get the edition of the .proto file.
-
copyHeadingTo
public void copyHeadingTo(DescriptorProtos.FileDescriptorProto.Builder protoBuilder)
-
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
nullif 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
nullif 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
nullif 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
nullif 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 FileDescriptortdependencies-FileDescriptors corresponding to all of the file's dependencies.- Throws:
Descriptors.DescriptorValidationException-protois not a valid descriptor. This can occur for a number of reasons; for instance, 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 FileDescriptordependencies-FileDescriptors corresponding to all of the file's dependenciesallowUnknownDependencies- if true, non-existing dependencies will be ignored and undefined message types will be replaced with a placeholder type. Undefined enum types still cause a DescriptorValidationException.- Throws:
Descriptors.DescriptorValidationException-protois not a valid descriptor. This can occur for a number of reasons; for instance, because a field has an undefined type or because two messages were defined with the same name.
-
buildFrom
private static Descriptors.FileDescriptor buildFrom(DescriptorProtos.FileDescriptorProto proto, Descriptors.FileDescriptor[] dependencies, boolean allowUnknownDependencies, boolean allowUnresolvedFeatures) throws Descriptors.DescriptorValidationException
-
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.Any gencode which is using this method is far out of support and should be regenerated with a newer version of the protobuf compiler.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 tobuildFromexcept that theFileDescriptorProtois encoded in protocol buffer wire format.
-
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 updates the FileDescriptorProto associated with the descriptor by parsing it again with the given ExtensionRegistry. This is needed to recognize custom options.
-
resolveAllFeaturesImmutable
public void resolveAllFeaturesImmutable()
-
resolveAllFeaturesInternal
private void resolveAllFeaturesInternal() throws Descriptors.DescriptorValidationExceptionThis method is to be called by generated code only. It resolves features for the descriptor and all of its children.
-
inferLegacyProtoFeatures
DescriptorProtos.FeatureSet inferLegacyProtoFeatures()
- Overrides:
inferLegacyProtoFeaturesin classDescriptors.GenericDescriptor
-
crossLink
private void crossLink() throws Descriptors.DescriptorValidationExceptionLook up and cross-link all field types, etc.
-
setProto
private void setProto(DescriptorProtos.FileDescriptorProto proto)
Replace ourDescriptorProtos.FileDescriptorProtowith 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.
-
-