Hi,

just added the parameter "IgnoreDefaultValues" for datasources (at least
that's explicit for datasources) to be allowed to skip our default values.
The issue i had was our default values can't be null and for some DS we
want null parameters (for user/password for instance).

any feedback?
other experiences?

- Romain


---------- Forwarded message ----------
From: <[email protected]>
Date: 2012/6/7
Subject: svn commit: r1347695 - in /openejb/trunk/openejb:
container/openejb-core/src/main/java/org/apache/openejb/config/
container/openejb-core/src/main/resources/META-INF/org.apache.openejb.embedded/
container/openejb-core/src/main/resources/META-INF/org.apa...
To: [email protected]


Author: rmannibucau
Date: Thu Jun  7 16:00:01 2012
New Revision: 1347695

URL: http://svn.apache.org/viewvc?rev=1347695&view=rev
Log:
sometimes default values are just not what we want so allow to skip them

Added:

 
openejb/trunk/openejb/container/openejb-core/src/test/java/org/apache/openejb/resource/jdbc/IgnoreDefaultTest.java
Modified:

 
openejb/trunk/openejb/container/openejb-core/src/main/java/org/apache/openejb/config/ConfigurationFactory.java

 
openejb/trunk/openejb/container/openejb-core/src/main/resources/META-INF/org.apache.openejb.embedded/service-jar.xml

 
openejb/trunk/openejb/container/openejb-core/src/main/resources/META-INF/org.apache.openejb/service-jar.xml

 
openejb/trunk/openejb/tomee/tomee-embedded/src/main/resources/META-INF/org.apache.openejb.tomcat/service-jar.xml

 
openejb/trunk/openejb/tomee/tomee-embedded/src/main/resources/META-INF/org.apache.tomee/service-jar.xml

 
openejb/trunk/openejb/tomee/tomee-webapp/src/main/resources/META-INF/org.apache.tomee/service-jar.xml

Modified:
openejb/trunk/openejb/container/openejb-core/src/main/java/org/apache/openejb/config/ConfigurationFactory.java
URL:
http://svn.apache.org/viewvc/openejb/trunk/openejb/container/openejb-core/src/main/java/org/apache/openejb/config/ConfigurationFactory.java?rev=1347695&r1=1347694&r2=1347695&view=diff
==============================================================================
---
openejb/trunk/openejb/container/openejb-core/src/main/java/org/apache/openejb/config/ConfigurationFactory.java
(original)
+++
openejb/trunk/openejb/container/openejb-core/src/main/java/org/apache/openejb/config/ConfigurationFactory.java
Thu Jun  7 16:00:01 2012
@@ -114,6 +114,8 @@ public class ConfigurationFactory implem
    private static final Logger logger =
Logger.getInstance(LogCategory.OPENEJB_STARTUP_CONFIG,
ConfigurationFactory.class);
    private static final Messages messages = new
Messages(ConfigurationFactory.class);

+    private static final String IGNORE_DEFAULT_VALUES_PROP =
"IgnoreDefaultValues";
+
    private String configLocation;
    private OpenEjbConfiguration sys;
    private Openejb openejb;
@@ -956,10 +958,17 @@ public class ConfigurationFactory implem
            }

            final Properties props = new SuperProperties();
-            props.putAll(provider.getProperties());
+
+            // weird hack but sometimes we don't want default values when
we want null for instance
+            if (service.getProperties() == null ||
"false".equals(service.getProperties().getProperty(IGNORE_DEFAULT_VALUES_PROP,
"false"))) {
+                props.putAll(provider.getProperties());
+            }
+
            props.putAll(service.getProperties());
            props.putAll(overrides);

+            props.remove(IGNORE_DEFAULT_VALUES_PROP);
+
            if (providerType != null &&
!provider.getService().equals(providerType)) {
                throw new
OpenEJBException(messages.format("configureService.wrongProviderType",
service.getId(), providerType));
            }

Modified:
openejb/trunk/openejb/container/openejb-core/src/main/resources/META-INF/org.apache.openejb.embedded/service-jar.xml
URL:
http://svn.apache.org/viewvc/openejb/trunk/openejb/container/openejb-core/src/main/resources/META-INF/org.apache.openejb.embedded/service-jar.xml?rev=1347695&r1=1347694&r2=1347695&view=diff
==============================================================================
---
openejb/trunk/openejb/container/openejb-core/src/main/resources/META-INF/org.apache.openejb.embedded/service-jar.xml
(original)
+++
openejb/trunk/openejb/container/openejb-core/src/main/resources/META-INF/org.apache.openejb.embedded/service-jar.xml
Thu Jun  7 16:00:01 2012
@@ -714,6 +714,10 @@
    # original logical connection wrapper.

    AccessToUnderlyingConnectionAllowed        false
+
+    # use only all set values in this config
+    # will need a lot of properties but allow to not set some values
+    IgnoreDefaultValues = false
  </ServiceProvider>

  <ServiceProvider

Modified:
openejb/trunk/openejb/container/openejb-core/src/main/resources/META-INF/org.apache.openejb/service-jar.xml
URL:
http://svn.apache.org/viewvc/openejb/trunk/openejb/container/openejb-core/src/main/resources/META-INF/org.apache.openejb/service-jar.xml?rev=1347695&r1=1347694&r2=1347695&view=diff
==============================================================================
---
openejb/trunk/openejb/container/openejb-core/src/main/resources/META-INF/org.apache.openejb/service-jar.xml
(original)
+++
openejb/trunk/openejb/container/openejb-core/src/main/resources/META-INF/org.apache.openejb/service-jar.xml
Thu Jun  7 16:00:01 2012
@@ -748,6 +748,10 @@
    # original logical connection wrapper.

    AccessToUnderlyingConnectionAllowed        false
+
+    # use only all set values in this config
+    # will need a lot of properties but allow to not set some values
+    IgnoreDefaultValues = false
  </ServiceProvider>

  <ServiceProvider

Added:
openejb/trunk/openejb/container/openejb-core/src/test/java/org/apache/openejb/resource/jdbc/IgnoreDefaultTest.java
URL:
http://svn.apache.org/viewvc/openejb/trunk/openejb/container/openejb-core/src/test/java/org/apache/openejb/resource/jdbc/IgnoreDefaultTest.java?rev=1347695&view=auto
==============================================================================
---
openejb/trunk/openejb/container/openejb-core/src/test/java/org/apache/openejb/resource/jdbc/IgnoreDefaultTest.java
(added)
+++
openejb/trunk/openejb/container/openejb-core/src/test/java/org/apache/openejb/resource/jdbc/IgnoreDefaultTest.java
Thu Jun  7 16:00:01 2012
@@ -0,0 +1,49 @@
+package org.apache.openejb.resource.jdbc;
+
+import javax.naming.NamingException;
+import javax.sql.DataSource;
+import org.apache.openejb.OpenEJBException;
+import org.apache.openejb.assembler.classic.Assembler;
+import org.apache.openejb.assembler.classic.ResourceInfo;
+import org.apache.openejb.config.ConfigurationFactory;
+import org.apache.openejb.config.sys.Resource;
+import org.hsqldb.jdbcDriver;
+import org.junit.Test;
+
+import static org.hamcrest.CoreMatchers.instanceOf;
+import static org.junit.Assert.assertEquals;
+import static org.junit.Assert.assertThat;
+
+public class IgnoreDefaultTest {
+    private static Assembler assembler = new Assembler();
+    private static ConfigurationFactory configurationFactory = new
ConfigurationFactory();
+
+    @Test
+    public void createNormalDs() throws OpenEJBException, NamingException {
+        final Resource resource = new
Resource(IgnoreDefaultTest.class.getName() + "#normal");
+        resource.setType(DataSource.class.getName());
+        final ResourceInfo info =
configurationFactory.configureService(resource, ResourceInfo.class);
+        assembler.createResource(info);
+
+        check(resource.getId(), "sa", "");
+    }
+
+    @Test
+    public void createWithoutDefaultDs() throws OpenEJBException,
NamingException {
+        final Resource resource = new
Resource(IgnoreDefaultTest.class.getName() + "#without-default");
+        resource.setType(DataSource.class.getName());
+        resource.getProperties().setProperty("IgnoreDefaultValues",
"true");
+        resource.getProperties().setProperty("JdbcDriver",
jdbcDriver.class.getName());
+        final ResourceInfo info =
configurationFactory.configureService(resource, ResourceInfo.class);
+        assembler.createResource(info);
+
+        check(resource.getId(), null, null);
+    }
+
+    private void check(String id, String user, String password) throws
NamingException {
+        final DataSource ds = (DataSource)
assembler.getContainerSystem().getJNDIContext().lookup("openejb/Resource/"
+ id);
+        assertThat(ds,
instanceOf(org.apache.commons.dbcp.BasicDataSource.class));
+        assertEquals(user, ((org.apache.commons.dbcp.BasicDataSource)
ds).getUsername());
+        assertEquals(password, ((org.apache.commons.dbcp.BasicDataSource)
ds).getPassword());
+    }
+}

Modified:
openejb/trunk/openejb/tomee/tomee-embedded/src/main/resources/META-INF/org.apache.openejb.tomcat/service-jar.xml
URL:
http://svn.apache.org/viewvc/openejb/trunk/openejb/tomee/tomee-embedded/src/main/resources/META-INF/org.apache.openejb.tomcat/service-jar.xml?rev=1347695&r1=1347694&r2=1347695&view=diff
==============================================================================
---
openejb/trunk/openejb/tomee/tomee-embedded/src/main/resources/META-INF/org.apache.openejb.tomcat/service-jar.xml
(original)
+++
openejb/trunk/openejb/tomee/tomee-embedded/src/main/resources/META-INF/org.apache.openejb.tomcat/service-jar.xml
Thu Jun  7 16:00:01 2012
@@ -721,6 +721,10 @@
    # original logical connection wrapper.

    AccessToUnderlyingConnectionAllowed        false
+
+    # use only all set values in this config
+    # will need a lot of properties but allow to not set some values
+    IgnoreDefaultValues = false
  </ServiceProvider>

  <ServiceProvider

Modified:
openejb/trunk/openejb/tomee/tomee-embedded/src/main/resources/META-INF/org.apache.tomee/service-jar.xml
URL:
http://svn.apache.org/viewvc/openejb/trunk/openejb/tomee/tomee-embedded/src/main/resources/META-INF/org.apache.tomee/service-jar.xml?rev=1347695&r1=1347694&r2=1347695&view=diff
==============================================================================
---
openejb/trunk/openejb/tomee/tomee-embedded/src/main/resources/META-INF/org.apache.tomee/service-jar.xml
(original)
+++
openejb/trunk/openejb/tomee/tomee-embedded/src/main/resources/META-INF/org.apache.tomee/service-jar.xml
Thu Jun  7 16:00:01 2012
@@ -721,6 +721,10 @@
    # original logical connection wrapper.

    AccessToUnderlyingConnectionAllowed        false
+
+    # use only all set values in this config
+    # will need a lot of properties but allow to not set some values
+    IgnoreDefaultValues = false
  </ServiceProvider>

  <ServiceProvider

Modified:
openejb/trunk/openejb/tomee/tomee-webapp/src/main/resources/META-INF/org.apache.tomee/service-jar.xml
URL:
http://svn.apache.org/viewvc/openejb/trunk/openejb/tomee/tomee-webapp/src/main/resources/META-INF/org.apache.tomee/service-jar.xml?rev=1347695&r1=1347694&r2=1347695&view=diff
==============================================================================
---
openejb/trunk/openejb/tomee/tomee-webapp/src/main/resources/META-INF/org.apache.tomee/service-jar.xml
(original)
+++
openejb/trunk/openejb/tomee/tomee-webapp/src/main/resources/META-INF/org.apache.tomee/service-jar.xml
Thu Jun  7 16:00:01 2012
@@ -726,6 +726,10 @@
    # original logical connection wrapper.

    AccessToUnderlyingConnectionAllowed        false
+
+    # use only all set values in this config
+    # will need a lot of properties but allow to not set some values
+    IgnoreDefaultValues = false
  </ServiceProvider>

  <ServiceProvider

Reply via email to