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);
+        }
+    }
+   
+}