Author: reto
Date: Mon Mar 22 11:33:37 2010
New Revision: 926039

URL: http://svn.apache.org/viewvc?rev=926039&view=rev
Log:
preventing double notification on implementations not oveeriding performRemove

Modified:
    
incubator/clerezza/trunk/org.apache.clerezza.parent/org.apache.clerezza.rdf.core/src/main/java/org/apache/clerezza/rdf/core/impl/AbstractTripleCollection.java

Modified: 
incubator/clerezza/trunk/org.apache.clerezza.parent/org.apache.clerezza.rdf.core/src/main/java/org/apache/clerezza/rdf/core/impl/AbstractTripleCollection.java
URL: 
http://svn.apache.org/viewvc/incubator/clerezza/trunk/org.apache.clerezza.parent/org.apache.clerezza.rdf.core/src/main/java/org/apache/clerezza/rdf/core/impl/AbstractTripleCollection.java?rev=926039&r1=926038&r2=926039&view=diff
==============================================================================
--- 
incubator/clerezza/trunk/org.apache.clerezza.parent/org.apache.clerezza.rdf.core/src/main/java/org/apache/clerezza/rdf/core/impl/AbstractTripleCollection.java
 (original)
+++ 
incubator/clerezza/trunk/org.apache.clerezza.parent/org.apache.clerezza.rdf.core/src/main/java/org/apache/clerezza/rdf/core/impl/AbstractTripleCollection.java
 Mon Mar 22 11:33:37 2010
@@ -60,7 +60,7 @@ public abstract class AbstractTripleColl
                if (!(o instanceof Triple)) {
                        return false;
                }
-               Triple t = (Triple)o;
+               Triple t = (Triple) o;
                return filter(t.getSubject(), t.getPredicate(), 
t.getObject()).hasNext();
        }
 
@@ -114,7 +114,7 @@ public abstract class AbstractTripleColl
                }
                return success;
        }
-       
+
        /**
         * A subclass of <code>AbstractTripleCollection</code> should override 
         * this method instead of <code>add</code> for graph event support to be
@@ -129,7 +129,7 @@ public abstract class AbstractTripleColl
 
        @Override
        public boolean remove(Object o) {
-               Triple triple  = (Triple) o;
+               Triple triple = (Triple) o;
                boolean success = performRemove(triple);
                if (success) {
                        dispatchEvent(new RemoveEvent(this, triple));
@@ -158,7 +158,14 @@ public abstract class AbstractTripleColl
         * @return
         */
        protected boolean performRemove(Triple triple) {
-               return super.remove(triple);
+               Iterator<Triple> e = performFilter(null, null, null);
+               while (e.hasNext()) {
+                       if (triple.equals(e.next())) {
+                               e.remove();
+                               return true;
+                       }
+               }
+               return false;
        }
 
        /**
@@ -170,7 +177,7 @@ public abstract class AbstractTripleColl
         * @param type The type of modification
         */
        protected void dispatchEvent(GraphEvent event) {
-               for(ListenerConfiguration config : listenerConfigs) {
+               for (ListenerConfiguration config : listenerConfigs) {
                        if (config.getFilter().match(event.getTriple())) {
                                
delayedNotificator.sendEventToListener(config.getListener(), event);
                        }
@@ -203,8 +210,8 @@ public abstract class AbstractTripleColl
                delayedNotificator.removeDelayedListener(listener);
        }
 
-
        private static class ListenerConfiguration {
+
                private GraphListener listener;
                private FilterTriple filter;
 
@@ -226,7 +233,5 @@ public abstract class AbstractTripleColl
                FilterTriple getFilter() {
                        return filter;
                }
-
-
        }
 }


Reply via email to