Class AbstractFactoryRegistryImpl<T extends Factory,​R extends ReflectiveFactory>

    • Constructor Summary

      Constructors 
      Constructor Description
      AbstractFactoryRegistryImpl​(java.lang.Class<T> factoryType, java.lang.Class<R> reflectiveFactoryType)
      Creates a new factory registry.
    • Method Summary

      All Methods Instance Methods Abstract Methods Concrete Methods 
      Modifier and Type Method Description
      T get​(java.lang.String name)
      Get the factory registered under the given name.
      T getDefault()
      Get the default factory.
      protected abstract T getDefault​(java.util.List<T> filteredFactories)
      Get the default factory from given list of available factories.
      protected abstract void handleNoFactoryAvailable​(java.lang.String name)
      Handle the case when no factory is available for given name
      protected abstract R newReflectiveInstance​(java.lang.String name)
      Creates an instance of reflective factory.
      void register​(T factory)
      Register a new factory.
      • Methods inherited from class java.lang.Object

        clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait
    • Field Detail

      • factoryType

        protected final java.lang.Class<T extends Factory> factoryType
      • reflectiveFactoryType

        protected final java.lang.Class<R extends ReflectiveFactory> reflectiveFactoryType
      • factories

        protected java.util.Map<java.lang.String,​T extends Factory> factories
    • Constructor Detail

      • AbstractFactoryRegistryImpl

        public AbstractFactoryRegistryImpl​(java.lang.Class<T> factoryType,
                                           java.lang.Class<R> reflectiveFactoryType)
        Creates a new factory registry.
        Parameters:
        factoryType - type of factories
        reflectiveFactoryType - type of reflective factories
    • Method Detail

      • getDefault

        public T getDefault()
        Get the default factory.
        Returns:
        default factory
      • getDefault

        protected abstract T getDefault​(java.util.List<T> filteredFactories)
        Get the default factory from given list of available factories.
        Parameters:
        filteredFactories - available factories
        Returns:
        default factory
      • get

        public T get​(java.lang.String name)
        Get the factory registered under the given name.
        Parameters:
        name - name of the factory
        Returns:
        factory
      • handleNoFactoryAvailable

        protected abstract void handleNoFactoryAvailable​(java.lang.String name)
        Handle the case when no factory is available for given name
        Parameters:
        name - request factory name
      • newReflectiveInstance

        protected abstract R newReflectiveInstance​(java.lang.String name)
        Creates an instance of reflective factory.
        Parameters:
        name - name of the instance to create.
        Returns:
        new instance
      • register

        public final void register​(T factory)
        Register a new factory.

        It will use FactoryName value as the default name.

        It will also register the factory under names returned by FactoryNames.getNames()} if it implements FactoryNames.

        Parameters:
        factory - factory to register