Package ai.pipestream.common.util
Class DescriptorRegistry
java.lang.Object
ai.pipestream.common.util.DescriptorRegistry
Registry for managing Protocol Buffer descriptors.
Provides lookup capabilities for descriptors by type name and caching.
Supports loading descriptors from various sources via DescriptorLoader implementations.
-
Nested Class Summary
Nested ClassesModifier and TypeClassDescriptionstatic classBuilder for fluently constructing a DescriptorRegistry. -
Constructor Summary
ConstructorsConstructorDescriptionCreates a new empty DescriptorRegistry.DescriptorRegistry(boolean autoLoad) Creates a DescriptorRegistry with automatic loading enabled. -
Method Summary
Modifier and TypeMethodDescriptionvoidaddLoader(DescriptorLoader loader) Adds a descriptor loader to this registry.voidAttempts to automatically load descriptors from available loaders.builder()Creates a builder for fluently registering multiple descriptors.voidclear()Clears all registered descriptors except well-known types.com.google.protobuf.Descriptors.DescriptorfindDescriptor(String name) Finds a descriptor by either full or simple name.com.google.protobuf.Descriptors.DescriptorfindDescriptorByFullName(String fullName) Finds a descriptor by its full name.com.google.protobuf.Descriptors.DescriptorfindDescriptorBySimpleName(String simpleName) Finds a descriptor by its simple name.booleanisRegistered(String fullName) Checks if a descriptor is registered.intloadFrom(DescriptorLoader loader) Loads descriptors from a specific loader and registers them.voidregister(com.google.protobuf.Descriptors.Descriptor descriptor) Registers a descriptor in the registry.voidregisterFile(com.google.protobuf.Descriptors.FileDescriptor fileDescriptor) Registers all message types from a file descriptor.voidregisterFromMessage(com.google.protobuf.Message message) Registers a descriptor from a message instance.intsize()Gets the number of registered descriptors.
-
Constructor Details
-
DescriptorRegistry
public DescriptorRegistry()Creates a new empty DescriptorRegistry. -
DescriptorRegistry
public DescriptorRegistry(boolean autoLoad) Creates a DescriptorRegistry with automatic loading enabled. This will attempt to load descriptors from the default Google descriptor file.- Parameters:
autoLoad- Whether to automatically load descriptors
-
-
Method Details
-
register
public void register(com.google.protobuf.Descriptors.Descriptor descriptor) Registers a descriptor in the registry.- Parameters:
descriptor- The descriptor to register
-
registerFile
public void registerFile(com.google.protobuf.Descriptors.FileDescriptor fileDescriptor) Registers all message types from a file descriptor.- Parameters:
fileDescriptor- The file descriptor to register
-
registerFromMessage
public void registerFromMessage(com.google.protobuf.Message message) Registers a descriptor from a message instance.- Parameters:
message- The message whose descriptor should be registered
-
findDescriptorByFullName
Finds a descriptor by its full name.- Parameters:
fullName- The full name (e.g., "ai.pipestream.data.v1.SearchMetadata")- Returns:
- The descriptor, or null if not found
-
findDescriptorBySimpleName
Finds a descriptor by its simple name. Note: This may return unexpected results if multiple types have the same simple name.- Parameters:
simpleName- The simple name (e.g., "SearchMetadata")- Returns:
- The descriptor, or null if not found
-
findDescriptor
Finds a descriptor by either full or simple name.- Parameters:
name- The name to search for- Returns:
- The descriptor, or null if not found
-
isRegistered
Checks if a descriptor is registered.- Parameters:
fullName- The full name of the type- Returns:
- true if the descriptor is registered
-
clear
public void clear()Clears all registered descriptors except well-known types. -
size
public int size()Gets the number of registered descriptors.- Returns:
- The count of registered descriptors
-
addLoader
Adds a descriptor loader to this registry.- Parameters:
loader- The loader to add
-
loadFrom
Loads descriptors from a specific loader and registers them.- Parameters:
loader- The loader to use- Returns:
- The number of descriptors loaded
- Throws:
DescriptorLoader.DescriptorLoadException- if loading fails
-
autoLoadDescriptors
public void autoLoadDescriptors()Attempts to automatically load descriptors from available loaders. By default, this tries to load from the Google descriptor file on the classpath. This method is idempotent - it will only attempt to load once. -
builder
Creates a builder for fluently registering multiple descriptors.- Returns:
- A new RegistryBuilder
-