You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@camel.apache.org by da...@apache.org on 2012/09/09 10:40:27 UTC
svn commit: r1382423 - in
/camel/trunk/components/camel-hbase/src/main/java/org/apache/camel/component/hbase:
HBaseComponent.java HBaseConsumer.java mapping/HeaderMappingStrategy.java
model/HBaseCell.java
Author: davsclaus
Date: Sun Sep 9 08:40:27 2012
New Revision: 1382423
URL: http://svn.apache.org/viewvc?rev=1382423&view=rev
Log:
CAMEL-5580: camel-hbase - The RowModel Data does not include the correct cell value type and some minor changes. Thanks to Claudio Corsi for the patch.
Modified:
camel/trunk/components/camel-hbase/src/main/java/org/apache/camel/component/hbase/HBaseComponent.java
camel/trunk/components/camel-hbase/src/main/java/org/apache/camel/component/hbase/HBaseConsumer.java
camel/trunk/components/camel-hbase/src/main/java/org/apache/camel/component/hbase/mapping/HeaderMappingStrategy.java
camel/trunk/components/camel-hbase/src/main/java/org/apache/camel/component/hbase/model/HBaseCell.java
Modified: camel/trunk/components/camel-hbase/src/main/java/org/apache/camel/component/hbase/HBaseComponent.java
URL: http://svn.apache.org/viewvc/camel/trunk/components/camel-hbase/src/main/java/org/apache/camel/component/hbase/HBaseComponent.java?rev=1382423&r1=1382422&r2=1382423&view=diff
==============================================================================
--- camel/trunk/components/camel-hbase/src/main/java/org/apache/camel/component/hbase/HBaseComponent.java (original)
+++ camel/trunk/components/camel-hbase/src/main/java/org/apache/camel/component/hbase/HBaseComponent.java Sun Sep 9 08:40:27 2012
@@ -78,8 +78,8 @@ public class HBaseComponent extends Defa
cellModel.setFamily(String.valueOf(parameters.remove(HbaseAttribute.HBASE_FAMILY.asOption(i))));
cellModel.setQualifier(String.valueOf(parameters.remove(HbaseAttribute.HBASE_QUALIFIER.asOption(i))));
cellModel.setValue(String.valueOf(parameters.remove(HbaseAttribute.HBASE_VALUE.asOption(i))));
- if (parameters.containsKey(HbaseAttribute.HBASE_VALUE_TYPE.asOption())) {
- String valueType = String.valueOf(parameters.remove(HbaseAttribute.HBASE_VALUE_TYPE.asOption()));
+ if (parameters.containsKey(HbaseAttribute.HBASE_VALUE_TYPE.asOption(i))) {
+ String valueType = String.valueOf(parameters.remove(HbaseAttribute.HBASE_VALUE_TYPE.asOption(i)));
if (valueType != null && !valueType.isEmpty()) {
rowModel.setRowType(getCamelContext().getClassResolver().resolveClass(valueType));
}
Modified: camel/trunk/components/camel-hbase/src/main/java/org/apache/camel/component/hbase/HBaseConsumer.java
URL: http://svn.apache.org/viewvc/camel/trunk/components/camel-hbase/src/main/java/org/apache/camel/component/hbase/HBaseConsumer.java?rev=1382423&r1=1382422&r2=1382423&view=diff
==============================================================================
--- camel/trunk/components/camel-hbase/src/main/java/org/apache/camel/component/hbase/HBaseConsumer.java (original)
+++ camel/trunk/components/camel-hbase/src/main/java/org/apache/camel/component/hbase/HBaseConsumer.java Sun Sep 9 08:40:27 2012
@@ -93,6 +93,10 @@ public class HBaseConsumer extends Sched
ResultScanner scanner = table.getScanner(scan);
int exchangeCount = 0;
+ // The next three statements are used just to get a reference to the BodyCellMappingStrategy instance.
+ Exchange exchange = endpoint.createExchange();
+ exchange.getIn().setHeader(CellMappingStrategyFactory.STRATEGY, CellMappingStrategyFactory.BODY);
+ CellMappingStrategy mappingStrategy = endpoint.getCellMappingStrategyFactory().getStrategy(exchange.getIn());
for (Result result = scanner.next(); (exchangeCount < maxMessagesPerPoll || maxMessagesPerPoll <= 0) && result != null; result = scanner.next()) {
HBaseData data = new HBaseData();
HBaseRow resultRow = new HBaseRow();
@@ -112,9 +116,9 @@ public class HBaseConsumer extends Sched
resultRow.getCells().add(resultCell);
}
data.getRows().add(resultRow);
- Exchange exchange = endpoint.createExchange();
+ exchange = endpoint.createExchange();
+ // Probably overkill but kept it here for consistency.
exchange.getIn().setHeader(CellMappingStrategyFactory.STRATEGY, CellMappingStrategyFactory.BODY);
- CellMappingStrategy mappingStrategy = endpoint.getCellMappingStrategyFactory().getStrategy(exchange.getIn());
mappingStrategy.applyScanResults(exchange.getIn(), data);
//Make sure that there is a header containing the marked row ids, so that they can be deleted.
exchange.getIn().setHeader(HbaseAttribute.HBASE_MARKED_ROW_ID.asHeader(), result.getRow());
Modified: camel/trunk/components/camel-hbase/src/main/java/org/apache/camel/component/hbase/mapping/HeaderMappingStrategy.java
URL: http://svn.apache.org/viewvc/camel/trunk/components/camel-hbase/src/main/java/org/apache/camel/component/hbase/mapping/HeaderMappingStrategy.java?rev=1382423&r1=1382422&r2=1382423&view=diff
==============================================================================
--- camel/trunk/components/camel-hbase/src/main/java/org/apache/camel/component/hbase/mapping/HeaderMappingStrategy.java (original)
+++ camel/trunk/components/camel-hbase/src/main/java/org/apache/camel/component/hbase/mapping/HeaderMappingStrategy.java Sun Sep 9 08:40:27 2012
@@ -67,7 +67,8 @@ public class HeaderMappingStrategy imple
hCell.setQualifier(columnName);
hCell.setFamily(columnFamily);
hCell.setValue(value);
- hCell.setValueType(valueClass);
+ // String is the default value type
+ hCell.setValueType((valueClass != null) ? valueClass : String.class);
hRow.getCells().add(hCell);
}
return hRow;
Modified: camel/trunk/components/camel-hbase/src/main/java/org/apache/camel/component/hbase/model/HBaseCell.java
URL: http://svn.apache.org/viewvc/camel/trunk/components/camel-hbase/src/main/java/org/apache/camel/component/hbase/model/HBaseCell.java?rev=1382423&r1=1382422&r2=1382423&view=diff
==============================================================================
--- camel/trunk/components/camel-hbase/src/main/java/org/apache/camel/component/hbase/model/HBaseCell.java (original)
+++ camel/trunk/components/camel-hbase/src/main/java/org/apache/camel/component/hbase/model/HBaseCell.java Sun Sep 9 08:40:27 2012
@@ -31,6 +31,10 @@ public class HBaseCell {
//The value type can be optionally specified for Gets and Scan, to specify how the byte[] read will be converted.
private Class<?> valueType = String.class;
+ public String toString() {
+ return "HBaseCell=[family=" + family + ", qualifier=" + qualifier + ", value=" + value + ", valueType=" + valueType.getName();
+ }
+
@XmlAttribute(name = "family")
public String getFamily() {
return family;
@@ -63,6 +67,9 @@ public class HBaseCell {
}
public void setValueType(Class<?> valueType) {
+ if (valueType == null) {
+ throw new IllegalArgumentException("Value type can not be null");
+ }
this.valueType = valueType;
}