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 2004/05/13 12:08:21 UTC
cvs commit: db-ojb/src/test/org/apache/ojb/broker AnonymousFieldsTest.java
arminw 2004/05/13 03:08:20
Modified: src/test/org/apache/ojb/broker AnonymousFieldsTest.java
Log:
add new test for anonymous key using with proxy reference
Revision Changes Path
1.14 +109 -0 db-ojb/src/test/org/apache/ojb/broker/AnonymousFieldsTest.java
Index: AnonymousFieldsTest.java
===================================================================
RCS file: /home/cvs/db-ojb/src/test/org/apache/ojb/broker/AnonymousFieldsTest.java,v
retrieving revision 1.13
retrieving revision 1.14
diff -u -r1.13 -r1.14
--- AnonymousFieldsTest.java 22 Apr 2004 16:12:35 -0000 1.13
+++ AnonymousFieldsTest.java 13 May 2004 10:08:20 -0000 1.14
@@ -10,6 +10,8 @@
import org.apache.ojb.broker.query.Query;
import org.apache.ojb.broker.query.QueryByCriteria;
import org.apache.ojb.broker.query.QueryFactory;
+import org.apache.ojb.broker.metadata.ClassDescriptor;
+import org.apache.ojb.broker.metadata.ObjectReferenceDescriptor;
import org.apache.ojb.junit.PBTestCase;
/**
@@ -382,6 +384,113 @@
assertNotNull(aChild.getParentComponent());
assertEquals(parent, aChild.getParentComponent());
assertNotNull(lookedUpGroup);
+ }
+
+ public void testSerializedObjectsRefreshWithProxy()
+ {
+ String prefix = "testSerializedObjectsRefreshWithProxy_" + System.currentTimeMillis() + "_";
+
+ ClassDescriptor cld = broker.getClassDescriptor(ObjectRepository.Component.class);
+ ObjectReferenceDescriptor ord = cld.getObjectReferenceDescriptorByName("parentComponent");
+ boolean oldState = ord.isLazy();
+ try
+ {
+ ord.setLazy(true);
+ ObjectRepository.Component parent = new ObjectRepository.Component();
+ parent.setName(prefix + "main_component");
+
+ ObjectRepository.Component compSub1 = new ObjectRepository.Component();
+ compSub1.setName(prefix + "sub_1");
+
+ ObjectRepository.Component compSub2 = new ObjectRepository.Component();
+ compSub2.setName(prefix + "sub_2");
+
+ ObjectRepository.Component compSub3 = new ObjectRepository.Component();
+ compSub2.setName(prefix + "sub_3");
+
+ ObjectRepository.Group group = new ObjectRepository.Group();
+ group.setName(prefix + "test_group");
+
+ compSub1.setParentComponent(parent);
+ compSub2.setParentComponent(parent);
+ compSub3.setParentComponent(parent);
+ ArrayList list = new ArrayList();
+ list.add(compSub1);
+ list.add(compSub2);
+ list.add(compSub3);
+ parent.setChildComponents(list);
+ parent.setGroup(group);
+
+ broker.beginTransaction();
+ broker.store(parent);
+ broker.commitTransaction();
+
+ broker.clearCache();
+ Query query = QueryFactory.newQuery(parent);
+ parent = (ObjectRepository.Component) broker.getObjectByQuery(query);
+
+ Query groupQuery = QueryFactory.newQuery(group);
+ ObjectRepository.Group lookedUpGroup = (ObjectRepository.Group) broker.getObjectByQuery(groupQuery);
+
+ assertNotNull(parent);
+ assertNotNull(parent.getGroup());
+ assertNotNull(parent.getChildComponents());
+ assertNotNull(parent.getName());
+ assertEquals(3, parent.getChildComponents().size());
+ assertEquals(group.getName(), (parent.getGroup().getName()));
+ ObjectRepository.Component aChild = (ObjectRepository.Component) parent.getChildComponents().iterator().next();
+ assertNotNull(aChild);
+ assertNotNull(aChild.getParentComponent());
+ assertEquals(parent, aChild.getParentComponent());
+ assertNotNull(lookedUpGroup);
+
+ //*************************************
+ assertNotNull(parent);
+ assertNotNull(parent.getGroup());
+ parent = (ObjectRepository.Component) serializeDeserializeObject(parent);
+ broker.retrieveAllReferences(parent);
+ assertNotNull(parent);
+ /*
+ Now we have a problem! After serialization we can't find the anonymous keys
+ for parent object, because object identity has changed!!
+ This is now fixed in class QueryReferenceBroker#getReferencedObjectIdentity
+ */
+ assertNotNull(parent.getGroup());
+ //*************************************
+ assertNotNull(parent.getChildComponents());
+ assertNotNull(parent.getName());
+ assertEquals(3, parent.getChildComponents().size());
+ aChild = (ObjectRepository.Component) parent.getChildComponents().iterator().next();
+ assertNotNull(aChild);
+ assertNotNull(aChild.getParentComponent());
+ assertEquals(parent, aChild.getParentComponent());
+
+ broker.beginTransaction();
+ broker.store(parent);
+ broker.commitTransaction();
+
+ // now nothing should happen, because we don't make any changes
+ broker.clearCache();
+ query = QueryFactory.newQuery(parent);
+ parent = (ObjectRepository.Component) broker.getObjectByQuery(query);
+ groupQuery = QueryFactory.newQuery(group);
+ lookedUpGroup = (ObjectRepository.Group) broker.getObjectByQuery(groupQuery);
+ assertNotNull(parent);
+ assertNotNull(parent.getGroup());
+ assertNotNull(parent.getChildComponents());
+ assertNotNull(parent.getName());
+ assertEquals(3, parent.getChildComponents().size());
+ assertEquals(group.getName(), (parent.getGroup().getName()));
+ aChild = (ObjectRepository.Component) parent.getChildComponents().iterator().next();
+ assertNotNull(aChild);
+ assertNotNull(aChild.getParentComponent());
+ assertEquals(parent, aChild.getParentComponent());
+ assertNotNull(lookedUpGroup);
+ }
+ finally
+ {
+ ord.setLazy(oldState);
+ }
}
/**
---------------------------------------------------------------------
To unsubscribe, e-mail: ojb-dev-unsubscribe@db.apache.org
For additional commands, e-mail: ojb-dev-help@db.apache.org