Author: michiel
Date: 2009-10-27 19:10:34 +0100 (Tue, 27 Oct 2009)
New Revision: 39395

Modified:
   
mmbase/trunk/core/src/main/java/org/mmbase/bridge/implementation/BasicNode.java
Log:
  MMB-1889

Modified: 
mmbase/trunk/core/src/main/java/org/mmbase/bridge/implementation/BasicNode.java
===================================================================
--- 
mmbase/trunk/core/src/main/java/org/mmbase/bridge/implementation/BasicNode.java 
    2009-10-27 17:35:17 UTC (rev 39394)
+++ 
mmbase/trunk/core/src/main/java/org/mmbase/bridge/implementation/BasicNode.java 
    2009-10-27 18:10:34 UTC (rev 39395)
@@ -617,6 +617,31 @@
      * @param type  the type of relation (-1 = don't care)
      */
     private void deleteRelations(int type) {
+
+
+        if (cloud instanceof Transaction) {
+            // Fixing MMB-1889: should perhaps be somehow delegated to the 
cloud/transaction object itself. This is hackery
+            Transaction t = (Transaction) cloud;
+            String myNumber = "" + getNumber();
+            for (Node n : t.getNodes()) {
+                if (n instanceof Relation) {
+                    Relation r = (Relation) n;
+                    if (log.isDebugEnabled()) {
+                        log.debug("Considering" + r);
+                    }
+                    if (type == -1 || r.getIntValue("rnumber") == type) {
+                        String sNumber = r.getIntValue("snumber") < 0 ? 
r.getStringValue("_snumber") : r.getStringValue("snumber");
+                        String dNumber = r.getIntValue("dnumber") < 0 ? 
r.getStringValue("_dnumber") : r.getStringValue("dnumber");
+
+                        if (sNumber.equals(myNumber) || 
dNumber.equals(myNumber)) {
+                            r.delete(true);
+                        }
+                    }
+                }
+            }
+        }
+
+
         List<MMObjectNode> relations;
         try {
             if (type == -1) {
@@ -630,6 +655,8 @@
         }
         // check first
         checkAccount();
+
+
         for (MMObjectNode node : relations) {
             cloud.verify(Operation.DELETE, node.getNumber());
         }

_______________________________________________
Cvs mailing list
Cvs@lists.mmbase.org
http://lists.mmbase.org/mailman/listinfo/cvs

Reply via email to