Adding feature that should allow for custom objects for be passed through blur platform as arguments and results.
Project: http://git-wip-us.apache.org/repos/asf/incubator-blur/repo Commit: http://git-wip-us.apache.org/repos/asf/incubator-blur/commit/09d76298 Tree: http://git-wip-us.apache.org/repos/asf/incubator-blur/tree/09d76298 Diff: http://git-wip-us.apache.org/repos/asf/incubator-blur/diff/09d76298 Branch: refs/heads/master Commit: 09d76298bd12dab2ca1bdc3f4b0f547966b9127c Parents: 4d5198e Author: Aaron McCurry <[email protected]> Authored: Tue Sep 2 09:23:54 2014 -0400 Committer: Aaron McCurry <[email protected]> Committed: Tue Sep 2 09:23:54 2014 -0400 ---------------------------------------------------------------------- .../apache/blur/manager/command/Argument.java | 28 - .../apache/blur/manager/command/Arguments.java | 26 - .../manager/command/BaseCommandManager.java | 2 + .../apache/blur/manager/command/BlurArray.java | 248 ++++++ .../apache/blur/manager/command/BlurObject.java | 263 +++++++ .../blur/manager/command/CommandUtil.java | 55 +- .../command/ControllerClusterContext.java | 6 +- .../manager/command/ObjectArrayPacking.java | 165 ++++ .../manager/command/annotation/Argument.java | 28 + .../manager/command/annotation/Arguments.java | 26 + .../blur/manager/command/cmds/AddDocument.java | 4 +- .../command/cmds/TestBlurObjectCommand.java | 72 ++ .../cmds/TestBlurObjectCommandUsing.java | 41 + .../blur/manager/command/BlurArrayTest.java | 60 ++ .../apache/blur/thrift/generated/Arguments.java | 72 +- .../org/apache/blur/thrift/generated/Blur.java | 756 +++++++++---------- .../blur/thrift/generated/BlurObjectType.java | 70 ++ .../blur/thrift/generated/BlurPackedObject.java | 621 +++++++++++++++ .../apache/blur/thrift/generated/Response.java | 170 ++--- .../blur/thrift/generated/ValueObject.java | 411 ++++++++++ .../apache/blur/thrift/util/CommandExample.java | 13 +- .../src/main/scripts/interface/Blur.thrift | 23 +- .../main/scripts/interface/gen-html/Blur.html | 27 +- .../main/scripts/interface/gen-html/index.html | 3 + .../apache/blur/thrift/generated/Arguments.java | 72 +- .../org/apache/blur/thrift/generated/Blur.java | 756 +++++++++---------- .../blur/thrift/generated/BlurObjectType.java | 70 ++ .../blur/thrift/generated/BlurPackedObject.java | 621 +++++++++++++++ .../apache/blur/thrift/generated/Response.java | 170 ++--- .../blur/thrift/generated/ValueObject.java | 411 ++++++++++ .../src/main/scripts/interface/gen-js/Blur.js | 670 ++++++++-------- .../main/scripts/interface/gen-js/Blur_types.js | 311 ++++++-- .../scripts/interface/gen-perl/Blur/Blur.pm | 436 +++++------ .../scripts/interface/gen-perl/Blur/Types.pm | 292 +++++-- .../main/scripts/interface/gen-rb/blur_types.rb | 69 +- docs/Blur.html | 27 +- 36 files changed, 5340 insertions(+), 1755 deletions(-) ---------------------------------------------------------------------- http://git-wip-us.apache.org/repos/asf/incubator-blur/blob/09d76298/blur-core/src/main/java/org/apache/blur/manager/command/Argument.java ---------------------------------------------------------------------- diff --git a/blur-core/src/main/java/org/apache/blur/manager/command/Argument.java b/blur-core/src/main/java/org/apache/blur/manager/command/Argument.java deleted file mode 100644 index 1da3c7c..0000000 --- a/blur-core/src/main/java/org/apache/blur/manager/command/Argument.java +++ /dev/null @@ -1,28 +0,0 @@ -package org.apache.blur.manager.command; - -import java.lang.annotation.Retention; -import java.lang.annotation.RetentionPolicy; - -/** - * Licensed to the Apache Software Foundation (ASF) under one or more - * contributor license agreements. See the NOTICE file distributed with this - * work for additional information regarding copyright ownership. The ASF - * licenses this file to You under the Apache License, Version 2.0 (the - * "License"); you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, WITHOUT - * WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the - * License for the specific language governing permissions and limitations under - * the License. - */ - -@Retention(RetentionPolicy.RUNTIME) -public @interface Argument { - String name(); - - String value(); -} http://git-wip-us.apache.org/repos/asf/incubator-blur/blob/09d76298/blur-core/src/main/java/org/apache/blur/manager/command/Arguments.java ---------------------------------------------------------------------- diff --git a/blur-core/src/main/java/org/apache/blur/manager/command/Arguments.java b/blur-core/src/main/java/org/apache/blur/manager/command/Arguments.java deleted file mode 100644 index b08b5c6..0000000 --- a/blur-core/src/main/java/org/apache/blur/manager/command/Arguments.java +++ /dev/null @@ -1,26 +0,0 @@ -package org.apache.blur.manager.command; - -import java.lang.annotation.Retention; -import java.lang.annotation.RetentionPolicy; - -/** - * Licensed to the Apache Software Foundation (ASF) under one or more - * contributor license agreements. See the NOTICE file distributed with this - * work for additional information regarding copyright ownership. The ASF - * licenses this file to You under the Apache License, Version 2.0 (the - * "License"); you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, WITHOUT - * WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the - * License for the specific language governing permissions and limitations under - * the License. - */ - -@Retention(RetentionPolicy.RUNTIME) -public @interface Arguments { - Argument[] value(); -} http://git-wip-us.apache.org/repos/asf/incubator-blur/blob/09d76298/blur-core/src/main/java/org/apache/blur/manager/command/BaseCommandManager.java ---------------------------------------------------------------------- diff --git a/blur-core/src/main/java/org/apache/blur/manager/command/BaseCommandManager.java b/blur-core/src/main/java/org/apache/blur/manager/command/BaseCommandManager.java index e6c729c..e8ba098 100644 --- a/blur-core/src/main/java/org/apache/blur/manager/command/BaseCommandManager.java +++ b/blur-core/src/main/java/org/apache/blur/manager/command/BaseCommandManager.java @@ -11,6 +11,7 @@ import org.apache.blur.manager.command.cmds.BaseCommand; import org.apache.blur.manager.command.cmds.DocumentCount; import org.apache.blur.manager.command.cmds.DocumentCountCombiner; import org.apache.blur.manager.command.cmds.DocumentCountNoCombine; +import org.apache.blur.manager.command.cmds.TestBlurObjectCommand; /** * Licensed to the Apache Software Foundation (ASF) under one or more @@ -39,6 +40,7 @@ public class BaseCommandManager implements Closeable { register(DocumentCount.class); register(DocumentCountNoCombine.class); register(DocumentCountCombiner.class); + register(TestBlurObjectCommand.class); _executorService = Executors.newThreadPool("command-", threadCount); } http://git-wip-us.apache.org/repos/asf/incubator-blur/blob/09d76298/blur-core/src/main/java/org/apache/blur/manager/command/BlurArray.java ---------------------------------------------------------------------- diff --git a/blur-core/src/main/java/org/apache/blur/manager/command/BlurArray.java b/blur-core/src/main/java/org/apache/blur/manager/command/BlurArray.java new file mode 100644 index 0000000..93f30d3 --- /dev/null +++ b/blur-core/src/main/java/org/apache/blur/manager/command/BlurArray.java @@ -0,0 +1,248 @@ +/** + * Licensed to the Apache Software Foundation (ASF) under one or more + * contributor license agreements. See the NOTICE file distributed with + * this work for additional information regarding copyright ownership. + * The ASF licenses this file to You under the Apache License, Version 2.0 + * (the "License"); you may not use this file except in compliance with + * the License. You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ +package org.apache.blur.manager.command; + +import java.util.ArrayList; +import java.util.List; + +public class BlurArray { + + private List<Object> _values = new ArrayList<Object>(); + + public BlurArray() { + + } + + public BlurArray(BlurArray array) { + _values.addAll(array._values); + } + + public void clear() { + _values.clear(); + } + + public String getString(int index) { + return (String) getObject(index); + } + + public void put(String value) { + put((Object) value); + } + + public void put(int index, String value) { + put(index, (Object) value); + } + + public Integer getInteger(int index) { + return (Integer) getObject(index); + } + + public void put(Integer value) { + put((Object) value); + } + + public void put(int index, Integer value) { + put(index, (Object) value); + } + + public Short getShort(int index) { + return (Short) getObject(index); + } + + public void put(Short value) { + put((Object) value); + } + + public void put(int index, Short value) { + put(index, (Object) value); + } + + public Long getLong(int index) { + return (Long) getObject(index); + } + + public void put(Long value) { + put((Object) value); + } + + public void put(int index, Long value) { + put(index, (Object) value); + } + + public Double getDouble(int index) { + return (Double) getObject(index); + } + + public void put(Double value) { + put((Object) value); + } + + public void put(int index, Double value) { + put(index, (Object) value); + } + + public Float getFloat(int index) { + return (Float) getObject(index); + } + + public void put(Float value) { + put((Object) value); + } + + public void put(int index, Float value) { + put(index, (Object) value); + } + + public byte[] getBinary(int index) { + return (byte[]) getObject(index); + } + + public void put(byte[] value) { + put((Object) value); + } + + public void put(int index, byte[] value) { + put(index, (Object) value); + } + + public Boolean getBoolean(int index) { + return (Boolean) getObject(index); + } + + public void put(Boolean value) { + put((Object) value); + } + + public void put(int index, Boolean value) { + put(index, (Object) value); + } + + public BlurObject getBlurObject(int index) { + return (BlurObject) getObject(index); + } + + public void put(BlurObject value) { + put((Object) value); + } + + public void put(int index, BlurObject value) { + put(index, (Object) value); + } + + public BlurArray getBlurArray(int index) { + return (BlurArray) getObject(index); + } + + public void put(BlurArray value) { + put((Object) value); + } + + public void put(int index, BlurArray value) { + put(index, (Object) value); + } + + public void put(Object value) { + BlurObject.checkType(value); + _values.add(value); + } + + public void put(int index, Object value) { + BlurObject.checkType(value); + int sizeNeeded = index + 1; + while (_values.size() < sizeNeeded) { + _values.add(null); + } + _values.set(index, value); + } + + @Override + public String toString() { + return toString(0); + } + + public String toString(int i) { + StringBuilder builder = new StringBuilder(); + builder.append('['); + boolean comma = false; + for (Object value : _values) { + if (comma) { + builder.append(','); + } + comma = true; + if (i > 0) { + builder.append('\n'); + for (int j = 0; j < i; j++) { + builder.append(' '); + } + } + if (value instanceof BlurObject) { + builder.append(((BlurObject) value).toString(i > 0 ? i + 1 : 0)); + } else if (value instanceof BlurArray) { + builder.append(((BlurArray) value).toString(i > 0 ? i + 1 : 0)); + } else { + builder.append(BlurObject.stringify(value)); + } + } + if (i > 0) { + builder.append('\n'); + for (int j = 0; j < i - 1; j++) { + builder.append(' '); + } + } + builder.append(']'); + return builder.toString(); + } + + public int length() { + return _values.size(); + } + + public Object getObject(int i) { + return _values.get(i); + } + + @SuppressWarnings("unchecked") + public <T> T get(int i) { + return (T) _values.get(i); + } + + @Override + public int hashCode() { + final int prime = 31; + int result = 1; + result = prime * result + ((_values == null) ? 0 : _values.hashCode()); + return result; + } + + @Override + public boolean equals(Object obj) { + if (this == obj) + return true; + if (obj == null) + return false; + if (getClass() != obj.getClass()) + return false; + BlurArray other = (BlurArray) obj; + if (_values == null) { + if (other._values != null) + return false; + } else if (!_values.equals(other._values)) + return false; + return true; + } + +} http://git-wip-us.apache.org/repos/asf/incubator-blur/blob/09d76298/blur-core/src/main/java/org/apache/blur/manager/command/BlurObject.java ---------------------------------------------------------------------- diff --git a/blur-core/src/main/java/org/apache/blur/manager/command/BlurObject.java b/blur-core/src/main/java/org/apache/blur/manager/command/BlurObject.java new file mode 100644 index 0000000..72ed5b8 --- /dev/null +++ b/blur-core/src/main/java/org/apache/blur/manager/command/BlurObject.java @@ -0,0 +1,263 @@ +/** + * Licensed to the Apache Software Foundation (ASF) under one or more + * contributor license agreements. See the NOTICE file distributed with + * this work for additional information regarding copyright ownership. + * The ASF licenses this file to You under the Apache License, Version 2.0 + * (the "License"); you may not use this file except in compliance with + * the License. You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ +package org.apache.blur.manager.command; + +import java.util.Iterator; +import java.util.Map; +import java.util.Map.Entry; +import java.util.TreeMap; + +public class BlurObject { + + private final static char[] hexArray = "0123456789ABCDEF".toCharArray(); + + private Map<String, Object> _valueMap = new TreeMap<String, Object>(); + + public BlurObject() { + + } + + public BlurObject(BlurObject object) { + _valueMap.putAll(object._valueMap); + } + + public void accumulate(String name, String value) { + accumulate(name, (Object) value); + } + + public void put(String name, String value) { + put(name, (Object) value); + } + + public String getString(String name) { + return (String) _valueMap.get(name); + } + + public void accumulate(String name, Integer value) { + accumulate(name, (Object) value); + } + + public void put(String name, Integer value) { + put(name, (Object) value); + } + + public Integer getInteger(String name) { + return (Integer) _valueMap.get(name); + } + + public void accumulate(String name, Short value) { + accumulate(name, (Object) value); + } + + public void put(String name, Short value) { + put(name, (Object) value); + } + + public Short getShort(String name) { + return (Short) _valueMap.get(name); + } + + public void accumulate(String name, Long value) { + accumulate(name, (Object) value); + } + + public void put(String name, Long value) { + put(name, (Object) value); + } + + public Long getLong(String name) { + return (Long) _valueMap.get(name); + } + + public void accumulate(String name, Double value) { + accumulate(name, (Object) value); + } + + public void put(String name, Double value) { + put(name, (Object) value); + } + + public Double getDouble(String name) { + return (Double) _valueMap.get(name); + } + + public void accumulate(String name, Float value) { + accumulate(name, (Object) value); + } + + public void put(String name, Float value) { + put(name, (Object) value); + } + + public Float getFloat(String name) { + return (Float) _valueMap.get(name); + } + + public void accumulate(String name, byte[] value) { + accumulate(name, (Object) value); + } + + public void put(String name, byte[] value) { + put(name, (Object) value); + } + + public byte[] getBinary(String name) { + return (byte[]) _valueMap.get(name); + } + + public void accumulate(String name, Boolean value) { + accumulate(name, (Object) value); + } + + public void put(String name, Boolean value) { + put(name, (Object) value); + } + + public Boolean getBoolean(String name) { + return (Boolean) _valueMap.get(name); + } + + public void accumulate(String name, BlurObject value) { + accumulate(name, (Object) value); + } + + public void put(String name, BlurObject value) { + put(name, (Object) value); + } + + public BlurObject getBlurObject(String name) { + return (BlurObject) _valueMap.get(name); + } + + public void accumulate(String name, BlurArray value) { + accumulate(name, (Object) value); + } + + public void put(String name, BlurArray value) { + put(name, (Object) value); + } + + public BlurArray getBlurArray(String name) { + return (BlurArray) _valueMap.get(name); + } + + public void accumulate(String name, Object value) { + checkType(value); + Object object = _valueMap.get(name); + if (object == null) { + _valueMap.put(name, value); + } else { + if (object instanceof BlurArray) { + BlurArray array = (BlurArray) object; + array.put(value); + } else { + BlurArray array = new BlurArray(); + array.put(object); + array.put(value); + _valueMap.put(name, array); + } + } + } + + public static void checkType(Object value) { + + } + + public void put(String name, Object value) { + checkType(value); + _valueMap.put(name, value); + } + + @Override + public String toString() { + return toString(0); + } + + public String toString(int i) { + StringBuilder builder = new StringBuilder(); + builder.append('{'); + boolean comma = false; + for (Entry<String, Object> e : _valueMap.entrySet()) { + if (comma) { + builder.append(','); + } + comma = true; + if (i > 0) { + builder.append('\n'); + for (int j = 0; j < i; j++) { + builder.append(' '); + } + } + builder.append(stringify(e.getKey())); + builder.append(':'); + Object value = e.getValue(); + if (value instanceof BlurObject) { + builder.append(((BlurObject) value).toString(i > 0 ? i + 1 : 0)); + } else if (value instanceof BlurArray) { + builder.append(((BlurArray) value).toString(i > 0 ? i + 1 : 0)); + } else { + builder.append(stringify(value)); + } + } + if (i > 0) { + builder.append('\n'); + for (int j = 0; j < i - 1; j++) { + builder.append(' '); + } + } + builder.append('}'); + return builder.toString(); + } + + public static String toHexString(byte[] bs) { + char[] hexChars = new char[bs.length * 2]; + for (int j = 0; j < bs.length; j++) { + int v = bs[j] & 0xFF; + hexChars[j * 2] = hexArray[v >>> 4]; + hexChars[j * 2 + 1] = hexArray[v & 0x0F]; + } + return new String(hexChars); + } + + public static Object stringify(Object o) { + if (o instanceof Number) { + return o.toString(); + } else if (o instanceof byte[]) { + return toHexString((byte[]) o); + } else if (o instanceof Boolean) { + return o.toString(); + } else if (o instanceof String) { + return "\"" + o.toString() + "\""; + } else { + throw new RuntimeException("Cannot stringify object [" + o + "]"); + } + } + + public Iterator<String> keys() { + return _valueMap.keySet().iterator(); + } + + @SuppressWarnings("unchecked") + public <T> T get(String name) { + return (T) _valueMap.get(name); + } + + public Object getObject(String name) { + return _valueMap.get(name); + } + +} http://git-wip-us.apache.org/repos/asf/incubator-blur/blob/09d76298/blur-core/src/main/java/org/apache/blur/manager/command/CommandUtil.java ---------------------------------------------------------------------- diff --git a/blur-core/src/main/java/org/apache/blur/manager/command/CommandUtil.java b/blur-core/src/main/java/org/apache/blur/manager/command/CommandUtil.java index 43ce656..725b3cc 100644 --- a/blur-core/src/main/java/org/apache/blur/manager/command/CommandUtil.java +++ b/blur-core/src/main/java/org/apache/blur/manager/command/CommandUtil.java @@ -2,13 +2,15 @@ package org.apache.blur.manager.command; import java.util.HashMap; import java.util.Map; -import java.util.Set; import java.util.Map.Entry; +import java.util.Set; import org.apache.blur.thrift.BException; import org.apache.blur.thrift.generated.Arguments; import org.apache.blur.thrift.generated.BlurException; import org.apache.blur.thrift.generated.Value; +import org.apache.blur.thrift.generated.ValueObject; +import org.apache.blur.thrift.generated.ValueObject._Fields; /** * Licensed to the Apache Software Foundation (ASF) under one or more @@ -32,15 +34,15 @@ public class CommandUtil { public static org.apache.blur.thrift.generated.Response fromObjectToThrift(Response response) throws BlurException { org.apache.blur.thrift.generated.Response converted = new org.apache.blur.thrift.generated.Response(); if (response.isAggregatedResults()) { - converted.setValue(toValue(response.getServerResult())); + converted.setValue(toValueObject(response.getServerResult())); } else { Map<Server, Object> serverResults = response.getServerResults(); if (serverResults == null) { - Map<org.apache.blur.thrift.generated.Shard, Value> fromObjectToThrift = fromObjectToThrift(response + Map<org.apache.blur.thrift.generated.Shard, ValueObject> fromObjectToThrift = fromObjectToThrift(response .getShardResults()); converted.setShardToValue(fromObjectToThrift); } else { - Map<org.apache.blur.thrift.generated.Server, Value> fromObjectToThrift = fromObjectToThrift(serverResults); + Map<org.apache.blur.thrift.generated.Server, ValueObject> fromObjectToThrift = fromObjectToThrift(serverResults); converted.setServerToValue(fromObjectToThrift); } } @@ -48,16 +50,16 @@ public class CommandUtil { } @SuppressWarnings("unchecked") - public static <T, R> Map<R, Value> fromObjectToThrift(Map<T, Object> map) throws BlurException { - Map<R, Value> result = new HashMap<R, Value>(); + public static <T, R> Map<R, ValueObject> fromObjectToThrift(Map<T, Object> map) throws BlurException { + Map<R, ValueObject> result = new HashMap<R, ValueObject>(); for (Entry<T, Object> e : map.entrySet()) { T key = e.getKey(); if (key instanceof Shard) { Shard shard = (Shard) key; - result.put((R) new org.apache.blur.thrift.generated.Shard(shard.getShard()), toValue(e.getValue())); + result.put((R) new org.apache.blur.thrift.generated.Shard(shard.getShard()), toValueObject(e.getValue())); } else if (key instanceof Server) { Server server = (Server) key; - result.put((R) new org.apache.blur.thrift.generated.Server(server.getServer()), toValue(e.getValue())); + result.put((R) new org.apache.blur.thrift.generated.Server(server.getServer()), toValueObject(e.getValue())); } } return result; @@ -82,14 +84,26 @@ public class CommandUtil { throw new BException("Object [{0}] not supported.", o); } + public static ValueObject toValueObject(Object o) throws BlurException { + ValueObject valueObject = new ValueObject(); + if (o == null) { + valueObject.setValue(toValue(o)); + } else if (o instanceof BlurObject || o instanceof BlurArray) { + valueObject.setBlurObject(ObjectArrayPacking.pack(o)); + } else { + valueObject.setValue(toValue(o)); + } + return valueObject; + } + public static Args toArgs(Arguments arguments) { if (arguments == null) { return null; } Args args = new Args(); - Map<String, Value> values = arguments.getValues(); - Set<Entry<String, Value>> entrySet = values.entrySet(); - for (Entry<String, Value> e : entrySet) { + Map<String, ValueObject> values = arguments.getValues(); + Set<Entry<String, ValueObject>> entrySet = values.entrySet(); + for (Entry<String, ValueObject> e : entrySet) { args.set(e.getKey(), toObject(e.getValue())); } return args; @@ -109,17 +123,30 @@ public class CommandUtil { Arguments arguments = new Arguments(); Set<Entry<String, Object>> entrySet = args.getValues().entrySet(); for (Entry<String, Object> e : entrySet) { - arguments.putToValues(e.getKey(), toValue(e.getValue())); + arguments.putToValues(e.getKey(), toValueObject(e.getValue())); } return arguments; } @SuppressWarnings("unchecked") - public static <T> Map<Shard, T> fromThriftToObject(Map<org.apache.blur.thrift.generated.Shard, Value> shardToValue) { + public static <T> Map<Shard, T> fromThriftToObject(Map<org.apache.blur.thrift.generated.Shard, ValueObject> shardToValue) { Map<Shard, T> result = new HashMap<Shard, T>(); - for (Entry<org.apache.blur.thrift.generated.Shard, Value> e : shardToValue.entrySet()) { + for (Entry<org.apache.blur.thrift.generated.Shard, ValueObject> e : shardToValue.entrySet()) { result.put(new Shard(e.getKey().getShard()), (T) CommandUtil.toObject(e.getValue())); } return result; } + + @SuppressWarnings("unchecked") + public static <T> T toObject(ValueObject valueObject) { + _Fields field = valueObject.getSetField(); + switch (field) { + case VALUE: + return (T) toObject(valueObject.getValue()); + case BLUR_OBJECT: + return (T) ObjectArrayPacking.unpack(valueObject.getBlurObject()); + default: + throw new RuntimeException("Type unknown."); + } + } } http://git-wip-us.apache.org/repos/asf/incubator-blur/blob/09d76298/blur-core/src/main/java/org/apache/blur/manager/command/ControllerClusterContext.java ---------------------------------------------------------------------- diff --git a/blur-core/src/main/java/org/apache/blur/manager/command/ControllerClusterContext.java b/blur-core/src/main/java/org/apache/blur/manager/command/ControllerClusterContext.java index 344475f..5152683 100644 --- a/blur-core/src/main/java/org/apache/blur/manager/command/ControllerClusterContext.java +++ b/blur-core/src/main/java/org/apache/blur/manager/command/ControllerClusterContext.java @@ -24,7 +24,7 @@ import org.apache.blur.thrift.Connection; import org.apache.blur.thrift.generated.Arguments; import org.apache.blur.thrift.generated.Blur.Client; import org.apache.blur.thrift.generated.Response; -import org.apache.blur.thrift.generated.Value; +import org.apache.blur.thrift.generated.ValueObject; import org.apache.hadoop.conf.Configuration; /** @@ -170,8 +170,8 @@ public class ControllerClusterContext extends ClusterContext implements Closeabl public T call() throws Exception { Arguments arguments = CommandUtil.toArguments(args); Response response = client.execute(getTable(), commandName, arguments); - Value value = response.getValue(); - return (T) CommandUtil.toObject(value); + ValueObject valueObject = response.getValue(); + return (T) CommandUtil.toObject(valueObject); } }); futureMap.put(server, future); http://git-wip-us.apache.org/repos/asf/incubator-blur/blob/09d76298/blur-core/src/main/java/org/apache/blur/manager/command/ObjectArrayPacking.java ---------------------------------------------------------------------- diff --git a/blur-core/src/main/java/org/apache/blur/manager/command/ObjectArrayPacking.java b/blur-core/src/main/java/org/apache/blur/manager/command/ObjectArrayPacking.java new file mode 100644 index 0000000..31e9d36 --- /dev/null +++ b/blur-core/src/main/java/org/apache/blur/manager/command/ObjectArrayPacking.java @@ -0,0 +1,165 @@ +package org.apache.blur.manager.command; + +import java.util.ArrayList; +import java.util.Iterator; +import java.util.List; + +import org.apache.blur.thrift.generated.BlurException; +import org.apache.blur.thrift.generated.BlurObjectType; +import org.apache.blur.thrift.generated.BlurPackedObject; + +/** + * Licensed to the Apache Software Foundation (ASF) under one or more + * contributor license agreements. See the NOTICE file distributed with this + * work for additional information regarding copyright ownership. The ASF + * licenses this file to You under the Apache License, Version 2.0 (the + * "License"); you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, WITHOUT + * WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the + * License for the specific language governing permissions and limitations under + * the License. + */ + +public class ObjectArrayPacking { + + public static void main(String[] args) throws BlurException { + BlurObject object = newBlurObject(); + System.out.println(object.toString(1)); + + List<BlurPackedObject> packedVersion = pack(object); + + int index = 0; + for (BlurPackedObject packedObject : packedVersion) { + System.out.println(index + " " + packedObject); + index++; + } + + BlurObject object2 = (BlurObject) unpack(packedVersion); + System.out.println(object2.toString(1)); + System.out.println(object2.toString()); + } + + public static List<BlurPackedObject> pack(Object object) throws BlurException { + List<BlurPackedObject> packed = new ArrayList<BlurPackedObject>(); + pack(-1, object, packed); + return packed; + } + + public static Object unpack(List<BlurPackedObject> packedVersion) { + int size = packedVersion.size(); + Object[] objects = new Object[size]; + for (int i = 0; i < size; i++) { + BlurPackedObject packedObject = packedVersion.get(i); + switch (packedObject.type) { + case MAP: + objects[i] = new BlurObject(); + break; + case LIST: + objects[i] = new BlurArray(); + break; + case VALUE: + objects[i] = CommandUtil.toObject(packedObject.value); + break; + case NAME: + objects[i] = CommandUtil.toObject(packedObject.value); + break; + default: + throw new RuntimeException(); + } + } + + for (int i = 0; i < size; i++) { + BlurPackedObject packedObject = packedVersion.get(i); + switch (packedObject.type) { + case NAME: + break; + case MAP: + case LIST: + case VALUE: + addValue(i, objects, packedVersion); + break; + default: + throw new RuntimeException(); + } + } + return objects[0]; + } + + private static void addValue(int index, Object[] objects, List<BlurPackedObject> packedVersion) { + BlurPackedObject packedObject = packedVersion.get(index); + int parentId = packedObject.parentId; + if (parentId == -1) { + // root + return; + } + Object value = objects[index]; + BlurPackedObject po = packedVersion.get(parentId); + if (po.type == BlurObjectType.NAME) { + BlurObject map = (BlurObject) objects[po.parentId]; + String key = (String) CommandUtil.toObject(po.value); + map.put(key, value); + } else if (po.type == BlurObjectType.LIST) { + BlurArray array = (BlurArray) objects[parentId]; + array.put(value); + } else { + throw new RuntimeException(); + } + } + + private static void pack(int parentId, Object object, List<BlurPackedObject> packed) throws BlurException { + if (object instanceof BlurObject) { + int id = packed.size(); + BlurPackedObject packedObject = new BlurPackedObject(parentId, BlurObjectType.MAP, null); + packed.add(packedObject); + BlurObject blurObject = (BlurObject) object; + Iterator<String> keys = blurObject.keys(); + while (keys.hasNext()) { + String key = keys.next(); + Object o = blurObject.getObject(key); + BlurPackedObject po = new BlurPackedObject(id, BlurObjectType.NAME, CommandUtil.toValue(key)); + int newId = packed.size(); + packed.add(po); + pack(newId, o, packed); + } + } else if (object instanceof BlurArray) { + int id = packed.size(); + BlurPackedObject packedObject = new BlurPackedObject(parentId, BlurObjectType.LIST, null); + packed.add(packedObject); + BlurArray array = (BlurArray) object; + int length = array.length(); + for (int i = 0; i < length; i++) { + Object o = array.getObject(i); + pack(id, o, packed); + } + } else { + packed.add(new BlurPackedObject(parentId, BlurObjectType.VALUE, CommandUtil.toValue(object))); + } + } + + private static BlurObject newBlurObject() { + BlurObject jsonObject = new BlurObject(); + BlurObject node1 = new BlurObject(); + node1.accumulate("f1", "v1"); + node1.accumulate("f2", "v2a"); + node1.accumulate("f2", "v2b"); + jsonObject.accumulate("node1", node1); + BlurArray node2 = new BlurArray(); + node2.put("val1"); + node2.put("val2"); + node2.put("val3"); + jsonObject.put("node2", node2); + + BlurObject node3 = new BlurObject(); + BlurObject node3n1 = new BlurObject(); + node3n1.put("a", "b"); + node3.put("n1", node3n1); + jsonObject.put("node3", node3); + return jsonObject; + } + +} \ No newline at end of file http://git-wip-us.apache.org/repos/asf/incubator-blur/blob/09d76298/blur-core/src/main/java/org/apache/blur/manager/command/annotation/Argument.java ---------------------------------------------------------------------- diff --git a/blur-core/src/main/java/org/apache/blur/manager/command/annotation/Argument.java b/blur-core/src/main/java/org/apache/blur/manager/command/annotation/Argument.java new file mode 100644 index 0000000..7fc6376 --- /dev/null +++ b/blur-core/src/main/java/org/apache/blur/manager/command/annotation/Argument.java @@ -0,0 +1,28 @@ +package org.apache.blur.manager.command.annotation; + +import java.lang.annotation.Retention; +import java.lang.annotation.RetentionPolicy; + +/** + * Licensed to the Apache Software Foundation (ASF) under one or more + * contributor license agreements. See the NOTICE file distributed with this + * work for additional information regarding copyright ownership. The ASF + * licenses this file to You under the Apache License, Version 2.0 (the + * "License"); you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, WITHOUT + * WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the + * License for the specific language governing permissions and limitations under + * the License. + */ + +@Retention(RetentionPolicy.RUNTIME) +public @interface Argument { + String name(); + + String value(); +} http://git-wip-us.apache.org/repos/asf/incubator-blur/blob/09d76298/blur-core/src/main/java/org/apache/blur/manager/command/annotation/Arguments.java ---------------------------------------------------------------------- diff --git a/blur-core/src/main/java/org/apache/blur/manager/command/annotation/Arguments.java b/blur-core/src/main/java/org/apache/blur/manager/command/annotation/Arguments.java new file mode 100644 index 0000000..fa16955 --- /dev/null +++ b/blur-core/src/main/java/org/apache/blur/manager/command/annotation/Arguments.java @@ -0,0 +1,26 @@ +package org.apache.blur.manager.command.annotation; + +import java.lang.annotation.Retention; +import java.lang.annotation.RetentionPolicy; + +/** + * Licensed to the Apache Software Foundation (ASF) under one or more + * contributor license agreements. See the NOTICE file distributed with this + * work for additional information regarding copyright ownership. The ASF + * licenses this file to You under the Apache License, Version 2.0 (the + * "License"); you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, WITHOUT + * WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the + * License for the specific language governing permissions and limitations under + * the License. + */ + +@Retention(RetentionPolicy.RUNTIME) +public @interface Arguments { + Argument[] value(); +} http://git-wip-us.apache.org/repos/asf/incubator-blur/blob/09d76298/blur-core/src/main/java/org/apache/blur/manager/command/cmds/AddDocument.java ---------------------------------------------------------------------- diff --git a/blur-core/src/main/java/org/apache/blur/manager/command/cmds/AddDocument.java b/blur-core/src/main/java/org/apache/blur/manager/command/cmds/AddDocument.java index 5d2a3dd..db3ac8b 100644 --- a/blur-core/src/main/java/org/apache/blur/manager/command/cmds/AddDocument.java +++ b/blur-core/src/main/java/org/apache/blur/manager/command/cmds/AddDocument.java @@ -3,10 +3,10 @@ package org.apache.blur.manager.command.cmds; import java.io.IOException; import org.apache.blur.manager.command.Args; -import org.apache.blur.manager.command.Argument; -import org.apache.blur.manager.command.Arguments; import org.apache.blur.manager.command.IndexContext; import org.apache.blur.manager.command.IndexWriteCommand; +import org.apache.blur.manager.command.annotation.Argument; +import org.apache.blur.manager.command.annotation.Arguments; import org.apache.lucene.document.Document; import org.apache.lucene.index.IndexWriter; http://git-wip-us.apache.org/repos/asf/incubator-blur/blob/09d76298/blur-core/src/main/java/org/apache/blur/manager/command/cmds/TestBlurObjectCommand.java ---------------------------------------------------------------------- diff --git a/blur-core/src/main/java/org/apache/blur/manager/command/cmds/TestBlurObjectCommand.java b/blur-core/src/main/java/org/apache/blur/manager/command/cmds/TestBlurObjectCommand.java new file mode 100644 index 0000000..a509d9d --- /dev/null +++ b/blur-core/src/main/java/org/apache/blur/manager/command/cmds/TestBlurObjectCommand.java @@ -0,0 +1,72 @@ +/** + * Licensed to the Apache Software Foundation (ASF) under one or more + * contributor license agreements. See the NOTICE file distributed with + * this work for additional information regarding copyright ownership. + * The ASF licenses this file to You under the Apache License, Version 2.0 + * (the "License"); you may not use this file except in compliance with + * the License. You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ +package org.apache.blur.manager.command.cmds; + +import java.io.IOException; +import java.util.Map; +import java.util.Map.Entry; + +import org.apache.blur.manager.command.BlurObject; +import org.apache.blur.manager.command.ClusterCommand; +import org.apache.blur.manager.command.ClusterContext; +import org.apache.blur.manager.command.IndexContext; +import org.apache.blur.manager.command.IndexReadCombiningCommand; +import org.apache.blur.manager.command.Server; +import org.apache.blur.manager.command.Shard; + +@SuppressWarnings("serial") +public class TestBlurObjectCommand extends BaseCommand implements IndexReadCombiningCommand<BlurObject, BlurObject>, + ClusterCommand<BlurObject> { + + @Override + public BlurObject execute(IndexContext context) throws IOException { + BlurObject blurObject = new BlurObject(); + blurObject.accumulate("docCount", context.getIndexReader().numDocs()); + return blurObject; + } + + @Override + public BlurObject combine(Map<Shard, BlurObject> results) throws IOException { + BlurObject blurObject = new BlurObject(); + long total = 0; + for (Entry<Shard, BlurObject> e : results.entrySet()) { + total += e.getValue().getInteger("docCount"); + } + blurObject.put("docCount", total); + return blurObject; + } + + @Override + public BlurObject clusterExecute(ClusterContext context) throws IOException { + BlurObject blurObject = new BlurObject(); + Map<Server, BlurObject> results = context.readServers(null, TestBlurObjectCommand.class); + long total = 0; + for (Entry<Server, BlurObject> e : results.entrySet()) { + BlurObject value = e.getValue(); + Long count = value.getLong("docCount"); + total += count; + } + blurObject.put("docCount", total); + return blurObject; + } + + @Override + public String getName() { + return "testBlurObject"; + } + +} http://git-wip-us.apache.org/repos/asf/incubator-blur/blob/09d76298/blur-core/src/main/java/org/apache/blur/manager/command/cmds/TestBlurObjectCommandUsing.java ---------------------------------------------------------------------- diff --git a/blur-core/src/main/java/org/apache/blur/manager/command/cmds/TestBlurObjectCommandUsing.java b/blur-core/src/main/java/org/apache/blur/manager/command/cmds/TestBlurObjectCommandUsing.java new file mode 100644 index 0000000..91ed1c5 --- /dev/null +++ b/blur-core/src/main/java/org/apache/blur/manager/command/cmds/TestBlurObjectCommandUsing.java @@ -0,0 +1,41 @@ +/** + * Licensed to the Apache Software Foundation (ASF) under one or more + * contributor license agreements. See the NOTICE file distributed with + * this work for additional information regarding copyright ownership. + * The ASF licenses this file to You under the Apache License, Version 2.0 + * (the "License"); you may not use this file except in compliance with + * the License. You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ +package org.apache.blur.manager.command.cmds; + +import java.io.IOException; + +import org.apache.blur.manager.command.BlurObject; +import org.apache.blur.manager.command.ObjectArrayPacking; +import org.apache.blur.thirdparty.thrift_0_9_0.TException; +import org.apache.blur.thrift.BlurClientManager; +import org.apache.blur.thrift.Connection; +import org.apache.blur.thrift.generated.Blur.Client; +import org.apache.blur.thrift.generated.BlurException; +import org.apache.blur.thrift.generated.Response; + +public class TestBlurObjectCommandUsing { + + public static void main(String[] args) throws BlurException, TException, IOException { + Client client = BlurClientManager.getClientPool().getClient(new Connection("localhost:40010")); + Response response = client.execute("test", "testBlurObject", null); + BlurObject object = (BlurObject) ObjectArrayPacking.unpack(response.getValue().getBlurObject()); + System.out.println(object); + // prints => {"docCount":10005} + System.out.println(object.getLong("docCount")); + // prints => 10005 + } +} \ No newline at end of file http://git-wip-us.apache.org/repos/asf/incubator-blur/blob/09d76298/blur-core/src/test/java/org/apache/blur/manager/command/BlurArrayTest.java ---------------------------------------------------------------------- diff --git a/blur-core/src/test/java/org/apache/blur/manager/command/BlurArrayTest.java b/blur-core/src/test/java/org/apache/blur/manager/command/BlurArrayTest.java new file mode 100644 index 0000000..e717838 --- /dev/null +++ b/blur-core/src/test/java/org/apache/blur/manager/command/BlurArrayTest.java @@ -0,0 +1,60 @@ +/** + * Licensed to the Apache Software Foundation (ASF) under one or more + * contributor license agreements. See the NOTICE file distributed with + * this work for additional information regarding copyright ownership. + * The ASF licenses this file to You under the Apache License, Version 2.0 + * (the "License"); you may not use this file except in compliance with + * the License. You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ +package org.apache.blur.manager.command; + +import static org.junit.Assert.assertEquals; +import static org.junit.Assert.assertNull; +import static org.junit.Assert.fail; + +import org.junit.Test; + +public class BlurArrayTest { + + @Test + public void testPutAndLength() { + BlurArray array = new BlurArray(); + assertEquals(0, array.length()); + array.put("v"); + assertEquals(1, array.length()); + assertEquals("v", array.getObject(0)); + } + + @Test + public void testArrayOutOfBounds() { + BlurArray array = new BlurArray(); + try { + array.getObject(123); + fail(); + } catch (IndexOutOfBoundsException e) { + // Pass + } + } + + @Test + public void testSettingValues() { + BlurArray array = new BlurArray(); + array.put(1, "a"); + assertEquals("a", array.getObject(1)); + assertEquals(2, array.length()); + assertNull(array.getObject(0)); + array.put(1, "b"); + assertEquals("b", array.getObject(1)); + assertEquals(2, array.length()); + assertNull(array.getObject(0)); + } + +} http://git-wip-us.apache.org/repos/asf/incubator-blur/blob/09d76298/blur-thrift/src/main/java/org/apache/blur/thrift/generated/Arguments.java ---------------------------------------------------------------------- diff --git a/blur-thrift/src/main/java/org/apache/blur/thrift/generated/Arguments.java b/blur-thrift/src/main/java/org/apache/blur/thrift/generated/Arguments.java index d14f8c9..53a01a0 100644 --- a/blur-thrift/src/main/java/org/apache/blur/thrift/generated/Arguments.java +++ b/blur-thrift/src/main/java/org/apache/blur/thrift/generated/Arguments.java @@ -60,7 +60,7 @@ public class Arguments implements org.apache.blur.thirdparty.thrift_0_9_0.TBase< schemes.put(TupleScheme.class, new ArgumentsTupleSchemeFactory()); } - public Map<String,Value> values; // required + public Map<String,ValueObject> values; // required /** The set of fields this struct contains, along with convenience methods for finding and manipulating them. */ public enum _Fields implements org.apache.blur.thirdparty.thrift_0_9_0.TFieldIdEnum { @@ -127,7 +127,7 @@ public class Arguments implements org.apache.blur.thirdparty.thrift_0_9_0.TBase< tmpMap.put(_Fields.VALUES, new org.apache.blur.thirdparty.thrift_0_9_0.meta_data.FieldMetaData("values", org.apache.blur.thirdparty.thrift_0_9_0.TFieldRequirementType.DEFAULT, new org.apache.blur.thirdparty.thrift_0_9_0.meta_data.MapMetaData(org.apache.blur.thirdparty.thrift_0_9_0.protocol.TType.MAP, new org.apache.blur.thirdparty.thrift_0_9_0.meta_data.FieldValueMetaData(org.apache.blur.thirdparty.thrift_0_9_0.protocol.TType.STRING), - new org.apache.blur.thirdparty.thrift_0_9_0.meta_data.StructMetaData(org.apache.blur.thirdparty.thrift_0_9_0.protocol.TType.STRUCT, Value.class)))); + new org.apache.blur.thirdparty.thrift_0_9_0.meta_data.StructMetaData(org.apache.blur.thirdparty.thrift_0_9_0.protocol.TType.STRUCT, ValueObject.class)))); metaDataMap = Collections.unmodifiableMap(tmpMap); org.apache.blur.thirdparty.thrift_0_9_0.meta_data.FieldMetaData.addStructMetaDataMap(Arguments.class, metaDataMap); } @@ -136,7 +136,7 @@ public class Arguments implements org.apache.blur.thirdparty.thrift_0_9_0.TBase< } public Arguments( - Map<String,Value> values) + Map<String,ValueObject> values) { this(); this.values = values; @@ -147,15 +147,15 @@ public class Arguments implements org.apache.blur.thirdparty.thrift_0_9_0.TBase< */ public Arguments(Arguments other) { if (other.isSetValues()) { - Map<String,Value> __this__values = new HashMap<String,Value>(); - for (Map.Entry<String, Value> other_element : other.values.entrySet()) { + Map<String,ValueObject> __this__values = new HashMap<String,ValueObject>(); + for (Map.Entry<String, ValueObject> other_element : other.values.entrySet()) { String other_element_key = other_element.getKey(); - Value other_element_value = other_element.getValue(); + ValueObject other_element_value = other_element.getValue(); String __this__values_copy_key = other_element_key; - Value __this__values_copy_value = new Value(other_element_value); + ValueObject __this__values_copy_value = new ValueObject(other_element_value); __this__values.put(__this__values_copy_key, __this__values_copy_value); } @@ -176,18 +176,18 @@ public class Arguments implements org.apache.blur.thirdparty.thrift_0_9_0.TBase< return (this.values == null) ? 0 : this.values.size(); } - public void putToValues(String key, Value val) { + public void putToValues(String key, ValueObject val) { if (this.values == null) { - this.values = new HashMap<String,Value>(); + this.values = new HashMap<String,ValueObject>(); } this.values.put(key, val); } - public Map<String,Value> getValues() { + public Map<String,ValueObject> getValues() { return this.values; } - public Arguments setValues(Map<String,Value> values) { + public Arguments setValues(Map<String,ValueObject> values) { this.values = values; return this; } @@ -213,7 +213,7 @@ public class Arguments implements org.apache.blur.thirdparty.thrift_0_9_0.TBase< if (value == null) { unsetValues(); } else { - setValues((Map<String,Value>)value); + setValues((Map<String,ValueObject>)value); } break; @@ -363,16 +363,16 @@ public class Arguments implements org.apache.blur.thirdparty.thrift_0_9_0.TBase< case 1: // VALUES if (schemeField.type == org.apache.blur.thirdparty.thrift_0_9_0.protocol.TType.MAP) { { - org.apache.blur.thirdparty.thrift_0_9_0.protocol.TMap _map252 = iprot.readMapBegin(); - struct.values = new HashMap<String,Value>(2*_map252.size); - for (int _i253 = 0; _i253 < _map252.size; ++_i253) + org.apache.blur.thirdparty.thrift_0_9_0.protocol.TMap _map260 = iprot.readMapBegin(); + struct.values = new HashMap<String,ValueObject>(2*_map260.size); + for (int _i261 = 0; _i261 < _map260.size; ++_i261) { - String _key254; // optional - Value _val255; // required - _key254 = iprot.readString(); - _val255 = new Value(); - _val255.read(iprot); - struct.values.put(_key254, _val255); + String _key262; // optional + ValueObject _val263; // required + _key262 = iprot.readString(); + _val263 = new ValueObject(); + _val263.read(iprot); + struct.values.put(_key262, _val263); } iprot.readMapEnd(); } @@ -400,10 +400,10 @@ public class Arguments implements org.apache.blur.thirdparty.thrift_0_9_0.TBase< oprot.writeFieldBegin(VALUES_FIELD_DESC); { oprot.writeMapBegin(new org.apache.blur.thirdparty.thrift_0_9_0.protocol.TMap(org.apache.blur.thirdparty.thrift_0_9_0.protocol.TType.STRING, org.apache.blur.thirdparty.thrift_0_9_0.protocol.TType.STRUCT, struct.values.size())); - for (Map.Entry<String, Value> _iter256 : struct.values.entrySet()) + for (Map.Entry<String, ValueObject> _iter264 : struct.values.entrySet()) { - oprot.writeString(_iter256.getKey()); - _iter256.getValue().write(oprot); + oprot.writeString(_iter264.getKey()); + _iter264.getValue().write(oprot); } oprot.writeMapEnd(); } @@ -434,10 +434,10 @@ public class Arguments implements org.apache.blur.thirdparty.thrift_0_9_0.TBase< if (struct.isSetValues()) { { oprot.writeI32(struct.values.size()); - for (Map.Entry<String, Value> _iter257 : struct.values.entrySet()) + for (Map.Entry<String, ValueObject> _iter265 : struct.values.entrySet()) { - oprot.writeString(_iter257.getKey()); - _iter257.getValue().write(oprot); + oprot.writeString(_iter265.getKey()); + _iter265.getValue().write(oprot); } } } @@ -449,16 +449,16 @@ public class Arguments implements org.apache.blur.thirdparty.thrift_0_9_0.TBase< BitSet incoming = iprot.readBitSet(1); if (incoming.get(0)) { { - org.apache.blur.thirdparty.thrift_0_9_0.protocol.TMap _map258 = new org.apache.blur.thirdparty.thrift_0_9_0.protocol.TMap(org.apache.blur.thirdparty.thrift_0_9_0.protocol.TType.STRING, org.apache.blur.thirdparty.thrift_0_9_0.protocol.TType.STRUCT, iprot.readI32()); - struct.values = new HashMap<String,Value>(2*_map258.size); - for (int _i259 = 0; _i259 < _map258.size; ++_i259) + org.apache.blur.thirdparty.thrift_0_9_0.protocol.TMap _map266 = new org.apache.blur.thirdparty.thrift_0_9_0.protocol.TMap(org.apache.blur.thirdparty.thrift_0_9_0.protocol.TType.STRING, org.apache.blur.thirdparty.thrift_0_9_0.protocol.TType.STRUCT, iprot.readI32()); + struct.values = new HashMap<String,ValueObject>(2*_map266.size); + for (int _i267 = 0; _i267 < _map266.size; ++_i267) { - String _key260; // optional - Value _val261; // required - _key260 = iprot.readString(); - _val261 = new Value(); - _val261.read(iprot); - struct.values.put(_key260, _val261); + String _key268; // optional + ValueObject _val269; // required + _key268 = iprot.readString(); + _val269 = new ValueObject(); + _val269.read(iprot); + struct.values.put(_key268, _val269); } } struct.setValuesIsSet(true);
