Author: tolusha
Date: 2011-07-06 10:09:04 -0400 (Wed, 06 Jul 2011)
New Revision: 4606
Modified:
jcr/trunk/exo.jcr.component.ext/src/main/java/org/exoplatform/services/jcr/ext/repository/creation/RepositoryCreationServiceImpl.java
jcr/trunk/exo.jcr.component.ext/src/test/resources/conf/standalone/test-configuration.xml
Log:
EXOJCR-1417: Make the code fully independent of DBCP
Modified:
jcr/trunk/exo.jcr.component.ext/src/main/java/org/exoplatform/services/jcr/ext/repository/creation/RepositoryCreationServiceImpl.java
===================================================================
---
jcr/trunk/exo.jcr.component.ext/src/main/java/org/exoplatform/services/jcr/ext/repository/creation/RepositoryCreationServiceImpl.java 2011-07-06
10:09:58 UTC (rev 4605)
+++
jcr/trunk/exo.jcr.component.ext/src/main/java/org/exoplatform/services/jcr/ext/repository/creation/RepositoryCreationServiceImpl.java 2011-07-06
14:09:04 UTC (rev 4606)
@@ -20,6 +20,7 @@
import org.exoplatform.container.ExoContainerContext;
import org.exoplatform.container.configuration.ConfigurationException;
import org.exoplatform.container.configuration.ConfigurationManager;
+import org.exoplatform.container.xml.InitParams;
import org.exoplatform.services.database.creator.DBConnectionInfo;
import org.exoplatform.services.database.creator.DBCreator;
import org.exoplatform.services.database.creator.DBCreatorException;
@@ -86,6 +87,21 @@
private static final Log LOG =
ExoLogger.getLogger("exo.jcr.component.core.RepositoryCreationService");
/**
+ * The parameter name in service's configuration.
+ */
+ private final static String FACTORY_CLASSS_NAME_PARAM =
"factory-class-name";
+
+ /**
+ * The default factory class name.
+ */
+ private static final String BASIC_DATA_SOURCE_FACTORY =
"org.apache.commons.dbcp.BasicDataSourceFactory";
+
+ /**
+ * The factory class name to create object.
+ */
+ private String factoryClassName = BASIC_DATA_SOURCE_FACTORY;
+
+ /**
* The Repository service.
*/
private final RepositoryService repositoryService;
@@ -129,18 +145,25 @@
/**
* Constructor RepositoryCreationServiceImpl.
*/
- public RepositoryCreationServiceImpl(RepositoryService repositoryService,
BackupManager backupManager,
- ExoContainerContext context, InitialContextInitializer initialContextInitializer)
+ public RepositoryCreationServiceImpl(InitParams initParams, RepositoryService
repositoryService,
+ BackupManager backupManager, ExoContainerContext context, InitialContextInitializer
initialContextInitializer)
{
- this(repositoryService, backupManager, context, initialContextInitializer, null);
+ this(initParams, repositoryService, backupManager, context,
initialContextInitializer, null);
}
/**
* Constructor RepositoryCreationServiceImpl.
*/
- public RepositoryCreationServiceImpl(final RepositoryService repositoryService,
BackupManager backupManager,
- ExoContainerContext context, InitialContextInitializer initialContextInitializer,
final RPCService rpcService)
+ public RepositoryCreationServiceImpl(InitParams initParams, final RepositoryService
repositoryService,
+ BackupManager backupManager, ExoContainerContext context, InitialContextInitializer
initialContextInitializer,
+ final RPCService rpcService)
{
+ if (initParams != null)
+ {
+ // set reference class name for datasource binding from initialization
parameters
+ factoryClassName =
initParams.getValueParam(FACTORY_CLASSS_NAME_PARAM).getValue();
+ }
+
this.repositoryService = repositoryService;
this.backupManager = backupManager;
this.rpcService = rpcService;
@@ -535,7 +558,7 @@
try
{
initialContextInitializer.getInitialContextBinder().bind(dataSource,
"javax.sql.DataSource",
- "org.apache.commons.dbcp.BasicDataSourceFactory", null,
refAddr);
+ factoryClassName, null, refAddr);
}
catch (NamingException e)
{
@@ -634,7 +657,7 @@
try
{
initialContextInitializer.getInitialContextBinder().bind(dataSource,
"javax.sql.DataSource",
- "org.apache.commons.dbcp.BasicDataSourceFactory", null,
refAddr);
+ factoryClassName, null, refAddr);
}
catch (NamingException e)
{
@@ -860,10 +883,10 @@
repositoryService.removeRepository(repositoryName);
repositoryService.getConfig().retain();
- // unbind datasource
- for (String ds : datasources)
+ // unbind datasource and close connections
+ for (String dsName : datasources)
{
- initialContextInitializer.getInitialContextBinder().unbind(ds);
+ initialContextInitializer.getInitialContextBinder().unbind(dsName);
}
}
catch (RepositoryException e)
Modified:
jcr/trunk/exo.jcr.component.ext/src/test/resources/conf/standalone/test-configuration.xml
===================================================================
---
jcr/trunk/exo.jcr.component.ext/src/test/resources/conf/standalone/test-configuration.xml 2011-07-06
10:09:58 UTC (rev 4605)
+++
jcr/trunk/exo.jcr.component.ext/src/test/resources/conf/standalone/test-configuration.xml 2011-07-06
14:09:04 UTC (rev 4606)
@@ -382,6 +382,12 @@
<component>
<key>org.exoplatform.services.jcr.ext.repository.creation.RepositoryCreationService</key>
<type>org.exoplatform.services.jcr.ext.repository.creation.RepositoryCreationServiceImpl</type>
+ <!--init-params>
+ <value-param>
+ <name>factory-class-name</name>
+ <value>org.apache.commons.dbcp.BasicDataSourceFactory</value>
+ </value-param>
+ </init-params-->
</component>
<component>