You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@ibatis.apache.org by cb...@apache.org on 2009/03/21 21:24:10 UTC

svn commit: r757006 - in /ibatis/trunk/java/ibatis-3: ./ ibatis-3-core/src/main/java/org/apache/ibatis/datasource/jndi/ ibatis-3-core/src/test/java/org/apache/ibatis/datasource/ ibatis-3-core/src/test/java/org/apache/ibatis/datasource/jndi/

Author: cbegin
Date: Sat Mar 21 20:24:10 2009
New Revision: 757006

URL: http://svn.apache.org/viewvc?rev=757006&view=rev
Log:
Added JNDI Factory test
Excluded ognl from emma coverage

Added:
    ibatis/trunk/java/ibatis-3/ibatis-3-core/src/test/java/org/apache/ibatis/datasource/
    ibatis/trunk/java/ibatis-3/ibatis-3-core/src/test/java/org/apache/ibatis/datasource/jndi/
    ibatis/trunk/java/ibatis-3/ibatis-3-core/src/test/java/org/apache/ibatis/datasource/jndi/JndiDataSourceFactoryTest.java
Modified:
    ibatis/trunk/java/ibatis-3/common.xml
    ibatis/trunk/java/ibatis-3/ibatis-3-core/src/main/java/org/apache/ibatis/datasource/jndi/JndiDataSourceFactory.java
    ibatis/trunk/java/ibatis-3/version.properties

Modified: ibatis/trunk/java/ibatis-3/common.xml
URL: http://svn.apache.org/viewvc/ibatis/trunk/java/ibatis-3/common.xml?rev=757006&r1=757005&r2=757006&view=diff
==============================================================================
--- ibatis/trunk/java/ibatis-3/common.xml (original)
+++ ibatis/trunk/java/ibatis-3/common.xml Sat Mar 21 20:24:10 2009
@@ -106,7 +106,9 @@
       <instr instrpathref="classes-to-instrument"
         destdir="${classes.instrumented}"
         metadatafile="./coverage.ec"
-        merge="true"/>
+        merge="true">
+        <filter excludes="org.apache.ibatis.ognl.*"/>
+      </instr>
     </emma>
   </target>
 

Modified: ibatis/trunk/java/ibatis-3/ibatis-3-core/src/main/java/org/apache/ibatis/datasource/jndi/JndiDataSourceFactory.java
URL: http://svn.apache.org/viewvc/ibatis/trunk/java/ibatis-3/ibatis-3-core/src/main/java/org/apache/ibatis/datasource/jndi/JndiDataSourceFactory.java?rev=757006&r1=757005&r2=757006&view=diff
==============================================================================
--- ibatis/trunk/java/ibatis-3/ibatis-3-core/src/main/java/org/apache/ibatis/datasource/jndi/JndiDataSourceFactory.java (original)
+++ ibatis/trunk/java/ibatis-3/ibatis-3-core/src/main/java/org/apache/ibatis/datasource/jndi/JndiDataSourceFactory.java Sat Mar 21 20:24:10 2009
@@ -14,28 +14,28 @@
 
 public class JndiDataSourceFactory implements DataSourceFactory {
 
+  public static final String INITIAL_CONTEXT = "initial_context";
+  public static final String DATA_SOURCE = "data_source";
+  public static final String ENV_PREFIX = "env.";
+
   private DataSource dataSource;
-  private static final String INITIAL_CONTEXT = "initialContext";
-  private static final String DATA_SOURCE = "dataSource";
-  private static final String CONTEXT_PREFIX = "context.";
 
   public void setProperties(Properties properties) {
     try {
       InitialContext initCtx = null;
-      Hashtable context = getContextProperties(properties);
-
-      if (context == null) {
+      Hashtable env = getEnvProperties(properties);
+      if (env == null) {
         initCtx = new InitialContext();
       } else {
-        initCtx = new InitialContext(context);
+        initCtx = new InitialContext(env);
       }
 
       if (properties.containsKey(INITIAL_CONTEXT)
           && properties.containsKey(DATA_SOURCE)) {
-        Context ctx = (Context) initCtx.lookup((String) properties.get(INITIAL_CONTEXT));
-        dataSource = (DataSource) ctx.lookup((String) properties.get(DATA_SOURCE));
+        Context ctx = (Context) initCtx.lookup(properties.getProperty(INITIAL_CONTEXT));
+        dataSource = (DataSource) ctx.lookup(properties.getProperty(DATA_SOURCE));
       } else if (properties.containsKey(DATA_SOURCE)) {
-        dataSource = (DataSource) initCtx.lookup((String) properties.get(DATA_SOURCE));
+        dataSource = (DataSource) initCtx.lookup(properties.getProperty(DATA_SOURCE));
       }
 
     } catch (NamingException e) {
@@ -47,8 +47,8 @@
     return dataSource;
   }
 
-  private static Hashtable getContextProperties(Map allProps) {
-    final String PREFIX = CONTEXT_PREFIX;
+  private static Hashtable getEnvProperties(Map allProps) {
+    final String PREFIX = ENV_PREFIX;
     Hashtable contextProperties = null;
     Iterator keys = allProps.keySet().iterator();
     while (keys.hasNext()) {

Added: ibatis/trunk/java/ibatis-3/ibatis-3-core/src/test/java/org/apache/ibatis/datasource/jndi/JndiDataSourceFactoryTest.java
URL: http://svn.apache.org/viewvc/ibatis/trunk/java/ibatis-3/ibatis-3-core/src/test/java/org/apache/ibatis/datasource/jndi/JndiDataSourceFactoryTest.java?rev=757006&view=auto
==============================================================================
--- ibatis/trunk/java/ibatis-3/ibatis-3-core/src/test/java/org/apache/ibatis/datasource/jndi/JndiDataSourceFactoryTest.java (added)
+++ ibatis/trunk/java/ibatis-3/ibatis-3-core/src/test/java/org/apache/ibatis/datasource/jndi/JndiDataSourceFactoryTest.java Sat Mar 21 20:24:10 2009
@@ -0,0 +1,85 @@
+package org.apache.ibatis.datasource.jndi;
+
+import org.apache.ibatis.BaseDataTest;
+import org.apache.ibatis.datasource.DataSourceException;
+import org.apache.ibatis.datasource.unpooled.UnpooledDataSource;
+import static org.junit.Assert.assertEquals;
+import org.junit.Before;
+import org.junit.Test;
+
+import javax.naming.Context;
+import javax.naming.InitialContext;
+import javax.naming.NamingException;
+import javax.naming.spi.InitialContextFactory;
+import javax.sql.DataSource;
+import java.util.HashMap;
+import java.util.Hashtable;
+import java.util.Map;
+import java.util.Properties;
+
+public class JndiDataSourceFactoryTest extends BaseDataTest {
+
+  private static final String TEST_INITIAL_CONTEXT_FACTORY = MockContextFactory.class.getName();
+  private static final String TEST_INITIAL_CONTEXT = "/mypath/path/";
+  private static final String TEST_DATA_SOURCE = "myDataSource";
+  private UnpooledDataSource expectedDataSource;
+
+  @Before
+  public void setup() throws Exception {
+    expectedDataSource = createUnpooledDataSource(BLOG_PROPERTIES);
+  }
+
+  @Test
+  public void shouldRetrieveDataSourceFromJNDI() throws Exception {
+    createJndiDataSource();
+    JndiDataSourceFactory factory = new JndiDataSourceFactory();
+    factory.setProperties(new Properties() {
+      {
+        setProperty(JndiDataSourceFactory.ENV_PREFIX + Context.INITIAL_CONTEXT_FACTORY, TEST_INITIAL_CONTEXT_FACTORY);
+        setProperty(JndiDataSourceFactory.INITIAL_CONTEXT, TEST_INITIAL_CONTEXT);
+        setProperty(JndiDataSourceFactory.DATA_SOURCE, TEST_DATA_SOURCE);
+      }
+    });
+    DataSource actualDataSource = factory.getDataSource();
+    assertEquals(expectedDataSource, actualDataSource);
+  }
+
+  private void createJndiDataSource() throws Exception {
+    try {
+      Hashtable env = new Hashtable();
+      env.put(Context.INITIAL_CONTEXT_FACTORY, TEST_INITIAL_CONTEXT_FACTORY);
+
+      MockContext ctx = new MockContext(false);
+      ctx.bind(TEST_DATA_SOURCE, expectedDataSource);
+      
+      InitialContext initCtx = new InitialContext(env);
+      initCtx.bind(TEST_INITIAL_CONTEXT, ctx);
+    } catch (NamingException e) {
+      throw new DataSourceException("There was an error configuring JndiDataSourceTransactionPool. Cause: " + e, e);
+    }
+  }
+
+  public static class MockContextFactory implements InitialContextFactory {
+    public Context getInitialContext(Hashtable<?, ?> environment) throws NamingException {
+      return new MockContext(false);
+    }
+  }
+
+  public static class MockContext extends InitialContext {
+    private static Map bindings = new HashMap();
+
+    public MockContext(boolean lazy) throws NamingException {
+      super(lazy);
+    }
+
+    public Object lookup(String name) throws NamingException {
+      return bindings.get(name);
+    }
+
+    public void bind(String name, Object obj) throws NamingException {
+      bindings.put(name, obj);
+    }
+  }
+
+
+}

Modified: ibatis/trunk/java/ibatis-3/version.properties
URL: http://svn.apache.org/viewvc/ibatis/trunk/java/ibatis-3/version.properties?rev=757006&r1=757005&r2=757006&view=diff
==============================================================================
--- ibatis/trunk/java/ibatis-3/version.properties (original)
+++ ibatis/trunk/java/ibatis-3/version.properties Sat Mar 21 20:24:10 2009
@@ -1,5 +1,5 @@
 #Build version info
-#Sat Mar 21 01:24:14 MDT 2009
+#Sat Mar 21 12:35:55 MDT 2009
 version=3.0.0
-buildDate=2009/03/21 01\:24
-buildNum=138
+buildDate=2009/03/21 12\:35
+buildNum=142