DelegatingDataSourceFactory (cayenne-doc: Cayenne Documentation 5.0-M2 API)
Description: declaration: package: org.apache.cayenne.configuration.runtime, class: DelegatingDataSourceFactory

# Class DelegatingDataSourceFactory

java.lang.Object
org.apache.cayenne.configuration.runtime.DelegatingDataSourceFactory

All Implemented Interfaces:
  `DataSourceFactory`

public class DelegatingDataSourceFactory extends Object implements DataSourceFactory
A `DataSourceFactory` that delegates DataSource creation to another factory, which is determined dynamically per DataNodeDescriptor. The delegate class may be explicitly defined in the `DataNodeDescriptor`. If not, and if the descriptor has a configuration resource attached to it, `XMLPoolingDataSourceFactory` is used.

If the environment contains properties cayenne.jdbc.url.domain_name.node_name (or cayenne.jdbc.url) and cayenne.jdbc.driver.domain_name.node_name (or cayenne.jdbc.driver), any DataSourceFactory configured in the DataNodeDescriptor is ignored, and the `PropertyDataSourceFactory` is used.

Since:
  3.1

- ## Field Summary

  Fields
  Modifier and Type
  Field
  Description
  `protected Map<DataSource, ScopeEventListener>`
  `managedDataSources`
  `protected AdhocObjectFactory`
  `objectFactory`
  `protected RuntimeProperties`
  `properties`

- ## Constructor Summary

  Constructors
  Constructor
  Description
  `DelegatingDataSourceFactory()`

- ## Method Summary

  Modifier and Type
  Method
  Description
  `protected void`
  `attachToScope(DataSource dataSource)`
  Ensure that DataSource implementations returned from this factory receive `BeforeScopeEnd` events.
  `DataSource`
  `getDataSource(DataNodeDescriptor nodeDescriptor)`
  Returns DataSource object based on the configuration provided in the "nodeDescriptor".
  `protected DataSourceFactory`
  `getDataSourceFactory(DataNodeDescriptor nodeDescriptor)`
  `protected boolean`
  `shouldConfigureDataSourceFromProperties(DataNodeDescriptor nodeDescriptor)`
  `void`
  `shutdown()`

  ### Methods inherited from class Object

  `clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait`

- ## Field Details

  - ### objectFactory

    protected AdhocObjectFactory objectFactory

  - ### properties

    protected RuntimeProperties properties

  - ### managedDataSources

    protected Map<DataSource, ScopeEventListener> managedDataSources

- ## Constructor Details

  - ### DelegatingDataSourceFactory

    public DelegatingDataSourceFactory()

- ## Method Details

  - ### getDataSource

    public DataSource getDataSource(DataNodeDescriptor nodeDescriptor)
    Description copied from interface: `DataSourceFactory`
    Returns DataSource object based on the configuration provided in the "nodeDescriptor".
    Specified by:
      `getDataSource` in interface `DataSourceFactory`

  - ### shutdown

    @BeforeScopeEnd public void shutdown()

  - ### attachToScope

    protected void attachToScope(DataSource dataSource)
    Ensure that DataSource implementations returned from this factory receive `BeforeScopeEnd` events.

  - ### getDataSourceFactory

    protected DataSourceFactory getDataSourceFactory(DataNodeDescriptor nodeDescriptor)

  - ### shouldConfigureDataSourceFromProperties

    protected boolean shouldConfigureDataSourceFromProperties(DataNodeDescriptor nodeDescriptor)