You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@usergrid.apache.org by to...@apache.org on 2014/10/08 18:27:50 UTC

[4/9] git commit: Changed the unique field serialization to work when class names are changed.

Changed the unique field serialization to work when class names are changed.

Upgraded jackson and smile versions

Removed pretty print during serialization for efficiency


Project: http://git-wip-us.apache.org/repos/asf/incubator-usergrid/repo
Commit: http://git-wip-us.apache.org/repos/asf/incubator-usergrid/commit/150897d6
Tree: http://git-wip-us.apache.org/repos/asf/incubator-usergrid/tree/150897d6
Diff: http://git-wip-us.apache.org/repos/asf/incubator-usergrid/diff/150897d6

Branch: refs/heads/two-dot-o
Commit: 150897d61445b4fb6778b0094846b3a9857fb6b0
Parents: fd84175
Author: Todd Nine <to...@apache.org>
Authored: Tue Oct 7 16:04:26 2014 -0600
Committer: Todd Nine <to...@apache.org>
Committed: Tue Oct 7 16:04:26 2014 -0600

----------------------------------------------------------------------
 .../serialization/impl/FieldSerializer.java     | 71 +++++++++++---------
 .../MvccEntitySerializationStrategyImpl.java    |  9 +--
 .../mvcc/stage/write/WriteUniqueVerifyTest.java | 10 ++-
 .../persistence/model/field/AbstractField.java  |  4 ++
 .../persistence/model/field/ArrayField.java     |  3 +
 .../persistence/model/field/BooleanField.java   |  6 ++
 .../persistence/model/field/ByteArrayField.java |  6 ++
 .../persistence/model/field/DoubleField.java    |  6 ++
 .../model/field/EntityObjectField.java          |  6 ++
 .../usergrid/persistence/model/field/Field.java |  8 +++
 .../persistence/model/field/FieldTypeName.java  | 42 ++++++++++++
 .../persistence/model/field/FloatField.java     |  6 ++
 .../persistence/model/field/IntegerField.java   |  6 ++
 .../persistence/model/field/ListField.java      |  7 ++
 .../persistence/model/field/LocationField.java  |  6 ++
 .../persistence/model/field/LongField.java      |  6 ++
 .../persistence/model/field/SetField.java       |  6 ++
 .../persistence/model/field/StringField.java    |  6 ++
 .../persistence/model/field/UUIDField.java      |  6 ++
 stack/corepersistence/pom.xml                   |  4 +-
 20 files changed, 183 insertions(+), 41 deletions(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/incubator-usergrid/blob/150897d6/stack/corepersistence/collection/src/main/java/org/apache/usergrid/persistence/collection/serialization/impl/FieldSerializer.java
----------------------------------------------------------------------
diff --git a/stack/corepersistence/collection/src/main/java/org/apache/usergrid/persistence/collection/serialization/impl/FieldSerializer.java b/stack/corepersistence/collection/src/main/java/org/apache/usergrid/persistence/collection/serialization/impl/FieldSerializer.java
index 292f550..7eb8216 100644
--- a/stack/corepersistence/collection/src/main/java/org/apache/usergrid/persistence/collection/serialization/impl/FieldSerializer.java
+++ b/stack/corepersistence/collection/src/main/java/org/apache/usergrid/persistence/collection/serialization/impl/FieldSerializer.java
@@ -23,11 +23,11 @@ import java.util.UUID;
 import org.slf4j.Logger;
 import org.slf4j.LoggerFactory;
 
-import org.apache.commons.lang3.StringUtils;
-
 import org.apache.usergrid.persistence.core.astyanax.CompositeFieldSerializer;
+import org.apache.usergrid.persistence.model.field.BooleanField;
 import org.apache.usergrid.persistence.model.field.DoubleField;
 import org.apache.usergrid.persistence.model.field.Field;
+import org.apache.usergrid.persistence.model.field.FieldTypeName;
 import org.apache.usergrid.persistence.model.field.IntegerField;
 import org.apache.usergrid.persistence.model.field.LongField;
 import org.apache.usergrid.persistence.model.field.StringField;
@@ -38,40 +38,42 @@ import com.netflix.astyanax.model.CompositeParser;
 
 // TODO: replace with "real" serializer
 
+
 /**
  * Serialize Field for use as part of row-key in Unique Values Column Family.
  */
 public class FieldSerializer implements CompositeFieldSerializer<Field> {
 
-    private static final Logger LOG = LoggerFactory.getLogger( FieldSerializer.class );
-
-    public enum FieldType {
-        BOOLEAN_FIELD,
-        DOUBLE_FIELD,
-        INTEGER_FIELD,
-        LONG_FIELD,
-        STRING_FIELD,
-        UUID_FIELD
-    };
 
     private static final FieldSerializer INSTANCE = new FieldSerializer();
 
+
     @Override
     public void toComposite( final CompositeBuilder builder, final Field field ) {
 
         builder.addString( field.getName() );
 
-        // TODO: use the real field value serializer(s) here? Store hash instead?
         builder.addString( field.getValue().toString() );
-         
-        String simpleName = field.getClass().getSimpleName();
-        int nameIndex = simpleName.lastIndexOf(".");
-        String fieldType = simpleName.substring(nameIndex + 1, simpleName.length() - "Field".length());
-        fieldType = StringUtils.upperCase( fieldType + "_FIELD" );
 
-        builder.addString( fieldType );
+        final FieldTypeName fieldType = field.getTypeName();
+
+        switch ( fieldType ) {
+            case BOOLEAN:
+            case DOUBLE:
+            case INTEGER:
+            case LONG:
+            case STRING:
+            case UUID:
+                break;
+            default:
+                throw new RuntimeException(
+                        String.format( "Type %s is not a supported type for unique values", fieldType ));
+        }
+
+        builder.addString( fieldType.name() );
     }
 
+
     @Override
     public Field fromComposite( final CompositeParser composite ) {
 
@@ -79,25 +81,28 @@ public class FieldSerializer implements CompositeFieldSerializer<Field> {
         final String value = composite.readString();
         final String typeString = composite.readString();
 
-        final FieldType fieldType = FieldType.valueOf( typeString );
-
-        switch (fieldType) {
-            case DOUBLE_FIELD: 
-                return new DoubleField(name, Double.parseDouble(value));
-            case INTEGER_FIELD: 
-                return new IntegerField(name, Integer.parseInt(value));
-            case LONG_FIELD: 
-                return new LongField(name, Long.parseLong(value));
-            case STRING_FIELD: 
-                return new StringField(name, value);
-            case UUID_FIELD: 
-                return new UUIDField(name, UUID.fromString(value));
+        final FieldTypeName fieldType = FieldTypeName.valueOf( typeString );
+
+        switch ( fieldType ) {
+            case BOOLEAN:
+                return new BooleanField( name, Boolean.parseBoolean( value ) );
+            case DOUBLE:
+                return new DoubleField( name, Double.parseDouble( value ) );
+            case INTEGER:
+                return new IntegerField( name, Integer.parseInt( value ) );
+            case LONG:
+                return new LongField( name, Long.parseLong( value ) );
+            case STRING:
+                return new StringField( name, value );
+            case UUID:
+                return new UUIDField( name, UUID.fromString( value ) );
             default:
-                throw new RuntimeException("Unknown unique field type");
+                throw new RuntimeException( "Unknown unique field type" );
         }
     }
 
 
+
     /**
      * Get the singleton serializer
      */

http://git-wip-us.apache.org/repos/asf/incubator-usergrid/blob/150897d6/stack/corepersistence/collection/src/main/java/org/apache/usergrid/persistence/collection/serialization/impl/MvccEntitySerializationStrategyImpl.java
----------------------------------------------------------------------
diff --git a/stack/corepersistence/collection/src/main/java/org/apache/usergrid/persistence/collection/serialization/impl/MvccEntitySerializationStrategyImpl.java b/stack/corepersistence/collection/src/main/java/org/apache/usergrid/persistence/collection/serialization/impl/MvccEntitySerializationStrategyImpl.java
index a9e087b..419d0f0 100644
--- a/stack/corepersistence/collection/src/main/java/org/apache/usergrid/persistence/collection/serialization/impl/MvccEntitySerializationStrategyImpl.java
+++ b/stack/corepersistence/collection/src/main/java/org/apache/usergrid/persistence/collection/serialization/impl/MvccEntitySerializationStrategyImpl.java
@@ -324,8 +324,8 @@ public class MvccEntitySerializationStrategyImpl implements MvccEntitySerializat
         public EntitySerializer() {
             try {
                 mapper = new ObjectMapper( f );
-                mapper.enable(SerializationFeature.INDENT_OUTPUT);
-                mapper.enableDefaultTypingAsProperty(ObjectMapper.DefaultTyping.JAVA_LANG_OBJECT, "@class"); 
+//                mapper.enable(SerializationFeature.INDENT_OUTPUT); don't indent output, causes slowness
+                mapper.enableDefaultTypingAsProperty(ObjectMapper.DefaultTyping.JAVA_LANG_OBJECT, "@class");
             } catch ( Exception e ) {
                 throw new RuntimeException("Error setting up mapper", e);
             }
@@ -340,6 +340,7 @@ public class MvccEntitySerializationStrategyImpl implements MvccEntitySerializat
             CompositeBuilder builder = Composites.newCompositeBuilder();
 
             builder.addBytes( VERSION );
+
             //mark this version as empty
             if ( !wrapper.entity.isPresent() ) {
                 //we're empty
@@ -362,7 +363,7 @@ public class MvccEntitySerializationStrategyImpl implements MvccEntitySerializat
                 builder.addBytes( mapper.writeValueAsBytes( wrapper.entity.get() ) );
             }
             catch ( Exception e ) {
-                throw new RuntimeException(e.getMessage());
+                throw new RuntimeException("Unable to serialize entity", e);
             }
 
             return builder.build();
@@ -397,7 +398,7 @@ public class MvccEntitySerializationStrategyImpl implements MvccEntitySerializat
                 storedEntity = mapper.readValue( array, start, length, Entity.class );
             }
             catch ( Exception e ) {
-                throw new RuntimeException(e.getMessage());
+                throw new RuntimeException("Unable to read entity data", e);
             }
 
             final Optional<Entity> entity = Optional.of( storedEntity);

http://git-wip-us.apache.org/repos/asf/incubator-usergrid/blob/150897d6/stack/corepersistence/collection/src/test/java/org/apache/usergrid/persistence/collection/mvcc/stage/write/WriteUniqueVerifyTest.java
----------------------------------------------------------------------
diff --git a/stack/corepersistence/collection/src/test/java/org/apache/usergrid/persistence/collection/mvcc/stage/write/WriteUniqueVerifyTest.java b/stack/corepersistence/collection/src/test/java/org/apache/usergrid/persistence/collection/mvcc/stage/write/WriteUniqueVerifyTest.java
index ba89503..1dc2f32 100644
--- a/stack/corepersistence/collection/src/test/java/org/apache/usergrid/persistence/collection/mvcc/stage/write/WriteUniqueVerifyTest.java
+++ b/stack/corepersistence/collection/src/test/java/org/apache/usergrid/persistence/collection/mvcc/stage/write/WriteUniqueVerifyTest.java
@@ -35,6 +35,8 @@ import org.apache.usergrid.persistence.model.entity.Entity;
 
 import com.google.inject.Inject;
 import com.netflix.astyanax.Keyspace;
+import com.netflix.astyanax.MutationBatch;
+import com.netflix.astyanax.connectionpool.exceptions.ConnectionException;
 
 import static org.apache.usergrid.persistence.collection.mvcc.stage.TestEntityGenerator.fromEntity;
 import static org.apache.usergrid.persistence.collection.mvcc.stage.TestEntityGenerator.generateEntity;
@@ -42,6 +44,7 @@ import static org.junit.Assert.assertSame;
 import static org.mockito.Mockito.mock;
 import static org.mockito.Mockito.never;
 import static org.mockito.Mockito.verify;
+import static org.mockito.Mockito.when;
 
 
 @RunWith( ITRunner.class )
@@ -65,9 +68,12 @@ public class WriteUniqueVerifyTest {
 
 
     @Test
-    public void testNoFields() {
+    public void testNoFields() throws ConnectionException {
         final CollectionScope collectionScope = mock( CollectionScope.class );
         final Keyspace keyspace = mock(Keyspace.class);
+        final MutationBatch batch = mock(MutationBatch.class);
+
+        when(keyspace.prepareMutationBatch()).thenReturn(batch);
 
         // set up the mock to return the entity from the start phase
         final Entity entity = generateEntity();
@@ -82,7 +88,7 @@ public class WriteUniqueVerifyTest {
 
        //if we get here, it's a success.  We want to test no exceptions are thrown
 
-        verify(keyspace, never()).prepareMutationBatch();
+        verify(batch, never()).execute();
     }
 
 }

http://git-wip-us.apache.org/repos/asf/incubator-usergrid/blob/150897d6/stack/corepersistence/model/src/main/java/org/apache/usergrid/persistence/model/field/AbstractField.java
----------------------------------------------------------------------
diff --git a/stack/corepersistence/model/src/main/java/org/apache/usergrid/persistence/model/field/AbstractField.java b/stack/corepersistence/model/src/main/java/org/apache/usergrid/persistence/model/field/AbstractField.java
index 0283277..ad5c764 100644
--- a/stack/corepersistence/model/src/main/java/org/apache/usergrid/persistence/model/field/AbstractField.java
+++ b/stack/corepersistence/model/src/main/java/org/apache/usergrid/persistence/model/field/AbstractField.java
@@ -20,12 +20,14 @@ package org.apache.usergrid.persistence.model.field;
 
 import org.apache.usergrid.persistence.model.field.value.EntityObject;
 
+import com.fasterxml.jackson.annotation.JsonFormat;
 import com.fasterxml.jackson.annotation.JsonTypeInfo;
 
 /**
  * Base class for data information
  */
 @JsonTypeInfo( use=JsonTypeInfo.Id.CLASS, include=JsonTypeInfo.As.PROPERTY, property="@class" )
+
 public abstract class AbstractField<T> implements Field<T> {
 
     /**
@@ -108,4 +110,6 @@ public abstract class AbstractField<T> implements Field<T> {
     public int hashCode() {
         return name.hashCode();
     }
+
+
 }

http://git-wip-us.apache.org/repos/asf/incubator-usergrid/blob/150897d6/stack/corepersistence/model/src/main/java/org/apache/usergrid/persistence/model/field/ArrayField.java
----------------------------------------------------------------------
diff --git a/stack/corepersistence/model/src/main/java/org/apache/usergrid/persistence/model/field/ArrayField.java b/stack/corepersistence/model/src/main/java/org/apache/usergrid/persistence/model/field/ArrayField.java
index 452eb49..0e7bc4a 100644
--- a/stack/corepersistence/model/src/main/java/org/apache/usergrid/persistence/model/field/ArrayField.java
+++ b/stack/corepersistence/model/src/main/java/org/apache/usergrid/persistence/model/field/ArrayField.java
@@ -46,4 +46,7 @@ public class ArrayField<T> extends ListField<T> {
     public void add( T listItem ) {
         value.add( listItem );
     }
+
+
+
 }

http://git-wip-us.apache.org/repos/asf/incubator-usergrid/blob/150897d6/stack/corepersistence/model/src/main/java/org/apache/usergrid/persistence/model/field/BooleanField.java
----------------------------------------------------------------------
diff --git a/stack/corepersistence/model/src/main/java/org/apache/usergrid/persistence/model/field/BooleanField.java b/stack/corepersistence/model/src/main/java/org/apache/usergrid/persistence/model/field/BooleanField.java
index fed011d..7965855 100644
--- a/stack/corepersistence/model/src/main/java/org/apache/usergrid/persistence/model/field/BooleanField.java
+++ b/stack/corepersistence/model/src/main/java/org/apache/usergrid/persistence/model/field/BooleanField.java
@@ -32,4 +32,10 @@ public class BooleanField extends AbstractField<Boolean> {
 
     public BooleanField() {
     }
+
+
+    @Override
+    public FieldTypeName getTypeName() {
+        return FieldTypeName.BOOLEAN;
+    }
 }

http://git-wip-us.apache.org/repos/asf/incubator-usergrid/blob/150897d6/stack/corepersistence/model/src/main/java/org/apache/usergrid/persistence/model/field/ByteArrayField.java
----------------------------------------------------------------------
diff --git a/stack/corepersistence/model/src/main/java/org/apache/usergrid/persistence/model/field/ByteArrayField.java b/stack/corepersistence/model/src/main/java/org/apache/usergrid/persistence/model/field/ByteArrayField.java
index ad850f6..2e116d7 100644
--- a/stack/corepersistence/model/src/main/java/org/apache/usergrid/persistence/model/field/ByteArrayField.java
+++ b/stack/corepersistence/model/src/main/java/org/apache/usergrid/persistence/model/field/ByteArrayField.java
@@ -43,4 +43,10 @@ public class ByteArrayField extends AbstractField<byte[]> {
     public Class getClassinfo() {
         return classinfo;
     }
+
+
+    @Override
+    public FieldTypeName getTypeName() {
+        return FieldTypeName.BYTE_ARRAY;
+    }
 }

http://git-wip-us.apache.org/repos/asf/incubator-usergrid/blob/150897d6/stack/corepersistence/model/src/main/java/org/apache/usergrid/persistence/model/field/DoubleField.java
----------------------------------------------------------------------
diff --git a/stack/corepersistence/model/src/main/java/org/apache/usergrid/persistence/model/field/DoubleField.java b/stack/corepersistence/model/src/main/java/org/apache/usergrid/persistence/model/field/DoubleField.java
index 2f358bd..ccbc3e2 100644
--- a/stack/corepersistence/model/src/main/java/org/apache/usergrid/persistence/model/field/DoubleField.java
+++ b/stack/corepersistence/model/src/main/java/org/apache/usergrid/persistence/model/field/DoubleField.java
@@ -32,4 +32,10 @@ public class DoubleField extends AbstractField<Double> {
 
     public DoubleField() {
     }
+
+
+    @Override
+    public FieldTypeName getTypeName() {
+           return FieldTypeName.DOUBLE;
+       }
 }

http://git-wip-us.apache.org/repos/asf/incubator-usergrid/blob/150897d6/stack/corepersistence/model/src/main/java/org/apache/usergrid/persistence/model/field/EntityObjectField.java
----------------------------------------------------------------------
diff --git a/stack/corepersistence/model/src/main/java/org/apache/usergrid/persistence/model/field/EntityObjectField.java b/stack/corepersistence/model/src/main/java/org/apache/usergrid/persistence/model/field/EntityObjectField.java
index 7739291..ace9841 100644
--- a/stack/corepersistence/model/src/main/java/org/apache/usergrid/persistence/model/field/EntityObjectField.java
+++ b/stack/corepersistence/model/src/main/java/org/apache/usergrid/persistence/model/field/EntityObjectField.java
@@ -32,4 +32,10 @@ public class EntityObjectField extends AbstractField<EntityObject> {
     public EntityObjectField() {
 
     }
+
+
+    @Override
+    public FieldTypeName getTypeName() {
+        return FieldTypeName.OBJECT;
+    }
 }

http://git-wip-us.apache.org/repos/asf/incubator-usergrid/blob/150897d6/stack/corepersistence/model/src/main/java/org/apache/usergrid/persistence/model/field/Field.java
----------------------------------------------------------------------
diff --git a/stack/corepersistence/model/src/main/java/org/apache/usergrid/persistence/model/field/Field.java b/stack/corepersistence/model/src/main/java/org/apache/usergrid/persistence/model/field/Field.java
index 9da0d4e..c0a111f 100644
--- a/stack/corepersistence/model/src/main/java/org/apache/usergrid/persistence/model/field/Field.java
+++ b/stack/corepersistence/model/src/main/java/org/apache/usergrid/persistence/model/field/Field.java
@@ -20,6 +20,7 @@ package org.apache.usergrid.persistence.model.field;
 
 import java.io.Serializable;
 
+import com.fasterxml.jackson.annotation.JsonIgnore;
 import com.fasterxml.jackson.annotation.JsonProperty;
 import com.fasterxml.jackson.annotation.JsonTypeInfo;
 
@@ -52,4 +53,11 @@ public interface Field<T> extends Serializable {
      */
     public boolean isUnique();
 
+    /**
+     * Get the type of the field as a string.  string, boolean, long, integer etc
+     * @return
+     */
+    @JsonIgnore
+    public FieldTypeName getTypeName();
+
 }

http://git-wip-us.apache.org/repos/asf/incubator-usergrid/blob/150897d6/stack/corepersistence/model/src/main/java/org/apache/usergrid/persistence/model/field/FieldTypeName.java
----------------------------------------------------------------------
diff --git a/stack/corepersistence/model/src/main/java/org/apache/usergrid/persistence/model/field/FieldTypeName.java b/stack/corepersistence/model/src/main/java/org/apache/usergrid/persistence/model/field/FieldTypeName.java
new file mode 100644
index 0000000..7bba4c9
--- /dev/null
+++ b/stack/corepersistence/model/src/main/java/org/apache/usergrid/persistence/model/field/FieldTypeName.java
@@ -0,0 +1,42 @@
+package org.apache.usergrid.persistence.model.field;/*
+ * 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.
+ */
+
+
+import com.fasterxml.jackson.annotation.JsonFormat;
+
+
+/**
+ * Enum of all field types.  DO NOT change these names, they're used in persistence, and will result in
+ * unique checks failing
+ */
+public enum FieldTypeName {
+    ARRAY,
+    BOOLEAN,
+    BYTE_ARRAY,
+    DOUBLE,
+    OBJECT,
+    FLOAT,
+    INTEGER,
+    LIST,
+    LOCATION,
+    LONG,
+    SET,
+    STRING,
+    UUID
+}

http://git-wip-us.apache.org/repos/asf/incubator-usergrid/blob/150897d6/stack/corepersistence/model/src/main/java/org/apache/usergrid/persistence/model/field/FloatField.java
----------------------------------------------------------------------
diff --git a/stack/corepersistence/model/src/main/java/org/apache/usergrid/persistence/model/field/FloatField.java b/stack/corepersistence/model/src/main/java/org/apache/usergrid/persistence/model/field/FloatField.java
index 71729b3..28c6f36 100644
--- a/stack/corepersistence/model/src/main/java/org/apache/usergrid/persistence/model/field/FloatField.java
+++ b/stack/corepersistence/model/src/main/java/org/apache/usergrid/persistence/model/field/FloatField.java
@@ -32,4 +32,10 @@ public class FloatField extends AbstractField<Float> {
 
     public FloatField() {
     }
+
+
+    @Override
+    public FieldTypeName getTypeName() {
+           return FieldTypeName.FLOAT;
+       }
 }

http://git-wip-us.apache.org/repos/asf/incubator-usergrid/blob/150897d6/stack/corepersistence/model/src/main/java/org/apache/usergrid/persistence/model/field/IntegerField.java
----------------------------------------------------------------------
diff --git a/stack/corepersistence/model/src/main/java/org/apache/usergrid/persistence/model/field/IntegerField.java b/stack/corepersistence/model/src/main/java/org/apache/usergrid/persistence/model/field/IntegerField.java
index 6412b35..3eb0330 100644
--- a/stack/corepersistence/model/src/main/java/org/apache/usergrid/persistence/model/field/IntegerField.java
+++ b/stack/corepersistence/model/src/main/java/org/apache/usergrid/persistence/model/field/IntegerField.java
@@ -32,4 +32,10 @@ public class IntegerField extends AbstractField<Integer> {
 
     public IntegerField() {
     }
+
+
+    @Override
+    public FieldTypeName getTypeName() {
+        return FieldTypeName.INTEGER;
+    }
 }

http://git-wip-us.apache.org/repos/asf/incubator-usergrid/blob/150897d6/stack/corepersistence/model/src/main/java/org/apache/usergrid/persistence/model/field/ListField.java
----------------------------------------------------------------------
diff --git a/stack/corepersistence/model/src/main/java/org/apache/usergrid/persistence/model/field/ListField.java b/stack/corepersistence/model/src/main/java/org/apache/usergrid/persistence/model/field/ListField.java
index abd7d8a..b746dc4 100644
--- a/stack/corepersistence/model/src/main/java/org/apache/usergrid/persistence/model/field/ListField.java
+++ b/stack/corepersistence/model/src/main/java/org/apache/usergrid/persistence/model/field/ListField.java
@@ -48,4 +48,11 @@ public class ListField<T> extends AbstractField<List<T>> {
     public void add( T listItem ) {
         value.add( listItem );
     }
+
+
+    @Override
+    public FieldTypeName getTypeName() {
+        return FieldTypeName.LIST;
+
+    }
 }

http://git-wip-us.apache.org/repos/asf/incubator-usergrid/blob/150897d6/stack/corepersistence/model/src/main/java/org/apache/usergrid/persistence/model/field/LocationField.java
----------------------------------------------------------------------
diff --git a/stack/corepersistence/model/src/main/java/org/apache/usergrid/persistence/model/field/LocationField.java b/stack/corepersistence/model/src/main/java/org/apache/usergrid/persistence/model/field/LocationField.java
index 29e3169..e220099 100644
--- a/stack/corepersistence/model/src/main/java/org/apache/usergrid/persistence/model/field/LocationField.java
+++ b/stack/corepersistence/model/src/main/java/org/apache/usergrid/persistence/model/field/LocationField.java
@@ -35,4 +35,10 @@ public class LocationField extends AbstractField<Location> {
     public LocationField() {
 
     }
+
+
+    @Override
+    public FieldTypeName getTypeName() {
+            return FieldTypeName.LOCATION;
+        }
 }

http://git-wip-us.apache.org/repos/asf/incubator-usergrid/blob/150897d6/stack/corepersistence/model/src/main/java/org/apache/usergrid/persistence/model/field/LongField.java
----------------------------------------------------------------------
diff --git a/stack/corepersistence/model/src/main/java/org/apache/usergrid/persistence/model/field/LongField.java b/stack/corepersistence/model/src/main/java/org/apache/usergrid/persistence/model/field/LongField.java
index faa45a4..d4b6297 100644
--- a/stack/corepersistence/model/src/main/java/org/apache/usergrid/persistence/model/field/LongField.java
+++ b/stack/corepersistence/model/src/main/java/org/apache/usergrid/persistence/model/field/LongField.java
@@ -35,4 +35,10 @@ public class LongField extends AbstractField<Long> {
     public LongField() {
     }
 
+
+    @Override
+    public FieldTypeName getTypeName() {
+                return FieldTypeName.LONG;
+            }
+
 }

http://git-wip-us.apache.org/repos/asf/incubator-usergrid/blob/150897d6/stack/corepersistence/model/src/main/java/org/apache/usergrid/persistence/model/field/SetField.java
----------------------------------------------------------------------
diff --git a/stack/corepersistence/model/src/main/java/org/apache/usergrid/persistence/model/field/SetField.java b/stack/corepersistence/model/src/main/java/org/apache/usergrid/persistence/model/field/SetField.java
index f93c9db..47a9c7c 100644
--- a/stack/corepersistence/model/src/main/java/org/apache/usergrid/persistence/model/field/SetField.java
+++ b/stack/corepersistence/model/src/main/java/org/apache/usergrid/persistence/model/field/SetField.java
@@ -47,4 +47,10 @@ public class SetField<T> extends AbstractField<Set<T>> {
     public void addEntry( T setItem ) {
         value.add( setItem );
     }
+
+
+    @Override
+    public FieldTypeName getTypeName() {
+                return FieldTypeName.SET;
+            }
 }

http://git-wip-us.apache.org/repos/asf/incubator-usergrid/blob/150897d6/stack/corepersistence/model/src/main/java/org/apache/usergrid/persistence/model/field/StringField.java
----------------------------------------------------------------------
diff --git a/stack/corepersistence/model/src/main/java/org/apache/usergrid/persistence/model/field/StringField.java b/stack/corepersistence/model/src/main/java/org/apache/usergrid/persistence/model/field/StringField.java
index 1bc94da..a3a9339 100644
--- a/stack/corepersistence/model/src/main/java/org/apache/usergrid/persistence/model/field/StringField.java
+++ b/stack/corepersistence/model/src/main/java/org/apache/usergrid/persistence/model/field/StringField.java
@@ -32,4 +32,10 @@ public class StringField extends AbstractField<String> {
 
     public StringField() {
     }
+
+
+    @Override
+    public FieldTypeName getTypeName() {
+                return FieldTypeName.STRING;
+            }
 }

http://git-wip-us.apache.org/repos/asf/incubator-usergrid/blob/150897d6/stack/corepersistence/model/src/main/java/org/apache/usergrid/persistence/model/field/UUIDField.java
----------------------------------------------------------------------
diff --git a/stack/corepersistence/model/src/main/java/org/apache/usergrid/persistence/model/field/UUIDField.java b/stack/corepersistence/model/src/main/java/org/apache/usergrid/persistence/model/field/UUIDField.java
index 19602d2..4c67447 100644
--- a/stack/corepersistence/model/src/main/java/org/apache/usergrid/persistence/model/field/UUIDField.java
+++ b/stack/corepersistence/model/src/main/java/org/apache/usergrid/persistence/model/field/UUIDField.java
@@ -34,4 +34,10 @@ public class UUIDField extends AbstractField<UUID> {
 
     public UUIDField() {
     }
+
+
+    @Override
+    public FieldTypeName getTypeName() {
+                return FieldTypeName.UUID;
+            }
 }

http://git-wip-us.apache.org/repos/asf/incubator-usergrid/blob/150897d6/stack/corepersistence/pom.xml
----------------------------------------------------------------------
diff --git a/stack/corepersistence/pom.xml b/stack/corepersistence/pom.xml
index 7482271..fac5db9 100644
--- a/stack/corepersistence/pom.xml
+++ b/stack/corepersistence/pom.xml
@@ -65,8 +65,8 @@ limitations under the License.
         <guice.version>3.0</guice.version>
         <guicyfig.version>3.2</guicyfig.version>
         <hystrix.version>1.3.16</hystrix.version>
-        <jackson-2-version>2.3.1</jackson-2-version>
-        <jackson-smile.verson>1.9.9</jackson-smile.verson>
+        <jackson-2-version>2.4.1</jackson-2-version>
+        <jackson-smile.verson>2.4.3</jackson-smile.verson>
         <jukito.version>1.4-UG</jukito.version>
         <junit.version>4.11</junit.version>
         <kryo-serializers.version>0.26</kryo-serializers.version>