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