[Reasoner4j-user] SF.net SVN: reasoner4j:[55] trunk/reasoner4j/src/main/java/net/sf/ reasoner4j/fac
Status: Pre-Alpha
Brought to you by:
luc_peuvrier
|
From: <luc...@us...> - 2011-01-07 04:28:46
|
Revision: 55
http://reasoner4j.svn.sourceforge.net/reasoner4j/?rev=55&view=rev
Author: luc_peuvrier
Date: 2011-01-07 04:28:39 +0000 (Fri, 07 Jan 2011)
Log Message:
-----------
added missing assertion fact set is opened
Modified Paths:
--------------
trunk/reasoner4j/src/main/java/net/sf/reasoner4j/fact/AbstractFactSet.java
trunk/reasoner4j/src/main/java/net/sf/reasoner4j/fact/AbstractSubFactSet.java
trunk/reasoner4j/src/main/java/net/sf/reasoner4j/fact/AllFactSet.java
trunk/reasoner4j/src/main/java/net/sf/reasoner4j/fact/ObjectOfSubjectPredicate.java
trunk/reasoner4j/src/main/java/net/sf/reasoner4j/fact/PredicateObjectOfSubject.java
trunk/reasoner4j/src/main/java/net/sf/reasoner4j/fact/PredicateOfSubjectObject.java
trunk/reasoner4j/src/main/java/net/sf/reasoner4j/fact/SingleFactSet.java
trunk/reasoner4j/src/main/java/net/sf/reasoner4j/fact/SubjectObjectOfPredicate.java
trunk/reasoner4j/src/main/java/net/sf/reasoner4j/fact/SubjectOfPredicateObject.java
trunk/reasoner4j/src/main/java/net/sf/reasoner4j/fact/SubjectPredicateOfObject.java
Modified: trunk/reasoner4j/src/main/java/net/sf/reasoner4j/fact/AbstractFactSet.java
===================================================================
--- trunk/reasoner4j/src/main/java/net/sf/reasoner4j/fact/AbstractFactSet.java 2011-01-07 03:48:34 UTC (rev 54)
+++ trunk/reasoner4j/src/main/java/net/sf/reasoner4j/fact/AbstractFactSet.java 2011-01-07 04:28:39 UTC (rev 55)
@@ -39,6 +39,8 @@
private boolean open;
+ private Exception closeTrace;
+
public AbstractFactSet() {
super();
open = true;
@@ -70,16 +72,18 @@
protected void assertOpen() {
if (!open) {
- throw new ReasonerException("fact set closed");
+ throw new ReasonerException("fact set closed", closeTrace);
}
}
@Override
public void close() {
if (open) {
+ assert isRemovable();
open = false;
+ closeTrace = new Exception("close trace");
} else {
- throw new ReasonerException("fact set closed");
+ throw new ReasonerException("fact set closed", closeTrace);
}
}
@@ -95,16 +99,19 @@
@Override
public boolean contains(final IFact<T> fact) {
+ assertOpen();
return get(fact.getSubject(), fact.getPredicate(), fact.getObject()) != null;
}
@Override
public boolean contains(T subject, T predicate, T object) {
+ assertOpen();
return get(subject, predicate, object) != null;
}
@Override
public boolean isRemovable() {
+ assertOpen();
return !hasListener() && isEmpty();
}
}
Modified: trunk/reasoner4j/src/main/java/net/sf/reasoner4j/fact/AbstractSubFactSet.java
===================================================================
--- trunk/reasoner4j/src/main/java/net/sf/reasoner4j/fact/AbstractSubFactSet.java 2011-01-07 03:48:34 UTC (rev 54)
+++ trunk/reasoner4j/src/main/java/net/sf/reasoner4j/fact/AbstractSubFactSet.java 2011-01-07 04:28:39 UTC (rev 55)
@@ -44,17 +44,20 @@
@Override
public SingleFactSet<T> getOrCreateSingleFactSet(final T subject,
final T predicate, final T object) {
+ assertOpen();
return parentFactSet.getOrCreateSingleFactSet(subject, predicate,
object);
}
@Override
public void assertFact(final CauseIdentifiedFact<T> fact) {
+ assertOpen();
parentFactSet.assertFact(fact);
}
@Override
public void retractFact(final CauseIdentifiedFact<T> fact) {
+ assertOpen();
parentFactSet.retractFact(fact);
}
@@ -66,24 +69,28 @@
@Override
public T getSubject() {
+ assertOpen();
// by default no subject defined
return null;
}
@Override
public T getPredicate() {
+ assertOpen();
// by default no predicate defined
return null;
}
@Override
public T getObject() {
+ assertOpen();
// by default no object defined
return null;
}
@Override
public void fireAsserted(final CauseIdentifiedFact<T> fact) {
+ assertOpen();
try {
if (!listenerSet.isEmpty()) {
for (IFactSetListener<T> listener : listenerSet) {
@@ -99,6 +106,7 @@
public void fireRetracted(final CauseIdentifiedFact<T> fact) {
try {
if (!listenerSet.isEmpty()) {
+ assertOpen();
for (IFactSetListener<T> listener : listenerSet) {
listener.retracted(fact.getFact());
}
@@ -111,24 +119,28 @@
@Override
public void fireAsserted(ISubFactSet<T> subFactSet,
CauseIdentifiedFact<T> fact) {
+ assertOpen();
parentFactSet.fireAsserted(subFactSet, fact);
}
@Override
public void fireRetracted(ISubFactSet<T> subFactSet,
CauseIdentifiedFact<T> fact) {
+ assertOpen();
parentFactSet.fireRetracted(subFactSet, fact);
}
@Override
public boolean addFact(final CauseIdentifiedFact<T> fact,
final boolean doFire) {
+ assertOpen();
return parentFactSet.addFact(fact, doFire);
}
@Override
public boolean removeFact(CauseIdentifiedFact<T> causeIdentifiedFact,
boolean doFire) {
+ assertOpen();
return parentFactSet.removeFact(causeIdentifiedFact, doFire);
}
}
Modified: trunk/reasoner4j/src/main/java/net/sf/reasoner4j/fact/AllFactSet.java
===================================================================
--- trunk/reasoner4j/src/main/java/net/sf/reasoner4j/fact/AllFactSet.java 2011-01-07 03:48:34 UTC (rev 54)
+++ trunk/reasoner4j/src/main/java/net/sf/reasoner4j/fact/AllFactSet.java 2011-01-07 04:28:39 UTC (rev 55)
@@ -99,12 +99,14 @@
@Override
public void fireAsserted(final ISubFactSet<T> subFactSet,
CauseIdentifiedFact<T> fact) {
+ assertOpen();
toAssertSubFactSetList.add(new ToFireFact<T>(subFactSet, fact));
}
@Override
public boolean addFact(final CauseIdentifiedFact<T> fact,
final boolean doFire) {
+ assertOpen();
SingleFactSet<T> singleFactSet = getOrCreateSingleFactSet(fact
.getFact());
final boolean added;
@@ -185,12 +187,14 @@
@Override
public void fireRetracted(final ISubFactSet<T> subFactSet,
final CauseIdentifiedFact<T> fact) {
+ assertOpen();
toRetractSubFactSetList.add(new ToFireFact<T>(subFactSet, fact));
}
@Override
public boolean removeFact(final CauseIdentifiedFact<T> causeIdentifiedFact,
final boolean doFire) {
+ assertOpen();
final IFact<T> fact = causeIdentifiedFact.getFact();
final SingleFactSet<T> singleFactSet = singleFacSetMap.get(fact);
boolean removed = false;
@@ -198,10 +202,6 @@
// throw new ReasonerException("no single fact set for " + fact);
// FIXMELUC _for TestExpressionCompute
} else if (singleFactSet.removeFact(causeIdentifiedFact, doFire)) {
- if (singleFactSet.isRemovable()) {
- singleFacSetMap.remove(fact);
- singleFactSet.close();
- }
final T subject = causeIdentifiedFact.getSubject();
final T predicate = causeIdentifiedFact.getPredicate();
final T object = causeIdentifiedFact.getObject();
@@ -232,6 +232,10 @@
subjectPredicateByObjectMap.remove(object).close();
}
}
+ if (singleFactSet.isRemovable()) {
+ singleFacSetMap.remove(fact);
+ singleFactSet.close();
+ }
}
if (LOGGER.isDebugEnabled()) {
LOGGER.debug("removed=" + removed + " " + fact + " doFire="
@@ -242,6 +246,7 @@
@Override
public boolean isEmpty() {
+ assertOpen();
return predicateObjectBySubjectMap.isEmpty()
&& subjectObjectByPredicateMap.isEmpty()
&& subjectPredicateByObjectMap.isEmpty();
@@ -254,6 +259,7 @@
@Override
public void fireRemovable(final ISubFactSet<T> subFactSet) {
+ assertOpen();
final T subject = subFactSet.getSubject();
if (subject != null) {
predicateObjectBySubjectMap.remove(subject).close();
@@ -269,21 +275,6 @@
}
@Override
- public T getSubject() {
- return null;
- }
-
- @Override
- public T getPredicate() {
- return null;
- }
-
- @Override
- public T getObject() {
- return null;
- }
-
- @Override
public IFact<T> get(final T subject, final T predicate, final T object) {
assertOpen();
final PredicateObjectOfSubject<T> predicateObjectOfSubject =
@@ -332,14 +323,8 @@
/**/predicateObjectOfSubjectGetOrCreate(subject);
subFactSet = x.view(subject, predicate, object);
} else { // S P O
- final SingleFactSet<T> singleFactSet = singleFacSetMap
- .get(new Fact<T>(subject, predicate, object));
- if (singleFactSet == null) {
- subFactSet = new SingleFactSet<T>(this, subject,
- predicate, object);
- } else {
- subFactSet = singleFactSet;
- }
+ subFactSet = getOrCreateSingleFactSet(subject, predicate,
+ object);
}
}
}
@@ -370,12 +355,14 @@
@Override
public Iterator<IFact<T>> iterator() {
+ assertOpen();
return new FactIterator<T>(predicateObjectBySubjectMap);
}
@Override
public SingleFactSet<T> getOrCreateSingleFactSet(final T subject,
final T predicate, final T object) {
+ assertOpen();
final IFact<T> fact = new Fact<T>(subject, predicate, object);
SingleFactSet<T> singleFactSet = singleFacSetMap.get(fact);
if (singleFactSet == null) {
@@ -387,6 +374,7 @@
}
public SingleFactSet<T> getOrCreateSingleFactSet(final IFact<T> fact) {
+ assertOpen();
SingleFactSet<T> singleFactSet = singleFacSetMap.get(fact);
if (singleFactSet == null) {
singleFactSet = new SingleFactSet<T>(this, fact.getSubject(),
Modified: trunk/reasoner4j/src/main/java/net/sf/reasoner4j/fact/ObjectOfSubjectPredicate.java
===================================================================
--- trunk/reasoner4j/src/main/java/net/sf/reasoner4j/fact/ObjectOfSubjectPredicate.java 2011-01-07 03:48:34 UTC (rev 54)
+++ trunk/reasoner4j/src/main/java/net/sf/reasoner4j/fact/ObjectOfSubjectPredicate.java 2011-01-07 04:28:39 UTC (rev 55)
@@ -53,11 +53,13 @@
@Override
public T getSubject() {
+ assertOpen();
return subject;
}
@Override
public T getPredicate() {
+ assertOpen();
return predicate;
}
@@ -73,6 +75,7 @@
final CauseIdentifiedFact<T> fact, final boolean doFire) {
assert subject.equals(singleFactSet.getSubject())
&& predicate.equals(singleFactSet.getPredicate());
+ assertOpen();
final T object = singleFactSet.getObject();
final boolean added;
final SingleFactSet<T> existingSingleFactSet = (SingleFactSet<T>) factByObjectMap
@@ -102,6 +105,7 @@
final CauseIdentifiedFact<T> fact, final boolean doFire) {
assert subject.equals(singleFactSet.getSubject())
&& predicate.equals(singleFactSet.getPredicate());
+ assertOpen();
final T object = singleFactSet.getObject();
final SingleFactSet<T> x = (SingleFactSet<T>) factByObjectMap
.remove(object);
@@ -119,11 +123,13 @@
@Override
public boolean isEmpty() {
+ assertOpen();
return factByObjectMap.isEmpty();
}
@Override
public void fireRemovable(final ISubFactSet<T> subFactSet) {
+ assertOpen();
final T object = subFactSet.getObject();
if (object != null) {
factByObjectMap.remove(object).close();
@@ -163,6 +169,7 @@
@Override
public Iterator<IFact<T>> iterator() {
+ assertOpen();
return new FactIterator<T>(factByObjectMap);
}
}
Modified: trunk/reasoner4j/src/main/java/net/sf/reasoner4j/fact/PredicateObjectOfSubject.java
===================================================================
--- trunk/reasoner4j/src/main/java/net/sf/reasoner4j/fact/PredicateObjectOfSubject.java 2011-01-07 03:48:34 UTC (rev 54)
+++ trunk/reasoner4j/src/main/java/net/sf/reasoner4j/fact/PredicateObjectOfSubject.java 2011-01-07 04:28:39 UTC (rev 55)
@@ -56,6 +56,7 @@
@Override
public T getSubject() {
+ assertOpen();
return subject;
}
@@ -69,6 +70,7 @@
public boolean addFact(final SingleFactSet<T> singleFactSet,
final CauseIdentifiedFact<T> fact, final boolean doFire) {
assert subject.equals(singleFactSet.getSubject());
+ assertOpen();
final T predicate = singleFactSet.getPredicate();
final ObjectOfSubjectPredicate<T> objectOfSubjectPredicate =
/**/objectOfSubjectPredicateGetOrCreate(predicate);
@@ -121,6 +123,7 @@
public boolean removeFact(final SingleFactSet<T> singleFactSet,
final CauseIdentifiedFact<T> fact, final boolean doFire) {
assert singleFactSet.getSubject().equals(subject);
+ assertOpen();
final T predicate = singleFactSet.getPredicate();
boolean removed = false;
ObjectOfSubjectPredicate<T> objectOfSubjectPredicate =
@@ -152,12 +155,14 @@
@Override
public boolean isEmpty() {
+ assertOpen();
return objectOfSubjectPredicateByPredicateMap.isEmpty()
&& predicateOfSubjectObjectByObjectMap.isEmpty();
}
@Override
public void fireRemovable(final ISubFactSet<T> subFactSet) {
+ assertOpen();
final T predicate = subFactSet.getPredicate();
if (predicate != null) {
objectOfSubjectPredicateByPredicateMap.remove(predicate).close();
@@ -215,6 +220,7 @@
@Override
public Iterator<IFact<T>> iterator() {
+ assertOpen();
return new FactIterator<T>(objectOfSubjectPredicateByPredicateMap);
}
}
Modified: trunk/reasoner4j/src/main/java/net/sf/reasoner4j/fact/PredicateOfSubjectObject.java
===================================================================
--- trunk/reasoner4j/src/main/java/net/sf/reasoner4j/fact/PredicateOfSubjectObject.java 2011-01-07 03:48:34 UTC (rev 54)
+++ trunk/reasoner4j/src/main/java/net/sf/reasoner4j/fact/PredicateOfSubjectObject.java 2011-01-07 04:28:39 UTC (rev 55)
@@ -53,11 +53,13 @@
@Override
public T getSubject() {
+ assertOpen();
return subject;
}
@Override
public T getObject() {
+ assertOpen();
return object;
}
@@ -73,6 +75,7 @@
final CauseIdentifiedFact<T> fact, final boolean doFire) {
assert subject.equals(singleFactSet.getSubject())
&& object.equals(singleFactSet.getObject());
+ assertOpen();
final T predicate = singleFactSet.getPredicate();
final boolean added;
final SingleFactSet<T> existingSingleFactSet = (SingleFactSet<T>) factByPredicate
@@ -101,6 +104,7 @@
final CauseIdentifiedFact<T> fact, final boolean doFire) {
assert subject.equals(singleFactSet.getSubject())
&& object.equals(singleFactSet.getObject());
+ assertOpen();
final T predicate = singleFactSet.getPredicate();
final SingleFactSet<T> x = (SingleFactSet<T>) factByPredicate
.remove(predicate);
@@ -118,11 +122,13 @@
@Override
public boolean isEmpty() {
+ assertOpen();
return factByPredicate.isEmpty();
}
@Override
public void fireRemovable(final ISubFactSet<T> subFactSet) {
+ assertOpen();
final T predicate = subFactSet.getPredicate();
if (predicate != null) {
factByPredicate.remove(predicate).close();
@@ -162,6 +168,7 @@
@Override
public Iterator<IFact<T>> iterator() {
+ assertOpen();
return new FactIterator<T>(factByPredicate);
}
}
Modified: trunk/reasoner4j/src/main/java/net/sf/reasoner4j/fact/SingleFactSet.java
===================================================================
--- trunk/reasoner4j/src/main/java/net/sf/reasoner4j/fact/SingleFactSet.java 2011-01-07 03:48:34 UTC (rev 54)
+++ trunk/reasoner4j/src/main/java/net/sf/reasoner4j/fact/SingleFactSet.java 2011-01-07 04:28:39 UTC (rev 55)
@@ -58,16 +58,19 @@
@Override
public T getSubject() {
+ assertOpen();
return subject;
}
@Override
public T getPredicate() {
+ assertOpen();
return predicate;
}
@Override
public T getObject() {
+ assertOpen();
return object;
}
@@ -85,6 +88,7 @@
assert subject.equals(fact.getSubject())
&& predicate.equals(fact.getPredicate())
&& object.equals(fact.getObject());
+ assertOpen();
addRuleIdentifier(fact.getRuleIdentifier());
final boolean added;
if (this.fact == null) {
@@ -120,6 +124,7 @@
assert subject.equals(causeIdentifiedFact.getSubject())
&& predicate.equals(causeIdentifiedFact.getPredicate())
&& object.equals(causeIdentifiedFact.getObject());
+ assertOpen();
final boolean removed;
if (this.fact == null) {
removed = false;
@@ -159,6 +164,7 @@
@Override
public boolean isEmpty() {
+ assertOpen();
return fact == null;
}
@@ -212,6 +218,7 @@
@Override
public Iterator<IFact<T>> iterator() {
+ assertOpen();
return new SelectionIterator();
}
Modified: trunk/reasoner4j/src/main/java/net/sf/reasoner4j/fact/SubjectObjectOfPredicate.java
===================================================================
--- trunk/reasoner4j/src/main/java/net/sf/reasoner4j/fact/SubjectObjectOfPredicate.java 2011-01-07 03:48:34 UTC (rev 54)
+++ trunk/reasoner4j/src/main/java/net/sf/reasoner4j/fact/SubjectObjectOfPredicate.java 2011-01-07 04:28:39 UTC (rev 55)
@@ -56,6 +56,7 @@
@Override
public T getPredicate() {
+ assertOpen();
return predicate;
}
@@ -69,6 +70,7 @@
public boolean addFact(final SingleFactSet<T> singleFactSet,
final CauseIdentifiedFact<T> fact, final boolean doFire) {
assert predicate.equals(singleFactSet.getPredicate());
+ assertOpen();
final T subject = singleFactSet.getSubject();
final ObjectOfSubjectPredicate<T> objectOfSubjectPredicate =
/**/objectOfSubjectPredicateGetOrCreate(subject);
@@ -121,6 +123,7 @@
public boolean removeFact(final SingleFactSet<T> singleFactSet,
final CauseIdentifiedFact<T> fact, final boolean doFire) {
assert singleFactSet.getPredicate().equals(predicate);
+ assertOpen();
boolean removed = false;
final T subject = singleFactSet.getSubject();
final ObjectOfSubjectPredicate<T> objectOfSubjectPredicate =
@@ -151,12 +154,14 @@
@Override
public boolean isEmpty() {
+ assertOpen();
return objectOfSubjectPredicateBySubjectMap.isEmpty()
&& subjectOfPredicateObjectByPredicateMap.isEmpty();
}
@Override
public void fireRemovable(final ISubFactSet<T> subFactSet) {
+ assertOpen();
final T subject = subFactSet.getSubject();
if (subject != null) {
objectOfSubjectPredicateBySubjectMap.remove(subject).close();
@@ -215,6 +220,7 @@
@Override
public Iterator<IFact<T>> iterator() {
+ assertOpen();
return new FactIterator<T>(objectOfSubjectPredicateBySubjectMap);
}
}
Modified: trunk/reasoner4j/src/main/java/net/sf/reasoner4j/fact/SubjectOfPredicateObject.java
===================================================================
--- trunk/reasoner4j/src/main/java/net/sf/reasoner4j/fact/SubjectOfPredicateObject.java 2011-01-07 03:48:34 UTC (rev 54)
+++ trunk/reasoner4j/src/main/java/net/sf/reasoner4j/fact/SubjectOfPredicateObject.java 2011-01-07 04:28:39 UTC (rev 55)
@@ -53,11 +53,13 @@
@Override
public T getPredicate() {
+ assertOpen();
return predicate;
}
@Override
public T getObject() {
+ assertOpen();
return object;
}
@@ -73,6 +75,7 @@
final CauseIdentifiedFact<T> fact, final boolean doFire) {
assert predicate.equals(singleFactSet.getPredicate())
&& object.equals(singleFactSet.getObject());
+ assertOpen();
final T subject = singleFactSet.getSubject();
final boolean added;
final SingleFactSet<T> existingSingleFactSet = (SingleFactSet<T>) factBySubject
@@ -101,6 +104,7 @@
final CauseIdentifiedFact<T> fact, final boolean doFire) {
assert predicate.equals(singleFactSet.getPredicate())
&& object.equals(singleFactSet.getObject());
+ assertOpen();
final T subject = singleFactSet.getSubject();
final SingleFactSet<T> x = (SingleFactSet<T>) factBySubject
.remove(subject);
@@ -118,11 +122,13 @@
@Override
public boolean isEmpty() {
+ assertOpen();
return factBySubject.isEmpty();
}
@Override
public void fireRemovable(final ISubFactSet<T> subFactSet) {
+ assertOpen();
final T subject = subFactSet.getSubject();
if (subject != null) {
factBySubject.remove(subject).close();
@@ -162,6 +168,7 @@
@Override
public Iterator<IFact<T>> iterator() {
+ assertOpen();
return new FactIterator<T>(factBySubject);
}
}
Modified: trunk/reasoner4j/src/main/java/net/sf/reasoner4j/fact/SubjectPredicateOfObject.java
===================================================================
--- trunk/reasoner4j/src/main/java/net/sf/reasoner4j/fact/SubjectPredicateOfObject.java 2011-01-07 03:48:34 UTC (rev 54)
+++ trunk/reasoner4j/src/main/java/net/sf/reasoner4j/fact/SubjectPredicateOfObject.java 2011-01-07 04:28:39 UTC (rev 55)
@@ -56,6 +56,7 @@
@Override
public T getObject() {
+ assertOpen();
return object;
}
@@ -69,6 +70,7 @@
public boolean addFact(final SingleFactSet<T> singleFactSet,
final CauseIdentifiedFact<T> fact, final boolean doFire) {
assert object.equals(singleFactSet.getObject());
+ assertOpen();
final T subject = singleFactSet.getSubject();
final PredicateOfSubjectObject<T> predicateOfSubjectObject =
/**/predicateOfSubjectObjectGetOrCreate(subject);
@@ -121,6 +123,7 @@
public boolean removeFact(final SingleFactSet<T> singleFactSet,
final CauseIdentifiedFact<T> fact, final boolean doFire) {
assert singleFactSet.getObject().equals(object);
+ assertOpen();
boolean removed = false;
final T subject = singleFactSet.getSubject();
PredicateOfSubjectObject<T> objectOfSubjectPredicate =
@@ -152,12 +155,14 @@
@Override
public boolean isEmpty() {
+ assertOpen();
return predicateOfSubjectObjectBySubjectMap.isEmpty()
&& subjectOfPredicateObjectByPredicateMap.isEmpty();
}
@Override
public void fireRemovable(final ISubFactSet<T> subFactSet) {
+ assertOpen();
final T subject = subFactSet.getSubject();
if (subject != null) {
predicateOfSubjectObjectBySubjectMap.remove(subject).close();
@@ -215,6 +220,7 @@
@Override
public Iterator<IFact<T>> iterator() {
+ assertOpen();
return new FactIterator<T>(predicateOfSubjectObjectBySubjectMap);
}
}
This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site.
|