You are viewing a plain text version of this content. The canonical link for it is here.
Posted to notifications@accumulo.apache.org by "Russ Weeks (JIRA)" <ji...@apache.org> on 2014/03/19 17:31:47 UTC

[jira] [Updated] (ACCUMULO-2501) Add deepCopy to RowFilter

     [ https://issues.apache.org/jira/browse/ACCUMULO-2501?page=com.atlassian.jira.plugin.system.issuetabpanels:all-tabpanel ]

Russ Weeks updated ACCUMULO-2501:
---------------------------------

    Description: 
It would be nice for subclasses of RowFilter to be chainable, for this they need to provide an implementation of deepCopy. Adding a base implementation in RowFilter would make things easier.

Here's a patch (taken from git commit 23980d3)... please let me know if I'm missing something, maybe there's more to it than I can see?
{code}
diff --git a/core/src/main/java/org/apache/accumulo/core/iterators/user/RowFilter.java b/core/src/main/java/org/apache/accumulo/core/iterators/user/RowFilter.java
index a232796..ad1e4a0 100644
--- a/core/src/main/java/org/apache/accumulo/core/iterators/user/RowFilter.java
+++ b/core/src/main/java/org/apache/accumulo/core/iterators/user/RowFilter.java
@@ -139,7 +139,20 @@ public abstract class RowFilter extends WrappingIterator {
     super.init(source, options, env);
     this.decisionIterator = new RowIterator(source.deepCopy(env));
   }
-  
+
+  @Override
+  public SortedKeyValueIterator<Key,Value> deepCopy(IteratorEnvironment env) {
+      RowFilter newInstance;
+      try {
+          newInstance = getClass().newInstance();
+      } catch (Exception e) {
+          throw new RuntimeException(e);
+      }
+      newInstance.setSource(getSource().deepCopy(env));
+      newInstance.decisionIterator = new RowIterator(getSource().deepCopy(env));
+      return newInstance;
+  }
+
   @Override
   public boolean hasTop() {
     return hasTop && super.hasTop();
{code}

  was:
It would be nice for subclasses of RowFilter to be chainable, for this they need to provide an implementation of deepCopy. Adding a base implementation in RowFilter would make things easier.

Here's a patch (taken from git commit 23980d3)... please let me know if I'm missing something, maybe there's more to it than I can see?

diff --git a/core/src/main/java/org/apache/accumulo/core/iterators/user/RowFilter.java b/core/src/main/java/org/apache/accumulo/core/iterators/user/RowFilter.java
index a232796..ad1e4a0 100644
--- a/core/src/main/java/org/apache/accumulo/core/iterators/user/RowFilter.java
+++ b/core/src/main/java/org/apache/accumulo/core/iterators/user/RowFilter.java
@@ -139,7 +139,20 @@ public abstract class RowFilter extends WrappingIterator {
     super.init(source, options, env);
     this.decisionIterator = new RowIterator(source.deepCopy(env));
   }
-  
+
+  @Override
+  public SortedKeyValueIterator<Key,Value> deepCopy(IteratorEnvironment env) {
+      RowFilter newInstance;
+      try {
+          newInstance = getClass().newInstance();
+      } catch (Exception e) {
+          throw new RuntimeException(e);
+      }
+      newInstance.setSource(getSource().deepCopy(env));
+      newInstance.decisionIterator = new RowIterator(getSource().deepCopy(env));
+      return newInstance;
+  }
+
   @Override
   public boolean hasTop() {
     return hasTop && super.hasTop();



> Add deepCopy to RowFilter
> -------------------------
>
>                 Key: ACCUMULO-2501
>                 URL: https://issues.apache.org/jira/browse/ACCUMULO-2501
>             Project: Accumulo
>          Issue Type: Improvement
>            Reporter: Russ Weeks
>            Priority: Minor
>
> It would be nice for subclasses of RowFilter to be chainable, for this they need to provide an implementation of deepCopy. Adding a base implementation in RowFilter would make things easier.
> Here's a patch (taken from git commit 23980d3)... please let me know if I'm missing something, maybe there's more to it than I can see?
> {code}
> diff --git a/core/src/main/java/org/apache/accumulo/core/iterators/user/RowFilter.java b/core/src/main/java/org/apache/accumulo/core/iterators/user/RowFilter.java
> index a232796..ad1e4a0 100644
> --- a/core/src/main/java/org/apache/accumulo/core/iterators/user/RowFilter.java
> +++ b/core/src/main/java/org/apache/accumulo/core/iterators/user/RowFilter.java
> @@ -139,7 +139,20 @@ public abstract class RowFilter extends WrappingIterator {
>      super.init(source, options, env);
>      this.decisionIterator = new RowIterator(source.deepCopy(env));
>    }
> -  
> +
> +  @Override
> +  public SortedKeyValueIterator<Key,Value> deepCopy(IteratorEnvironment env) {
> +      RowFilter newInstance;
> +      try {
> +          newInstance = getClass().newInstance();
> +      } catch (Exception e) {
> +          throw new RuntimeException(e);
> +      }
> +      newInstance.setSource(getSource().deepCopy(env));
> +      newInstance.decisionIterator = new RowIterator(getSource().deepCopy(env));
> +      return newInstance;
> +  }
> +
>    @Override
>    public boolean hasTop() {
>      return hasTop && super.hasTop();
> {code}



--
This message was sent by Atlassian JIRA
(v6.2#6252)