[Mulgara-svn] r839 - branches/mgr-61-sparql/src/jar/tuples/java/org/mulgara/store/tuples

pag at mulgara.org pag at mulgara.org
Thu Apr 24 06:45:57 UTC 2008


Author: pag
Date: 2008-04-23 23:45:56 -0700 (Wed, 23 Apr 2008)
New Revision: 839

Modified:
   branches/mgr-61-sparql/src/jar/tuples/java/org/mulgara/store/tuples/FilteredTuples.java
Log:
Made this class a ContextOwner and told the associated Filter to get its context from here.

Modified: branches/mgr-61-sparql/src/jar/tuples/java/org/mulgara/store/tuples/FilteredTuples.java
===================================================================
--- branches/mgr-61-sparql/src/jar/tuples/java/org/mulgara/store/tuples/FilteredTuples.java	2008-04-24 06:24:26 UTC (rev 838)
+++ branches/mgr-61-sparql/src/jar/tuples/java/org/mulgara/store/tuples/FilteredTuples.java	2008-04-24 06:45:56 UTC (rev 839)
@@ -38,6 +38,8 @@
 import org.mulgara.query.QueryException;
 import org.mulgara.query.TuplesException;
 import org.mulgara.query.Variable;
+import org.mulgara.query.filter.Context;
+import org.mulgara.query.filter.ContextOwner;
 import org.mulgara.query.filter.Filter;
 import org.mulgara.resolver.spi.QueryEvaluationContext;
 import org.mulgara.resolver.spi.TuplesContext;
@@ -47,7 +49,7 @@
  * Filtering operation. This class wraps another Tuples, removing those elements that don't
  * pass the filter.
  */
-public class FilteredTuples extends AbstractTuples {
+public class FilteredTuples extends AbstractTuples implements ContextOwner {
 
   @SuppressWarnings("unused")
   private static Logger logger = Logger.getLogger(FilteredTuples.class.getName());
@@ -59,7 +61,7 @@
   protected Filter filter;
 
   /** The tuples context */
-  protected TuplesContext context;
+  protected Context context;
 
   /**
    * Configure a tuples for filtering.
@@ -74,6 +76,7 @@
     this.filter = filter;
     this.unfiltered = (Tuples)unfiltered.clone();
     this.context = new TuplesContext(this.unfiltered, context.getResolverSession());
+    filter.setContextOwner(this);
   }
 
 
@@ -183,8 +186,28 @@
     // Copy mutable fields by value
     cloned.unfiltered = (Tuples)unfiltered.clone();
     // update the tuples in the context to the new value
-    cloned.context.setTuples(cloned.unfiltered);
+    if (context instanceof TuplesContext) {
+      ((TuplesContext)cloned.context).setTuples(cloned.unfiltered);
+    }
     return cloned;
   }
 
+
+  /**
+   * Tells a filter what the current context is.
+   * @see org.mulgara.query.filter.ContextOwner#getCurrentContext()
+   */
+  public Context getCurrentContext() {
+    return context;
+  }
+
+
+  /**
+   * Allows the context to be set manually. This is not expected.
+   * @see org.mulgara.query.filter.ContextOwner#setCurrentContext(org.mulgara.query.filter.Context)
+   */
+  public void setCurrentContext(Context context) {
+    this.context = context;
+  }
+
 }




More information about the Mulgara-svn mailing list