org.springframework.jca.cci.connection
Class SingleConnectionFactory

java.lang.Object
  extended by org.springframework.jca.cci.connection.DelegatingConnectionFactory
      extended by org.springframework.jca.cci.connection.SingleConnectionFactory
All Implemented Interfaces:
Serializable, Referenceable, ConnectionFactory, DisposableBean, InitializingBean

public class SingleConnectionFactory
extends DelegatingConnectionFactory
implements DisposableBean

A CCI ConnectionFactory adapter that returns the same Connection on all getConnection calls, and ignores calls to Connection.close().

Useful for testing and standalone environemtns, to keep using the same Connection for multiple CciTemplate calls, without having a pooling ConnectionFactory, also spanning any number of transactions.

You can either pass in a CCI Connection directly, or let this factory lazily create a Connection via a given target ConnectionFactory.

Since:
1.2
Author:
Juergen Hoeller
See Also:
getConnection(), Connection.close(), CciTemplate, Serialized Form

Field Summary
protected  org.apache.commons.logging.Log logger
           
 
Constructor Summary
SingleConnectionFactory()
          Create a new SingleConnectionFactory for bean-style usage.
SingleConnectionFactory(Connection target)
          Create a new SingleConnectionFactory that always returns the given Connection.
SingleConnectionFactory(ConnectionFactory targetConnectionFactory)
          Create a new SingleConnectionFactory that always returns a single Connection that it will lazily create via the given target ConnectionFactory.
 
Method Summary
 void afterPropertiesSet()
          Make sure a connection or connection factory has been set.
 void destroy()
          Close the underlying connection.
protected  Connection doCreateConnection()
          Create a CCI Connection via this template's ConnectionFactory.
protected  Connection getCloseSuppressingConnectionProxy(Connection target)
          Wrap the given Connection with a proxy that delegates every method call to it but suppresses close calls.
 Connection getConnection()
           
 Connection getConnection(ConnectionSpec connectionSpec)
           
 ResourceAdapterMetaData getMetaData()
           
 RecordFactory getRecordFactory()
           
 Reference getReference()
           
protected  void init()
          Initialize the single Connection.
 void setReference(Reference reference)
           
 
Methods inherited from class org.springframework.jca.cci.connection.DelegatingConnectionFactory
getTargetConnectionFactory, setTargetConnectionFactory
 
Methods inherited from class java.lang.Object
clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait
 

Field Detail

logger

protected final org.apache.commons.logging.Log logger
Constructor Detail

SingleConnectionFactory

public SingleConnectionFactory()
Create a new SingleConnectionFactory for bean-style usage.

See Also:
DelegatingConnectionFactory.setTargetConnectionFactory(javax.resource.cci.ConnectionFactory)

SingleConnectionFactory

public SingleConnectionFactory(Connection target)
Create a new SingleConnectionFactory that always returns the given Connection.

Parameters:
target - the single Connection

SingleConnectionFactory

public SingleConnectionFactory(ConnectionFactory targetConnectionFactory)
Create a new SingleConnectionFactory that always returns a single Connection that it will lazily create via the given target ConnectionFactory.

Parameters:
targetConnectionFactory - the target ConnectionFactory
Method Detail

afterPropertiesSet

public void afterPropertiesSet()
Make sure a connection or connection factory has been set.

Specified by:
afterPropertiesSet in interface InitializingBean
Overrides:
afterPropertiesSet in class DelegatingConnectionFactory

init

protected void init()
             throws ResourceException
Initialize the single Connection.

Throws:
ResourceException - if thrown by CCI API methods

doCreateConnection

protected Connection doCreateConnection()
                                 throws ResourceException
Create a CCI Connection via this template's ConnectionFactory.

Returns:
the new CCI Connection
Throws:
ResourceException - if thrown by CCI API methods

destroy

public void destroy()
             throws ResourceException
Close the underlying connection. The provider of this ConnectionFactory needs to care for proper shutdown.

As this bean implements DisposableBean, a bean factory will automatically invoke this on destruction of its cached singletons.

Specified by:
destroy in interface DisposableBean
Throws:
ResourceException

getConnection

public Connection getConnection()
                         throws ResourceException
Specified by:
getConnection in interface ConnectionFactory
Overrides:
getConnection in class DelegatingConnectionFactory
Throws:
ResourceException

getConnection

public Connection getConnection(ConnectionSpec connectionSpec)
                         throws ResourceException
Specified by:
getConnection in interface ConnectionFactory
Overrides:
getConnection in class DelegatingConnectionFactory
Throws:
ResourceException

getRecordFactory

public RecordFactory getRecordFactory()
                               throws ResourceException
Specified by:
getRecordFactory in interface ConnectionFactory
Overrides:
getRecordFactory in class DelegatingConnectionFactory
Throws:
ResourceException

getMetaData

public ResourceAdapterMetaData getMetaData()
                                    throws ResourceException
Specified by:
getMetaData in interface ConnectionFactory
Overrides:
getMetaData in class DelegatingConnectionFactory
Throws:
ResourceException

setReference

public void setReference(Reference reference)
Overrides:
setReference in class DelegatingConnectionFactory

getReference

public Reference getReference()
                       throws NamingException
Specified by:
getReference in interface Referenceable
Overrides:
getReference in class DelegatingConnectionFactory
Throws:
NamingException

getCloseSuppressingConnectionProxy

protected Connection getCloseSuppressingConnectionProxy(Connection target)
Wrap the given Connection with a proxy that delegates every method call to it but suppresses close calls. This is useful for allowing application code to handle a special framework Connection just like an ordinary Connection from a CCI ConnectionFactory.

Parameters:
target - the original Connection to wrap
Returns:
the wrapped Connection


Copyright (c) 2002-2006 The Spring Framework Project.