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 2005/04/03 13:25:19 UTC

cvs commit: db-ojb/src/java/org/apache/ojb/odmg ObjectEnvelope.java ObjectEnvelopeTable.java

arminw      2005/04/03 04:25:19

  Modified:    src/java/org/apache/ojb/odmg Tag: OJB_1_0_RELEASE
                        ObjectEnvelope.java ObjectEnvelopeTable.java
  Log:
  fix bug in handling m:n relation. m:n indirection entry was added to 1:n link list
  
  Revision  Changes    Path
  No                   revision
  No                   revision
  1.32.2.11 +6 -2      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.10
  retrieving revision 1.32.2.11
  diff -u -r1.32.2.10 -r1.32.2.11
  --- ObjectEnvelope.java	22 Mar 2005 17:08:37 -0000	1.32.2.10
  +++ ObjectEnvelope.java	3 Apr 2005 11:25:19 -0000	1.32.2.11
  @@ -714,12 +714,15 @@
                   {
                       buffer.addM2NLinkEntry(cds, getObject(), newObj);
                   }
  +                else
  +                {
  +                    // we have to link the new object
  +                    mod.addLinkOneToN(cds, getObject(), false);
  +                }
                   if(mod.needsInsert())
                   {
                       buffer.addForInsertDependent(mod);
                   }
  -                // we have to link the new object
  -                mod.addLinkOneToN(cds, getObject(), false);
               }
           }
       }
  @@ -770,6 +773,7 @@
   
       void addLinkOneToN(CollectionDescriptor col, Object source, boolean unlink)
       {
  +        if(col.isMtoNRelation()) throw new OJBRuntimeException("Expected an 1:n relation, but specified a m:n");
           LinkEntry entry = new LinkEntryOneToN(source, col, getObject(), unlink);
           linkEntryList.add(entry);
           //setModificationState(getModificationState().markDirty());
  
  
  
  1.32.2.17 +13 -4     db-ojb/src/java/org/apache/ojb/odmg/ObjectEnvelopeTable.java
  
  Index: ObjectEnvelopeTable.java
  ===================================================================
  RCS file: /home/cvs/db-ojb/src/java/org/apache/ojb/odmg/ObjectEnvelopeTable.java,v
  retrieving revision 1.32.2.16
  retrieving revision 1.32.2.17
  diff -u -r1.32.2.16 -r1.32.2.17
  --- ObjectEnvelopeTable.java	3 Apr 2005 02:38:45 -0000	1.32.2.16
  +++ ObjectEnvelopeTable.java	3 Apr 2005 11:25:19 -0000	1.32.2.17
  @@ -27,6 +27,7 @@
   import org.apache.ojb.broker.Identity;
   import org.apache.ojb.broker.OptimisticLockException;
   import org.apache.ojb.broker.PersistenceBroker;
  +import org.apache.ojb.broker.OJBRuntimeException;
   import org.apache.ojb.broker.accesslayer.ConnectionManagerIF;
   import org.apache.ojb.broker.core.proxy.CollectionProxy;
   import org.apache.ojb.broker.core.proxy.CollectionProxyDefaultImpl;
  @@ -173,6 +174,12 @@
   
               // 4. Reorder objects
               reorder();
  +//            System.out.println("## ordering: ");
  +//            for(int i = 0; i < mvOrderOfIds.size(); i++)
  +//            {
  +//                System.out.println("" + mvOrderOfIds.get(i));
  +//            }
  +//            System.out.println("## ordering end");
   
               // 5. write objects.
               writeAllEnvelopes(needsReusePrepare);
  @@ -781,9 +788,10 @@
           }
       }
   
  -    void addM2NLinkEntry(CollectionDescriptor cld, Object leftSource, Object rightSource)
  +    void addM2NLinkEntry(CollectionDescriptor cod, Object leftSource, Object rightSource)
       {
  -        m2nLinkList.add(new LinkEntryMtoN(leftSource, cld, rightSource, false));
  +        if(!cod.isMtoNRelation()) throw new OJBRuntimeException("Expect a m:n releation, but specified a 1:n");
  +        m2nLinkList.add(new LinkEntryMtoN(leftSource, cod, rightSource, false));
       }
   
       void performM2NLinkEntries()
  @@ -797,9 +805,10 @@
           }
       }
   
  -    void addM2NUnlinkEntry(CollectionDescriptor cld, Object leftSource, Object rightSource)
  +    void addM2NUnlinkEntry(CollectionDescriptor cod, Object leftSource, Object rightSource)
       {
  -        m2nUnlinkList.add(new LinkEntryMtoN(leftSource, cld, rightSource, true));
  +        if(!cod.isMtoNRelation()) throw new OJBRuntimeException("Expect a m:n releation, but specified a 1:n");
  +        m2nUnlinkList.add(new LinkEntryMtoN(leftSource, cod, rightSource, true));
       }
   
       void performM2NUnlinkEntries()
  
  
  

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