You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@storm.apache.org by ka...@apache.org on 2015/08/04 08:21:26 UTC
[07/10] storm git commit: handle Lists and primitive array types
handle Lists and primitive array types
Project: http://git-wip-us.apache.org/repos/asf/storm/repo
Commit: http://git-wip-us.apache.org/repos/asf/storm/commit/17c74ce2
Tree: http://git-wip-us.apache.org/repos/asf/storm/tree/17c74ce2
Diff: http://git-wip-us.apache.org/repos/asf/storm/diff/17c74ce2
Branch: refs/heads/0.10.x-branch
Commit: 17c74ce246e3f1f898dcbafa9e8605067c647c2e
Parents: 10eb798
Author: Derek Dagit <de...@yahoo-inc.com>
Authored: Wed Jul 22 12:17:39 2015 -0500
Committer: Jungtaek Lim <ka...@gmail.com>
Committed: Tue Aug 4 13:07:48 2015 +0900
----------------------------------------------------------------------
.../storm/grouping/PartialKeyGrouping.java | 24 ++++++++++++++++++--
1 file changed, 22 insertions(+), 2 deletions(-)
----------------------------------------------------------------------
http://git-wip-us.apache.org/repos/asf/storm/blob/17c74ce2/storm-core/src/jvm/backtype/storm/grouping/PartialKeyGrouping.java
----------------------------------------------------------------------
diff --git a/storm-core/src/jvm/backtype/storm/grouping/PartialKeyGrouping.java b/storm-core/src/jvm/backtype/storm/grouping/PartialKeyGrouping.java
index 456a8ef..43ad5a0 100644
--- a/storm-core/src/jvm/backtype/storm/grouping/PartialKeyGrouping.java
+++ b/storm-core/src/jvm/backtype/storm/grouping/PartialKeyGrouping.java
@@ -66,10 +66,30 @@ public class PartialKeyGrouping implements CustomStreamGrouping, Serializable {
List<Object> selectedFields = outFields.select(fields, values);
ByteBuffer out = ByteBuffer.allocate(selectedFields.size() * 4);
for (Object o: selectedFields) {
- if (o instanceof Object[]) {
+ if (o instanceof List) {
+ out.putInt(Arrays.deepHashCode(((List)o).toArray()));
+ } else if (o instanceof Object[]) {
out.putInt(Arrays.deepHashCode((Object[])o));
- } else {
+ } else if (o instanceof byte[]) {
+ out.putInt(Arrays.hashCode((byte[]) o));
+ } else if (o instanceof short[]) {
+ out.putInt(Arrays.hashCode((short[]) o));
+ } else if (o instanceof int[]) {
+ out.putInt(Arrays.hashCode((int[]) o));
+ } else if (o instanceof long[]) {
+ out.putInt(Arrays.hashCode((long[]) o));
+ } else if (o instanceof char[]) {
+ out.putInt(Arrays.hashCode((char[]) o));
+ } else if (o instanceof float[]) {
+ out.putInt(Arrays.hashCode((float[]) o));
+ } else if (o instanceof double[]) {
+ out.putInt(Arrays.hashCode((double[]) o));
+ } else if (o instanceof boolean[]) {
+ out.putInt(Arrays.hashCode((boolean[]) o));
+ } else if (o != null) {
out.putInt(o.hashCode());
+ } else {
+ out.putInt(0);
}
}
raw = out.array();