com.openharbor.beck.map
Class DefaultMapperPool

java.lang.Object
  extended bycom.openharbor.beck.map.DefaultMapperPool
All Implemented Interfaces:
MapFromXML.Source, MapToXML.Source

public class DefaultMapperPool
extends java.lang.Object
implements MapFromXML.Source, MapToXML.Source

A source of mappers that's thread-safe and can track changes in the underlying configuration.


Constructor Summary
DefaultMapperPool(java.lang.ClassLoader loader, java.lang.String resourceName)
          Configure the mappers from a Configuration mapped from a PollableResource.
DefaultMapperPool(Configuration configuration)
          Configure the mappers from the given Configuration.
 
Method Summary
 MapFromXML allocateMapFromXML()
          Obtain a current mapper.
 DefaultMapper allocateMapper()
           
 MapToXML allocateMapToXML()
          Obtain a current mapper.
protected  DefaultMapper newMapper(Configuration configuration)
           
 void pollSoon()
          Check for a change in the configuration next time allocateMapFromXML() is called, regardless of the currently acceptable staleness.
 void releaseMapFromXML(MapFromXML toRelease)
          Make a mapper available for re-use.
 void releaseMapper(DefaultMapper toRelease)
           
 void releaseMapToXML(MapToXML toRelease)
          Make a mapper available for use by other threads.
protected  void removeDeadKeys()
          Remove entries from configuration2mappers whose key has been garbage collected.
 
Methods inherited from class java.lang.Object
clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait
 

Constructor Detail

DefaultMapperPool

public DefaultMapperPool(Configuration configuration)
Configure the mappers from the given Configuration.


DefaultMapperPool

public DefaultMapperPool(java.lang.ClassLoader loader,
                         java.lang.String resourceName)
Configure the mappers from a Configuration mapped from a PollableResource. After a change to the resource is detected by polling, allocated mappers will have a correspondingly changed Configuration.

Method Detail

allocateMapFromXML

public MapFromXML allocateMapFromXML()
                              throws java.lang.Exception
Description copied from interface: MapFromXML.Source
Obtain a current mapper. For best performance, the caller should pass the allocated mapper to MapFromXML.Source.releaseMapFromXML(com.openharbor.beck.map.MapFromXML) after the caller has done using it. For best performance, this method should return the same object repeatedly, switching to a new object only when necessary (e.g. when the old object is intolerably stale).

Specified by:
allocateMapFromXML in interface MapFromXML.Source
Throws:
java.lang.Exception

allocateMapToXML

public MapToXML allocateMapToXML()
                          throws java.lang.Exception
Description copied from interface: MapToXML.Source
Obtain a current mapper. For best performance, the caller should pass the allocated mapper to MapToXML.Source.releaseMapToXML(com.openharbor.beck.map.MapToXML) after the caller has done using it. For best performance, this method should return the same object repeatedly, switching to a new object only when necessary (e.g. when the old object is intolerably stale).

Specified by:
allocateMapToXML in interface MapToXML.Source
Throws:
java.lang.Exception

releaseMapFromXML

public void releaseMapFromXML(MapFromXML toRelease)
Description copied from interface: MapFromXML.Source
Make a mapper available for re-use. The caller must not use this mapper subsequently (unless the same mapper is returned from another call to MapFromXML.Source.allocateMapFromXML()). This Source may allocate the mapper to another thread, which might result in erroneous concurrent use of the mapper by both threads if a previous releaser cheats.

Specified by:
releaseMapFromXML in interface MapFromXML.Source

releaseMapToXML

public void releaseMapToXML(MapToXML toRelease)
Description copied from interface: MapToXML.Source
Make a mapper available for use by other threads. The caller must not use this mapper subsequently (unless the same mapper is returned from another call to MapToXML.Source.allocateMapToXML()). This source may allocate the mapper to another thread, which might result in erroneous concurrent use of the mapper by both threads.

Specified by:
releaseMapToXML in interface MapToXML.Source

pollSoon

public void pollSoon()
Description copied from interface: MapFromXML.Source
Check for a change in the configuration next time MapFromXML.Source.allocateMapFromXML() is called, regardless of the currently acceptable staleness.

Specified by:
pollSoon in interface MapFromXML.Source

allocateMapper

public DefaultMapper allocateMapper()
                             throws java.lang.Exception
Throws:
java.lang.Exception

newMapper

protected DefaultMapper newMapper(Configuration configuration)
                           throws java.lang.Exception
Throws:
java.lang.Exception

releaseMapper

public void releaseMapper(DefaultMapper toRelease)

removeDeadKeys

protected void removeDeadKeys()
Remove entries from configuration2mappers whose key has been garbage collected. The caller must synchronize on configuration2mappers; this method mutates it, but does not synchronize on it.