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
