You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@tuscany.apache.org by kw...@apache.org on 2006/02/17 04:56:01 UTC

svn commit: r378424 - /incubator/tuscany/java/das/rdb/src/main/java/org/apache/tuscany/das/rdb/impl/CommandGroupImpl.java

Author: kwilliams
Date: Thu Feb 16 19:55:59 2006
New Revision: 378424

URL: http://svn.apache.org/viewcvs?rev=378424&view=rev
Log:
Adding support for DataSource

Modified:
    incubator/tuscany/java/das/rdb/src/main/java/org/apache/tuscany/das/rdb/impl/CommandGroupImpl.java

Modified: incubator/tuscany/java/das/rdb/src/main/java/org/apache/tuscany/das/rdb/impl/CommandGroupImpl.java
URL: http://svn.apache.org/viewcvs/incubator/tuscany/java/das/rdb/src/main/java/org/apache/tuscany/das/rdb/impl/CommandGroupImpl.java?rev=378424&r1=378423&r2=378424&view=diff
==============================================================================
--- incubator/tuscany/java/das/rdb/src/main/java/org/apache/tuscany/das/rdb/impl/CommandGroupImpl.java (original)
+++ incubator/tuscany/java/das/rdb/src/main/java/org/apache/tuscany/das/rdb/impl/CommandGroupImpl.java Thu Feb 16 19:55:59 2006
@@ -20,10 +20,15 @@
 import java.io.InputStream;
 import java.sql.Connection;
 import java.sql.DriverManager;
+import java.sql.SQLException;
 import java.util.HashMap;
 import java.util.Iterator;
 import java.util.Map;
 
+import javax.naming.InitialContext;
+import javax.naming.NamingException;
+import javax.sql.DataSource;
+
 import org.apache.tuscany.das.rdb.ApplyChangesCommand;
 import org.apache.tuscany.das.rdb.Command;
 import org.apache.tuscany.das.rdb.CommandGroup;
@@ -109,7 +114,7 @@
     // Private
 
     private void setConfig(InputStream stream) {
-    	XMLHelper helper = XMLHelper.INSTANCE;       
+        XMLHelper helper = XMLHelper.INSTANCE;
         HashMap map = new HashMap();
         ExtendedMetaData metadata = ExtendedMetaData.INSTANCE;
         metadata.putPackage(null, ConfigPackageImpl.eINSTANCE);
@@ -117,13 +122,12 @@
         map.put(XMLResource.NO_NAMESPACE_SCHEMA_LOCATION, ConfigPackageImpl.eNS_URI);
         map.put(XMLResource.OPTION_EXTENDED_META_DATA, metadata);
 
-       
         try {
-        	config = (Config) helper.load(stream, ConfigPackageImpl.eNS_URI, map).getRootObject();           
+            config = (Config) helper.load(stream, ConfigPackageImpl.eNS_URI, map).getRootObject();
         } catch (IOException e) {
             throw new RuntimeException(e);
         }
-       
+
     }
 
     public void setConnection(Connection connection) {
@@ -144,8 +148,13 @@
                     "No connection properties have been configured and no connection has been provided");
 
         if (cp.getDataSource() != null)
-            throw new Error("Datasource configuration not yet supported");
+            initViaDataSource(cp);
+        else
+            initViaDriverManager(cp);
+
+    }
 
+    private void initViaDriverManager(ConnectionProperties cp) {
         Connection connection = null;
 
         try {
@@ -163,4 +172,30 @@
 
     }
 
+    //TODO - Refactor to eliminate common initialization code after connection is got
+    private void initViaDataSource(ConnectionProperties cp) {
+
+        Connection connection = null;
+
+        InitialContext ctx;
+        try {
+            ctx = new InitialContext();
+        } catch (NamingException e) {
+            throw new Error(e);
+        }
+        try {
+            //TODO - I think we should rename this getDataSourceURL?
+            DataSource ds = (DataSource) ctx.lookup(cp.getDataSource());
+            try {
+                connection = ds.getConnection();
+                connection.setAutoCommit(false);
+                setConnection(connection);
+            } catch (SQLException e) {
+                throw new Error (e);
+            }
+        } catch (NamingException e) {
+            throw new Error(e);
+        }
+
+    }
 }