Class AbstractSimpleSingletonFactory<Input,Output>

java.lang.Object
org.opensaml.core.xml.util.AbstractSingletonFactory<Input,Output>
org.opensaml.core.xml.util.AbstractSimpleSingletonFactory<Input,Output>
Type Parameters:
Input - the factory input class type
Output - the factory output class type
All Implemented Interfaces:
SingletonFactory<Input,Output>

public abstract class AbstractSimpleSingletonFactory<Input,Output> extends AbstractSingletonFactory<Input,Output>
A simple implementation of SingletonFactory.

A WeakHashMap is used as the underlying store. This ensures that if the input class instance become otherwise unused (weakly reachable), the input class instance key used within the factory will not prevent the input class instance from being garbage-collected, thereby preventing a memory leak.

NOTE: If the output class instance holds a strong or soft reference to the input class, do not use this factory. See instead AbstractWrappedSingletonFactory. Usage of this class in that scenario will result in a memory leak, as the input class instance will never become weakly reachable and therefore never garbage collected.

  • Field Details

  • Constructor Details

    • AbstractSimpleSingletonFactory

      public AbstractSimpleSingletonFactory()
      Constructor.
  • Method Details

    • get

      protected Output get(Input input)
      Get the output instance currently associated with the input instance.
      Specified by:
      get in class AbstractSingletonFactory<Input,Output>
      Parameters:
      input - the input instance key
      Returns:
      the output instance which corresponds to the input instance, or null if not present
    • put

      protected void put(Input input, Output output)
      Store the input and output instance association.
      Specified by:
      put in class AbstractSingletonFactory<Input,Output>
      Parameters:
      input - the input instance key
      output - the output instance value