org.osesb.objectpools
Class ValidationBeanKeyedPoolFactory

java.lang.Object
  extended by org.osesb.objectpools.KeyedObjectPoolFactory
      extended by org.osesb.objectpools.ValidationBeanKeyedPoolFactory

public class ValidationBeanKeyedPoolFactory
extends KeyedObjectPoolFactory

This class is a factory for object pools of org.osesb.validationbeans.ValidationBean(s), with different configurations (heterogeneous). ValidationBean(s) are used to apply constraints to data (usually XML).

This class is is a thread-safe singleton, so only one instance of ValidationBeanKeyedPoolFactory and its associated KeyedObjectPool instance will exist per class loader.

ValidationBean pools are useful in multi-threaded environments, where there are multiple clients using ValidationBean(s). Instead of repeatedly creating ValidationBean(s), clients call getObject() on a pool of ValidationBean(s) and then call returnObject() when validation is complete.

PooledValidationBeanAccessHelper is a helper class for accessing pooled ValidationBean(s).

This class uses org.apache.commons.pool.impl.GenericKeyedObjectPool as the pool implementation. It is a good model for creating other heterogeneous object pools, which are pools that contain different kinds of objects.

This factory uses a configuration file to load a pool of ValidationBean(s). The configuration contains a pool content model, which defines the characteristics of the pool and repeating org.osesb.validationbeans.ValidationBeanConfiguration(s), one for each ValidationBean in the keyed pool.

There is no default configuration file for a ValidationBean pool. So, set the System property defined by org.osesb.objectpools.ObjectPoolConstants.VALIDATIONBEANKEYEDPOOLCONFIGFILE_PROPERTY to the pool configuration file or set a VALIDATIONBEANKEYEDPOOLCONFIGFILE_PROPERTY entry in a properties file named ObjectPoolConstants.OBJECTPOOLCONFIGURATIONS_PROPERTIES_FILE. Generally, a single ValidationBean pool is configured for an integration project.

Object pool configurations must be stand-alone configuration files with all configurations specified in-line.

Object pool configurations cannot be embedded in another configuration file and then referenced externally using XPath. In addition, all pooled object configurations must be specified in-line and cannot use the 'configFile' attribute to redirect the configuration to an external file.

See org.osesb.objectpools.test.testdata for example pool configurations.

Since:
Version .9

Nested Class Summary
protected static class ValidationBeanKeyedPoolFactory.ValidationBeanPoolableObjectFactory
          Inner class that implements org.apache.commons.pool.KeyedPoolableObjectFactory, which is instantiated by the enclosing class and passed to GenericObjectPool's constructor.
 
Field Summary
protected static KeyedObjectPoolConfiguration keyedObjectPoolConfiguration
          The pool configuration as a whole including the ObjectPoolConfiguration and the pooled object configuration(s).
protected static ValidationBeanKeyedPoolFactory poolFactoryInstance
          Singleton pattern - thread-safe construction.
protected static KeyedObjectPool poolInstance
          The instance of the objectpool we will create.
protected static java.lang.String thisClassName
          The full name of this class
 
Fields inherited from class org.osesb.objectpools.KeyedObjectPoolFactory
log
 
Constructor Summary
protected ValidationBeanKeyedPoolFactory()
          Singleton pattern - cannot be instantiated directly.
 
Method Summary
static KeyedObjectPoolFactory getInstance()
          Singleton pattern - - returns the instance of this class.
 KeyedObjectPoolConfiguration getKeyedObjectPoolConfiguration()
          Return the pool configuration as a whole including the ObjectPoolConfiguration and the pooled object configuration(s).
 KeyedObjectPool getPool()
          Returns the object pool instance.
static void main(java.lang.String[] args)
          Main method for testing and sandboxing.
 void resetPoolInstance()
          Close the pool and reset the poolInstance.
 
Methods inherited from class org.osesb.objectpools.KeyedObjectPoolFactory
getPoolConfig
 
Methods inherited from class java.lang.Object
clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait
 

Field Detail

poolInstance

protected static KeyedObjectPool poolInstance
The instance of the objectpool we will create.


keyedObjectPoolConfiguration

protected static KeyedObjectPoolConfiguration keyedObjectPoolConfiguration
The pool configuration as a whole including the ObjectPoolConfiguration and the pooled object configuration(s).


thisClassName

protected static java.lang.String thisClassName
The full name of this class


poolFactoryInstance

protected static ValidationBeanKeyedPoolFactory poolFactoryInstance
Singleton pattern - thread-safe construction.

Constructor Detail

ValidationBeanKeyedPoolFactory

protected ValidationBeanKeyedPoolFactory()
Singleton pattern - cannot be instantiated directly.

Method Detail

getInstance

public static KeyedObjectPoolFactory getInstance()
Singleton pattern - - returns the instance of this class. Callers can then call getPool() to get the object pool.

Returns:
the singleton instance of this class.

getPool

public KeyedObjectPool getPool()
                        throws java.lang.Exception
Returns the object pool instance.

There is no default configuration file for a ValidationBean pool, so load the ValidationBeanKeyedPoolFactory configuration file according to the following plan:

  1. The configuration file given by the System property named ObjectPoolConstants.VALIDATIONBEANKEYEDPOOLCONFIGFILE_PROPERTY.
  2. The configuration file given by the ObjectPoolConstants.VALIDATIONBEANKEYEDPOOLCONFIGFILE_PROPERTY entry in a properties file named ObjectPoolConstants.OBJECTPOOLCONFIGURATIONS_PROPERTIES_FILE.

Specified by:
getPool in class KeyedObjectPoolFactory
Returns:
an instance of the heterogeneous object pool.
Throws:
java.lang.Exception

getKeyedObjectPoolConfiguration

public KeyedObjectPoolConfiguration getKeyedObjectPoolConfiguration()
Return the pool configuration as a whole including the ObjectPoolConfiguration and the pooled object configuration(s). Note that keyedObjectPoolConfiguration is null until getPool() is invoked on the concrete implementation of this class.

Specified by:
getKeyedObjectPoolConfiguration in class KeyedObjectPoolFactory

resetPoolInstance

public void resetPoolInstance()
Close the pool and reset the poolInstance.

Specified by:
resetPoolInstance in class KeyedObjectPoolFactory

main

public static void main(java.lang.String[] args)
Main method for testing and sandboxing.

Parameters:
args -