dain 2005/02/11 17:30:24
Modified: modules/itests/src/itest/org/openejb/test/stateless
StatelessHandleTests.java
StatelessHomeHandleTests.java
Log:
CMP container builder now propertly maps remove methods. This eliminates the
ArrayIndexOutOfBoundsException in TransactionPolicyManager.
Handle and HomeHandle can not be copied with serialization on client side.
Added Handle copy tests to itest suite
Revision Changes Path
1.2 +47 -10
openejb/modules/itests/src/itest/org/openejb/test/stateless/StatelessHandleTests.java
Index: StatelessHandleTests.java
===================================================================
RCS file:
/home/projects/openejb/scm/openejb/modules/itests/src/itest/org/openejb/test/stateless/StatelessHandleTests.java,v
retrieving revision 1.1
retrieving revision 1.2
diff -u -r1.1 -r1.2
--- StatelessHandleTests.java 8 Sep 2004 07:20:15 -0000 1.1
+++ StatelessHandleTests.java 11 Feb 2005 22:30:24 -0000 1.2
@@ -44,7 +44,13 @@
*/
package org.openejb.test.stateless;
+import java.rmi.MarshalledObject;
+import java.io.ByteArrayOutputStream;
+import java.io.ObjectOutputStream;
+import java.io.ByteArrayInputStream;
+import java.io.ObjectInputStream;
import javax.ejb.EJBObject;
+import javax.ejb.Handle;
/**
* [7] Should be run as the seventh test suite of the
BasicStatelessTestClients
@@ -88,6 +94,38 @@
}
}
+ public void test02_copyHandleByMarshalledObject() {
+ try {
+ MarshalledObject obj = new MarshalledObject(ejbHandle);
+ Handle copy = (Handle) obj.get();
+
+ EJBObject object = copy.getEJBObject();
+ assertNotNull("The EJBObject is null", object);
+ assertTrue("EJBObjects are not identical",
object.isIdentical(ejbObject));
+ } catch (Exception e) {
+ fail("Received Exception " + e.getClass() + " : " +
e.getMessage());
+ }
+ }
+
+ public void test03_copyHandleBySerialize() {
+ try {
+ ByteArrayOutputStream baos = new ByteArrayOutputStream();
+ ObjectOutputStream oos = new ObjectOutputStream(baos);
+ oos.writeObject(ejbHandle);
+ oos.flush();
+ oos.close();
+ ByteArrayInputStream bais = new
ByteArrayInputStream(baos.toByteArray());
+ ObjectInputStream ois = new ObjectInputStream(bais);
+ Handle copy = (Handle) ois.readObject();
+
+ EJBObject object = copy.getEJBObject();
+ assertNotNull("The EJBObject is null", object);
+ assertTrue("EJBObjects are not identical",
object.isIdentical(ejbObject));
+ } catch (Exception e) {
+ fail("Received Exception " + e.getClass() + " : " +
e.getMessage());
+ }
+ }
+
/**
* <B>5.6 Client view of session object�s life cycle</B>
* <P>
@@ -102,16 +140,16 @@
* itself.
* </P>
*/
- public void test02_EJBHome_remove() {
+ public void test04_EJBHome_remove() {
try {
ejbHome.remove(ejbHandle);
-// try{
-// ejbObject.businessMethod("Should throw an exception");
-// assertTrue( "Calling business method after removing the
EJBObject does not throw an exception", false );
-// } catch (Exception e){
-// assertTrue( true );
-// return;
-// }
+ try{
+ ejbObject.businessMethod("Should throw an exception");
+ assertTrue( "Calling business method after removing the
EJBObject does not throw an exception", false );
+ } catch (Exception e){
+ assertTrue( true );
+ return;
+ }
} catch (Exception e) {
fail("Received Exception " + e.getClass() + " : " +
e.getMessage());
}
@@ -119,5 +157,4 @@
//
// Test handle methods
//=================================
-
}
1.2 +39 -2
openejb/modules/itests/src/itest/org/openejb/test/stateless/StatelessHomeHandleTests.java
Index: StatelessHomeHandleTests.java
===================================================================
RCS file:
/home/projects/openejb/scm/openejb/modules/itests/src/itest/org/openejb/test/stateless/StatelessHomeHandleTests.java,v
retrieving revision 1.1
retrieving revision 1.2
diff -u -r1.1 -r1.2
--- StatelessHomeHandleTests.java 8 Sep 2004 07:20:15 -0000 1.1
+++ StatelessHomeHandleTests.java 11 Feb 2005 22:30:24 -0000 1.2
@@ -44,7 +44,13 @@
*/
package org.openejb.test.stateless;
+import java.io.ByteArrayInputStream;
+import java.io.ByteArrayOutputStream;
+import java.io.ObjectInputStream;
+import java.io.ObjectOutputStream;
+import java.rmi.MarshalledObject;
import javax.ejb.EJBHome;
+import javax.ejb.HomeHandle;
/**
* [6] Should be run as the sixth test suite of the BasicStatelessTestClients
@@ -73,8 +79,39 @@
fail("Received Exception " + e.getClass() + " : " +
e.getMessage());
}
}
+
+ public void test02_copyHandleByMarshalledObject() {
+ try {
+ MarshalledObject obj = new MarshalledObject(ejbHomeHandle);
+ HomeHandle copy = (HomeHandle) obj.get();
+
+ assertNotNull("The HomeHandle copy is null", copy);
+ EJBHome home = copy.getEJBHome();
+ assertNotNull("The EJBHome is null", home);
+ } catch (Exception e) {
+ fail("Received Exception " + e.getClass() + " : " +
e.getMessage());
+ }
+ }
+
+ public void test03_copyHandleBySerialize() {
+ try {
+ ByteArrayOutputStream baos = new ByteArrayOutputStream();
+ ObjectOutputStream oos = new ObjectOutputStream(baos);
+ oos.writeObject(ejbHomeHandle);
+ oos.flush();
+ oos.close();
+ ByteArrayInputStream bais = new
ByteArrayInputStream(baos.toByteArray());
+ ObjectInputStream ois = new ObjectInputStream(bais);
+ HomeHandle copy = (HomeHandle) ois.readObject();
+
+ assertNotNull("The HomeHandle copy is null", copy);
+ EJBHome home = copy.getEJBHome();
+ assertNotNull("The EJBHome is null", home);
+ } catch (Exception e) {
+ fail("Received Exception " + e.getClass() + " : " +
e.getMessage());
+ }
+ }
//
// Test home handle methods
//=================================
-
}