public static Descriptors . Descriptor getDescriptor ( ProtoConfigurableEntity . Context context , String protoDescriptorFile , String messageType , Map < String , Set < Descriptors . FieldDescriptor > > messageTypeToExtensionMap , Map < String , Object > defaultValueMap ) throws StageException { File descriptorFileHandle = new File ( context . getResourcesDirectory ( ) , protoDescriptorFile ) ; try ( FileInputStream fin = new FileInputStream ( descriptorFileHandle ) ; ) { DescriptorProtos . FileDescriptorSet set = DescriptorProtos . FileDescriptorSet . parseFrom ( fin ) ; // Iterate over all the file descriptor set computed above and cache dependencies and all encountered // file descriptors // this map holds all the dependencies that a given file descriptor has. // This cached map will be looked up while building FileDescriptor instances Map < String , Set < Descriptors . FileDescriptor > > fileDescriptorDependentsMap = new HashMap <> ( ) ; // All encountered FileDescriptor instances cached based on their name. Map < String , Descriptors . FileDescriptor > fileDescriptorMap = new HashMap <> ( ) ; ProtobufTypeUtil . getAllFileDescriptors ( set , fileDescriptorDependentsMap , fileDescriptorMap ) ; // Get the descriptor for the expected message type Descriptors . Descriptor descriptor = ProtobufTypeUtil . getDescriptor ( set , fileDescriptorMap , protoDescriptorFile , messageType ) ; // Compute and cache all extensions defined for each message type ProtobufTypeUtil . populateDefaultsAndExtensions ( fileDescriptorMap , messageTypeToExtensionMap , defaultValueMap ) ; return descriptor ; } catch ( FileNotFoundException e ) { throw new StageException ( Errors . PROTOBUF_06 , descriptorFileHandle . getAbsolutePath ( ) , e ) ; } catch ( IOException e ) { throw new StageException ( Errors . PROTOBUF_08 , e . toString ( ) , e ) ; } }
Returns a protobuf descriptor instance from the provided descriptor file .