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;
}
-
-
}
}