You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@synapse.apache.org by in...@apache.org on 2008/11/13 20:00:57 UTC
svn commit: r713788 [1/2] - in
/synapse/trunk/java/modules/core/src/main/java/org/apache/synapse: ./
config/ config/xml/ endpoints/dispatch/ registry/url/ util/
util/datasource/ util/datasource/factory/ util/datasource/serializer/
Author: indika
Date: Thu Nov 13 11:00:56 2008
New Revision: 713788
URL: http://svn.apache.org/viewvc?rev=713788&view=rev
Log:
Refactorig DB Pool
Added:
synapse/trunk/java/modules/core/src/main/java/org/apache/synapse/util/datasource/DataSourceConfigurationConstants.java
synapse/trunk/java/modules/core/src/main/java/org/apache/synapse/util/datasource/DataSourceInformationRepository.java
synapse/trunk/java/modules/core/src/main/java/org/apache/synapse/util/datasource/DataSourceInformationRepositoryListener.java
synapse/trunk/java/modules/core/src/main/java/org/apache/synapse/util/datasource/DataSourceManager.java
synapse/trunk/java/modules/core/src/main/java/org/apache/synapse/util/datasource/DataSourceRepository.java
synapse/trunk/java/modules/core/src/main/java/org/apache/synapse/util/datasource/DatasourceMBeanRepository.java
synapse/trunk/java/modules/core/src/main/java/org/apache/synapse/util/datasource/InMemoryDataSourceRepository.java
synapse/trunk/java/modules/core/src/main/java/org/apache/synapse/util/datasource/JNDIBasedDataSourceRepository.java
synapse/trunk/java/modules/core/src/main/java/org/apache/synapse/util/datasource/factory/DataSourceInformationListFactory.java
synapse/trunk/java/modules/core/src/main/java/org/apache/synapse/util/datasource/factory/DataSourceInformationRepositoryFactory.java
synapse/trunk/java/modules/core/src/main/java/org/apache/synapse/util/datasource/serializer/
synapse/trunk/java/modules/core/src/main/java/org/apache/synapse/util/datasource/serializer/DataSourceInformationListSerializer.java
synapse/trunk/java/modules/core/src/main/java/org/apache/synapse/util/datasource/serializer/DataSourceInformationSerializer.java
Removed:
synapse/trunk/java/modules/core/src/main/java/org/apache/synapse/util/datasource/DataSourceRegistrar.java
synapse/trunk/java/modules/core/src/main/java/org/apache/synapse/util/datasource/DataSourceRegistry.java
synapse/trunk/java/modules/core/src/main/java/org/apache/synapse/util/datasource/InMemoryDataSourceRegistry.java
synapse/trunk/java/modules/core/src/main/java/org/apache/synapse/util/datasource/JNDIBasedDataSourceRegistry.java
Modified:
synapse/trunk/java/modules/core/src/main/java/org/apache/synapse/ServerManager.java
synapse/trunk/java/modules/core/src/main/java/org/apache/synapse/SynapseConstants.java
synapse/trunk/java/modules/core/src/main/java/org/apache/synapse/config/SynapseConfiguration.java
synapse/trunk/java/modules/core/src/main/java/org/apache/synapse/config/SynapseConfigurationBuilder.java
synapse/trunk/java/modules/core/src/main/java/org/apache/synapse/config/xml/AbstractDBMediatorFactory.java
synapse/trunk/java/modules/core/src/main/java/org/apache/synapse/endpoints/dispatch/SALSessions.java
synapse/trunk/java/modules/core/src/main/java/org/apache/synapse/registry/url/SimpleURLRegistry.java
synapse/trunk/java/modules/core/src/main/java/org/apache/synapse/util/MBeanRepository.java
synapse/trunk/java/modules/core/src/main/java/org/apache/synapse/util/RMIRegistryController.java
synapse/trunk/java/modules/core/src/main/java/org/apache/synapse/util/datasource/DBPoolView.java
synapse/trunk/java/modules/core/src/main/java/org/apache/synapse/util/datasource/DBPoolViewMBean.java
synapse/trunk/java/modules/core/src/main/java/org/apache/synapse/util/datasource/DataSourceFinder.java
synapse/trunk/java/modules/core/src/main/java/org/apache/synapse/util/datasource/DataSourceInformation.java
synapse/trunk/java/modules/core/src/main/java/org/apache/synapse/util/datasource/factory/DataSourceInformationFactory.java
Modified: synapse/trunk/java/modules/core/src/main/java/org/apache/synapse/ServerManager.java
URL: http://svn.apache.org/viewvc/synapse/trunk/java/modules/core/src/main/java/org/apache/synapse/ServerManager.java?rev=713788&r1=713787&r2=713788&view=diff
==============================================================================
--- synapse/trunk/java/modules/core/src/main/java/org/apache/synapse/ServerManager.java (original)
+++ synapse/trunk/java/modules/core/src/main/java/org/apache/synapse/ServerManager.java Thu Nov 13 11:00:56 2008
@@ -24,19 +24,12 @@
import org.apache.axis2.description.TransportInDescription;
import org.apache.axis2.description.AxisService;
import org.apache.axis2.description.AxisModule;
-import org.apache.axis2.engine.AxisConfiguration;
import org.apache.axis2.engine.ListenerManager;
-import org.apache.axis2.format.PlainTextBuilder;
-import org.apache.axis2.format.BinaryBuilder;
import org.apache.commons.logging.Log;
import org.apache.commons.logging.LogFactory;
import org.apache.synapse.config.SynapseConfiguration;
import org.apache.synapse.core.SynapseEnvironment;
import org.apache.synapse.util.ClasspathURLStreamHandler;
-import org.apache.synapse.util.RMIRegistryController;
-import org.apache.synapse.util.datasource.InMemoryDataSourceRegistry;
-import org.apache.synapse.util.datasource.JNDIBasedDataSourceRegistry;
-import org.apache.synapse.endpoints.dispatch.SALSessions;
import java.io.File;
import java.net.*;
Modified: synapse/trunk/java/modules/core/src/main/java/org/apache/synapse/SynapseConstants.java
URL: http://svn.apache.org/viewvc/synapse/trunk/java/modules/core/src/main/java/org/apache/synapse/SynapseConstants.java?rev=713788&r1=713787&r2=713788&view=diff
==============================================================================
--- synapse/trunk/java/modules/core/src/main/java/org/apache/synapse/SynapseConstants.java (original)
+++ synapse/trunk/java/modules/core/src/main/java/org/apache/synapse/SynapseConstants.java Thu Nov 13 11:00:56 2008
@@ -269,8 +269,6 @@
/** Synapse server instance name */
public static final String SERVER_NAME = "serverName";
- public static final String SYNAPSE_DATASOURCES = "synapse.datasources";
-
/** Root for relative path */
public static final String RESOLVE_ROOT = "resolve.root";
Modified: synapse/trunk/java/modules/core/src/main/java/org/apache/synapse/config/SynapseConfiguration.java
URL: http://svn.apache.org/viewvc/synapse/trunk/java/modules/core/src/main/java/org/apache/synapse/config/SynapseConfiguration.java?rev=713788&r1=713787&r2=713788&view=diff
==============================================================================
--- synapse/trunk/java/modules/core/src/main/java/org/apache/synapse/config/SynapseConfiguration.java (original)
+++ synapse/trunk/java/modules/core/src/main/java/org/apache/synapse/config/SynapseConfiguration.java Thu Nov 13 11:00:56 2008
@@ -26,12 +26,12 @@
import org.apache.commons.logging.LogFactory;
import org.apache.synapse.*;
import org.apache.synapse.util.RMIRegistryController;
-import org.apache.synapse.util.datasource.InMemoryDataSourceRegistry;
-import org.apache.synapse.util.datasource.JNDIBasedDataSourceRegistry;
+import org.apache.synapse.util.datasource.DataSourceInformationRepository;
+import org.apache.synapse.util.datasource.InMemoryDataSourceRepository;
+import org.apache.synapse.util.datasource.JNDIBasedDataSourceRepository;
import org.apache.synapse.task.TaskDescriptionRepository;
import org.apache.synapse.task.TaskDescriptionRepositoryFactory;
import org.apache.synapse.config.xml.MediatorFactoryFinder;
-import org.apache.synapse.config.xml.SwitchCase;
import org.apache.synapse.config.xml.endpoints.XMLToEndpointMapper;
import org.apache.synapse.core.SynapseEnvironment;
import org.apache.synapse.core.axis2.ProxyService;
@@ -40,13 +40,6 @@
import org.apache.synapse.mediators.base.SequenceMediator;
import org.apache.synapse.mediators.ListMediator;
import org.apache.synapse.mediators.AbstractMediator;
-import org.apache.synapse.mediators.eip.splitter.CloneMediator;
-import org.apache.synapse.mediators.eip.splitter.IterateMediator;
-import org.apache.synapse.mediators.eip.Target;
-import org.apache.synapse.mediators.eip.aggregator.AggregateMediator;
-import org.apache.synapse.mediators.filters.SwitchMediator;
-import org.apache.synapse.mediators.builtin.SendMediator;
-import org.apache.synapse.mediators.builtin.CacheMediator;
import org.apache.synapse.registry.Registry;
import javax.xml.namespace.QName;
@@ -110,6 +103,9 @@
private final TaskDescriptionRepository repository =
TaskDescriptionRepositoryFactory.getTaskDescriptionRepository(
SynapseConstants.SYNAPSE_STARTUP_TASK_DESCRIPTIONS_REPOSITORY);
+
+ /* Keeps information about datasource -only configuration data - no runtime data */
+ private DataSourceInformationRepository dataSourceInformationRepository;
/**
* Save the path to the configuration file loaded, to save it later if
@@ -821,8 +817,8 @@
try {
RMIRegistryController.getInstance().removeLocalRegistry();
SALSessions.getInstance().reset();
- InMemoryDataSourceRegistry.getInstance().clear();
- JNDIBasedDataSourceRegistry registry = JNDIBasedDataSourceRegistry.getInstance();
+ InMemoryDataSourceRepository.getInstance().clear();
+ JNDIBasedDataSourceRepository registry = JNDIBasedDataSourceRepository.getInstance();
if (registry.isInitialized()) {
registry.clear();
}
@@ -926,4 +922,12 @@
public TaskDescriptionRepository getTaskDescriptionRepository() {
return repository;
}
+
+ public DataSourceInformationRepository getDataSourceInformationRepository() {
+ return dataSourceInformationRepository;
+ }
+
+ public void setDataSourceInformationRepository(DataSourceInformationRepository dataSourceInformationRepository) {
+ this.dataSourceInformationRepository = dataSourceInformationRepository;
+ }
}
Modified: synapse/trunk/java/modules/core/src/main/java/org/apache/synapse/config/SynapseConfigurationBuilder.java
URL: http://svn.apache.org/viewvc/synapse/trunk/java/modules/core/src/main/java/org/apache/synapse/config/SynapseConfigurationBuilder.java?rev=713788&r1=713787&r2=713788&view=diff
==============================================================================
--- synapse/trunk/java/modules/core/src/main/java/org/apache/synapse/config/SynapseConfigurationBuilder.java (original)
+++ synapse/trunk/java/modules/core/src/main/java/org/apache/synapse/config/SynapseConfigurationBuilder.java Thu Nov 13 11:00:56 2008
@@ -23,7 +23,8 @@
import org.apache.commons.logging.LogFactory;
import org.apache.synapse.SynapseConstants;
import org.apache.synapse.SynapseException;
-import org.apache.synapse.util.datasource.DataSourceRegistrar;
+import org.apache.synapse.util.datasource.DataSourceInformationRepository;
+import org.apache.synapse.util.datasource.factory.DataSourceInformationRepositoryFactory;
import org.apache.synapse.config.xml.XMLConfigurationBuilder;
import org.apache.synapse.mediators.base.SequenceMediator;
import org.apache.synapse.mediators.builtin.DropMediator;
@@ -74,12 +75,14 @@
// build the Synapse configuration parsing the XML config file
try {
Properties synapseProperties = SynapsePropertiesLoader.loadSynapseProperties();
- DataSourceRegistrar.registerDataSources(synapseProperties);
+ DataSourceInformationRepository repository =
+ DataSourceInformationRepositoryFactory.createDataSourceInformationRepository(synapseProperties);
SynapseConfiguration synCfg
= XMLConfigurationBuilder.getConfiguration(new FileInputStream(configFile));
log.info("Loaded Synapse configuration from : " + configFile);
synCfg.setPathToConfigFile(new File(configFile).getAbsolutePath());
synCfg.setProperties(synapseProperties);
+ synCfg.setDataSourceInformationRepository(repository);
return synCfg;
} catch (FileNotFoundException fnf) {
Modified: synapse/trunk/java/modules/core/src/main/java/org/apache/synapse/config/xml/AbstractDBMediatorFactory.java
URL: http://svn.apache.org/viewvc/synapse/trunk/java/modules/core/src/main/java/org/apache/synapse/config/xml/AbstractDBMediatorFactory.java?rev=713788&r1=713787&r2=713788&view=diff
==============================================================================
--- synapse/trunk/java/modules/core/src/main/java/org/apache/synapse/config/xml/AbstractDBMediatorFactory.java (original)
+++ synapse/trunk/java/modules/core/src/main/java/org/apache/synapse/config/xml/AbstractDBMediatorFactory.java Thu Nov 13 11:00:56 2008
@@ -24,11 +24,11 @@
import org.apache.commons.dbcp.BasicDataSource;
import org.apache.synapse.mediators.db.AbstractDBMediator;
import org.apache.synapse.mediators.db.Statement;
-import org.apache.synapse.util.xpath.SynapseXPath;
-import org.apache.synapse.util.datasource.DataSourceFinder;
-import org.apache.synapse.util.datasource.InMemoryDataSourceRegistry;
-import org.apache.synapse.util.datasource.DBPoolView;
import org.apache.synapse.util.MBeanRepository;
+import org.apache.synapse.util.datasource.DBPoolView;
+import org.apache.synapse.util.datasource.DataSourceManager;
+import org.apache.synapse.util.datasource.DatasourceMBeanRepository;
+import org.apache.synapse.util.xpath.SynapseXPath;
import org.apache.synapse.security.secret.SecretManager;
import org.jaxen.JaxenException;
@@ -142,9 +142,9 @@
String dsName = getValue(pool, DSNAME_Q);
mediator.addDataSourceProperty(DSNAME_Q, dsName);
- DataSource dataSource = DataSourceFinder.find(dsName);
+ DataSource dataSource = DataSourceManager.getInstance().find(dsName);
if (dataSource != null) {
- MBeanRepository mBeanRepository = InMemoryDataSourceRegistry.getInstance();
+ MBeanRepository mBeanRepository = DatasourceMBeanRepository.getInstance();
Object mBean = mBeanRepository.getMBean(dsName);
if (mBean instanceof DBPoolView) {
mediator.setDbPoolView((DBPoolView) mBean);
@@ -158,7 +158,7 @@
props.put(Context.SECURITY_CREDENTIALS, getValue(pool, PASS_Q));
props.put(Context.PROVIDER_URL, getValue(pool, URL_Q));
- dataSource = DataSourceFinder.find(dsName, props);
+ dataSource = DataSourceManager.getInstance().find(dsName, props);
if (dataSource == null) {
handleException("Cannot find a DataSource for given properties :" + props);
}
Modified: synapse/trunk/java/modules/core/src/main/java/org/apache/synapse/endpoints/dispatch/SALSessions.java
URL: http://svn.apache.org/viewvc/synapse/trunk/java/modules/core/src/main/java/org/apache/synapse/endpoints/dispatch/SALSessions.java?rev=713788&r1=713787&r2=713788&view=diff
==============================================================================
--- synapse/trunk/java/modules/core/src/main/java/org/apache/synapse/endpoints/dispatch/SALSessions.java (original)
+++ synapse/trunk/java/modules/core/src/main/java/org/apache/synapse/endpoints/dispatch/SALSessions.java Thu Nov 13 11:00:56 2008
@@ -377,6 +377,11 @@
}
public void reset() {
+
+ if (!initialized) {
+ return;
+ }
+
log.info("Clearing all states ");
initialized = false;
establishedSessions.clear();
Modified: synapse/trunk/java/modules/core/src/main/java/org/apache/synapse/registry/url/SimpleURLRegistry.java
URL: http://svn.apache.org/viewvc/synapse/trunk/java/modules/core/src/main/java/org/apache/synapse/registry/url/SimpleURLRegistry.java?rev=713788&r1=713787&r2=713788&view=diff
==============================================================================
--- synapse/trunk/java/modules/core/src/main/java/org/apache/synapse/registry/url/SimpleURLRegistry.java (original)
+++ synapse/trunk/java/modules/core/src/main/java/org/apache/synapse/registry/url/SimpleURLRegistry.java Thu Nov 13 11:00:56 2008
@@ -182,7 +182,7 @@
}
root = value;
} else {
- handleException("");
+ handleException("Parameter 'root' is null");
}
}
Modified: synapse/trunk/java/modules/core/src/main/java/org/apache/synapse/util/MBeanRepository.java
URL: http://svn.apache.org/viewvc/synapse/trunk/java/modules/core/src/main/java/org/apache/synapse/util/MBeanRepository.java?rev=713788&r1=713787&r2=713788&view=diff
==============================================================================
--- synapse/trunk/java/modules/core/src/main/java/org/apache/synapse/util/MBeanRepository.java (original)
+++ synapse/trunk/java/modules/core/src/main/java/org/apache/synapse/util/MBeanRepository.java Thu Nov 13 11:00:56 2008
@@ -19,12 +19,15 @@
package org.apache.synapse.util;
/**
- * MBean Repository for hold MBean locally
*/
public interface MBeanRepository {
- public void addMBean(String name, Object mBean);
+ public void addMBean(String name, Object MBean);
public Object getMBean(String name);
+
+ public void removeMBean(String name);
+
+ public void clear();
}
Modified: synapse/trunk/java/modules/core/src/main/java/org/apache/synapse/util/RMIRegistryController.java
URL: http://svn.apache.org/viewvc/synapse/trunk/java/modules/core/src/main/java/org/apache/synapse/util/RMIRegistryController.java?rev=713788&r1=713787&r2=713788&view=diff
==============================================================================
--- synapse/trunk/java/modules/core/src/main/java/org/apache/synapse/util/RMIRegistryController.java (original)
+++ synapse/trunk/java/modules/core/src/main/java/org/apache/synapse/util/RMIRegistryController.java Thu Nov 13 11:00:56 2008
@@ -53,6 +53,7 @@
try {
log.info("Removing the RMI registy instance from the RMI runtime ");
UnicastRemoteObject.unexportObject(localRegistry, true);
+ this.localRegistry = null;
} catch (NoSuchObjectException e) {
String msg = "Error when stoping localregistry(RMI)";
handleException(msg, e);
Modified: synapse/trunk/java/modules/core/src/main/java/org/apache/synapse/util/datasource/DBPoolView.java
URL: http://svn.apache.org/viewvc/synapse/trunk/java/modules/core/src/main/java/org/apache/synapse/util/datasource/DBPoolView.java?rev=713788&r1=713787&r2=713788&view=diff
==============================================================================
--- synapse/trunk/java/modules/core/src/main/java/org/apache/synapse/util/datasource/DBPoolView.java (original)
+++ synapse/trunk/java/modules/core/src/main/java/org/apache/synapse/util/datasource/DBPoolView.java Thu Nov 13 11:00:56 2008
@@ -19,12 +19,12 @@
package org.apache.synapse.util.datasource;
-import java.util.Map;
import java.util.HashMap;
+import java.util.Map;
/**
- * DBPool monitoring
+ *
*/
public class DBPoolView implements DBPoolViewMBean {
@@ -66,7 +66,7 @@
Long currentUsage = connectionsUsage.get(connectionID);
if (currentUsage != null) {
currentUsage += 1;
- connectionsUsage.put(connectionID,currentUsage);
+ connectionsUsage.put(connectionID, currentUsage);
} else {
connectionsUsage.put(connectionID, (long) 1);
}
Modified: synapse/trunk/java/modules/core/src/main/java/org/apache/synapse/util/datasource/DBPoolViewMBean.java
URL: http://svn.apache.org/viewvc/synapse/trunk/java/modules/core/src/main/java/org/apache/synapse/util/datasource/DBPoolViewMBean.java?rev=713788&r1=713787&r2=713788&view=diff
==============================================================================
--- synapse/trunk/java/modules/core/src/main/java/org/apache/synapse/util/datasource/DBPoolViewMBean.java (original)
+++ synapse/trunk/java/modules/core/src/main/java/org/apache/synapse/util/datasource/DBPoolViewMBean.java Thu Nov 13 11:00:56 2008
@@ -21,13 +21,17 @@
import java.util.Map;
/**
- *
+ *
*/
public interface DBPoolViewMBean {
-
- public int getNumActive();
- public int getNumIdle();
- public String getName();
- public Map getConnectionUsage();
- public void reset();
+
+ public int getNumActive();
+
+ public int getNumIdle();
+
+ public String getName();
+
+ public Map getConnectionUsage();
+
+ public void reset();
}
Added: synapse/trunk/java/modules/core/src/main/java/org/apache/synapse/util/datasource/DataSourceConfigurationConstants.java
URL: http://svn.apache.org/viewvc/synapse/trunk/java/modules/core/src/main/java/org/apache/synapse/util/datasource/DataSourceConfigurationConstants.java?rev=713788&view=auto
==============================================================================
--- synapse/trunk/java/modules/core/src/main/java/org/apache/synapse/util/datasource/DataSourceConfigurationConstants.java (added)
+++ synapse/trunk/java/modules/core/src/main/java/org/apache/synapse/util/datasource/DataSourceConfigurationConstants.java Thu Nov 13 11:00:56 2008
@@ -0,0 +1,84 @@
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one
+ * or more contributor license agreements. See the NOTICE file
+ * distributed with this work for additional information
+ * regarding copyright ownership. The ASF licenses this file
+ * to you under the Apache License, Version 2.0 (the
+ * "License"); you may not use this file except in compliance
+ * with the License. You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing,
+ * software distributed under the License is distributed on an
+ * * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+ * KIND, either express or implied. See the License for the
+ * specific language governing permissions and limitations
+ * under the License.
+ */
+package org.apache.synapse.util.datasource;
+
+/**
+ * To change this template use File | Settings | File Templates.
+ */
+public class DataSourceConfigurationConstants {
+
+ public static final String PROP_USER_NAME = "username";
+ public static final String PROP_PASSWORD = "password";
+ public static final String PROP_DRIVER_CLS_NAME = "driverClassName";
+ public static final String PROP_DSNAME = "dsName";
+ public static final String PROP_URL = "url";
+ public static final String PROP_DRIVER = "driver";
+ public static final String PROP_USER = "user";
+ public static final String PROP_CPDSADAPTER = "cpdsadapter";
+ public static final String PROP_JNDI_ENV = "jndiEnvironment";
+ public static final String PROP_DEFAULTMAXACTIVE = "defaultMaxActive";
+ public static final String PROP_DEFAULTMAXIDLE = "defaultMaxIdle";
+ public static final String PROP_DEFAULTMAXWAIT = "defaultMaxWait";
+ public static final String PROP_DATA_SOURCE_NAME = "dataSourceName";
+ public static final String PROP_CPDS_CLASS_NAME = "className";
+ public static final String PROP_CPDS_FACTORY = "factory";
+ public static final String PROP_CPDS_NAME = "name";
+ public final static String PROP_DEFAULTAUTOCOMMIT = "defaultAutoCommit";
+ public final static String PROP_DEFAULTREADONLY = "defaultReadOnly";
+ public final static String PROP_TESTONBORROW = "testOnBorrow";
+ public final static String PROP_TESTONRETURN = "testOnReturn";
+ public final static String PROP_TIMEBETWEENEVICTIONRUNSMILLIS =
+ "timeBetweenEvictionRunsMillis";
+ public final static String PROP_NUMTESTSPEREVICTIONRUN = "numTestsPerEvictionRun";
+ public final static String PROP_MINEVICTABLEIDLETIMEMILLIS = "minEvictableIdleTimeMillis";
+ public final static String PROP_TESTWHILEIDLE = "testWhileIdle";
+ public final static String PROP_VALIDATIONQUERY = "validationQuery";
+ public final static String PROP_MAXACTIVE = "maxActive";
+ public final static String PROP_MAXIDLE = "maxIdle";
+ public final static String PROP_MAXWAIT = "maxWait";
+ public final static String PROP_MINIDLE = "minIdle";
+ public final static String PROP_INITIALSIZE = "initialSize";
+ public final static String PROP_DEFAULTTRANSACTIONISOLATION = "defaultTransactionIsolation";
+ public final static String PROP_DEFAULTCATALOG = "defaultCatalog";
+ public final static String PROP_ACCESSTOUNDERLYINGCONNECTIONALLOWED =
+ "accessToUnderlyingConnectionAllowed";
+ public final static String PROP_REMOVEABANDONED = "removeAbandoned";
+ public final static String PROP_REMOVEABANDONEDTIMEOUT = "removeAbandonedTimeout";
+ public final static String PROP_LOGABANDONED = "logAbandoned";
+ public final static String PROP_POOLPREPAREDSTATEMENTS = "poolPreparedStatements";
+ public final static String PROP_MAXOPENPREPAREDSTATEMENTS = "maxOpenPreparedStatements";
+ public final static String PROP_CONNECTIONPROPERTIES = "connectionProperties";
+ public static final String PROP_PROVIDER_PORT = "providerPort";
+ public final static String PROP_REGISTRY = "registry";
+ public final static String PROP_REGISTRY_MEMORY = "memory";
+ public final static String PROP_REGISTRY_JNDI = "JNDI";
+ public static final String PROP_ICFACTORY = "icFactory";
+ public static final String PROP_PROVIDER_URL = "providerUrl";
+ public static final String DOT_STRING = ".";
+ public static final String COMMA_STRING = ",";
+ public static final String PROP_SYNAPSE_DATASOURCES = "synapse.datasources";
+ public static final String PROP_TYPE = "type";
+ public static final String PROP_BASIC_DATA_SOURCE = "BasicDataSource";
+ public static final String PROP_CLASS_NAME = "className";
+ public static final String PROP_CPDSADAPTER_DRIVER
+ = "org.apache.commons.dbcp.cpdsadapter.DriverAdapterCPDS";
+ public static final String PROP_FACTORY = "factory";
+ public static final String PROP_NAME = "name";
+
+}
Modified: synapse/trunk/java/modules/core/src/main/java/org/apache/synapse/util/datasource/DataSourceFinder.java
URL: http://svn.apache.org/viewvc/synapse/trunk/java/modules/core/src/main/java/org/apache/synapse/util/datasource/DataSourceFinder.java?rev=713788&r1=713787&r2=713788&view=diff
==============================================================================
--- synapse/trunk/java/modules/core/src/main/java/org/apache/synapse/util/datasource/DataSourceFinder.java (original)
+++ synapse/trunk/java/modules/core/src/main/java/org/apache/synapse/util/datasource/DataSourceFinder.java Thu Nov 13 11:00:56 2008
@@ -1,133 +1,56 @@
-/*
- * Licensed to the Apache Software Foundation (ASF) under one
- * or more contributor license agreements. See the NOTICE file
- * distributed with this work for additional information
- * regarding copyright ownership. The ASF licenses this file
- * to you under the Apache License, Version 2.0 (the
- * "License"); you may not use this file except in compliance
- * with the License. You may obtain a copy of the License at
- *
- * http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing,
- * software distributed under the License is distributed on an
- * * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
- * KIND, either express or implied. See the License for the
- * specific language governing permissions and limitations
- * under the License.
- */
-package org.apache.synapse.util.datasource;
-
-import org.apache.commons.logging.Log;
-import org.apache.commons.logging.LogFactory;
-import org.apache.synapse.SynapseException;
-
-import javax.naming.Context;
-import javax.naming.InitialContext;
-import javax.naming.NamingException;
-import javax.sql.DataSource;
-import java.util.Properties;
-
-/**
- * Finds a DataSource based on various criteria
- */
-public class DataSourceFinder {
-
- private static final Log log = LogFactory.getLog(DataSourceFinder.class);
-
- /**
- * Find a DataSource using given name
- *
- * @param name Name of the DataSource to be found
- * @return DataSource if found , otherwise null
- */
- public static DataSource find(String name) {
-
- if (name == null || "".equals(name)) {
- handleException("DataSource name cannot be found.");
- }
-
- DataSourceRegistry registry = InMemoryDataSourceRegistry.getInstance();
- DataSource result = registry.lookUp(name);
-
- if (result != null) {
- return result;
- }
-
- registry = JNDIBasedDataSourceRegistry.getInstance();
- if (registry.isInitialized()) {
- return registry.lookUp(name);
- }
- return null;
- }
-
- /**
- * Find a DataSource using the given name and JNDI environment properties
- *
- * @param dsName Name of the DataSource to be found
- * @param jndiEnv JNDI environment properties
- * @return DataSource if found , otherwise null
- */
- public static DataSource find(String dsName, Properties jndiEnv) {
-
- try {
-
- Context context = new InitialContext(jndiEnv);
- return find(dsName, context);
-
- } catch (NamingException e) {
- handleException("Error looking up DataSource : " + dsName +
- " using JNDI properties : " + jndiEnv, e);
- }
- return null;
- }
-
- /**
- * Find a DataSource using the given name and naming context
- *
- * @param dsName Name of the DataSource to be found
- * @param context Naming Context
- * @return DataSource if found , otherwise null
- */
- public static DataSource find(String dsName, Context context) {
-
- try {
- Object dataSourceO = context.lookup(dsName);
- if (dataSourceO != null && dataSourceO instanceof DataSource) {
- return (DataSource) dataSourceO;
- } else {
- handleException("DataSource : " + dsName + " not found when looking up" +
- " using JNDI properties : " + context.getEnvironment());
- }
-
- } catch (NamingException e) {
- handleException(new StringBuilder().append("Error looking up DataSource : ")
- .append(dsName).append(" using JNDI properties : ").
- append(context).toString(), e);
- }
- return null;
- }
-
-
- /**
- * Helper methods for handle errors.
- *
- * @param msg The error message
- */
- private static void handleException(String msg) {
- log.error(msg);
- throw new SynapseException(msg);
- }
-
- /**
- * Helper methods for handle errors.
- *
- * @param msg The error message
- * @param e The exception
- */
- private static void handleException(String msg, Exception e) {
- log.error(msg, e);
- throw new SynapseException(msg, e);
- }
-
-}
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one
+ * or more contributor license agreements. See the NOTICE file
+ * distributed with this work for additional information
+ * regarding copyright ownership. The ASF licenses this file
+ * to you under the Apache License, Version 2.0 (the
+ * "License"); you may not use this file except in compliance
+ * with the License. You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing,
+ * software distributed under the License is distributed on an
+ * * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+ * KIND, either express or implied. See the License for the
+ * specific language governing permissions and limitations
+ * under the License.
+ */
+package org.apache.synapse.util.datasource;
+
+import javax.naming.Context;
+import javax.sql.DataSource;
+import java.util.Properties;
+
+/**
+ * Finds a DataSource based on various criteria
+ */
+public interface DataSourceFinder {
+
+ /**
+ * Find a DataSource using given name
+ *
+ * @param name Name of the DataSource to be found
+ * @return DataSource if found , otherwise null
+ */
+ DataSource find(String name);
+
+ /**
+ * Find a DataSource using the given name and JNDI environment properties
+ *
+ * @param dsName Name of the DataSource to be found
+ * @param jndiEnv JNDI environment properties
+ * @return DataSource if found , otherwise null
+ */
+ DataSource find(String dsName, Properties jndiEnv);
+
+ /**
+ * Find a DataSource using the given name and naming context
+ *
+ * @param dsName Name of the DataSource to be found
+ * @param context Naming Context
+ * @return DataSource if found , otherwise null
+ */
+ DataSource find(String dsName, Context context);
+
+}
Modified: synapse/trunk/java/modules/core/src/main/java/org/apache/synapse/util/datasource/DataSourceInformation.java
URL: http://svn.apache.org/viewvc/synapse/trunk/java/modules/core/src/main/java/org/apache/synapse/util/datasource/DataSourceInformation.java?rev=713788&r1=713787&r2=713788&view=diff
==============================================================================
--- synapse/trunk/java/modules/core/src/main/java/org/apache/synapse/util/datasource/DataSourceInformation.java (original)
+++ synapse/trunk/java/modules/core/src/main/java/org/apache/synapse/util/datasource/DataSourceInformation.java Thu Nov 13 11:00:56 2008
@@ -1,304 +1,336 @@
-/*
- * Licensed to the Apache Software Foundation (ASF) under one
- * or more contributor license agreements. See the NOTICE file
- * distributed with this work for additional information
- * regarding copyright ownership. The ASF licenses this file
- * to you under the Apache License, Version 2.0 (the
- * "License"); you may not use this file except in compliance
- * with the License. You may obtain a copy of the License at
- *
- * http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing,
- * software distributed under the License is distributed on an
- * * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
- * KIND, either express or implied. See the License for the
- * specific language governing permissions and limitations
- * under the License.
- */
-package org.apache.synapse.util.datasource;
-
-import org.apache.commons.pool.impl.GenericObjectPool;
-
-import java.util.HashMap;
-import java.util.Map;
-
-/**
- * Encapsulates the All information related to a DataSource
- */
-public class DataSourceInformation {
-
- public static final String BASIC_DATA_SOURCE = "BasicDataSource";
- public static final String PER_USER_POOL_DATA_SOURCE = "PerUserPoolDataSource";
- private String user;
- private String password;
- private String name;
- private int maxActive = GenericObjectPool.DEFAULT_MAX_ACTIVE;
- private int maxIdle = GenericObjectPool.DEFAULT_MAX_IDLE;
- private long maxWait = GenericObjectPool.DEFAULT_MAX_WAIT;
- private String driver;
- private String url;
- private String type;
- private boolean defaultAutoCommit = true;
- private boolean defaultReadOnly = false;
- private boolean testOnBorrow = true;
- private boolean testOnReturn = false;
- private int minIdle = GenericObjectPool.DEFAULT_MIN_IDLE;
- private int initialSize;
- private int defaultTransactionIsolation = -1;
- private String defaultCatalog;
- private boolean accessToUnderlyingConnectionAllowed;
- private boolean removeAbandoned;
- private long removeAbandonedTimeout;
- private boolean logAbandoned;
- private boolean poolPreparedStatements;
- private int maxOpenPreparedStatements;
-
- private long timeBetweenEvictionRunsMillis =
- GenericObjectPool.DEFAULT_TIME_BETWEEN_EVICTION_RUNS_MILLIS;
-
- private int numTestsPerEvictionRun =
- GenericObjectPool.DEFAULT_NUM_TESTS_PER_EVICTION_RUN;
-
- private long minEvictableIdleTimeMillis =
- GenericObjectPool.DEFAULT_MIN_EVICTABLE_IDLE_TIME_MILLIS;
-
- private boolean testWhileIdle = false;
- private String validationQuery;
-
- private final Map<String, Object> parameters = new HashMap<String, Object>();
-
-
- public int getMinIdle() {
- return minIdle;
- }
-
- public void setMinIdle(int minIdle) {
- this.minIdle = minIdle;
- }
-
-
- public int getDefaultTransactionIsolation() {
- return defaultTransactionIsolation;
- }
-
- public void setDefaultTransactionIsolation(int defaultTransactionIsolation) {
- this.defaultTransactionIsolation = defaultTransactionIsolation;
- }
-
- public String getDefaultCatalog() {
- return defaultCatalog;
- }
-
- public void setDefaultCatalog(String defaultCatalog) {
- this.defaultCatalog = defaultCatalog;
- }
-
- public boolean isAccessToUnderlyingConnectionAllowed() {
- return accessToUnderlyingConnectionAllowed;
- }
-
- public void setAccessToUnderlyingConnectionAllowed(boolean accessToUnderlyingConnectionAllowed) {
- this.accessToUnderlyingConnectionAllowed = accessToUnderlyingConnectionAllowed;
- }
-
- public boolean isRemoveAbandoned() {
- return removeAbandoned;
- }
-
- public void setRemoveAbandoned(boolean removeAbandoned) {
- this.removeAbandoned = removeAbandoned;
- }
-
- public long getRemoveAbandonedTimeout() {
- return removeAbandonedTimeout;
- }
-
- public void setRemoveAbandonedTimeout(long removeAbandonedTimeout) {
- this.removeAbandonedTimeout = removeAbandonedTimeout;
- }
-
- public boolean isLogAbandoned() {
- return logAbandoned;
- }
-
- public void setLogAbandoned(boolean logAbandoned) {
- this.logAbandoned = logAbandoned;
- }
-
- public boolean isPoolPreparedStatements() {
- return poolPreparedStatements;
- }
-
- public void setPoolPreparedStatements(boolean poolPreparedStatements) {
- this.poolPreparedStatements = poolPreparedStatements;
- }
-
- public int getMaxOpenPreparedStatements() {
- return maxOpenPreparedStatements;
- }
-
- public void setMaxOpenPreparedStatements(int maxOpenPreparedStatements) {
- this.maxOpenPreparedStatements = maxOpenPreparedStatements;
- }
-
- public String getUser() {
- return user;
- }
-
- public void setUser(String user) {
- this.user = user;
- }
-
- public String getPassword() {
- return password;
- }
-
- public void setPassword(String password) {
- this.password = password;
- }
-
- public String getName() {
- return name;
- }
-
- public void setName(String name) {
- this.name = name;
- }
-
- public int getMaxActive() {
- return maxActive;
- }
-
- public void setMaxActive(int maxActive) {
- this.maxActive = maxActive;
- }
-
- public int getMaxIdle() {
- return maxIdle;
- }
-
- public void setMaxIdle(int maxIdle) {
- this.maxIdle = maxIdle;
- }
-
- public long getMaxWait() {
- return maxWait;
- }
-
- public void setMaxWait(long maxWait) {
- this.maxWait = maxWait;
- }
-
- public String getDriver() {
- return driver;
- }
-
- public void setDriver(String driver) {
- this.driver = driver;
- }
-
- public String getUrl() {
- return url;
- }
-
- public void setUrl(String url) {
- this.url = url;
- }
-
- public String getType() {
- return type;
- }
-
- public void setType(String type) {
- this.type = type;
- }
-
- public void addParameter(String name, Object value) {
- parameters.put(name, value);
- }
-
- public Object getParameter(String name) {
- return parameters.get(name);
- }
-
- public boolean isDefaultAutoCommit() {
- return defaultAutoCommit;
- }
-
- public void setDefaultAutoCommit(boolean defaultAutoCommit) {
- this.defaultAutoCommit = defaultAutoCommit;
- }
-
- public boolean isDefaultReadOnly() {
- return defaultReadOnly;
- }
-
- public void setDefaultReadOnly(boolean defaultReadOnly) {
- this.defaultReadOnly = defaultReadOnly;
- }
-
- public boolean isTestOnBorrow() {
- return testOnBorrow;
- }
-
- public void setTestOnBorrow(boolean testOnBorrow) {
- this.testOnBorrow = testOnBorrow;
- }
-
- public boolean isTestOnReturn() {
- return testOnReturn;
- }
-
- public void setTestOnReturn(boolean testOnReturn) {
- this.testOnReturn = testOnReturn;
- }
-
- public long getTimeBetweenEvictionRunsMillis() {
- return timeBetweenEvictionRunsMillis;
- }
-
- public void setTimeBetweenEvictionRunsMillis(long timeBetweenEvictionRunsMillis) {
- this.timeBetweenEvictionRunsMillis = timeBetweenEvictionRunsMillis;
- }
-
- public int getNumTestsPerEvictionRun() {
- return numTestsPerEvictionRun;
- }
-
- public void setNumTestsPerEvictionRun(int numTestsPerEvictionRun) {
- this.numTestsPerEvictionRun = numTestsPerEvictionRun;
- }
-
- public long getMinEvictableIdleTimeMillis() {
- return minEvictableIdleTimeMillis;
- }
-
- public void setMinEvictableIdleTimeMillis(long minEvictableIdleTimeMillis) {
- this.minEvictableIdleTimeMillis = minEvictableIdleTimeMillis;
- }
-
- public boolean isTestWhileIdle() {
- return testWhileIdle;
- }
-
- public void setTestWhileIdle(boolean testWhileIdle) {
- this.testWhileIdle = testWhileIdle;
- }
-
- public String getValidationQuery() {
- return validationQuery;
- }
-
- public void setValidationQuery(String validationQuery) {
- this.validationQuery = validationQuery;
- }
-
- public int getInitialSize() {
- return initialSize;
- }
-
- public void setInitialSize(int initialSize) {
- this.initialSize = initialSize;
- }
-}
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one
+ * or more contributor license agreements. See the NOTICE file
+ * distributed with this work for additional information
+ * regarding copyright ownership. The ASF licenses this file
+ * to you under the Apache License, Version 2.0 (the
+ * "License"); you may not use this file except in compliance
+ * with the License. You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing,
+ * software distributed under the License is distributed on an
+ * * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+ * KIND, either express or implied. See the License for the
+ * specific language governing permissions and limitations
+ * under the License.
+ */
+package org.apache.synapse.util.datasource;
+
+import org.apache.commons.pool.impl.GenericObjectPool;
+
+import java.util.HashMap;
+import java.util.Map;
+import java.util.Properties;
+
+/**
+ * Encapsulates the All information related to a DataSource
+ */
+public class DataSourceInformation {
+
+ public static final String BASIC_DATA_SOURCE = "BasicDataSource";
+ public static final String PER_USER_POOL_DATA_SOURCE = "PerUserPoolDataSource";
+ private String user;
+ private String password;
+ private String datasourceName;
+ private int maxActive = GenericObjectPool.DEFAULT_MAX_ACTIVE;
+ private int maxIdle = GenericObjectPool.DEFAULT_MAX_IDLE;
+ private long maxWait = GenericObjectPool.DEFAULT_MAX_WAIT;
+ private String driver;
+ private String url;
+ private String type;
+ private boolean defaultAutoCommit = true;
+ private boolean defaultReadOnly = false;
+ private boolean testOnBorrow = true;
+ private boolean testOnReturn = false;
+ private int minIdle = GenericObjectPool.DEFAULT_MIN_IDLE;
+ private int initialSize;
+ private int defaultTransactionIsolation = -1;
+ private String defaultCatalog;
+ private boolean accessToUnderlyingConnectionAllowed;
+ private boolean removeAbandoned;
+ private long removeAbandonedTimeout;
+ private boolean logAbandoned;
+ private boolean poolPreparedStatements;
+ private int maxOpenPreparedStatements;
+ private final Properties properties = new Properties();
+ private String repositoryType;
+ private String alias;
+
+ private long timeBetweenEvictionRunsMillis =
+ GenericObjectPool.DEFAULT_TIME_BETWEEN_EVICTION_RUNS_MILLIS;
+
+ private int numTestsPerEvictionRun =
+ GenericObjectPool.DEFAULT_NUM_TESTS_PER_EVICTION_RUN;
+
+ private long minEvictableIdleTimeMillis =
+ GenericObjectPool.DEFAULT_MIN_EVICTABLE_IDLE_TIME_MILLIS;
+
+ private boolean testWhileIdle = false;
+ private String validationQuery;
+
+ private final Map<String, Object> parameters = new HashMap<String, Object>();
+
+
+ public int getMinIdle() {
+ return minIdle;
+ }
+
+ public void setMinIdle(int minIdle) {
+ this.minIdle = minIdle;
+ }
+
+
+ public int getDefaultTransactionIsolation() {
+ return defaultTransactionIsolation;
+ }
+
+ public void setDefaultTransactionIsolation(int defaultTransactionIsolation) {
+ this.defaultTransactionIsolation = defaultTransactionIsolation;
+ }
+
+ public String getDefaultCatalog() {
+ return defaultCatalog;
+ }
+
+ public void setDefaultCatalog(String defaultCatalog) {
+ this.defaultCatalog = defaultCatalog;
+ }
+
+ public boolean isAccessToUnderlyingConnectionAllowed() {
+ return accessToUnderlyingConnectionAllowed;
+ }
+
+ public void setAccessToUnderlyingConnectionAllowed(boolean accessToUnderlyingConnectionAllowed) {
+ this.accessToUnderlyingConnectionAllowed = accessToUnderlyingConnectionAllowed;
+ }
+
+ public boolean isRemoveAbandoned() {
+ return removeAbandoned;
+ }
+
+ public void setRemoveAbandoned(boolean removeAbandoned) {
+ this.removeAbandoned = removeAbandoned;
+ }
+
+ public long getRemoveAbandonedTimeout() {
+ return removeAbandonedTimeout;
+ }
+
+ public void setRemoveAbandonedTimeout(long removeAbandonedTimeout) {
+ this.removeAbandonedTimeout = removeAbandonedTimeout;
+ }
+
+ public boolean isLogAbandoned() {
+ return logAbandoned;
+ }
+
+ public void setLogAbandoned(boolean logAbandoned) {
+ this.logAbandoned = logAbandoned;
+ }
+
+ public boolean isPoolPreparedStatements() {
+ return poolPreparedStatements;
+ }
+
+ public void setPoolPreparedStatements(boolean poolPreparedStatements) {
+ this.poolPreparedStatements = poolPreparedStatements;
+ }
+
+ public int getMaxOpenPreparedStatements() {
+ return maxOpenPreparedStatements;
+ }
+
+ public void setMaxOpenPreparedStatements(int maxOpenPreparedStatements) {
+ this.maxOpenPreparedStatements = maxOpenPreparedStatements;
+ }
+
+ public String getUser() {
+ return user;
+ }
+
+ public void setUser(String user) {
+ this.user = user;
+ }
+
+ public String getPassword() {
+ return password;
+ }
+
+ public void setPassword(String password) {
+ this.password = password;
+ }
+
+ public String getDatasourceName() {
+ return datasourceName;
+ }
+
+ public void setDatasourceName(String datasourceName) {
+ this.datasourceName = datasourceName;
+ }
+
+ public int getMaxActive() {
+ return maxActive;
+ }
+
+ public void setMaxActive(int maxActive) {
+ this.maxActive = maxActive;
+ }
+
+ public int getMaxIdle() {
+ return maxIdle;
+ }
+
+ public void setMaxIdle(int maxIdle) {
+ this.maxIdle = maxIdle;
+ }
+
+ public long getMaxWait() {
+ return maxWait;
+ }
+
+ public void setMaxWait(long maxWait) {
+ this.maxWait = maxWait;
+ }
+
+ public String getDriver() {
+ return driver;
+ }
+
+ public void setDriver(String driver) {
+ this.driver = driver;
+ }
+
+ public String getUrl() {
+ return url;
+ }
+
+ public void setUrl(String url) {
+ this.url = url;
+ }
+
+ public String getType() {
+ return type;
+ }
+
+ public void setType(String type) {
+ this.type = type;
+ }
+
+ public void addParameter(String name, Object value) {
+ parameters.put(name, value);
+ }
+
+ public Object getParameter(String name) {
+ return parameters.get(name);
+ }
+
+ public boolean isDefaultAutoCommit() {
+ return defaultAutoCommit;
+ }
+
+ public void setDefaultAutoCommit(boolean defaultAutoCommit) {
+ this.defaultAutoCommit = defaultAutoCommit;
+ }
+
+ public boolean isDefaultReadOnly() {
+ return defaultReadOnly;
+ }
+
+ public void setDefaultReadOnly(boolean defaultReadOnly) {
+ this.defaultReadOnly = defaultReadOnly;
+ }
+
+ public boolean isTestOnBorrow() {
+ return testOnBorrow;
+ }
+
+ public void setTestOnBorrow(boolean testOnBorrow) {
+ this.testOnBorrow = testOnBorrow;
+ }
+
+ public boolean isTestOnReturn() {
+ return testOnReturn;
+ }
+
+ public void setTestOnReturn(boolean testOnReturn) {
+ this.testOnReturn = testOnReturn;
+ }
+
+ public long getTimeBetweenEvictionRunsMillis() {
+ return timeBetweenEvictionRunsMillis;
+ }
+
+ public void setTimeBetweenEvictionRunsMillis(long timeBetweenEvictionRunsMillis) {
+ this.timeBetweenEvictionRunsMillis = timeBetweenEvictionRunsMillis;
+ }
+
+ public int getNumTestsPerEvictionRun() {
+ return numTestsPerEvictionRun;
+ }
+
+ public void setNumTestsPerEvictionRun(int numTestsPerEvictionRun) {
+ this.numTestsPerEvictionRun = numTestsPerEvictionRun;
+ }
+
+ public long getMinEvictableIdleTimeMillis() {
+ return minEvictableIdleTimeMillis;
+ }
+
+ public void setMinEvictableIdleTimeMillis(long minEvictableIdleTimeMillis) {
+ this.minEvictableIdleTimeMillis = minEvictableIdleTimeMillis;
+ }
+
+ public boolean isTestWhileIdle() {
+ return testWhileIdle;
+ }
+
+ public void setTestWhileIdle(boolean testWhileIdle) {
+ this.testWhileIdle = testWhileIdle;
+ }
+
+ public String getValidationQuery() {
+ return validationQuery;
+ }
+
+ public void setValidationQuery(String validationQuery) {
+ this.validationQuery = validationQuery;
+ }
+
+ public int getInitialSize() {
+ return initialSize;
+ }
+
+ public void setInitialSize(int initialSize) {
+ this.initialSize = initialSize;
+ }
+
+ public Properties getProperties() {
+ return properties;
+ }
+
+ public void setProperties(Properties properties) {
+ this.properties.putAll(properties);
+ }
+
+ public String getRepositoryType() {
+ return repositoryType;
+ }
+
+ public void setRepositoryType(String repositoryType) {
+ this.repositoryType = repositoryType;
+ }
+
+ public String getAlias() {
+ return alias;
+ }
+
+ public void setAlias(String alias) {
+ this.alias = alias;
+ }
+
+ public Map<String, Object> getAllParameters() {
+ return this.parameters;
+ }
+}
Added: synapse/trunk/java/modules/core/src/main/java/org/apache/synapse/util/datasource/DataSourceInformationRepository.java
URL: http://svn.apache.org/viewvc/synapse/trunk/java/modules/core/src/main/java/org/apache/synapse/util/datasource/DataSourceInformationRepository.java?rev=713788&view=auto
==============================================================================
--- synapse/trunk/java/modules/core/src/main/java/org/apache/synapse/util/datasource/DataSourceInformationRepository.java (added)
+++ synapse/trunk/java/modules/core/src/main/java/org/apache/synapse/util/datasource/DataSourceInformationRepository.java Thu Nov 13 11:00:56 2008
@@ -0,0 +1,71 @@
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one
+ * or more contributor license agreements. See the NOTICE file
+ * distributed with this work for additional information
+ * regarding copyright ownership. The ASF licenses this file
+ * to you under the Apache License, Version 2.0 (the
+ * "License"); you may not use this file except in compliance
+ * with the License. You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing,
+ * software distributed under the License is distributed on an
+ * * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+ * KIND, either express or implied. See the License for the
+ * specific language governing permissions and limitations
+ * under the License.
+ */
+package org.apache.synapse.util.datasource;
+
+import java.util.*;
+
+/**
+ *
+ */
+public class DataSourceInformationRepository {
+
+ private final Map<String, DataSourceInformation> dataSourceInformationMap =
+ new HashMap<String, DataSourceInformation>();
+ private final List<DataSourceInformationRepositoryListener> listeners =
+ new ArrayList<DataSourceInformationRepositoryListener>();
+
+ public void setConfigurationProperties(Properties congurationProperties) {
+ for (DataSourceInformationRepositoryListener listener : listeners) {
+ if (listener != null) {
+ listener.reConfigure(congurationProperties);
+ }
+ }
+ }
+
+ public void addDataSourceInformation(DataSourceInformation dataSourceInformation) {
+ dataSourceInformationMap.put(dataSourceInformation.getAlias(), dataSourceInformation);
+ for (DataSourceInformationRepositoryListener listener : listeners) {
+ if (listener != null) {
+ listener.addDataSourceInformation(dataSourceInformation);
+ }
+ }
+ }
+
+ public DataSourceInformation getDataSourceInformation(String name) {
+ return dataSourceInformationMap.get(name);
+ }
+
+ public DataSourceInformation removeDataSourceInformation(String name) {
+ DataSourceInformation information = dataSourceInformationMap.remove(name);
+ for (DataSourceInformationRepositoryListener listener : listeners) {
+ if (listener != null) {
+ listener.removeDataSourceInformation(information);
+ }
+ }
+ return information;
+ }
+
+ public Iterator<DataSourceInformation> getAllDataSourceInformation() {
+ return dataSourceInformationMap.values().iterator();
+ }
+
+ public void registerDataSourceInformationRepositoryListener(DataSourceInformationRepositoryListener listener) {
+ listeners.add(listener);
+ }
+}
\ No newline at end of file
Added: synapse/trunk/java/modules/core/src/main/java/org/apache/synapse/util/datasource/DataSourceInformationRepositoryListener.java
URL: http://svn.apache.org/viewvc/synapse/trunk/java/modules/core/src/main/java/org/apache/synapse/util/datasource/DataSourceInformationRepositoryListener.java?rev=713788&view=auto
==============================================================================
--- synapse/trunk/java/modules/core/src/main/java/org/apache/synapse/util/datasource/DataSourceInformationRepositoryListener.java (added)
+++ synapse/trunk/java/modules/core/src/main/java/org/apache/synapse/util/datasource/DataSourceInformationRepositoryListener.java Thu Nov 13 11:00:56 2008
@@ -0,0 +1,33 @@
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one
+ * or more contributor license agreements. See the NOTICE file
+ * distributed with this work for additional information
+ * regarding copyright ownership. The ASF licenses this file
+ * to you under the Apache License, Version 2.0 (the
+ * "License"); you may not use this file except in compliance
+ * with the License. You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing,
+ * software distributed under the License is distributed on an
+ * * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+ * KIND, either express or implied. See the License for the
+ * specific language governing permissions and limitations
+ * under the License.
+ */
+package org.apache.synapse.util.datasource;
+
+import java.util.Properties;
+
+/**
+ *
+ */
+public interface DataSourceInformationRepositoryListener {
+
+ void addDataSourceInformation(DataSourceInformation dataSourceInformation);
+
+ void removeDataSourceInformation(DataSourceInformation dataSourceInformation);
+
+ void reConfigure(Properties confProperties);
+}
Added: synapse/trunk/java/modules/core/src/main/java/org/apache/synapse/util/datasource/DataSourceManager.java
URL: http://svn.apache.org/viewvc/synapse/trunk/java/modules/core/src/main/java/org/apache/synapse/util/datasource/DataSourceManager.java?rev=713788&view=auto
==============================================================================
--- synapse/trunk/java/modules/core/src/main/java/org/apache/synapse/util/datasource/DataSourceManager.java (added)
+++ synapse/trunk/java/modules/core/src/main/java/org/apache/synapse/util/datasource/DataSourceManager.java Thu Nov 13 11:00:56 2008
@@ -0,0 +1,168 @@
+/*
+* Licensed to the Apache Software Foundation (ASF) under one
+* or more contributor license agreements. See the NOTICE file
+* distributed with this work for additional information
+* regarding copyright ownership. The ASF licenses this file
+* to you under the Apache License, Version 2.0 (the
+* "License"); you may not use this file except in compliance
+* with the License. You may obtain a copy of the License at
+*
+* http://www.apache.org/licenses/LICENSE-2.0
+*
+* Unless required by applicable law or agreed to in writing,
+* software distributed under the License is distributed on an
+* * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+* KIND, either express or implied. See the License for the
+* specific language governing permissions and limitations
+* under the License.
+*/
+package org.apache.synapse.util.datasource;
+
+import org.apache.commons.logging.Log;
+import org.apache.commons.logging.LogFactory;
+import org.apache.synapse.SynapseException;
+
+import javax.naming.Context;
+import javax.naming.InitialContext;
+import javax.naming.NamingException;
+import javax.sql.DataSource;
+import java.util.Properties;
+
+/**
+ * Utility class to handle data source registration
+ */
+public class DataSourceManager implements DataSourceInformationRepositoryListener, DataSourceFinder {
+
+ private static final Log log = LogFactory.getLog(DataSourceManager.class);
+
+ private static final DataSourceManager DATA_SOURCE_MANAGER = new DataSourceManager();
+
+ private static final DataSourceRepository IN_MEMORY_REPOSITORY = InMemoryDataSourceRepository.getInstance();
+ private static final DataSourceRepository JNDI_REPOSITORY = JNDIBasedDataSourceRepository.getInstance();
+
+ private DataSourceManager() {
+ }
+
+ public static DataSourceManager getInstance() {
+ return DATA_SOURCE_MANAGER;
+ }
+
+ /**
+ * Find a DataSource using given name
+ *
+ * @param name Name of the DataSource to be found
+ * @return DataSource if found , otherwise null
+ */
+ public DataSource find(String name) {
+
+ if (name == null || "".equals(name)) {
+ handleException("DataSource name cannot be found.");
+ }
+
+ DataSource result = IN_MEMORY_REPOSITORY.lookUp(name);
+
+ if (result != null) {
+ return result;
+ }
+ if (JNDI_REPOSITORY.isInitialized()) {
+ return IN_MEMORY_REPOSITORY.lookUp(name);
+ }
+ return null;
+ }
+
+ /**
+ * Find a DataSource using the given name and JNDI environment properties
+ *
+ * @param dsName Name of the DataSource to be found
+ * @param jndiEnv JNDI environment properties
+ * @return DataSource if found , otherwise null
+ */
+ public DataSource find(String dsName, Properties jndiEnv) {
+
+ try {
+
+ Context context = new InitialContext(jndiEnv);
+ return find(dsName, context);
+
+ } catch (NamingException e) {
+ handleException("Error looking up DataSource : " + dsName +
+ " using JNDI properties : " + jndiEnv, e);
+ }
+ return null;
+ }
+
+ /**
+ * Find a DataSource using the given name and naming context
+ *
+ * @param dsName Name of the DataSource to be found
+ * @param context Naming Context
+ * @return DataSource if found , otherwise null
+ */
+ public DataSource find(String dsName, Context context) {
+
+ try {
+ Object dataSourceO = context.lookup(dsName);
+ if (dataSourceO != null && dataSourceO instanceof DataSource) {
+ return (DataSource) dataSourceO;
+ } else {
+ handleException("DataSource : " + dsName + " not found when looking up" +
+ " using JNDI properties : " + context.getEnvironment());
+ }
+
+ } catch (NamingException e) {
+ handleException(new StringBuilder().append("Error looking up DataSource : ")
+ .append(dsName).append(" using JNDI properties : ").
+ append(context).toString(), e);
+ }
+ return null;
+ }
+
+ public void addDataSourceInformation(DataSourceInformation dataSourceInformation) {
+
+ if (dataSourceInformation == null) {
+ return;
+ }
+ String repositoryType = dataSourceInformation.getRepositoryType();
+ if (DataSourceConfigurationConstants.PROP_REGISTRY_JNDI.equals(repositoryType)) {
+ JNDI_REPOSITORY.register(dataSourceInformation);
+ } else {
+ IN_MEMORY_REPOSITORY.register(dataSourceInformation);
+ }
+ }
+
+ public void removeDataSourceInformation(DataSourceInformation dataSourceInformation) {
+ String repositoryType = dataSourceInformation.getRepositoryType();
+ if (DataSourceConfigurationConstants.PROP_REGISTRY_JNDI.equals(repositoryType)) {
+ JNDI_REPOSITORY.unRegister(dataSourceInformation.getDatasourceName());
+ } else {
+ IN_MEMORY_REPOSITORY.unRegister(dataSourceInformation.getDatasourceName());
+ }
+ }
+
+ public void reConfigure(Properties confProperties) {
+ JNDI_REPOSITORY.init(confProperties);
+ IN_MEMORY_REPOSITORY.init(confProperties);
+ }
+
+ /**
+ * Helper methods for handle errors.
+ *
+ * @param msg The error message
+ */
+ private static void handleException(String msg) {
+ log.error(msg);
+ throw new SynapseException(msg);
+ }
+
+ /**
+ * Helper methods for handle errors.
+ *
+ * @param msg The error message
+ * @param e The exception
+ */
+ private static void handleException(String msg, Exception e) {
+ log.error(msg, e);
+ throw new SynapseException(msg, e);
+ }
+
+}
Added: synapse/trunk/java/modules/core/src/main/java/org/apache/synapse/util/datasource/DataSourceRepository.java
URL: http://svn.apache.org/viewvc/synapse/trunk/java/modules/core/src/main/java/org/apache/synapse/util/datasource/DataSourceRepository.java?rev=713788&view=auto
==============================================================================
--- synapse/trunk/java/modules/core/src/main/java/org/apache/synapse/util/datasource/DataSourceRepository.java (added)
+++ synapse/trunk/java/modules/core/src/main/java/org/apache/synapse/util/datasource/DataSourceRepository.java Thu Nov 13 11:00:56 2008
@@ -0,0 +1,67 @@
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one
+ * or more contributor license agreements. See the NOTICE file
+ * distributed with this work for additional information
+ * regarding copyright ownership. The ASF licenses this file
+ * to you under the Apache License, Version 2.0 (the
+ * "License"); you may not use this file except in compliance
+ * with the License. You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing,
+ * software distributed under the License is distributed on an
+ * * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+ * KIND, either express or implied. See the License for the
+ * specific language governing permissions and limitations
+ * under the License.
+ */
+package org.apache.synapse.util.datasource;
+
+import javax.sql.DataSource;
+import java.util.Properties;
+
+/**
+ * Keep all DataSources defined in the Synapse
+ */
+public interface DataSourceRepository {
+
+ /**
+ * Initialization with given properties
+ *
+ * @param properties configuration properties
+ */
+ public void init(Properties properties);
+
+ /**
+ * Explicitly check for init
+ *
+ * @return True , if has already initialized
+ */
+ public boolean isInitialized();
+
+ /**
+ * Register a DataSource based on given information
+ * Information is encapsulated in a DataSourceInformation instance
+ *
+ * @param information DataSourceInformation instance
+ */
+ void register(DataSourceInformation information);
+
+
+ void unRegister(String name);
+
+ /**
+ * Find and Returns an registered DataSource in the DataSourceRegistry
+ *
+ * @param name Name of the DataSoure to be looked up
+ * @return DataSource Instance
+ */
+ DataSource lookUp(String name);
+
+ /**
+ * Clear already registered datasources
+ */
+ public void clear();
+
+}
Added: synapse/trunk/java/modules/core/src/main/java/org/apache/synapse/util/datasource/DatasourceMBeanRepository.java
URL: http://svn.apache.org/viewvc/synapse/trunk/java/modules/core/src/main/java/org/apache/synapse/util/datasource/DatasourceMBeanRepository.java?rev=713788&view=auto
==============================================================================
--- synapse/trunk/java/modules/core/src/main/java/org/apache/synapse/util/datasource/DatasourceMBeanRepository.java (added)
+++ synapse/trunk/java/modules/core/src/main/java/org/apache/synapse/util/datasource/DatasourceMBeanRepository.java Thu Nov 13 11:00:56 2008
@@ -0,0 +1,108 @@
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one
+ * or more contributor license agreements. See the NOTICE file
+ * distributed with this work for additional information
+ * regarding copyright ownership. The ASF licenses this file
+ * to you under the Apache License, Version 2.0 (the
+ * "License"); you may not use this file except in compliance
+ * with the License. You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing,
+ * software distributed under the License is distributed on an
+ * * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+ * KIND, either express or implied. See the License for the
+ * specific language governing permissions and limitations
+ * under the License.
+ */
+package org.apache.synapse.util.datasource;
+
+import org.apache.commons.logging.Log;
+import org.apache.commons.logging.LogFactory;
+import org.apache.synapse.SynapseException;
+import org.apache.synapse.util.MBeanRegistrar;
+import org.apache.synapse.util.MBeanRepository;
+
+import java.util.HashMap;
+import java.util.Map;
+
+/**
+ *
+ */
+public class DatasourceMBeanRepository implements MBeanRepository {
+ private final static Log log = LogFactory.getLog(DataSourceInformationRepository.class);
+
+ private final static Map<String, DBPoolView> dataSourcesMBeans = new HashMap<String, DBPoolView>();
+ private final static DatasourceMBeanRepository DATASOURCE_M_BEAN_REPOSITORY = new DatasourceMBeanRepository();
+ private final static String MBEAN_CATEGORY_DATABASE_CONNECTION_POOL = "DatabaseConnectionPool";
+
+ private DatasourceMBeanRepository() {
+ }
+
+ public static DatasourceMBeanRepository getInstance() {
+ return DATASOURCE_M_BEAN_REPOSITORY;
+ }
+
+ public void addMBean(String name, Object mBean) {
+ assertNull(name, "DataSorce MBean name cannot be found.");
+ assertNull(mBean, "DataSorce MBean cannot be found.");
+ assertFalse(mBean instanceof DBPoolView, "Given MBean instance is not matched " +
+ "with the expected MBean - 'DBPoolView'.");
+ dataSourcesMBeans.put(name, (DBPoolView) mBean);
+ MBeanRegistrar mBeanRegistrar = MBeanRegistrar.getInstance();
+ mBeanRegistrar.registerMBean(mBean, MBEAN_CATEGORY_DATABASE_CONNECTION_POOL, name);
+ }
+
+ public Object getMBean(String name) {
+ assertNull(name, "DataSorce MBean name cannot be found.");
+ return dataSourcesMBeans.get(name);
+ }
+
+ public void removeMBean(String name) {
+ dataSourcesMBeans.remove(name);
+ MBeanRegistrar.getInstance().unRegisterMBean(MBEAN_CATEGORY_DATABASE_CONNECTION_POOL, name);
+ }
+
+ public void clear() {
+ if (!dataSourcesMBeans.isEmpty()) {
+ log.info("UnRegistering DBPool MBeans");
+ for (DBPoolView dbPoolView : dataSourcesMBeans.values()) {
+ if (dbPoolView != null) {
+ removeMBean(dbPoolView.getName());
+ }
+ }
+ dataSourcesMBeans.clear();
+ }
+ }
+
+ private void assertNull(String name, String msg) {
+ if (name == null || "".equals(name)) {
+ handleException(msg);
+ }
+ }
+
+ private void assertNull(Object object, String msg) {
+ if (object == null) {
+ handleException(msg);
+ }
+ }
+
+ private void assertFalse(boolean condition, String msg) {
+ if (!condition) {
+ handleException(msg);
+ }
+ }
+
+ /**
+ * Helper methods for handle errors.
+ *
+ * @param msg The error message
+ */
+ private static void handleException(String msg) {
+ log.error(msg);
+ throw new SynapseException(msg);
+ }
+
+
+}
Added: synapse/trunk/java/modules/core/src/main/java/org/apache/synapse/util/datasource/InMemoryDataSourceRepository.java
URL: http://svn.apache.org/viewvc/synapse/trunk/java/modules/core/src/main/java/org/apache/synapse/util/datasource/InMemoryDataSourceRepository.java?rev=713788&view=auto
==============================================================================
--- synapse/trunk/java/modules/core/src/main/java/org/apache/synapse/util/datasource/InMemoryDataSourceRepository.java (added)
+++ synapse/trunk/java/modules/core/src/main/java/org/apache/synapse/util/datasource/InMemoryDataSourceRepository.java Thu Nov 13 11:00:56 2008
@@ -0,0 +1,134 @@
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one
+ * or more contributor license agreements. See the NOTICE file
+ * distributed with this work for additional information
+ * regarding copyright ownership. The ASF licenses this file
+ * to you under the Apache License, Version 2.0 (the
+ * "License"); you may not use this file except in compliance
+ * with the License. You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing,
+ * software distributed under the License is distributed on an
+ * * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+ * KIND, either express or implied. See the License for the
+ * specific language governing permissions and limitations
+ * under the License.
+ */
+/**
+ * To change this template use File | Settings | File Templates.
+ */
+package org.apache.synapse.util.datasource;
+
+import org.apache.commons.logging.Log;
+import org.apache.commons.logging.LogFactory;
+import org.apache.synapse.SynapseException;
+import org.apache.synapse.util.MBeanRepository;
+import org.apache.synapse.util.datasource.factory.DataSourceFactory;
+
+import javax.sql.DataSource;
+import java.util.HashMap;
+import java.util.Map;
+import java.util.Properties;
+
+/**
+ * Keeps all DataSources in the memory
+ */
+public class InMemoryDataSourceRepository implements DataSourceRepository {
+
+ private final static Log log = LogFactory.getLog(InMemoryDataSourceRepository.class);
+
+ private static final InMemoryDataSourceRepository ourInstance = new InMemoryDataSourceRepository();
+ private final static Map<String, DataSource> dataSources = new HashMap<String, DataSource>();
+ private final static MBeanRepository REPOSITORY = DatasourceMBeanRepository.getInstance();
+
+ public static InMemoryDataSourceRepository getInstance() {
+ return ourInstance;
+ }
+
+ private InMemoryDataSourceRepository() {
+ }
+
+ /**
+ * Keep DataSource in the Local store
+ *
+ * @see DataSourceRepository#register(DataSourceInformation)
+ */
+ public void register(DataSourceInformation information) {
+
+ if (information == null) {
+ handleException("DataSourceInformation cannot be found.");
+ }
+
+ DataSource dataSource = DataSourceFactory.createDataSource(information);
+
+ if (dataSource == null) {
+
+ if (log.isDebugEnabled()) {
+ log.debug("DataSource cannot be created or" +
+ " found for DataSource Information " + information);
+ }
+ return;
+ }
+
+ String name = information.getDatasourceName();
+
+ if (log.isDebugEnabled()) {
+ log.debug("Registering a DatSource with name : " + name + " in Local Pool");
+ }
+
+ REPOSITORY.addMBean(name, new DBPoolView(name));
+ dataSources.put(name, dataSource);
+ }
+
+ public void unRegister(String name) {
+
+ if (name == null || "".equals(name)) {
+ return;
+ }
+ dataSources.remove(name);
+ REPOSITORY.removeMBean(name);
+ }
+
+ /**
+ * Get a DataSource from Local store
+ *
+ * @see DataSourceRepository#lookUp(String)
+ */
+ public DataSource lookUp(String name) {
+
+ assertNull(name, "DataSorce name cannot be found.");
+ return dataSources.get(name);
+ }
+
+ public void init(Properties properties) {
+ // nothing
+ }
+
+ public boolean isInitialized() {
+ return true;
+ }
+
+ public void clear() {
+ if (!dataSources.isEmpty()) {
+ log.info("Clearing all in-memory datasources ");
+ dataSources.clear();
+ }
+ REPOSITORY.clear();
+
+ }
+
+ private static void handleException(String msg) {
+ log.error(msg);
+ throw new SynapseException(msg);
+ }
+
+
+ private void assertNull(String name, String msg) {
+ if (name == null || "".equals(name)) {
+ handleException(msg);
+ }
+ }
+
+}