Class DescriptorRegistry

java.lang.Object
ai.pipestream.common.util.DescriptorRegistry

public class DescriptorRegistry extends Object
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.
  • 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

      public com.google.protobuf.Descriptors.Descriptor findDescriptorByFullName(String fullName)
      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

      public com.google.protobuf.Descriptors.Descriptor findDescriptorBySimpleName(String simpleName)
      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

      public com.google.protobuf.Descriptors.Descriptor findDescriptor(String name)
      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

      public boolean isRegistered(String fullName)
      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

      public void addLoader(DescriptorLoader loader)
      Adds a descriptor loader to this registry.
      Parameters:
      loader - The loader to add
    • loadFrom

      public int loadFrom(DescriptorLoader loader) throws DescriptorLoader.DescriptorLoadException
      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

      public static DescriptorRegistry.RegistryBuilder builder()
      Creates a builder for fluently registering multiple descriptors.
      Returns:
      A new RegistryBuilder