Fix Filters Bugs on hbase-098.xx

Project: http://git-wip-us.apache.org/repos/asf/camel/repo
Commit: http://git-wip-us.apache.org/repos/asf/camel/commit/280d55da
Tree: http://git-wip-us.apache.org/repos/asf/camel/tree/280d55da
Diff: http://git-wip-us.apache.org/repos/asf/camel/diff/280d55da

Branch: refs/heads/master
Commit: 280d55da18153f29d821a2e78d705434181f487d
Parents: 0fb9d70
Author: Moizes Junior <moizes.jun...@hotmail.com>
Authored: Mon Feb 1 11:25:41 2016 -0200
Committer: Claus Ibsen <davscl...@apache.org>
Committed: Thu Feb 11 09:14:08 2016 +0100

----------------------------------------------------------------------
 .../apache/camel/component/hbase/HBaseHelper.java |  2 +-
 .../camel/component/hbase/HBaseProducer.java      | 18 +++++-------------
 .../component/hbase/filters/ModelAwareFilter.java |  5 +++++
 .../hbase/filters/ModelAwareFilterList.java       |  5 +++++
 .../hbase/filters/ModelAwareSkipFilter.java       |  6 ++++++
 .../hbase/filters/ModelAwareWhileMatchFilter.java |  6 ++++++
 6 files changed, 28 insertions(+), 14 deletions(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/camel/blob/280d55da/components/camel-hbase/src/main/java/org/apache/camel/component/hbase/HBaseHelper.java
----------------------------------------------------------------------
diff --git 
a/components/camel-hbase/src/main/java/org/apache/camel/component/hbase/HBaseHelper.java
 
b/components/camel-hbase/src/main/java/org/apache/camel/component/hbase/HBaseHelper.java
index 1d1458c..1ceefa4 100644
--- 
a/components/camel-hbase/src/main/java/org/apache/camel/component/hbase/HBaseHelper.java
+++ 
b/components/camel-hbase/src/main/java/org/apache/camel/component/hbase/HBaseHelper.java
@@ -42,7 +42,7 @@ public final class HBaseHelper {
     public static byte[] getHBaseFieldAsBytes(String n) {
         byte[] name = null;
         name = NAMES.get(n);
-        if (name == null) {
+        if (name == null && n != null) {
             name = n.getBytes();
             NAMES.put(n, name);
         }

http://git-wip-us.apache.org/repos/asf/camel/blob/280d55da/components/camel-hbase/src/main/java/org/apache/camel/component/hbase/HBaseProducer.java
----------------------------------------------------------------------
diff --git 
a/components/camel-hbase/src/main/java/org/apache/camel/component/hbase/HBaseProducer.java
 
b/components/camel-hbase/src/main/java/org/apache/camel/component/hbase/HBaseProducer.java
index 224ac22..8f35342 100644
--- 
a/components/camel-hbase/src/main/java/org/apache/camel/component/hbase/HBaseProducer.java
+++ 
b/components/camel-hbase/src/main/java/org/apache/camel/component/hbase/HBaseProducer.java
@@ -205,20 +205,12 @@ public class HBaseProducer extends DefaultProducer 
implements ServicePoolAware {
         } else {
             scan = new Scan();
         }
-
-        // need to clone the filters as they are not thread safe to use
+        
         if (filters != null && !filters.isEmpty()) {
-            List<Filter> clonedFilters = new LinkedList<Filter>();
-            for (Filter filter : filters) {
-                if 
(ModelAwareFilter.class.isAssignableFrom(filter.getClass())) {
-                    Object clone = 
endpoint.getCamelContext().getInjector().newInstance(filter.getClass());
-                    if (clone instanceof ModelAwareFilter) {
-                        ((ModelAwareFilter<?>) 
clone).apply(endpoint.getCamelContext(), model);
-                        clonedFilters.add((Filter) clone);
-                    }
-                }
-            }
-            scan.setFilter(new FilterList(FilterList.Operator.MUST_PASS_ALL, 
clonedFilters));
+               for (int i=0;i<filters.size();i++){
+                       ((ModelAwareFilter<?>) 
filters.get(i)).apply(endpoint.getCamelContext(), model);
+                       scan.setFilter(new 
FilterList(FilterList.Operator.MUST_PASS_ALL, ((ModelAwareFilter<?>) 
filters.get(i)).getFilteredList()));
+               }
         }
 
         Set<HBaseCell> cellModels = model.getCells();

http://git-wip-us.apache.org/repos/asf/camel/blob/280d55da/components/camel-hbase/src/main/java/org/apache/camel/component/hbase/filters/ModelAwareFilter.java
----------------------------------------------------------------------
diff --git 
a/components/camel-hbase/src/main/java/org/apache/camel/component/hbase/filters/ModelAwareFilter.java
 
b/components/camel-hbase/src/main/java/org/apache/camel/component/hbase/filters/ModelAwareFilter.java
index a45be79..327c102 100644
--- 
a/components/camel-hbase/src/main/java/org/apache/camel/component/hbase/filters/ModelAwareFilter.java
+++ 
b/components/camel-hbase/src/main/java/org/apache/camel/component/hbase/filters/ModelAwareFilter.java
@@ -16,9 +16,12 @@
  */
 package org.apache.camel.component.hbase.filters;
 
+import java.util.List;
+
 import org.apache.camel.CamelContext;
 import org.apache.camel.component.hbase.model.HBaseRow;
 import org.apache.hadoop.hbase.filter.Filter;
+import org.apache.hadoop.hbase.filter.FilterList;
 
 public interface ModelAwareFilter<T extends Filter> {
 
@@ -26,4 +29,6 @@ public interface ModelAwareFilter<T extends Filter> {
      * Applies the message to {@link Filter} to context.
      */
     void apply(CamelContext context, HBaseRow rowModel);
+
+    FilterList getFilteredList();
 }

http://git-wip-us.apache.org/repos/asf/camel/blob/280d55da/components/camel-hbase/src/main/java/org/apache/camel/component/hbase/filters/ModelAwareFilterList.java
----------------------------------------------------------------------
diff --git 
a/components/camel-hbase/src/main/java/org/apache/camel/component/hbase/filters/ModelAwareFilterList.java
 
b/components/camel-hbase/src/main/java/org/apache/camel/component/hbase/filters/ModelAwareFilterList.java
index 636c8bf..bf2da0e 100644
--- 
a/components/camel-hbase/src/main/java/org/apache/camel/component/hbase/filters/ModelAwareFilterList.java
+++ 
b/components/camel-hbase/src/main/java/org/apache/camel/component/hbase/filters/ModelAwareFilterList.java
@@ -89,4 +89,9 @@ public class ModelAwareFilterList implements 
ModelAwareFilter<FilterList> {
     public void addFilter(Filter filter) {
         getFilters().add(filter);
     }
+
+       @Override
+       public FilterList getFilteredList() {
+               return fl;
+       }
 }

http://git-wip-us.apache.org/repos/asf/camel/blob/280d55da/components/camel-hbase/src/main/java/org/apache/camel/component/hbase/filters/ModelAwareSkipFilter.java
----------------------------------------------------------------------
diff --git 
a/components/camel-hbase/src/main/java/org/apache/camel/component/hbase/filters/ModelAwareSkipFilter.java
 
b/components/camel-hbase/src/main/java/org/apache/camel/component/hbase/filters/ModelAwareSkipFilter.java
index 574a680..161be6c 100644
--- 
a/components/camel-hbase/src/main/java/org/apache/camel/component/hbase/filters/ModelAwareSkipFilter.java
+++ 
b/components/camel-hbase/src/main/java/org/apache/camel/component/hbase/filters/ModelAwareSkipFilter.java
@@ -19,6 +19,7 @@ package org.apache.camel.component.hbase.filters;
 import org.apache.camel.CamelContext;
 import org.apache.camel.component.hbase.model.HBaseRow;
 import org.apache.hadoop.hbase.filter.Filter;
+import org.apache.hadoop.hbase.filter.FilterList;
 import org.apache.hadoop.hbase.filter.SkipFilter;
 
 public class ModelAwareSkipFilter extends SkipFilter implements 
ModelAwareFilter<SkipFilter> {
@@ -44,4 +45,9 @@ public class ModelAwareSkipFilter extends SkipFilter 
implements ModelAwareFilter
     public static ModelAwareSkipFilter wrap(SkipFilter filter) {
         return new ModelAwareSkipFilter(filter.getFilter());
     }
+
+       @Override
+       public FilterList getFilteredList() {
+               return null;
+       }
 }

http://git-wip-us.apache.org/repos/asf/camel/blob/280d55da/components/camel-hbase/src/main/java/org/apache/camel/component/hbase/filters/ModelAwareWhileMatchFilter.java
----------------------------------------------------------------------
diff --git 
a/components/camel-hbase/src/main/java/org/apache/camel/component/hbase/filters/ModelAwareWhileMatchFilter.java
 
b/components/camel-hbase/src/main/java/org/apache/camel/component/hbase/filters/ModelAwareWhileMatchFilter.java
index 5fd401d..c16a470 100644
--- 
a/components/camel-hbase/src/main/java/org/apache/camel/component/hbase/filters/ModelAwareWhileMatchFilter.java
+++ 
b/components/camel-hbase/src/main/java/org/apache/camel/component/hbase/filters/ModelAwareWhileMatchFilter.java
@@ -19,6 +19,7 @@ package org.apache.camel.component.hbase.filters;
 import org.apache.camel.CamelContext;
 import org.apache.camel.component.hbase.model.HBaseRow;
 import org.apache.hadoop.hbase.filter.Filter;
+import org.apache.hadoop.hbase.filter.FilterList;
 import org.apache.hadoop.hbase.filter.WhileMatchFilter;
 
 public class ModelAwareWhileMatchFilter extends WhileMatchFilter implements 
ModelAwareFilter<WhileMatchFilter> {
@@ -44,4 +45,9 @@ public class ModelAwareWhileMatchFilter extends 
WhileMatchFilter implements Mode
         return new ModelAwareWhileMatchFilter(filter.getFilter());
     }
 
+       @Override
+       public FilterList getFilteredList() {
+               return null;
+       }
+
 }

Reply via email to