You are viewing a plain text version of this content. The canonical link for it is here.
Posted to ojb-dev@db.apache.org by ar...@apache.org on 2007/01/05 03:27:57 UTC

svn commit: r492863 - in /db/ojb/branches/OJB_1_0_RELEASE/src/java/org/apache/ojb/broker/platforms: PlatformOracle9iImpl.java PlatformOracleImpl.java

Author: arminw
Date: Thu Jan  4 18:27:57 2007
New Revision: 492863

URL: http://svn.apache.org/viewvc?view=rev&rev=492863
Log:
refactoring of implementation, with latest thin-driver (tested against OracleXE) the 2/4KByte seems to be fixed

Modified:
    db/ojb/branches/OJB_1_0_RELEASE/src/java/org/apache/ojb/broker/platforms/PlatformOracle9iImpl.java
    db/ojb/branches/OJB_1_0_RELEASE/src/java/org/apache/ojb/broker/platforms/PlatformOracleImpl.java

Modified: db/ojb/branches/OJB_1_0_RELEASE/src/java/org/apache/ojb/broker/platforms/PlatformOracle9iImpl.java
URL: http://svn.apache.org/viewvc/db/ojb/branches/OJB_1_0_RELEASE/src/java/org/apache/ojb/broker/platforms/PlatformOracle9iImpl.java?view=diff&rev=492863&r1=492862&r2=492863
==============================================================================
--- db/ojb/branches/OJB_1_0_RELEASE/src/java/org/apache/ojb/broker/platforms/PlatformOracle9iImpl.java (original)
+++ db/ojb/branches/OJB_1_0_RELEASE/src/java/org/apache/ojb/broker/platforms/PlatformOracle9iImpl.java Thu Jan  4 18:27:57 2007
@@ -90,6 +90,8 @@
     protected static String JBOSS_CONN_NAME = "org.jboss.resource.adapter.jdbc.WrappedConnection";
     protected static String ORA_CONNECTION_CLASS_NAME = "oracle.jdbc.OracleConnection";
     protected static String ORA_STATEMENT_CLASS_NAME = "oracle.jdbc.OraclePreparedStatement";
+    protected static String ORA_BLOB_CLASS_NAME = "oracle.sql.BLOB";
+    protected static String ORA_CLOB_CLASS_NAME = "oracle.sql.CLOB";
 
     protected Class JBOSS_CONN_CLASS;
     protected Class ORA_CONN_CLASS;
@@ -173,14 +175,15 @@
         }
         catch(ClassNotFoundException e)
         {
-            log.info("Can't access Oracle specific driver Connection/Statement classes", e);
+            log.info("Can't access Oracle specific driver Connection/Statement classes using class names: "
+                    + ORA_CONNECTION_CLASS_NAME + " and " + ORA_STATEMENT_CLASS_NAME, e);
         }
 
 
         try
         {
-            ORA_CLOB_CLASS = ClassHelper.getClass("oracle.sql.CLOB", false);
-            ORA_BLOB_CLASS = ClassHelper.getClass("oracle.sql.BLOB", false);
+            ORA_CLOB_CLASS = ClassHelper.getClass(ORA_CLOB_CLASS_NAME, false);
+            ORA_BLOB_CLASS = ClassHelper.getClass(ORA_BLOB_CLASS_NAME, false);
             PARAM_TYPE_INT_ORACLOB = new Class[]{ Integer.TYPE, ORA_CLOB_CLASS };
             PARAM_TYPE_INT_ORABLOB = new Class[]{ Integer.TYPE, ORA_BLOB_CLASS };
             METHOD_SET_CLOB = ClassHelper.getMethod(ORA_PS_CLASS, "setCLOB", PARAM_TYPE_INT_ORACLOB);
@@ -188,7 +191,8 @@
         }
         catch(ClassNotFoundException e)
         {
-            log.info("Can't use Oracle specific BLOB/CLOB classes", e);
+            log.info("Can't use Oracle specific BLOB/CLOB classes using class names: "
+                    + ORA_BLOB_CLASS_NAME + ", " + ORA_CLOB_CLASS_NAME, e);
         }
 
         try
@@ -373,7 +377,10 @@
                     // Set number of cached statements and enable implicit caching
                     METHOD_SET_STATEMENT_CACHE_SIZE.invoke(oraConn, paramStatementCacheSize);
                     METHOD_SET_IMPLICIT_CACHING_ENABLED.invoke(oraConn, PARAM_BOOLEAN_TRUE);
-                    if(log.isDebugEnabled()) log.debug("Oracle's native implicit statement caching enabled for connection " + conn);
+                    if(log.isDebugEnabled())
+                    {
+                        log.debug("Oracle's native implicit statement caching enabled for connection " + conn);
+                    }
                 }
                 catch (Exception e)
                 {
@@ -386,6 +393,13 @@
                 }
             }
         }
+        else
+        {
+            if(log.isDebugEnabled())
+            {
+                log.debug("Can't unwrap connection, statement caching and row prefetching can't be used");
+            }
+        }
     }
 
     /**
@@ -534,7 +548,6 @@
         }
         else if (sqlType == Types.CLOB && oraLargeLobSupportAvailable && value instanceof String)
         {
-            // TODO: If using Oracle update batching with the thin driver, throw exception on 4k limit
             try
             {
                 Object clob = Oracle9iLobHandler.createCLOBFromString(oraConn, (String) value);
@@ -547,7 +560,6 @@
         }
         else if (sqlType == Types.BLOB && oraLargeLobSupportAvailable && value instanceof byte[])
         {
-            // TODO: If using Oracle update batching with the thin driver, throw exception on 2k limit
             try
             {
                 Object blob = Oracle9iLobHandler.createBLOBFromByteArray(oraConn, (byte[]) value);

Modified: db/ojb/branches/OJB_1_0_RELEASE/src/java/org/apache/ojb/broker/platforms/PlatformOracleImpl.java
URL: http://svn.apache.org/viewvc/db/ojb/branches/OJB_1_0_RELEASE/src/java/org/apache/ojb/broker/platforms/PlatformOracleImpl.java?view=diff&rev=492863&r1=492862&r2=492863
==============================================================================
--- db/ojb/branches/OJB_1_0_RELEASE/src/java/org/apache/ojb/broker/platforms/PlatformOracleImpl.java (original)
+++ db/ojb/branches/OJB_1_0_RELEASE/src/java/org/apache/ojb/broker/platforms/PlatformOracleImpl.java Thu Jan  4 18:27:57 2007
@@ -15,33 +15,32 @@
  * limitations under the License.
  */
 
-import org.apache.ojb.broker.util.logging.Logger;
-import org.apache.ojb.broker.util.logging.LoggerFactory;
-import org.apache.ojb.broker.util.ClassHelper;
-import org.apache.ojb.broker.util.sequence.SequenceManagerHelper;
-import org.apache.ojb.broker.metadata.FieldDescriptor;
-import org.apache.ojb.broker.metadata.JdbcConnectionDescriptor;
-import org.apache.ojb.broker.PersistenceBrokerSQLException;
-import org.apache.commons.lang.SerializationUtils;
-
 import java.io.ByteArrayInputStream;
 import java.io.InputStreamReader;
 import java.io.Reader;
-import java.io.StringReader;
 import java.io.Serializable;
+import java.io.StringReader;
 import java.lang.reflect.Field;
 import java.security.AccessController;
 import java.security.PrivilegedAction;
+import java.sql.Blob;
 import java.sql.CallableStatement;
 import java.sql.Connection;
-import java.sql.DatabaseMetaData;
 import java.sql.PreparedStatement;
 import java.sql.SQLException;
 import java.sql.Statement;
 import java.sql.Types;
-import java.sql.Blob;
 import java.util.Properties;
 
+import org.apache.commons.lang.SerializationUtils;
+import org.apache.ojb.broker.PersistenceBrokerSQLException;
+import org.apache.ojb.broker.metadata.FieldDescriptor;
+import org.apache.ojb.broker.metadata.JdbcConnectionDescriptor;
+import org.apache.ojb.broker.util.ClassHelper;
+import org.apache.ojb.broker.util.logging.Logger;
+import org.apache.ojb.broker.util.logging.LoggerFactory;
+import org.apache.ojb.broker.util.sequence.SequenceManagerHelper;
+
 /**
  * This class is a concrete implementation of <code>Platform</code>. Provides an implementation
  * that works around some issues with Oracle in general and Oracle's Thin driver in particular.
@@ -457,34 +456,34 @@
         stmt.registerOutParameter(position, ORACLE_JDBC_TYPE_CURSOR);
     }
 
-    /**
-     * Checks if the supplied connection is using the Oracle thin driver.
-     *
-     * @param conn database connection for which to check JDBC-driver
-     * @return <code>true</code> if the connection is using Oracle thin driver, <code>false</code>
-     *         otherwise.
-     */
-    protected static boolean isUsingOracleThinDriver(Connection conn)
-    {
-        if (conn == null)
-        {
-            return false;
-        }
-        final DatabaseMetaData dbMetaData;
-        final String dbUrl;
-        try
-        {
-            dbMetaData = conn.getMetaData();
-            dbUrl = dbMetaData.getURL();
-            if (dbUrl != null && dbUrl.startsWith(THIN_URL_PREFIX))
-            {
-                return true;
-            }
-        }
-        catch (Exception e)
-        {
-            // ignore it
-        }
-        return false;
-    }
+//    /**
+//     * Checks if the supplied connection is using the Oracle thin driver.
+//     *
+//     * @param conn database connection for which to check JDBC-driver
+//     * @return <code>true</code> if the connection is using Oracle thin driver, <code>false</code>
+//     *         otherwise.
+//     */
+//    protected static boolean isUsingOracleThinDriver(Connection conn)
+//    {
+//        if (conn == null)
+//        {
+//            return false;
+//        }
+//        final DatabaseMetaData dbMetaData;
+//        final String dbUrl;
+//        try
+//        {
+//            dbMetaData = conn.getMetaData();
+//            dbUrl = dbMetaData.getURL();
+//            if (dbUrl != null && dbUrl.startsWith(THIN_URL_PREFIX))
+//            {
+//                return true;
+//            }
+//        }
+//        catch (Exception e)
+//        {
+//            // ignore it
+//        }
+//        return false;
+//    }
 }



---------------------------------------------------------------------
To unsubscribe, e-mail: ojb-dev-unsubscribe@db.apache.org
For additional commands, e-mail: ojb-dev-help@db.apache.org