[prev in list] [next in list] [prev in thread] [next in thread] 

List:       ojb-dev
Subject:    cvs commit: db-ojb/src/test/org/apache/ojb/odmg PersonWithArrayTest.java
From:       arminw () apache ! org
Date:       2005-02-24 17:12:19
Message-ID: 20050224171219.77663.qmail () minotaur ! apache ! org
[Download RAW message or body]

arminw      2005/02/24 09:12:19

  Modified:    src/java/org/apache/ojb/odmg Tag: OJB_1_0_RELEASE
                        ObjectEnvelope.java
               src/test/org/apache/ojb/odmg Tag: OJB_1_0_RELEASE
                        PersonWithArrayTest.java
  Log:
  fix problem with proxy objects
  
  Revision  Changes    Path
  No                   revision
  No                   revision
  1.32.2.6  +25 -1     db-ojb/src/java/org/apache/ojb/odmg/ObjectEnvelope.java
  
  Index: ObjectEnvelope.java
  ===================================================================
  RCS file: /home/cvs/db-ojb/src/java/org/apache/ojb/odmg/ObjectEnvelope.java,v
  retrieving revision 1.32.2.5
  retrieving revision 1.32.2.6
  diff -u -r1.32.2.5 -r1.32.2.6
  --- ObjectEnvelope.java	7 Feb 2005 20:42:42 -0000	1.32.2.5
  +++ ObjectEnvelope.java	24 Feb 2005 17:12:18 -0000	1.32.2.6
  @@ -519,7 +519,31 @@
           while (newIter.hasNext())
           {
               Object newObj = newIter.next();
  -            if ((oldCol == null) || (!oldCol.contains(newObj)))
  +            /*
  +            arminw:
  +            workaround, if the new object is an proxy object we have to
  +            compare the Identity objects
  +            */
  +            if(oldCol != null && ProxyHelper.isProxy(newObj))
  +            {
  +                Identity oidNew = ProxyHelper.getIndirectionHandler(newObj).getIdentity();
  +                boolean isNew = true;
  +                for(Iterator iterator = oldCol.iterator(); iterator.hasNext();)
  +                {
  +                    Identity oidOld =  getBroker().serviceIdentity().buildIdentity(iterator.next());
  +                    if(oidNew.equals(oidOld))
  +                    {
  +                        isNew = false;
  +                        break;
  +                    }
  +                }
  +                if(isNew)
  +                {
  +                    ObjectEnvelope mod = buffer.get(newObj, true);
  +                    mod.setModificationState(mod.getModificationState().markNew());
  +                }
  +            }
  +            else if ((oldCol == null) || (!oldCol.contains(newObj)))
               {
                   ObjectEnvelope mod = buffer.get(newObj, true);
                   mod.setModificationState(mod.getModificationState().markNew());
  
  
  
  No                   revision
  No                   revision
  1.6.2.4   +2 -2      db-ojb/src/test/org/apache/ojb/odmg/PersonWithArrayTest.java
  
  Index: PersonWithArrayTest.java
  ===================================================================
  RCS file: /home/cvs/db-ojb/src/test/org/apache/ojb/odmg/PersonWithArrayTest.java,v
  retrieving revision 1.6.2.3
  retrieving revision 1.6.2.4
  diff -u -r1.6.2.3 -r1.6.2.4
  --- PersonWithArrayTest.java	7 Feb 2005 17:38:22 -0000	1.6.2.3
  +++ PersonWithArrayTest.java	24 Feb 2005 17:12:19 -0000	1.6.2.4
  @@ -242,12 +242,12 @@
           qry.bind(firstnameFather);
           result = (Collection) qry.execute();
           tx.commit();
  +        assertEquals("Exactly one element in result set", 1, result.size());
   
           tx.begin();
  -        assertEquals("Exactly one element in result set", 1, result.size());
           Person returnedFather = (Person) result.iterator().next();
           // should retrieve new instance, cause we clear the cache
  -        assertTrue("not same", returnedFather != father);
  +        assertTrue("not same instance expected", returnedFather != father);
           Person[] returnedChildren = returnedFather.getChildren();
           assertNotNull(returnedChildren);
           assertEquals(2, returnedChildren.length);
  
  
  

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

[prev in list] [next in list] [prev in thread] [next in thread] 

Configure | About | News | Add a list | Sponsored by KoreLogic