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 2006/05/23 11:57:06 UTC
svn commit: r408863 -
/db/ojb/branches/OJB_1_0_RELEASE/src/java/org/apache/ojb/broker/platforms/PlatformDefaultImpl.java
Author: arminw
Date: Tue May 23 02:57:06 2006
New Revision: 408863
URL: http://svn.apache.org/viewvc?rev=408863&view=rev
Log:
fix JDK1.3 compatibility issue
Modified:
db/ojb/branches/OJB_1_0_RELEASE/src/java/org/apache/ojb/broker/platforms/PlatformDefaultImpl.java
Modified: db/ojb/branches/OJB_1_0_RELEASE/src/java/org/apache/ojb/broker/platforms/PlatformDefaultImpl.java
URL: http://svn.apache.org/viewvc/db/ojb/branches/OJB_1_0_RELEASE/src/java/org/apache/ojb/broker/platforms/PlatformDefaultImpl.java?rev=408863&r1=408862&r2=408863&view=diff
==============================================================================
--- db/ojb/branches/OJB_1_0_RELEASE/src/java/org/apache/ojb/broker/platforms/PlatformDefaultImpl.java (original)
+++ db/ojb/branches/OJB_1_0_RELEASE/src/java/org/apache/ojb/broker/platforms/PlatformDefaultImpl.java Tue May 23 02:57:06 2006
@@ -333,7 +333,7 @@
}
ps.setBinaryStream(index, b.getBinaryStream(), length);
}
- else if(locatorsUpdateCopy(ps.getConnection()))
+ else if(detectLocatorsUpdateState(ps))
{
ps.setBlob(index, b);
}
@@ -379,7 +379,7 @@
}
ps.setCharacterStream(index, c.getCharacterStream(), length);
}
- else if(locatorsUpdateCopy(ps.getConnection()))
+ else if(detectLocatorsUpdateState(ps))
{
ps.setClob(index, c);
}
@@ -584,6 +584,32 @@
}
/**
+ * Return the state of locator object update state and add workaround for
+ * problem with statement pooling with common-dbcp.
+ */
+ protected boolean detectLocatorsUpdateState(Statement stmt) throws SQLException
+ {
+ // TODO: Fix this, add broker instance on Platform method calls
+ Connection con = stmt.getConnection();
+ if(con == null)
+ {
+ /*
+ arminw: workaround for problem with statement pooling and faulty implementation of method
+ Statement.getConnection()
+ */
+ log.warn("Can't detect LOB locators update state from connection metadata, specified connection" +
+ " instance is 'null', e.g. this can be a statement pooling problem when OJB use method" +
+ " Statement.getConnection() and current Connection isn't reassign. Will use default" +
+ " setting this time.");
+ return true;
+ }
+ else
+ {
+ return locatorsUpdateCopy(con);
+ }
+ }
+
+ /**
* @see Platform#locatorsUpdateCopy(java.sql.Connection)
*/
public boolean locatorsUpdateCopy(Connection con)
@@ -593,21 +619,28 @@
/*
TODO: Seems we have to override this method in each Platform Impl for proper JDK1.3 support
*/
+
+//#ifdef JDBC30
+
try
{
-//#ifdef JDBC30
+
locatorsUpdateCopy = con.getMetaData().locatorsUpdateCopy() ? Boolean.TRUE : Boolean.FALSE;
-//#else
-/*
- locatorsUpdateCopy = Boolean.TRUE;
-*/
-//#endif
}
catch(SQLException e)
{
log.error("Can't detect LOB locators support type, use default setting" , e);
locatorsUpdateCopy = Boolean.TRUE;
}
+
+//#else
+
+/*
+ locatorsUpdateCopy = Boolean.TRUE;
+*/
+
+//#endif
+
}
return locatorsUpdateCopy.booleanValue();
}
---------------------------------------------------------------------
To unsubscribe, e-mail: ojb-dev-unsubscribe@db.apache.org
For additional commands, e-mail: ojb-dev-help@db.apache.org