Package org.apache.cayenne.configuration.server

## Class DelegatingDataSourceFactory

- java.lang.Object
- - org.apache.cayenne.configuration.server.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

    All Methods Instance Methods Concrete Methods
    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 java.lang.Object

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

- - ### Field Detail

    - #### objectFactory

          protected AdhocObjectFactory objectFactory

    - #### properties

          protected RuntimeProperties properties

    - #### managedDataSources

          protected Map<DataSource,​ScopeEventListener> managedDataSources

  - ### Constructor Detail

    - #### DelegatingDataSourceFactory

          public DelegatingDataSourceFactory()

  - ### Method Detail

    - #### getDataSource

          public DataSource getDataSource​(DataNodeDescriptor nodeDescriptor)
                                   throws Exception

      Description copied from interface: `DataSourceFactory`
      Returns DataSource object based on the configuration provided in the "nodeDescriptor".
      Specified by:
        `getDataSource` in interface `DataSourceFactory`
      Throws:
        `Exception`

    - #### 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)