incubator-blur-commits mailing list archives

Site index · List index
Message view « Date » · « Thread »
Top « Date » · « Thread »
From amccu...@apache.org
Subject [7/7] git commit: Adding feature that should allow for custom objects for be passed through blur platform as arguments and results.
Date Tue, 02 Sep 2014 13:23:52 GMT
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 <amccurry@gmail.com>
Authored: Tue Sep 2 09:23:54 2014 -0400
Committer: Aaron McCurry <amccurry@gmail.com>
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);


Mime
View raw message