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:58:54 UTC

svn commit: r408864 - /db/ojb/branches/OJB_1_0_RELEASE/src/test/org/apache/ojb/broker/lob/LOBTest.java

Author: arminw
Date: Tue May 23 02:58:54 2006
New Revision: 408864

URL: http://svn.apache.org/viewvc?rev=408864&view=rev
Log:
fix JDK1.3 compatibility issue, add new test

Modified:
    db/ojb/branches/OJB_1_0_RELEASE/src/test/org/apache/ojb/broker/lob/LOBTest.java

Modified: db/ojb/branches/OJB_1_0_RELEASE/src/test/org/apache/ojb/broker/lob/LOBTest.java
URL: http://svn.apache.org/viewvc/db/ojb/branches/OJB_1_0_RELEASE/src/test/org/apache/ojb/broker/lob/LOBTest.java?rev=408864&r1=408863&r2=408864&view=diff
==============================================================================
--- db/ojb/branches/OJB_1_0_RELEASE/src/test/org/apache/ojb/broker/lob/LOBTest.java (original)
+++ db/ojb/branches/OJB_1_0_RELEASE/src/test/org/apache/ojb/broker/lob/LOBTest.java Tue May 23 02:58:54 2006
@@ -22,10 +22,14 @@
 import java.io.Writer;
 import java.sql.Blob;
 import java.sql.Clob;
+import java.util.Collection;
+import java.util.Iterator;
 
 import org.apache.commons.lang.ArrayUtils;
 import org.apache.commons.lang.SerializationUtils;
 import org.apache.ojb.broker.Identity;
+import org.apache.ojb.broker.query.QueryFactory;
+import org.apache.ojb.broker.query.Criteria;
 import org.apache.ojb.broker.platforms.PlatformHsqldbImpl;
 import org.apache.ojb.broker.util.ObjectModification;
 import org.apache.ojb.junit.PBTestCase;
@@ -62,6 +66,100 @@
         super.tearDown();
     }
 
+// comment out all test when JDK1.3 was used
+
+//#ifdef JDBC30
+
+    public void testQuery() throws Exception
+    {
+        int size = 555;
+
+        byte[] barr = new byte[size];
+        char[] carr = new char[size];
+        for(int i = 0; i < size; i++)
+        {
+            barr[i] = (byte) 'x';
+            carr[i] = 'y';
+        }
+
+        broker.beginTransaction();
+        Blob b = broker.serviceLobHelper().newBlob();
+        b.setBytes(1, barr);
+        Clob c = broker.serviceLobHelper().newClob();
+        c.setString(1, new String(carr));
+        LobObject obj = new LobObject();
+        obj.setBlob(b);
+        obj.setClob(c);
+        broker.store(obj);
+        broker.commitTransaction();
+
+        broker.beginTransaction();
+        Criteria crit = new Criteria();
+        crit.addNotNull("blob");
+        Collection result = broker.getCollectionByQuery(QueryFactory.newQuery(LobObject.class, crit));
+        for(Iterator iterator = result.iterator(); iterator.hasNext();)
+        {
+            LobObject objRead =  (LobObject) iterator.next();
+            assertNotNull("BLOB expected", objRead.getBlob());
+            objRead.getBlob().length();
+        }
+
+        result = broker.getCollectionByQuery(QueryFactory.newQuery(LobObject.class, crit));
+        for(Iterator iterator = result.iterator(); iterator.hasNext();)
+        {
+            LobObject objRead =  (LobObject) iterator.next();
+            assertNotNull("BLOB expected", objRead.getBlob());
+            objRead.getBlob().length();
+        }
+        broker.commitTransaction();
+    }
+
+    public void testUpdateWithoutRefresh() throws Exception
+    {
+        int size = 555;
+
+        byte[] barr = new byte[size];
+        char[] carr = new char[size];
+        for(int i = 0; i < size; i++)
+        {
+            barr[i] = (byte) 'x';
+            carr[i] = 'y';
+        }
+
+        broker.beginTransaction();
+        Blob b = broker.serviceLobHelper().newBlob();
+        b.setBytes(1, barr);
+        Clob c = broker.serviceLobHelper().newClob();
+        c.setString(1, new String(carr));
+        LobObject obj = new LobObject();
+        obj.setBlob(b);
+        obj.setClob(c);
+        broker.store(obj);
+        broker.commitTransaction();
+
+        broker.beginTransaction();
+        broker.serviceLobHelper().setLobAutoRefresh(false);
+        Identity oid = broker.serviceIdentity().buildIdentity(obj);
+
+        // if no cache is used skip this test
+        if(broker.serviceObjectCache().lookup(oid) == null) return;
+
+        LobObject objRead = (LobObject) broker.getObjectByIdentity(oid);
+        assertNotNull("BLOB was not stored", objRead.getBlob());
+        assertNotNull("CLOB was not stored", objRead.getClob());
+
+        try
+        {
+            broker.store(obj, ObjectModification.UPDATE);
+        }
+        catch(LobException expected)
+        {
+            broker.abortTransaction();
+        }
+
+        if(broker.isInTransaction()) broker.abortTransaction();
+    }
+
     public void testLobAutoRefresh() throws Exception
     {
         int size = 50;
@@ -309,8 +407,12 @@
 
         // try update 2
         broker.beginTransaction();
+
+        // TODO: arminw: seems that under specific conditions this test freeze
+        //here, when test testLOBUpdateSetBlobSetClob() runs against mysql
         objRead = (LobObject) broker.getObjectByIdentity(oid);
         broker.serviceLobHelper().refreshLob(objRead);
+
         try
         {
             switch(updateType)
@@ -676,6 +778,17 @@
         assertEquals("abCDefgh", clob2.getSubString(1, (int) clob2.length()));
     }
 
+
+//#else
+
+/*
+                public void testEmpty()
+                {
+                    ojbSkipTestMessage("Skip all LOB tests when using JDK1.3");
+                }
+*/
+
+//#endif
 
     //*******************************************************
     // inner class - test class



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