org.opensaml.xml.util
Class AbstractSimpleSingletonFactory<Input,Output>

java.lang.Object
  extended by org.opensaml.xml.util.AbstractSingletonFactory<Input,Output>
      extended by org.opensaml.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 Summary
private  WeakHashMap<Input,Output> map
          Storage for the factory.
 
Constructor Summary
AbstractSimpleSingletonFactory()
          Constructor.
 
Method Summary
protected  Output get(Input input)
          Get the output instance currently associated with the input instance.
protected  void put(Input input, Output output)
          Store the input and output instance association.
 
Methods inherited from class org.opensaml.xml.util.AbstractSingletonFactory
createNewInstance, getInstance
 
Methods inherited from class java.lang.Object
clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait
 

Field Detail

map

private WeakHashMap<Input,Output> map
Storage for the factory.

Constructor Detail

AbstractSimpleSingletonFactory

public AbstractSimpleSingletonFactory()
Constructor.

Method Detail

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


Copyright © 1999-2012. All Rights Reserved.