Author: indika
Date: Tue Dec  2 06:07:55 2008
New Revision: 25533
URL: http://wso2.org/svn/browse/wso2?view=rev&revision=25533

Log:
fix an issue in datasource factory /serialization / jndi based datasource

Modified:
   
branches/synapse/1.2.wso2v1/modules/utils/src/main/java/org/apache/synapse/commons/util/datasource/DataSourceConfigurationConstants.java
   
branches/synapse/1.2.wso2v1/modules/utils/src/main/java/org/apache/synapse/commons/util/datasource/DataSourceInformation.java
   
branches/synapse/1.2.wso2v1/modules/utils/src/main/java/org/apache/synapse/commons/util/datasource/JNDIBasedDataSourceRepository.java
   
branches/synapse/1.2.wso2v1/modules/utils/src/main/java/org/apache/synapse/commons/util/datasource/factory/DataSourceInformationFactory.java
   
branches/synapse/1.2.wso2v1/modules/utils/src/main/java/org/apache/synapse/commons/util/datasource/serializer/DataSourceInformationSerializer.java

Modified: 
branches/synapse/1.2.wso2v1/modules/utils/src/main/java/org/apache/synapse/commons/util/datasource/DataSourceConfigurationConstants.java
URL: 
http://wso2.org/svn/browse/wso2/branches/synapse/1.2.wso2v1/modules/utils/src/main/java/org/apache/synapse/commons/util/datasource/DataSourceConfigurationConstants.java?rev=25533&r1=25532&r2=25533&view=diff
==============================================================================
--- 
branches/synapse/1.2.wso2v1/modules/utils/src/main/java/org/apache/synapse/commons/util/datasource/DataSourceConfigurationConstants.java
    (original)
+++ 
branches/synapse/1.2.wso2v1/modules/utils/src/main/java/org/apache/synapse/commons/util/datasource/DataSourceConfigurationConstants.java
    Tue Dec  2 06:07:55 2008
@@ -81,5 +81,7 @@
     public static final String PROP_FACTORY = "factory";
     public static final String PROP_NAME = "name";
     public static final String DATASOURCE_INFORMATION_REPOSITORY = 
"DataSourceInformationRepository";
+    public static final String DEFAULT_IC_FACTORY = 
"com.sun.jndi.rmi.registry.RegistryContextFactory";
+    public static final int DEFAULT_PROVIDER_PORT = 2199;
 
 }

Modified: 
branches/synapse/1.2.wso2v1/modules/utils/src/main/java/org/apache/synapse/commons/util/datasource/DataSourceInformation.java
URL: 
http://wso2.org/svn/browse/wso2/branches/synapse/1.2.wso2v1/modules/utils/src/main/java/org/apache/synapse/commons/util/datasource/DataSourceInformation.java?rev=25533&r1=25532&r2=25533&view=diff
==============================================================================
--- 
branches/synapse/1.2.wso2v1/modules/utils/src/main/java/org/apache/synapse/commons/util/datasource/DataSourceInformation.java
       (original)
+++ 
branches/synapse/1.2.wso2v1/modules/utils/src/main/java/org/apache/synapse/commons/util/datasource/DataSourceInformation.java
       Tue Dec  2 06:07:55 2008
@@ -314,6 +314,12 @@
         this.properties.putAll(properties);
     }
 
+    public void addProperty(String name, String value) {
+        if (name != null && value != null && !"".equals(name) && 
!"".equals(value)) {
+            this.properties.put(name, value);
+        }
+    }
+
     public String getRepositoryType() {
         return repositoryType;
     }

Modified: 
branches/synapse/1.2.wso2v1/modules/utils/src/main/java/org/apache/synapse/commons/util/datasource/JNDIBasedDataSourceRepository.java
URL: 
http://wso2.org/svn/browse/wso2/branches/synapse/1.2.wso2v1/modules/utils/src/main/java/org/apache/synapse/commons/util/datasource/JNDIBasedDataSourceRepository.java?rev=25533&r1=25532&r2=25533&view=diff
==============================================================================
--- 
branches/synapse/1.2.wso2v1/modules/utils/src/main/java/org/apache/synapse/commons/util/datasource/JNDIBasedDataSourceRepository.java
       (original)
+++ 
branches/synapse/1.2.wso2v1/modules/utils/src/main/java/org/apache/synapse/commons/util/datasource/JNDIBasedDataSourceRepository.java
       Tue Dec  2 06:07:55 2008
@@ -81,27 +81,41 @@
         String dataSourceName = information.getDatasourceName();
         validateDSName(dataSourceName);
         Properties properties = information.getProperties();
-        
+
         InitialContext context = null;
         Properties jndiEvn = null;
 
-        if (properties != null && !properties.isEmpty()) {
-            jndiEvn = createJNDIEnvironment(properties, 
information.getAlias());
-            context = createInitialContext(jndiEvn);
+        if (properties == null || properties.isEmpty()) {
+            if (initialContext != null) {
+                context = initialContext;
+                if (log.isDebugEnabled()) {
+                    log.debug("Empty jndi properties for datasource " + 
dataSourceName);
+                    log.debug("Using system-wide jndi properties : " + 
jndiProperties);
+                }
+
+                jndiEvn = jndiProperties;
+            }
         }
+
         if (context == null) {
 
-            validateInitialContext(initialContext);
-            context = initialContext;
+            jndiEvn = createJNDIEnvironment(properties, 
information.getAlias());
+            context = createInitialContext(jndiEvn);
 
-            if (log.isDebugEnabled()) {
-                log.debug("Cannot create a name context with jndi properties : 
" + jndiEvn);
-                log.debug("Using system-wide jndi properties : " + 
jndiProperties);
-            }
+            if (context == null) {
 
-            jndiEvn = jndiProperties;
-        } else {
-            perDataSourceICMap.put(dataSourceName, context);
+                validateInitialContext(initialContext);
+                context = initialContext;
+
+                if (log.isDebugEnabled()) {
+                    log.debug("Cannot create a name context with provided jndi 
properties : " + jndiEvn);
+                    log.debug("Using system-wide jndi properties : " + 
jndiProperties);
+                }
+
+                jndiEvn = jndiProperties;
+            } else {
+                perDataSourceICMap.put(dataSourceName, context);
+            }
         }
 
         String dsType = information.getType();
@@ -376,27 +390,44 @@
 
     private static Properties createJNDIEnvironment(Properties dsProperties, 
String name) {
 
-        StringBuffer buffer = new StringBuffer();
-        
buffer.append(DataSourceConfigurationConstants.PROP_SYNAPSE_DATASOURCES);
-        buffer.append(DataSourceConfigurationConstants.DOT_STRING);
-        if (name != null && !"".equals(name)) {
-            buffer.append(name);
-            buffer.append(DataSourceConfigurationConstants.DOT_STRING);
-        }
-        // The prefix for root level jndiProperties
-        String rootPrefix = buffer.toString();
+        String namingFactory = 
DataSourceConfigurationConstants.DEFAULT_IC_FACTORY;
+        String providerUrl = null;
+        int port = DataSourceConfigurationConstants.DEFAULT_PROVIDER_PORT;
+        String providerPort = null;
         // setting naming provider
         Properties jndiEvn = new Properties();  //This is needed for 
PerUserPoolDatasource
 
-        String namingFactory = MiscellaneousUtil.getProperty(
-                dsProperties, rootPrefix + 
DataSourceConfigurationConstants.PROP_ICFACTORY,
-                "com.sun.jndi.rmi.registry.RegistryContextFactory");
+        if (dsProperties != null && !dsProperties.isEmpty()) {
 
-        jndiEvn.put(Context.INITIAL_CONTEXT_FACTORY, namingFactory);
+            if (log.isDebugEnabled()) {
+                log.debug("Using properties " + dsProperties + " to create 
JNDI Environment");
+            }
 
-        //Provider URL
-        String providerUrl = MiscellaneousUtil.getProperty(
-                dsProperties, rootPrefix + 
DataSourceConfigurationConstants.PROP_PROVIDER_URL, null);
+            StringBuffer buffer = new StringBuffer();
+            
buffer.append(DataSourceConfigurationConstants.PROP_SYNAPSE_DATASOURCES);
+            buffer.append(DataSourceConfigurationConstants.DOT_STRING);
+            if (name != null && !"".equals(name)) {
+                buffer.append(name);
+                buffer.append(DataSourceConfigurationConstants.DOT_STRING);
+            }
+            // The prefix for root level jndiProperties
+            String rootPrefix = buffer.toString();
+
+
+            namingFactory = MiscellaneousUtil.getProperty(
+                    dsProperties, rootPrefix + 
DataSourceConfigurationConstants.PROP_ICFACTORY,
+                    DataSourceConfigurationConstants.DEFAULT_IC_FACTORY);
+
+            //Provider URL
+            providerUrl = MiscellaneousUtil.getProperty(
+                    dsProperties, rootPrefix + 
DataSourceConfigurationConstants.PROP_PROVIDER_URL, null);
+            providerPort =
+                    MiscellaneousUtil.getProperty(dsProperties, rootPrefix + 
DataSourceConfigurationConstants.PROP_PROVIDER_PORT,
+                            
String.valueOf(DataSourceConfigurationConstants.DEFAULT_PROVIDER_PORT));
+
+        }
+
+        jndiEvn.put(Context.INITIAL_CONTEXT_FACTORY, namingFactory);
 
         if (providerUrl != null && !"".equals(providerUrl)) {
             if (log.isDebugEnabled()) {
@@ -426,21 +457,18 @@
             }
 
             // default port for RMI registry
-            int port = 2199;
-            String providerPort =
-                    MiscellaneousUtil.getProperty(dsProperties, rootPrefix + 
DataSourceConfigurationConstants.PROP_PROVIDER_PORT,
-                            String.valueOf(port));
-            try {
-                port = Integer.parseInt(providerPort);
-            } catch (NumberFormatException ignored) {
+
+            if (providerPort != null) {
+                try {
+                    port = Integer.parseInt(providerPort);
+                } catch (NumberFormatException ignored) {
+                }
             }
 
             // Create a RMI local registry
             RMIRegistryController.getInstance().createLocalRegistry(port);
+            providerUrl = "rmi://" + providerHost + ":" + port;
 
-            providerUrl = MiscellaneousUtil.getProperty(dsProperties,
-                    rootPrefix + 
DataSourceConfigurationConstants.PROP_PROVIDER_URL,
-                    "rmi://" + providerHost + ":" + providerPort);
         }
 
         jndiEvn.put(Context.PROVIDER_URL, providerUrl);

Modified: 
branches/synapse/1.2.wso2v1/modules/utils/src/main/java/org/apache/synapse/commons/util/datasource/factory/DataSourceInformationFactory.java
URL: 
http://wso2.org/svn/browse/wso2/branches/synapse/1.2.wso2v1/modules/utils/src/main/java/org/apache/synapse/commons/util/datasource/factory/DataSourceInformationFactory.java?rev=25533&r1=25532&r2=25533&view=diff
==============================================================================
--- 
branches/synapse/1.2.wso2v1/modules/utils/src/main/java/org/apache/synapse/commons/util/datasource/factory/DataSourceInformationFactory.java
        (original)
+++ 
branches/synapse/1.2.wso2v1/modules/utils/src/main/java/org/apache/synapse/commons/util/datasource/factory/DataSourceInformationFactory.java
        Tue Dec  2 06:07:55 2008
@@ -235,6 +235,20 @@
         if (defaultCatalog != null && !"".equals(defaultCatalog)) {
             information.setDefaultCatalog(defaultCatalog);
         }
+
+        information.addProperty(prefix + 
DataSourceConfigurationConstants.PROP_ICFACTORY,
+                MiscellaneousUtil.getProperty(
+                        properties, prefix + 
DataSourceConfigurationConstants.PROP_ICFACTORY,
+                        null));
+        //Provider URL
+        information.addProperty(prefix + 
DataSourceConfigurationConstants.PROP_PROVIDER_URL,
+                MiscellaneousUtil.getProperty(
+                        properties, prefix + 
DataSourceConfigurationConstants.PROP_PROVIDER_URL, null));
+
+        information.addProperty(prefix + 
DataSourceConfigurationConstants.PROP_PROVIDER_PORT,
+                MiscellaneousUtil.getProperty(
+                        properties, prefix + 
DataSourceConfigurationConstants.PROP_PROVIDER_PORT, null));
+        
         return information;
     }
 

Modified: 
branches/synapse/1.2.wso2v1/modules/utils/src/main/java/org/apache/synapse/commons/util/datasource/serializer/DataSourceInformationSerializer.java
URL: 
http://wso2.org/svn/browse/wso2/branches/synapse/1.2.wso2v1/modules/utils/src/main/java/org/apache/synapse/commons/util/datasource/serializer/DataSourceInformationSerializer.java?rev=25533&r1=25532&r2=25533&view=diff
==============================================================================
--- 
branches/synapse/1.2.wso2v1/modules/utils/src/main/java/org/apache/synapse/commons/util/datasource/serializer/DataSourceInformationSerializer.java
  (original)
+++ 
branches/synapse/1.2.wso2v1/modules/utils/src/main/java/org/apache/synapse/commons/util/datasource/serializer/DataSourceInformationSerializer.java
  Tue Dec  2 06:07:55 2008
@@ -41,7 +41,8 @@
 
         // Prefix for getting particular data source's properties
         String prefix = buffer.toString();
-
+        addProperty(properties, prefix + 
DataSourceConfigurationConstants.PROP_DSNAME,
+                information.getDatasourceName());
         addProperty(properties, prefix + 
DataSourceConfigurationConstants.PROP_USER_NAME,
                 information.getUser());
         addProperty(properties, prefix + 
DataSourceConfigurationConstants.PROP_PASSWORD,

_______________________________________________
Esb-java-dev mailing list
[email protected]
https://wso2.org/cgi-bin/mailman/listinfo/esb-java-dev

Reply via email to