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