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/14 11:13:30 UTC

svn commit: r713965 - in /synapse/trunk/java/modules/core/src/main/java/org/apache/synapse: config/ core/axis2/ util/datasource/ util/datasource/factory/

Author: indika
Date: Fri Nov 14 02:13:28 2008
New Revision: 713965

URL: http://svn.apache.org/viewvc?rev=713965&view=rev
Log:
some changes in data source code
remove initializing of properties , data sources from configurationn builder so that configuration builder only buld configuration

Added:
    synapse/trunk/java/modules/core/src/main/java/org/apache/synapse/util/datasource/DataSourceInformationRepositoryHelper.java
Modified:
    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/SynapsePropertiesLoader.java
    synapse/trunk/java/modules/core/src/main/java/org/apache/synapse/core/axis2/SynapseInitializationModule.java
    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/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

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=713965&r1=713964&r2=713965&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 Fri Nov 14 02:13:28 2008
@@ -102,11 +102,8 @@
     
     private final TaskDescriptionRepository repository = 
             TaskDescriptionRepositoryFactory.getTaskDescriptionRepository(
-                    SynapseConstants.SYNAPSE_STARTUP_TASK_DESCRIPTIONS_REPOSITORY);
+                    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
 	 * required
@@ -921,13 +918,5 @@
 
     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=713965&r1=713964&r2=713965&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 Fri Nov 14 02:13:28 2008
@@ -23,8 +23,6 @@
 import org.apache.commons.logging.LogFactory;
 import org.apache.synapse.SynapseConstants;
 import org.apache.synapse.SynapseException;
-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;
@@ -33,7 +31,6 @@
 import java.io.File;
 import java.io.FileInputStream;
 import java.io.FileNotFoundException;
-import java.util.Properties;
 
 /**
  * Builds a Synapse Configuration model with a given input
@@ -74,15 +71,10 @@
 
         // build the Synapse configuration parsing the XML config file
         try {
-            Properties synapseProperties = SynapsePropertiesLoader.loadSynapseProperties();
-            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/SynapsePropertiesLoader.java
URL: http://svn.apache.org/viewvc/synapse/trunk/java/modules/core/src/main/java/org/apache/synapse/config/SynapsePropertiesLoader.java?rev=713965&r1=713964&r2=713965&view=diff
==============================================================================
--- synapse/trunk/java/modules/core/src/main/java/org/apache/synapse/config/SynapsePropertiesLoader.java (original)
+++ synapse/trunk/java/modules/core/src/main/java/org/apache/synapse/config/SynapsePropertiesLoader.java Fri Nov 14 02:13:28 2008
@@ -67,4 +67,17 @@
         tempProperties.putAll(cacheProperties);
         return tempProperties;
     }
+
+    /**
+     * Reloading properties from file
+     *
+     * @return Reloaded properties
+     */
+    public static Properties reloadSynapseProperties() {
+        if (log.isDebugEnabled()) {
+            log.debug("Reloading synapse properties");
+        }
+        cacheProperties = null;
+        return loadSynapseProperties();
+    }
 }

Modified: synapse/trunk/java/modules/core/src/main/java/org/apache/synapse/core/axis2/SynapseInitializationModule.java
URL: http://svn.apache.org/viewvc/synapse/trunk/java/modules/core/src/main/java/org/apache/synapse/core/axis2/SynapseInitializationModule.java?rev=713965&r1=713964&r2=713965&view=diff
==============================================================================
--- synapse/trunk/java/modules/core/src/main/java/org/apache/synapse/core/axis2/SynapseInitializationModule.java (original)
+++ synapse/trunk/java/modules/core/src/main/java/org/apache/synapse/core/axis2/SynapseInitializationModule.java Fri Nov 14 02:13:28 2008
@@ -35,8 +35,10 @@
 import org.apache.synapse.ServerManager;
 import org.apache.synapse.SynapseConstants;
 import org.apache.synapse.SynapseException;
+import org.apache.synapse.util.datasource.DataSourceInformationRepositoryHelper;
 import org.apache.synapse.config.SynapseConfiguration;
 import org.apache.synapse.config.SynapseConfigurationBuilder;
+import org.apache.synapse.config.SynapsePropertiesLoader;
 
 import java.net.InetAddress;
 import java.net.UnknownHostException;
@@ -160,14 +162,21 @@
 
         String config = ServerManager.getInstance().getSynapseXMLPath();
 
+        java.util.Properties synapseProperties = SynapsePropertiesLoader.loadSynapseProperties();
+
+        DataSourceInformationRepositoryHelper.
+                initializeDataSourceInformationRepository(axisConfiguration, synapseProperties);
+
         if (config != null) {
             synapseConfiguration = SynapseConfigurationBuilder.getConfiguration(config);
         } else {
             log.warn("System property or init-parameter '" + SynapseConstants.SYNAPSE_XML +
-                "' is not specified. Using default configuration..");
+                    "' is not specified. Using default configuration..");
             synapseConfiguration = SynapseConfigurationBuilder.getDefaultConfiguration();
         }
 
+        synapseConfiguration.setProperties(synapseProperties);
+        
         // Set the Axis2 ConfigurationContext to the SynapseConfiguration
         synapseConfiguration.setAxisConfiguration(cfgCtx.getAxisConfiguration());
 

Modified: 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=713965&r1=713964&r2=713965&view=diff
==============================================================================
--- synapse/trunk/java/modules/core/src/main/java/org/apache/synapse/util/datasource/DataSourceConfigurationConstants.java (original)
+++ synapse/trunk/java/modules/core/src/main/java/org/apache/synapse/util/datasource/DataSourceConfigurationConstants.java Fri Nov 14 02:13:28 2008
@@ -67,7 +67,7 @@
     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 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 = ".";
@@ -76,9 +76,10 @@
     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 
+    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";
+    public static final String DATASOURCE_INFORMATION_REPOSITORY = "DataSourceInformationRepository";
 
 }

Modified: 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=713965&r1=713964&r2=713965&view=diff
==============================================================================
--- synapse/trunk/java/modules/core/src/main/java/org/apache/synapse/util/datasource/DataSourceInformationRepository.java (original)
+++ synapse/trunk/java/modules/core/src/main/java/org/apache/synapse/util/datasource/DataSourceInformationRepository.java Fri Nov 14 02:13:28 2008
@@ -18,6 +18,10 @@
  */
 package org.apache.synapse.util.datasource;
 
+import org.apache.commons.logging.Log;
+import org.apache.commons.logging.LogFactory;
+import org.apache.synapse.SynapseException;
+
 import java.util.*;
 
 /**
@@ -25,47 +29,78 @@
  */
 public class DataSourceInformationRepository {
 
+    private static final Log log = LogFactory.getLog(DataSourceInformationRepository.class);
+
     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);
-            }
+            listener.reConfigure(congurationProperties);
         }
     }
 
     public void addDataSourceInformation(DataSourceInformation dataSourceInformation) {
+
+        assertNull(dataSourceInformation, "DataSource information is null");
+
         dataSourceInformationMap.put(dataSourceInformation.getAlias(), dataSourceInformation);
         for (DataSourceInformationRepositoryListener listener : listeners) {
-            if (listener != null) {
-                listener.addDataSourceInformation(dataSourceInformation);
-            }
+            listener.addDataSourceInformation(dataSourceInformation);
         }
     }
 
     public DataSourceInformation getDataSourceInformation(String name) {
+
+        assertNull(name, "Name of the datasource  information instance to be returned is null");
+
         return dataSourceInformationMap.get(name);
     }
 
     public DataSourceInformation removeDataSourceInformation(String name) {
+
+        assertNull(name, "Name of the datasource information instance to be removed is null");
+
         DataSourceInformation information = dataSourceInformationMap.remove(name);
+
+        assertNull(information, "There is no datasource information instance for given name :" + name);
+
         for (DataSourceInformationRepositoryListener listener : listeners) {
-            if (listener != null) {
-                listener.removeDataSourceInformation(information);
-            }
+            listener.removeDataSourceInformation(information);
         }
         return information;
     }
 
     public Iterator<DataSourceInformation> getAllDataSourceInformation() {
+
         return dataSourceInformationMap.values().iterator();
     }
 
     public void registerDataSourceInformationRepositoryListener(DataSourceInformationRepositoryListener listener) {
+
+        assertNull(listener, "Provided 'DataSourceInformationRepositoryListener' instance is null");
+
         listeners.add(listener);
     }
+
+    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);
+        }
+    }
+
+    private void assertNull(Object object, String msg) {
+        if (object == null) {
+            handleException(msg);
+        }
+    }
 }
\ No newline at end of file

Added: synapse/trunk/java/modules/core/src/main/java/org/apache/synapse/util/datasource/DataSourceInformationRepositoryHelper.java
URL: http://svn.apache.org/viewvc/synapse/trunk/java/modules/core/src/main/java/org/apache/synapse/util/datasource/DataSourceInformationRepositoryHelper.java?rev=713965&view=auto
==============================================================================
--- synapse/trunk/java/modules/core/src/main/java/org/apache/synapse/util/datasource/DataSourceInformationRepositoryHelper.java (added)
+++ synapse/trunk/java/modules/core/src/main/java/org/apache/synapse/util/datasource/DataSourceInformationRepositoryHelper.java Fri Nov 14 02:13:28 2008
@@ -0,0 +1,78 @@
+/*
+ *  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.axis2.AxisFault;
+import org.apache.axis2.description.Parameter;
+import org.apache.axis2.engine.AxisConfiguration;
+import org.apache.commons.logging.Log;
+import org.apache.commons.logging.LogFactory;
+import org.apache.synapse.SynapseException;
+import org.apache.synapse.util.datasource.factory.DataSourceInformationRepositoryFactory;
+
+import java.util.Properties;
+
+/**
+ *
+ */
+public class DataSourceInformationRepositoryHelper {
+
+    private static final Log log = LogFactory.getLog(DataSourceInformationRepositoryHelper.class);
+
+    public static void initializeDataSourceInformationRepository(AxisConfiguration axisConfiguration, Properties properties) {
+        initializeDataSourceInformationRepository(axisConfiguration, properties, DataSourceManager.getInstance());
+    }
+
+    public static void initializeDataSourceInformationRepository(AxisConfiguration axisConfiguration, Properties properties, DataSourceInformationRepositoryListener listener) {
+
+        DataSourceInformationRepository repository =
+                DataSourceInformationRepositoryFactory.createDataSourceInformationRepository(properties, listener);
+        Parameter parameter = new Parameter(DataSourceConfigurationConstants.DATASOURCE_INFORMATION_REPOSITORY, repository);
+        try {
+            axisConfiguration.addParameter(parameter);
+        } catch (AxisFault axisFault) {
+            handleException("Error setting 'DataSourceInformationRepository' as" +
+                    " a parameter to axis2 configuration ", axisFault);
+        }
+    }
+
+    public static DataSourceInformationRepository getDataSourceInformationRepository(AxisConfiguration axisConfiguration) {
+
+        Parameter parameter = axisConfiguration.getParameter(DataSourceConfigurationConstants.DATASOURCE_INFORMATION_REPOSITORY);
+        if (parameter != null) {
+            Object result = parameter.getValue();
+            if (!(result instanceof DataSourceInformationRepository)) {
+                handleException("Invalid type  '" + result.getClass().getName()
+                        + "' , expected : 'DataSourceInformationRepository'");
+            }
+            return (DataSourceInformationRepository) result;
+        }
+        return null;
+    }
+
+    private static void handleException(String msg, Throwable error) {
+        log.error(msg, error);
+        throw new SynapseException(msg, error);
+    }
+
+    private static void handleException(String msg) {
+        log.error(msg);
+        throw new SynapseException(msg);
+    }
+}

Modified: 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=713965&r1=713964&r2=713965&view=diff
==============================================================================
--- synapse/trunk/java/modules/core/src/main/java/org/apache/synapse/util/datasource/DataSourceManager.java (original)
+++ synapse/trunk/java/modules/core/src/main/java/org/apache/synapse/util/datasource/DataSourceManager.java Fri Nov 14 02:13:28 2008
@@ -65,7 +65,7 @@
             return result;
         }
         if (JNDI_REPOSITORY.isInitialized()) {
-            return IN_MEMORY_REPOSITORY.lookUp(name);
+            return JNDI_REPOSITORY.lookUp(name);
         }
         return null;
     }
@@ -80,7 +80,6 @@
     public DataSource find(String dsName, Properties jndiEnv) {
 
         try {
-
             Context context = new InitialContext(jndiEnv);
             return find(dsName, context);
 
@@ -122,6 +121,7 @@
         if (dataSourceInformation == null) {
             return;
         }
+        
         String repositoryType = dataSourceInformation.getRepositoryType();
         if (DataSourceConfigurationConstants.PROP_REGISTRY_JNDI.equals(repositoryType)) {
             JNDI_REPOSITORY.register(dataSourceInformation);
@@ -131,7 +131,9 @@
     }
 
     public void removeDataSourceInformation(DataSourceInformation dataSourceInformation) {
+        
         String repositoryType = dataSourceInformation.getRepositoryType();
+        
         if (DataSourceConfigurationConstants.PROP_REGISTRY_JNDI.equals(repositoryType)) {
             JNDI_REPOSITORY.unRegister(dataSourceInformation.getDatasourceName());
         } else {
@@ -140,6 +142,7 @@
     }
 
     public void reConfigure(Properties confProperties) {
+        
         JNDI_REPOSITORY.init(confProperties);
         IN_MEMORY_REPOSITORY.init(confProperties);
     }

Modified: 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=713965&r1=713964&r2=713965&view=diff
==============================================================================
--- synapse/trunk/java/modules/core/src/main/java/org/apache/synapse/util/datasource/DataSourceRepository.java (original)
+++ synapse/trunk/java/modules/core/src/main/java/org/apache/synapse/util/datasource/DataSourceRepository.java Fri Nov 14 02:13:28 2008
@@ -47,8 +47,12 @@
      * @param information DataSourceInformation instance
      */
     void register(DataSourceInformation information);
-    
 
+    /**
+     * Removing datasource
+     *
+     * @param name name of the datasource to be removed
+     */
     void unRegister(String name);
 
     /**

Modified: 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=713965&r1=713964&r2=713965&view=diff
==============================================================================
--- synapse/trunk/java/modules/core/src/main/java/org/apache/synapse/util/datasource/DatasourceMBeanRepository.java (original)
+++ synapse/trunk/java/modules/core/src/main/java/org/apache/synapse/util/datasource/DatasourceMBeanRepository.java Fri Nov 14 02:13:28 2008
@@ -31,7 +31,8 @@
  *
  */
 public class DatasourceMBeanRepository implements MBeanRepository {
-    private final static Log log = LogFactory.getLog(DataSourceInformationRepository.class);
+    
+    private final static Log log = LogFactory.getLog(DatasourceMBeanRepository.class);
 
     private final static Map<String, DBPoolView> dataSourcesMBeans = new HashMap<String, DBPoolView>();
     private final static DatasourceMBeanRepository DATASOURCE_M_BEAN_REPOSITORY = new DatasourceMBeanRepository();
@@ -45,6 +46,7 @@
     }
 
     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 " +
@@ -55,16 +57,19 @@
     }
 
     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()) {

Modified: 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=713965&r1=713964&r2=713965&view=diff
==============================================================================
--- synapse/trunk/java/modules/core/src/main/java/org/apache/synapse/util/datasource/InMemoryDataSourceRepository.java (original)
+++ synapse/trunk/java/modules/core/src/main/java/org/apache/synapse/util/datasource/InMemoryDataSourceRepository.java Fri Nov 14 02:13:28 2008
@@ -83,10 +83,8 @@
     }
 
     public void unRegister(String name) {
-
-        if (name == null || "".equals(name)) {
-            return;
-        }
+        
+        assertNull(name,"Name of the datasource to be removed is empty or null");
         dataSources.remove(name);
         REPOSITORY.removeMBean(name);
     }
@@ -130,5 +128,4 @@
             handleException(msg);
         }
     }
-   
 }

Modified: synapse/trunk/java/modules/core/src/main/java/org/apache/synapse/util/datasource/JNDIBasedDataSourceRepository.java
URL: http://svn.apache.org/viewvc/synapse/trunk/java/modules/core/src/main/java/org/apache/synapse/util/datasource/JNDIBasedDataSourceRepository.java?rev=713965&r1=713964&r2=713965&view=diff
==============================================================================
--- synapse/trunk/java/modules/core/src/main/java/org/apache/synapse/util/datasource/JNDIBasedDataSourceRepository.java (original)
+++ synapse/trunk/java/modules/core/src/main/java/org/apache/synapse/util/datasource/JNDIBasedDataSourceRepository.java Fri Nov 14 02:13:28 2008
@@ -57,11 +57,13 @@
 
         initialized = true;
         if (jndiEnv == null || jndiEnv.isEmpty()) {
-            log.warn("");
+            log.warn("Provided global JNDI environment properties is empty or null.");
             return;
         }
-        jndiProperties = createJNDIEnvironment(jndiEnv, null);
-        initialContext = createInitialContext(jndiEnv);
+        if (isValid(jndiEnv)) {
+            jndiProperties = createJNDIEnvironment(jndiEnv, null);
+            initialContext = createInitialContext(jndiEnv);
+        }
 
     }
 
@@ -210,8 +212,8 @@
         try {
             context.unbind(name);
         } catch (NamingException e) {
-            handleException("Error removing a Datasource with name : "+
-                    name + " from the JNDI context : "+initialContext,e);
+            handleException("Error removing a Datasource with name : " +
+                    name + " from the JNDI context : " + initialContext, e);
         }
     }
 
@@ -498,4 +500,17 @@
         }
         return null;
     }
+
+    private boolean isValid(Properties dsProperties) {
+
+        String dataSources = MiscellaneousUtil.getProperty(dsProperties,
+                DataSourceConfigurationConstants.PROP_SYNAPSE_DATASOURCES, null);
+
+        if (dataSources != null && !"".equals(dataSources)) {
+            String[] dataSourcesNames = dataSources.split(",");
+            return !(dataSourcesNames == null || dataSourcesNames.length == 0);
+        }
+
+        return false;
+    }
 }

Modified: synapse/trunk/java/modules/core/src/main/java/org/apache/synapse/util/datasource/factory/DataSourceInformationListFactory.java
URL: http://svn.apache.org/viewvc/synapse/trunk/java/modules/core/src/main/java/org/apache/synapse/util/datasource/factory/DataSourceInformationListFactory.java?rev=713965&r1=713964&r2=713965&view=diff
==============================================================================
--- synapse/trunk/java/modules/core/src/main/java/org/apache/synapse/util/datasource/factory/DataSourceInformationListFactory.java (original)
+++ synapse/trunk/java/modules/core/src/main/java/org/apache/synapse/util/datasource/factory/DataSourceInformationListFactory.java Fri Nov 14 02:13:28 2008
@@ -66,7 +66,7 @@
 
         for (String dsName : dataSourcesNames) {
 
-            if (dsName == null) {
+            if (dsName == null ) {
                 continue;
             }
             DataSourceInformation information =

Modified: synapse/trunk/java/modules/core/src/main/java/org/apache/synapse/util/datasource/factory/DataSourceInformationRepositoryFactory.java
URL: http://svn.apache.org/viewvc/synapse/trunk/java/modules/core/src/main/java/org/apache/synapse/util/datasource/factory/DataSourceInformationRepositoryFactory.java?rev=713965&r1=713964&r2=713965&view=diff
==============================================================================
--- synapse/trunk/java/modules/core/src/main/java/org/apache/synapse/util/datasource/factory/DataSourceInformationRepositoryFactory.java (original)
+++ synapse/trunk/java/modules/core/src/main/java/org/apache/synapse/util/datasource/factory/DataSourceInformationRepositoryFactory.java Fri Nov 14 02:13:28 2008
@@ -20,6 +20,7 @@
 
 import org.apache.synapse.util.datasource.DataSourceInformation;
 import org.apache.synapse.util.datasource.DataSourceInformationRepository;
+import org.apache.synapse.util.datasource.DataSourceInformationRepositoryListener;
 import org.apache.synapse.util.datasource.DataSourceManager;
 
 import java.util.List;
@@ -31,10 +32,16 @@
 public class DataSourceInformationRepositoryFactory {
 
     public static DataSourceInformationRepository createDataSourceInformationRepository(Properties properties) {
+
+        return createDataSourceInformationRepository(properties, DataSourceManager.getInstance());
+    }
+
+    public static DataSourceInformationRepository createDataSourceInformationRepository(Properties properties, DataSourceInformationRepositoryListener listener) {
+
         List<DataSourceInformation> dataSourceInformations = DataSourceInformationListFactory.createDataSourceInformationList(properties);
         DataSourceInformationRepository repository = new DataSourceInformationRepository();
+        repository.registerDataSourceInformationRepositoryListener(listener);
         repository.setConfigurationProperties(properties);
-        repository.registerDataSourceInformationRepositoryListener(DataSourceManager.getInstance());
         for (DataSourceInformation information : dataSourceInformations) {
             if (information != null) {
                 repository.addDataSourceInformation(information);