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: [EMAIL PROTECTED]
For additional commands, e-mail: [EMAIL PROTECTED]

Reply via email to