You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@tomee.apache.org by db...@apache.org on 2007/01/05 21:20:48 UTC

svn commit: r493174 - in /incubator/openejb/trunk/openejb3/container/openejb-core/src/main: java/org/apache/openejb/resource/jdbc/ resources/META-INF/org.apache.openejb/

Author: dblevins
Date: Fri Jan  5 12:20:48 2007
New Revision: 493174

URL: http://svn.apache.org/viewvc?view=rev&rev=493174
Log:
Hacked the ability to not manage connections

Added:
    incubator/openejb/trunk/openejb3/container/openejb-core/src/main/java/org/apache/openejb/resource/jdbc/JdbcUnmanagedConnection.java
Modified:
    incubator/openejb/trunk/openejb3/container/openejb-core/src/main/java/org/apache/openejb/resource/jdbc/BasicManagedConnectionFactory.java
    incubator/openejb/trunk/openejb3/container/openejb-core/src/main/java/org/apache/openejb/resource/jdbc/JdbcManagedConnectionFactory.java
    incubator/openejb/trunk/openejb3/container/openejb-core/src/main/resources/META-INF/org.apache.openejb/service-jar.xml

Modified: incubator/openejb/trunk/openejb3/container/openejb-core/src/main/java/org/apache/openejb/resource/jdbc/BasicManagedConnectionFactory.java
URL: http://svn.apache.org/viewvc/incubator/openejb/trunk/openejb3/container/openejb-core/src/main/java/org/apache/openejb/resource/jdbc/BasicManagedConnectionFactory.java?view=diff&rev=493174&r1=493173&r2=493174
==============================================================================
--- incubator/openejb/trunk/openejb3/container/openejb-core/src/main/java/org/apache/openejb/resource/jdbc/BasicManagedConnectionFactory.java (original)
+++ incubator/openejb/trunk/openejb3/container/openejb-core/src/main/java/org/apache/openejb/resource/jdbc/BasicManagedConnectionFactory.java Fri Jan  5 12:20:48 2007
@@ -55,6 +55,9 @@
         try {
             JdbcConnectionRequestInfo request = (JdbcConnectionRequestInfo) connectionRequestInfo;
             Connection connection = DriverManager.getConnection(jdbcUrl, request.getUserName(), request.getPassword());
+            if (managedConnectionFactory.isUnmanaged()){
+                return new JdbcUnmanagedConnection(managedConnectionFactory, connection, request);
+            }
             return new JdbcManagedConnection(managedConnectionFactory, connection, request);
         } catch (java.sql.SQLException e) {
             throw (EISSystemException) new EISSystemException("Could not obtain a physical JDBC connection from the DriverManager").initCause(e);

Modified: incubator/openejb/trunk/openejb3/container/openejb-core/src/main/java/org/apache/openejb/resource/jdbc/JdbcManagedConnectionFactory.java
URL: http://svn.apache.org/viewvc/incubator/openejb/trunk/openejb3/container/openejb-core/src/main/java/org/apache/openejb/resource/jdbc/JdbcManagedConnectionFactory.java?view=diff&rev=493174&r1=493173&r2=493174
==============================================================================
--- incubator/openejb/trunk/openejb3/container/openejb-core/src/main/java/org/apache/openejb/resource/jdbc/JdbcManagedConnectionFactory.java (original)
+++ incubator/openejb/trunk/openejb3/container/openejb-core/src/main/java/org/apache/openejb/resource/jdbc/JdbcManagedConnectionFactory.java Fri Jan  5 12:20:48 2007
@@ -40,13 +40,14 @@
     private String defaultPassword;
     private String url;
     private String driver;
+    private boolean unmanaged;
 
     public void init(java.util.Properties props) throws javax.resource.spi.ResourceAdapterInternalException {
         defaultUserName = props.getProperty(EnvProps.USER_NAME);
         defaultPassword = props.getProperty(EnvProps.PASSWORD);
         url = props.getProperty(EnvProps.JDBC_URL);
         driver = props.getProperty(EnvProps.JDBC_DRIVER);
-
+        unmanaged = props.getProperty("Unmanaged", "false").equalsIgnoreCase("true");
         start();
     }
 
@@ -80,6 +81,14 @@
 
     public void setDriver(String driver) {
         this.driver = driver;
+    }
+
+    public boolean isUnmanaged() {
+        return unmanaged;
+    }
+
+    public void setUnmanaged(boolean unmanaged) {
+        this.unmanaged = unmanaged;
     }
 
     /**

Added: incubator/openejb/trunk/openejb3/container/openejb-core/src/main/java/org/apache/openejb/resource/jdbc/JdbcUnmanagedConnection.java
URL: http://svn.apache.org/viewvc/incubator/openejb/trunk/openejb3/container/openejb-core/src/main/java/org/apache/openejb/resource/jdbc/JdbcUnmanagedConnection.java?view=auto&rev=493174
==============================================================================
--- incubator/openejb/trunk/openejb3/container/openejb-core/src/main/java/org/apache/openejb/resource/jdbc/JdbcUnmanagedConnection.java (added)
+++ incubator/openejb/trunk/openejb3/container/openejb-core/src/main/java/org/apache/openejb/resource/jdbc/JdbcUnmanagedConnection.java Fri Jan  5 12:20:48 2007
@@ -0,0 +1,147 @@
+/**
+ * Licensed to the Apache Software Foundation (ASF) under one or more
+ * contributor license agreements.  See the NOTICE file distributed with
+ * this work for additional information regarding copyright ownership.
+ * The ASF licenses this file to You under the Apache License, Version 2.0
+ * (the "License"); you may not use this file except in compliance with
+ * the License.  You may obtain a copy of the License at
+ *
+ *     http://www.apache.org/licenses/LICENSE-2.0
+ *
+ *  Unless required by applicable law or agreed to in writing, software
+ *  distributed under the License is distributed on an "AS IS" BASIS,
+ *  WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ *  See the License for the specific language governing permissions and
+ *  limitations under the License.
+ */
+package org.apache.openejb.resource.jdbc;
+
+import javax.resource.spi.ManagedConnection;
+import javax.resource.spi.ManagedConnectionFactory;
+import javax.resource.spi.ConnectionEventListener;
+import javax.resource.spi.ConnectionRequestInfo;
+import javax.resource.spi.ManagedConnectionMetaData;
+import javax.resource.spi.ConnectionEvent;
+import javax.resource.spi.LocalTransaction;
+import javax.resource.ResourceException;
+import java.util.List;
+import java.util.ArrayList;
+import java.util.Set;
+import java.util.HashSet;
+import java.sql.Connection;
+import java.io.PrintWriter;
+
+public class JdbcUnmanagedConnection implements ManagedConnection {
+
+    private final JdbcManagedConnectionMetaData metaData;
+
+    private Connection sqlConn;
+    private PrintWriter logWriter;
+    private final UnmanagedConnectionRequestInfo connectionRequestInfo;
+
+    public JdbcUnmanagedConnection(ManagedConnectionFactory managedFactory, Connection sqlConn, JdbcConnectionRequestInfo rxInfo)
+            throws javax.resource.spi.ResourceAdapterInternalException {
+        connectionRequestInfo = new UnmanagedConnectionRequestInfo(rxInfo);
+        this.sqlConn = sqlConn;
+        try {
+            logWriter = managedFactory.getLogWriter();
+        } catch (ResourceException e) {
+            throw new RuntimeException(e);
+        }
+        try {
+            metaData = new JdbcManagedConnectionMetaData(sqlConn.getMetaData());
+        } catch (java.sql.SQLException sqlE) {
+            throw new javax.resource.spi.ResourceAdapterInternalException("Problem while attempting to access meta data from physical connection", ErrorCode.JDBC_0004);
+        }
+    }
+
+    public static class UnmanagedConnectionRequestInfo extends JdbcConnectionRequestInfo{
+        public UnmanagedConnectionRequestInfo(JdbcConnectionRequestInfo i) {
+            super(i.getUserName(),i.getPassword(), i.getJdbcDriver(), i.getJdbcUrl());
+        }
+
+        public boolean equals(Object other) {
+            return false;
+        }
+    }
+
+    protected Connection getSQLConnection() {
+        return sqlConn;
+    }
+
+    protected JdbcConnectionRequestInfo getRequestInfo() {
+        return connectionRequestInfo;
+    }
+
+    public void addConnectionEventListener(ConnectionEventListener listener) {
+    }
+
+    public void associateConnection(Object connection) throws ResourceException {
+    }
+
+    public void cleanup() throws ResourceException {
+    }
+
+    public void destroy() throws ResourceException {
+    }
+
+    /*
+    * Returns an application level connection handle in the form of a JdbcConnection object
+    * which implements the java.sql.Connection interface and wrappers the physical JDBC connection.
+    *
+    */
+    public Object getConnection(javax.security.auth.Subject subject, ConnectionRequestInfo cxRequestInfo) throws ResourceException {
+        return sqlConn;
+    }
+
+    public javax.resource.spi.LocalTransaction getLocalTransaction() throws ResourceException {
+        return new LocalTransaction(){
+            public void begin() throws ResourceException {
+            }
+
+            public void commit() throws ResourceException {
+            }
+
+            public void rollback() throws ResourceException {
+            }
+        };
+    }
+
+    public PrintWriter getLogWriter() throws ResourceException {
+        return logWriter;
+    }
+
+    public ManagedConnectionMetaData getMetaData() throws ResourceException {
+        return metaData;
+    }
+
+    public javax.transaction.xa.XAResource getXAResource() throws ResourceException {
+        throw new javax.resource.NotSupportedException("Method not implemented");
+    }
+
+    public void removeConnectionEventListener(ConnectionEventListener listener) {
+    }
+
+    public void setLogWriter(PrintWriter out) throws ResourceException {
+        logWriter = out;
+    }
+
+    protected void localTransactionCommitted() {
+    }
+
+    protected void localTransactionRolledback() {
+    }
+
+    protected void localTransactionStarted() {
+    }
+
+    protected void connectionErrorOccurred(JdbcConnection jdbcConn, java.sql.SQLException sqlE) {
+    }
+
+    protected void connectionClose(JdbcConnection jdbcConn) {
+    }
+
+    public String toString() {
+        return "JdbcUnmanagedConnection (" + sqlConn.toString() + ")";
+    }
+}

Modified: incubator/openejb/trunk/openejb3/container/openejb-core/src/main/resources/META-INF/org.apache.openejb/service-jar.xml
URL: http://svn.apache.org/viewvc/incubator/openejb/trunk/openejb3/container/openejb-core/src/main/resources/META-INF/org.apache.openejb/service-jar.xml?view=diff&rev=493174&r1=493173&r2=493174
==============================================================================
--- incubator/openejb/trunk/openejb3/container/openejb-core/src/main/resources/META-INF/org.apache.openejb/service-jar.xml (original)
+++ incubator/openejb/trunk/openejb3/container/openejb-core/src/main/resources/META-INF/org.apache.openejb/service-jar.xml Fri Jan  5 12:20:48 2007
@@ -272,6 +272,8 @@
 
     #Password pass
     Password
+
+    Unmanaged false
   </ServiceProvider>
 
   <!--