Repository: gora
Updated Branches:
  refs/heads/master ad5eb9da3 -> 049555130


GORA-474 bug in org.apache.gora.solr.store.SolrStore#getDatumWriter & 
#getDatumReader


Project: http://git-wip-us.apache.org/repos/asf/gora/repo
Commit: http://git-wip-us.apache.org/repos/asf/gora/commit/04955513
Tree: http://git-wip-us.apache.org/repos/asf/gora/tree/04955513
Diff: http://git-wip-us.apache.org/repos/asf/gora/diff/04955513

Branch: refs/heads/master
Commit: 049555130980de6663674923968795de99edfe1c
Parents: ad5eb9d
Author: Lewis John McGibbney <[email protected]>
Authored: Mon May 9 10:04:26 2016 -0700
Committer: Lewis John McGibbney <[email protected]>
Committed: Mon May 9 10:04:26 2016 -0700

----------------------------------------------------------------------
 .../test/resources/gora-accumulo-mapping.xml    |   2 +
 .../src/test/conf/gora-cassandra-mapping.xml    |   2 +
 gora-core/src/examples/avro/webpage.json        |   4 +-
 .../gora/examples/generated/Employee.java       |   3 +-
 .../gora/examples/generated/Metadata.java       |  17 +-
 .../apache/gora/examples/generated/WebPage.java | 183 +++++++++++++++++--
 .../apache/gora/memory/store/MemStoreTest.java  |   2 +-
 .../apache/gora/store/DataStoreTestBase.java    |   6 +
 .../apache/gora/store/DataStoreTestUtil.java    |  14 +-
 gora-hbase/src/test/conf/gora-hbase-mapping.xml |   2 +
 gora-infinispan/pom.xml                         |  13 +-
 .../src/test/conf/gora-mongodb-mapping.xml      |   2 +
 .../org/apache/gora/solr/store/SolrStore.java   |  28 ++-
 gora-solr/src/test/conf/gora-solr-mapping.xml   |   2 +
 .../src/test/conf/solr/WebPage/conf/schema.xml  |   2 +
 .../tutorial/log/generated/MetricDatum.java     |   1 -
 16 files changed, 227 insertions(+), 56 deletions(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/gora/blob/04955513/gora-accumulo/src/test/resources/gora-accumulo-mapping.xml
----------------------------------------------------------------------
diff --git a/gora-accumulo/src/test/resources/gora-accumulo-mapping.xml 
b/gora-accumulo/src/test/resources/gora-accumulo-mapping.xml
index 2f09786..4d036c6 100644
--- a/gora-accumulo/src/test/resources/gora-accumulo-mapping.xml
+++ b/gora-accumulo/src/test/resources/gora-accumulo-mapping.xml
@@ -49,6 +49,8 @@
     <field name="outlinks" family="outlinks"/>
     <field name="headers" family="headers"/>
     <field name="metadata" family="common" qualifier="metadata"/>
+    <field name="byteData" family="byteData" qualifier="byteData"/>
+    <field name="stringData" family="stringData" qualifier="stringData"/>
   </class>
 
   <class name="org.apache.gora.examples.generated.TokenDatum" 
keyClass="java.lang.String">

http://git-wip-us.apache.org/repos/asf/gora/blob/04955513/gora-cassandra/src/test/conf/gora-cassandra-mapping.xml
----------------------------------------------------------------------
diff --git a/gora-cassandra/src/test/conf/gora-cassandra-mapping.xml 
b/gora-cassandra/src/test/conf/gora-cassandra-mapping.xml
index 8d45768..8437b48 100644
--- a/gora-cassandra/src/test/conf/gora-cassandra-mapping.xml
+++ b/gora-cassandra/src/test/conf/gora-cassandra-mapping.xml
@@ -84,6 +84,8 @@
     <field name="outlinks" family="sc" qualifier="p:outlinks" ttl="10"/>
     <field name="headers" family="sc" qualifier="p:headers" ttl="10"/>
     <field name="metadata" family="p" qualifier="c:mt" ttl="10"/>
+    <field name="byteData" family="sc" qualifier="p:byteData" ttl="10"/>
+    <field name="stringData" family="sc" qualifier="p:stringData" ttl="10"/>
   </class>
 
   <class name="org.apache.gora.examples.generated.TokenDatum" 
keyClass="java.lang.String" keyspace="TokenDatum">

http://git-wip-us.apache.org/repos/asf/gora/blob/04955513/gora-core/src/examples/avro/webpage.json
----------------------------------------------------------------------
diff --git a/gora-core/src/examples/avro/webpage.json 
b/gora-core/src/examples/avro/webpage.json
index f4e4aaf..2066dc6 100644
--- a/gora-core/src/examples/avro/webpage.json
+++ b/gora-core/src/examples/avro/webpage.json
@@ -16,6 +16,8 @@
         {"name":"version","type":"int","default":0},
         {"name":"data","type":{"type":"map","values":"string"}, "default":null}
       ]
-    }}
+    }},
+    {"name": "byteData", "type": {"type":"map", "values":"bytes"}, 
"default":{}},
+    {"name": "stringData", "type": {"type":"map", "values":"string"}, 
"default":{}}
   ]
 }
\ No newline at end of file

http://git-wip-us.apache.org/repos/asf/gora/blob/04955513/gora-core/src/examples/java/org/apache/gora/examples/generated/Employee.java
----------------------------------------------------------------------
diff --git 
a/gora-core/src/examples/java/org/apache/gora/examples/generated/Employee.java 
b/gora-core/src/examples/java/org/apache/gora/examples/generated/Employee.java
index db014ce..e6e1c4c 100644
--- 
a/gora-core/src/examples/java/org/apache/gora/examples/generated/Employee.java
+++ 
b/gora-core/src/examples/java/org/apache/gora/examples/generated/Employee.java
@@ -15,7 +15,6 @@
  * limitations under the License.
  */
 package org.apache.gora.examples.generated;  
-@SuppressWarnings("all")
 public class Employee extends org.apache.gora.persistency.impl.PersistentBase 
implements org.apache.avro.specific.SpecificRecord, 
org.apache.gora.persistency.Persistent {
   public static final org.apache.avro.Schema SCHEMA$ = new 
org.apache.avro.Schema.Parser().parse("{\"type\":\"record\",\"name\":\"Employee\",\"namespace\":\"org.apache.gora.examples.generated\",\"fields\":[{\"name\":\"name\",\"type\":[\"null\",\"string\"],\"default\":null},{\"name\":\"dateOfBirth\",\"type\":\"long\",\"default\":0},{\"name\":\"ssn\",\"type\":\"string\",\"default\":\"\"},{\"name\":\"salary\",\"type\":\"int\",\"default\":0},{\"name\":\"boss\",\"type\":[\"null\",\"Employee\",\"string\"],\"default\":null},{\"name\":\"webpage\",\"type\":[\"null\",{\"type\":\"record\",\"name\":\"WebPage\",\"fields\":[{\"name\":\"url\",\"type\":[\"null\",\"string\"],\"default\":null},{\"name\":\"content\",\"type\":[\"null\",\"bytes\"],\"default\":null},{\"name\":\"parsedContent\",\"type\":{\"type\":\"array\",\"items\":\"string\"},\"default\":{}},{\"name\":\"outlinks\",\"type\":{\"type\":\"map\",\"values\":[\"null\",\"string\"]},\"default\":{}},{\"name\":\"headers\",\"type\":[\"null\",{\"typ
 
e\":\"map\",\"values\":[\"null\",\"string\"]}],\"default\":null},{\"name\":\"metadata\",\"type\":{\"type\":\"record\",\"name\":\"Metadata\",\"fields\":[{\"name\":\"version\",\"type\":\"int\",\"default\":0},{\"name\":\"data\",\"type\":{\"type\":\"map\",\"values\":\"string\"},\"default\":{}}]},\"default\":null}]}],\"default\":null}],\"default\":null}");
 
@@ -102,7 +101,6 @@ public class Employee extends 
org.apache.gora.persistency.impl.PersistentBase im
   }
   
   // Used by DatumReader.  Applications should not call. 
-  @SuppressWarnings(value="unchecked")
   public void put(int field$, java.lang.Object value) {
     switch (field$) {
     case 0: name = (java.lang.CharSequence)(value); break;
@@ -274,6 +272,7 @@ public class Employee extends 
org.apache.gora.persistency.impl.PersistentBase im
     return new org.apache.gora.examples.generated.Employee.Builder(other);
   }
   
+  @SuppressWarnings("unused")
   private static java.nio.ByteBuffer deepCopyToReadOnlyBuffer(
       java.nio.ByteBuffer input) {
     java.nio.ByteBuffer copy = java.nio.ByteBuffer.allocate(input.capacity());

http://git-wip-us.apache.org/repos/asf/gora/blob/04955513/gora-core/src/examples/java/org/apache/gora/examples/generated/Metadata.java
----------------------------------------------------------------------
diff --git 
a/gora-core/src/examples/java/org/apache/gora/examples/generated/Metadata.java 
b/gora-core/src/examples/java/org/apache/gora/examples/generated/Metadata.java
index 8554be3..a09f16a 100644
--- 
a/gora-core/src/examples/java/org/apache/gora/examples/generated/Metadata.java
+++ 
b/gora-core/src/examples/java/org/apache/gora/examples/generated/Metadata.java
@@ -1,23 +1,12 @@
 /**
- * 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
+ * Autogenerated by Avro
  * 
- *     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.
+ * DO NOT EDIT DIRECTLY
  */
 package org.apache.gora.examples.generated;  
 @SuppressWarnings("all")
 public class Metadata extends org.apache.gora.persistency.impl.PersistentBase 
implements org.apache.avro.specific.SpecificRecord, 
org.apache.gora.persistency.Persistent {
-  public static final org.apache.avro.Schema SCHEMA$ = new 
org.apache.avro.Schema.Parser().parse("{\"type\":\"record\",\"name\":\"Metadata\",\"namespace\":\"org.apache.gora.examples.generated\",\"fields\":[{\"name\":\"version\",\"type\":\"int\",\"default\":0},{\"name\":\"data\",\"type\":{\"type\":\"map\",\"values\":\"string\"},\"default\":{}}]}");
+  public static final org.apache.avro.Schema SCHEMA$ = new 
org.apache.avro.Schema.Parser().parse("{\"type\":\"record\",\"name\":\"Metadata\",\"namespace\":\"org.apache.gora.examples.generated\",\"fields\":[{\"name\":\"version\",\"type\":\"int\",\"default\":0},{\"name\":\"data\",\"type\":{\"type\":\"map\",\"values\":\"string\"},\"default\":null}]}");
 
   /** Enum containing all data bean's fields. */
   public static enum Field {

http://git-wip-us.apache.org/repos/asf/gora/blob/04955513/gora-core/src/examples/java/org/apache/gora/examples/generated/WebPage.java
----------------------------------------------------------------------
diff --git 
a/gora-core/src/examples/java/org/apache/gora/examples/generated/WebPage.java 
b/gora-core/src/examples/java/org/apache/gora/examples/generated/WebPage.java
index b43a08d..dd74df6 100644
--- 
a/gora-core/src/examples/java/org/apache/gora/examples/generated/WebPage.java
+++ 
b/gora-core/src/examples/java/org/apache/gora/examples/generated/WebPage.java
@@ -1,23 +1,12 @@
 /**
- * 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
+ * Autogenerated by Avro
  * 
- *     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.
+ * DO NOT EDIT DIRECTLY
  */
 package org.apache.gora.examples.generated;  
 @SuppressWarnings("all")
 public class WebPage extends org.apache.gora.persistency.impl.PersistentBase 
implements org.apache.avro.specific.SpecificRecord, 
org.apache.gora.persistency.Persistent {
-  public static final org.apache.avro.Schema SCHEMA$ = new 
org.apache.avro.Schema.Parser().parse("{\"type\":\"record\",\"name\":\"WebPage\",\"namespace\":\"org.apache.gora.examples.generated\",\"fields\":[{\"name\":\"url\",\"type\":[\"null\",\"string\"],\"default\":null},{\"name\":\"content\",\"type\":[\"null\",\"bytes\"],\"default\":null},{\"name\":\"parsedContent\",\"type\":{\"type\":\"array\",\"items\":\"string\"},\"default\":{}},{\"name\":\"outlinks\",\"type\":{\"type\":\"map\",\"values\":[\"null\",\"string\"]},\"default\":{}},{\"name\":\"headers\",\"type\":[\"null\",{\"type\":\"map\",\"values\":[\"null\",\"string\"]}],\"default\":null},{\"name\":\"metadata\",\"type\":{\"type\":\"record\",\"name\":\"Metadata\",\"fields\":[{\"name\":\"version\",\"type\":\"int\",\"default\":0},{\"name\":\"data\",\"type\":{\"type\":\"map\",\"values\":\"string\"},\"default\":{}}]},\"default\":null}]}");
+  public static final org.apache.avro.Schema SCHEMA$ = new 
org.apache.avro.Schema.Parser().parse("{\"type\":\"record\",\"name\":\"WebPage\",\"namespace\":\"org.apache.gora.examples.generated\",\"fields\":[{\"name\":\"url\",\"type\":[\"null\",\"string\"],\"default\":null},{\"name\":\"content\",\"type\":[\"null\",\"bytes\"],\"default\":null},{\"name\":\"parsedContent\",\"type\":{\"type\":\"array\",\"items\":\"string\"},\"default\":null},{\"name\":\"outlinks\",\"type\":{\"type\":\"map\",\"values\":\"string\"},\"default\":{}},{\"name\":\"headers\",\"type\":[\"null\",{\"type\":\"map\",\"values\":[\"null\",\"string\"]}],\"default\":null},{\"name\":\"metadata\",\"type\":{\"type\":\"record\",\"name\":\"Metadata\",\"fields\":[{\"name\":\"version\",\"type\":\"int\",\"default\":0},{\"name\":\"data\",\"type\":{\"type\":\"map\",\"values\":\"string\"},\"default\":null}]},\"default\":null},{\"name\":\"byteData\",\"type\":{\"type\":\"map\",\"values\":\"bytes\"},\"default\":{}},{\"name\":\"stringDat
 
a\",\"type\":{\"type\":\"map\",\"values\":\"string\"},\"default\":{}}],\"default\":null}");
 
   /** Enum containing all data bean's fields. */
   public static enum Field {
@@ -27,6 +16,8 @@ public class WebPage extends 
org.apache.gora.persistency.impl.PersistentBase imp
     OUTLINKS(3, "outlinks"),
     HEADERS(4, "headers"),
     METADATA(5, "metadata"),
+    BYTE_DATA(6, "byteData"),
+    STRING_DATA(7, "stringData"),
     ;
     /**
      * Field's index.
@@ -71,6 +62,8 @@ public class WebPage extends 
org.apache.gora.persistency.impl.PersistentBase imp
   "outlinks",
   "headers",
   "metadata",
+  "byteData",
+  "stringData",
   };
 
   /**
@@ -87,6 +80,8 @@ public class WebPage extends 
org.apache.gora.persistency.impl.PersistentBase imp
   private java.util.Map<java.lang.CharSequence,java.lang.CharSequence> 
outlinks;
   private java.util.Map<java.lang.CharSequence,java.lang.CharSequence> headers;
   private org.apache.gora.examples.generated.Metadata metadata;
+  private java.util.Map<java.lang.CharSequence,java.nio.ByteBuffer> byteData;
+  private java.util.Map<java.lang.CharSequence,java.lang.CharSequence> 
stringData;
   public org.apache.avro.Schema getSchema() { return SCHEMA$; }
   // Used by DatumWriter.  Applications should not call. 
   public java.lang.Object get(int field$) {
@@ -97,6 +92,8 @@ public class WebPage extends 
org.apache.gora.persistency.impl.PersistentBase imp
     case 3: return outlinks;
     case 4: return headers;
     case 5: return metadata;
+    case 6: return byteData;
+    case 7: return stringData;
     default: throw new org.apache.avro.AvroRuntimeException("Bad index");
     }
   }
@@ -111,6 +108,8 @@ public class WebPage extends 
org.apache.gora.persistency.impl.PersistentBase imp
     case 3: outlinks = 
(java.util.Map<java.lang.CharSequence,java.lang.CharSequence>)((value 
instanceof org.apache.gora.persistency.Dirtyable) ? value : new 
org.apache.gora.persistency.impl.DirtyMapWrapper((java.util.Map)value)); break;
     case 4: headers = 
(java.util.Map<java.lang.CharSequence,java.lang.CharSequence>)(value); break;
     case 5: metadata = (org.apache.gora.examples.generated.Metadata)(value); 
break;
+    case 6: byteData = 
(java.util.Map<java.lang.CharSequence,java.nio.ByteBuffer>)((value instanceof 
org.apache.gora.persistency.Dirtyable) ? value : new 
org.apache.gora.persistency.impl.DirtyMapWrapper((java.util.Map)value)); break;
+    case 7: stringData = 
(java.util.Map<java.lang.CharSequence,java.lang.CharSequence>)((value 
instanceof org.apache.gora.persistency.Dirtyable) ? value : new 
org.apache.gora.persistency.impl.DirtyMapWrapper((java.util.Map)value)); break;
     default: throw new org.apache.avro.AvroRuntimeException("Bad index");
     }
   }
@@ -259,6 +258,54 @@ public class WebPage extends 
org.apache.gora.persistency.impl.PersistentBase imp
     return isDirty(5);
   }
 
+  /**
+   * Gets the value of the 'byteData' field.
+   */
+  public java.util.Map<java.lang.CharSequence,java.nio.ByteBuffer> 
getByteData() {
+    return byteData;
+  }
+
+  /**
+   * Sets the value of the 'byteData' field.
+   * @param value the value to set.
+   */
+  public void 
setByteData(java.util.Map<java.lang.CharSequence,java.nio.ByteBuffer> value) {
+    this.byteData = (value instanceof org.apache.gora.persistency.Dirtyable) ? 
value : new org.apache.gora.persistency.impl.DirtyMapWrapper(value);
+    setDirty(6);
+  }
+  
+  /**
+   * Checks the dirty status of the 'byteData' field. A field is dirty if it 
represents a change that has not yet been written to the database.
+   * @param value the value to set.
+   */
+  public boolean isByteDataDirty() {
+    return isDirty(6);
+  }
+
+  /**
+   * Gets the value of the 'stringData' field.
+   */
+  public java.util.Map<java.lang.CharSequence,java.lang.CharSequence> 
getStringData() {
+    return stringData;
+  }
+
+  /**
+   * Sets the value of the 'stringData' field.
+   * @param value the value to set.
+   */
+  public void 
setStringData(java.util.Map<java.lang.CharSequence,java.lang.CharSequence> 
value) {
+    this.stringData = (value instanceof org.apache.gora.persistency.Dirtyable) 
? value : new org.apache.gora.persistency.impl.DirtyMapWrapper(value);
+    setDirty(7);
+  }
+  
+  /**
+   * Checks the dirty status of the 'stringData' field. A field is dirty if it 
represents a change that has not yet been written to the database.
+   * @param value the value to set.
+   */
+  public boolean isStringDataDirty() {
+    return isDirty(7);
+  }
+
   /** Creates a new WebPage RecordBuilder */
   public static org.apache.gora.examples.generated.WebPage.Builder 
newBuilder() {
     return new org.apache.gora.examples.generated.WebPage.Builder();
@@ -309,6 +356,8 @@ public class WebPage extends 
org.apache.gora.persistency.impl.PersistentBase imp
     private java.util.Map<java.lang.CharSequence,java.lang.CharSequence> 
outlinks;
     private java.util.Map<java.lang.CharSequence,java.lang.CharSequence> 
headers;
     private org.apache.gora.examples.generated.Metadata metadata;
+    private java.util.Map<java.lang.CharSequence,java.nio.ByteBuffer> byteData;
+    private java.util.Map<java.lang.CharSequence,java.lang.CharSequence> 
stringData;
 
     /** Creates a new Builder */
     private Builder() {
@@ -347,6 +396,14 @@ public class WebPage extends 
org.apache.gora.persistency.impl.PersistentBase imp
         this.metadata = (org.apache.gora.examples.generated.Metadata) 
data().deepCopy(fields()[5].schema(), other.metadata);
         fieldSetFlags()[5] = true;
       }
+      if (isValidValue(fields()[6], other.byteData)) {
+        this.byteData = 
(java.util.Map<java.lang.CharSequence,java.nio.ByteBuffer>) 
data().deepCopy(fields()[6].schema(), other.byteData);
+        fieldSetFlags()[6] = true;
+      }
+      if (isValidValue(fields()[7], other.stringData)) {
+        this.stringData = 
(java.util.Map<java.lang.CharSequence,java.lang.CharSequence>) 
data().deepCopy(fields()[7].schema(), other.stringData);
+        fieldSetFlags()[7] = true;
+      }
     }
 
     /** Gets the value of the 'url' field */
@@ -499,6 +556,56 @@ public class WebPage extends 
org.apache.gora.persistency.impl.PersistentBase imp
       return this;
     }
     
+    /** Gets the value of the 'byteData' field */
+    public java.util.Map<java.lang.CharSequence,java.nio.ByteBuffer> 
getByteData() {
+      return byteData;
+    }
+    
+    /** Sets the value of the 'byteData' field */
+    public org.apache.gora.examples.generated.WebPage.Builder 
setByteData(java.util.Map<java.lang.CharSequence,java.nio.ByteBuffer> value) {
+      validate(fields()[6], value);
+      this.byteData = value;
+      fieldSetFlags()[6] = true;
+      return this; 
+    }
+    
+    /** Checks whether the 'byteData' field has been set */
+    public boolean hasByteData() {
+      return fieldSetFlags()[6];
+    }
+    
+    /** Clears the value of the 'byteData' field */
+    public org.apache.gora.examples.generated.WebPage.Builder clearByteData() {
+      byteData = null;
+      fieldSetFlags()[6] = false;
+      return this;
+    }
+    
+    /** Gets the value of the 'stringData' field */
+    public java.util.Map<java.lang.CharSequence,java.lang.CharSequence> 
getStringData() {
+      return stringData;
+    }
+    
+    /** Sets the value of the 'stringData' field */
+    public org.apache.gora.examples.generated.WebPage.Builder 
setStringData(java.util.Map<java.lang.CharSequence,java.lang.CharSequence> 
value) {
+      validate(fields()[7], value);
+      this.stringData = value;
+      fieldSetFlags()[7] = true;
+      return this; 
+    }
+    
+    /** Checks whether the 'stringData' field has been set */
+    public boolean hasStringData() {
+      return fieldSetFlags()[7];
+    }
+    
+    /** Clears the value of the 'stringData' field */
+    public org.apache.gora.examples.generated.WebPage.Builder 
clearStringData() {
+      stringData = null;
+      fieldSetFlags()[7] = false;
+      return this;
+    }
+    
     @Override
     public WebPage build() {
       try {
@@ -509,6 +616,8 @@ public class WebPage extends 
org.apache.gora.persistency.impl.PersistentBase imp
         record.outlinks = fieldSetFlags()[3] ? this.outlinks : 
(java.util.Map<java.lang.CharSequence,java.lang.CharSequence>) new 
org.apache.gora.persistency.impl.DirtyMapWrapper((java.util.Map)defaultValue(fields()[3]));
         record.headers = fieldSetFlags()[4] ? this.headers : 
(java.util.Map<java.lang.CharSequence,java.lang.CharSequence>) 
defaultValue(fields()[4]);
         record.metadata = fieldSetFlags()[5] ? this.metadata : 
(org.apache.gora.examples.generated.Metadata) Metadata.newBuilder().build();
+        record.byteData = fieldSetFlags()[6] ? this.byteData : 
(java.util.Map<java.lang.CharSequence,java.nio.ByteBuffer>) new 
org.apache.gora.persistency.impl.DirtyMapWrapper((java.util.Map)defaultValue(fields()[6]));
+        record.stringData = fieldSetFlags()[7] ? this.stringData : 
(java.util.Map<java.lang.CharSequence,java.lang.CharSequence>) new 
org.apache.gora.persistency.impl.DirtyMapWrapper((java.util.Map)defaultValue(fields()[7]));
         return record;
       } catch (Exception e) {
         throw new org.apache.avro.AvroRuntimeException(e);
@@ -668,6 +777,52 @@ public class WebPage extends 
org.apache.gora.persistency.impl.PersistentBase imp
            throw new java.lang.UnsupportedOperationException("IsDirty is not 
supported on tombstones");
          }
        
+                                 /**
+          * Gets the value of the 'byteData' field.
+                  */
+         public java.util.Map<java.lang.CharSequence,java.nio.ByteBuffer> 
getByteData() {
+           throw new java.lang.UnsupportedOperationException("Get is not 
supported on tombstones");
+         }
+       
+         /**
+          * Sets the value of the 'byteData' field.
+                  * @param value the value to set.
+          */
+         public void 
setByteData(java.util.Map<java.lang.CharSequence,java.nio.ByteBuffer> value) {
+           throw new java.lang.UnsupportedOperationException("Set is not 
supported on tombstones");
+         }
+         
+         /**
+          * Checks the dirty status of the 'byteData' field. A field is dirty 
if it represents a change that has not yet been written to the database.
+                  * @param value the value to set.
+          */
+         public boolean isByteDataDirty() {
+           throw new java.lang.UnsupportedOperationException("IsDirty is not 
supported on tombstones");
+         }
+       
+                                 /**
+          * Gets the value of the 'stringData' field.
+                  */
+         public java.util.Map<java.lang.CharSequence,java.lang.CharSequence> 
getStringData() {
+           throw new java.lang.UnsupportedOperationException("Get is not 
supported on tombstones");
+         }
+       
+         /**
+          * Sets the value of the 'stringData' field.
+                  * @param value the value to set.
+          */
+         public void 
setStringData(java.util.Map<java.lang.CharSequence,java.lang.CharSequence> 
value) {
+           throw new java.lang.UnsupportedOperationException("Set is not 
supported on tombstones");
+         }
+         
+         /**
+          * Checks the dirty status of the 'stringData' field. A field is 
dirty if it represents a change that has not yet been written to the database.
+                  * @param value the value to set.
+          */
+         public boolean isStringDataDirty() {
+           throw new java.lang.UnsupportedOperationException("IsDirty is not 
supported on tombstones");
+         }
+       
                  
   }
   

http://git-wip-us.apache.org/repos/asf/gora/blob/04955513/gora-core/src/test/java/org/apache/gora/memory/store/MemStoreTest.java
----------------------------------------------------------------------
diff --git 
a/gora-core/src/test/java/org/apache/gora/memory/store/MemStoreTest.java 
b/gora-core/src/test/java/org/apache/gora/memory/store/MemStoreTest.java
index 0c56d8e..87eea71 100644
--- a/gora-core/src/test/java/org/apache/gora/memory/store/MemStoreTest.java
+++ b/gora-core/src/test/java/org/apache/gora/memory/store/MemStoreTest.java
@@ -69,7 +69,7 @@ public class MemStoreTest extends DataStoreTestBase {
   @SuppressWarnings("unchecked")
   @Override
   protected DataStore<String, WebPage> createWebPageDataStore() throws 
IOException {
-    return DataStoreFactory.getDataStore(MemStore.class, String.class, 
Employee.class, conf);
+    return DataStoreFactory.getDataStore(MemStore.class, String.class, 
WebPage.class, conf);
   }
 
   @Test

http://git-wip-us.apache.org/repos/asf/gora/blob/04955513/gora-core/src/test/java/org/apache/gora/store/DataStoreTestBase.java
----------------------------------------------------------------------
diff --git 
a/gora-core/src/test/java/org/apache/gora/store/DataStoreTestBase.java 
b/gora-core/src/test/java/org/apache/gora/store/DataStoreTestBase.java
index dc06e39..adca963 100644
--- a/gora-core/src/test/java/org/apache/gora/store/DataStoreTestBase.java
+++ b/gora-core/src/test/java/org/apache/gora/store/DataStoreTestBase.java
@@ -205,6 +205,12 @@ public abstract class DataStoreTestBase {
 
   public void assertPutMap() throws IOException {
   }
+  
+  @Test
+  public void testPutMixedMaps() throws Exception {
+         log.info("Testing put of map objects with different union data 
types");
+         DataStoreTestUtil.testPutMixedMapTypes(webPageStore);
+  }
 
   @Test
   public void testUpdate() throws Exception {

http://git-wip-us.apache.org/repos/asf/gora/blob/04955513/gora-core/src/test/java/org/apache/gora/store/DataStoreTestUtil.java
----------------------------------------------------------------------
diff --git 
a/gora-core/src/test/java/org/apache/gora/store/DataStoreTestUtil.java 
b/gora-core/src/test/java/org/apache/gora/store/DataStoreTestUtil.java
index bbd77ed..551b90a 100644
--- a/gora-core/src/test/java/org/apache/gora/store/DataStoreTestUtil.java
+++ b/gora-core/src/test/java/org/apache/gora/store/DataStoreTestUtil.java
@@ -109,6 +109,7 @@ public class DataStoreTestUtil {
     webpage.setParsedContent(new ArrayList<CharSequence>());
     Metadata metadata = Metadata.newBuilder().build();
     webpage.setMetadata(metadata);
+    
     return webpage;
   }
 
@@ -1101,8 +1102,7 @@ public class DataStoreTestUtil {
     }
 
   }
-
-
+  
   public static void testPutNested(DataStore<String, WebPage> store)
           throws Exception {
     String revUrl = "foo.com:http/";
@@ -1173,6 +1173,16 @@ public class DataStoreTestUtil {
     store.put("com.example/http", page);
     store.close();
   }
+  
+  public static void testPutMixedMapTypes(DataStore<String, WebPage> store) {
+    WebPage webpage = createWebPage();
+    webpage.getByteData().put(new Utf8("byteData"), 
ByteBuffer.wrap(ByteUtils.toBytes("hello map")));
+    webpage.getStringData().put(new Utf8("stringData"), "hello map");
+    store.createSchema();
+    store.put(webpage.getUrl().toString(), webpage);
+    store.flush();
+    assertNotNull(store.get(webpage.getUrl().toString()));
+  }
 
   private static byte[] toByteArray(ByteBuffer buffer) {
     int p = buffer.position();

http://git-wip-us.apache.org/repos/asf/gora/blob/04955513/gora-hbase/src/test/conf/gora-hbase-mapping.xml
----------------------------------------------------------------------
diff --git a/gora-hbase/src/test/conf/gora-hbase-mapping.xml 
b/gora-hbase/src/test/conf/gora-hbase-mapping.xml
index b313cec..af3adb1 100644
--- a/gora-hbase/src/test/conf/gora-hbase-mapping.xml
+++ b/gora-hbase/src/test/conf/gora-hbase-mapping.xml
@@ -46,6 +46,8 @@
     <field name="outlinks" family="outlinks"/>
     <field name="headers" family="headers"/>
     <field name="metadata" family="common" qualifier="metadata"/>
+    <field name="byteData" family="byteData" qualifier="byteData"/>
+    <field name="stringData" family="stringData" qualifier="stringData"/>
   </class>
 
 

http://git-wip-us.apache.org/repos/asf/gora/blob/04955513/gora-infinispan/pom.xml
----------------------------------------------------------------------
diff --git a/gora-infinispan/pom.xml b/gora-infinispan/pom.xml
index 3e312d1..a8307a3 100644
--- a/gora-infinispan/pom.xml
+++ b/gora-infinispan/pom.xml
@@ -30,11 +30,11 @@
   <name>Apache Gora :: Infinispan</name>
   <url>http://gora.apache.org</url>
   <description>
-        The Apache Gora open source framework provides an in-memory data model 
and
-        persistence for big data. Gora supports persisting to column stores, 
key value stores,
-        document stores and RDBMSs, and analyzing the data with extensive 
Apache Hadoop MapReduce
-        support. This module provides a Gora support for the Infinispan 
storage system.
-    </description>
+    The Apache Gora open source framework provides an in-memory data model and
+    persistence for big data. Gora supports persisting to column stores, key 
value stores,
+    document stores and RDBMSs, and analyzing the data with extensive Apache 
Hadoop MapReduce
+    support. This module provides a Gora support for the Infinispan storage 
system.
+  </description>
   <inceptionYear>2015</inceptionYear>
 
   <properties>
@@ -83,6 +83,9 @@
       <plugin>
         <groupId>org.apache.maven.plugins</groupId>
         <artifactId>maven-surefire-plugin</artifactId>
+        <configuration>
+          <argLine>-Xmx512m -XX:MaxPermSize=256m</argLine>
+        </configuration>
       </plugin>
       <plugin>
         <groupId>org.apache.maven.plugins</groupId>

http://git-wip-us.apache.org/repos/asf/gora/blob/04955513/gora-mongodb/src/test/conf/gora-mongodb-mapping.xml
----------------------------------------------------------------------
diff --git a/gora-mongodb/src/test/conf/gora-mongodb-mapping.xml 
b/gora-mongodb/src/test/conf/gora-mongodb-mapping.xml
index b977f2d..8bbe285 100644
--- a/gora-mongodb/src/test/conf/gora-mongodb-mapping.xml
+++ b/gora-mongodb/src/test/conf/gora-mongodb-mapping.xml
@@ -33,6 +33,8 @@
         <field name="outlinks" docfield="links.out" type="document"/>
         <field name="headers" docfield="headers" type="document"/>
         <field name="metadata" docfield="metadata" type="document"/>
+        <field name="byteData" docfield="byteData" type="document"/>
+        <field name="stringData" docfield="stringData" type="document"/>
     </class>
 
     <class name="org.apache.gora.examples.generated.TokenDatum" 
keyClass="java.lang.String" document="TokenDatum">

http://git-wip-us.apache.org/repos/asf/gora/blob/04955513/gora-solr/src/main/java/org/apache/gora/solr/store/SolrStore.java
----------------------------------------------------------------------
diff --git a/gora-solr/src/main/java/org/apache/gora/solr/store/SolrStore.java 
b/gora-solr/src/main/java/org/apache/gora/solr/store/SolrStore.java
index a724dd6..350baef 100644
--- a/gora-solr/src/main/java/org/apache/gora/solr/store/SolrStore.java
+++ b/gora-solr/src/main/java/org/apache/gora/solr/store/SolrStore.java
@@ -174,9 +174,9 @@ public class SolrStore<K, T extends PersistentBase> extends 
DataStoreBase<K, T>
    * pair for every schema, instead of one for every thread.
    */
 
-  public static final ConcurrentHashMap<String, SpecificDatumReader<?>> 
readerMap = new ConcurrentHashMap<>();
+  public static final ConcurrentHashMap<Schema, SpecificDatumReader<?>> 
readerMap = new ConcurrentHashMap<>();
 
-  public static final ConcurrentHashMap<String, SpecificDatumWriter<?>> 
writerMap = new ConcurrentHashMap<>();
+  public static final ConcurrentHashMap<Schema, SpecificDatumWriter<?>> 
writerMap = new ConcurrentHashMap<>();
 
   @Override
   public void initialize(Class<K> keyClass, Class<T> persistentClass,
@@ -487,12 +487,12 @@ public class SolrStore<K, T extends PersistentBase> 
extends DataStoreBase<K, T>
   }
 
   @SuppressWarnings("rawtypes")
-  private SpecificDatumReader getDatumReader(String schemaId, Schema 
fieldSchema) {
-    SpecificDatumReader<?> reader = readerMap.get(schemaId);
+  private SpecificDatumReader getDatumReader(Schema fieldSchema) {
+    SpecificDatumReader<?> reader = readerMap.get(fieldSchema);
     if (reader == null) {
       reader = new SpecificDatumReader(fieldSchema);// ignore dirty bits
       SpecificDatumReader localReader = null;
-      if ((localReader = readerMap.putIfAbsent(schemaId, reader)) != null) {
+      if ((localReader = readerMap.putIfAbsent(fieldSchema, reader)) != null) {
         reader = localReader;
       }
     }
@@ -500,11 +500,11 @@ public class SolrStore<K, T extends PersistentBase> 
extends DataStoreBase<K, T>
   }
 
   @SuppressWarnings("rawtypes")
-  private SpecificDatumWriter getDatumWriter(String schemaId, Schema 
fieldSchema) {
-    SpecificDatumWriter writer = writerMap.get(schemaId);
+  private SpecificDatumWriter getDatumWriter(Schema fieldSchema) {
+    SpecificDatumWriter writer = writerMap.get(fieldSchema);
     if (writer == null) {
       writer = new SpecificDatumWriter(fieldSchema);// ignore dirty bits
-      writerMap.put(schemaId, writer);
+      writerMap.put(fieldSchema, writer);
     }
 
     return writer;
@@ -519,8 +519,7 @@ public class SolrStore<K, T extends PersistentBase> extends 
DataStoreBase<K, T>
     case ARRAY:
     case RECORD:
       @SuppressWarnings("rawtypes")
-      SpecificDatumReader reader = getDatumReader(fieldSchema.getFullName(),
-          fieldSchema);
+      SpecificDatumReader reader = getDatumReader(fieldSchema);
       fieldValue = IOUtils.deserialize((byte[]) solrValue, reader,
           persistent.get(field.pos()));
       break;
@@ -556,8 +555,7 @@ public class SolrStore<K, T extends PersistentBase> extends 
DataStoreBase<K, T>
             persistent);
       } else {
         @SuppressWarnings("rawtypes")
-        SpecificDatumReader unionReader = getDatumReader(
-            String.valueOf(fieldSchema.hashCode()), fieldSchema);
+        SpecificDatumReader unionReader = getDatumReader(fieldSchema);
         fieldValue = IOUtils.deserialize((byte[]) solrValue, unionReader,
             persistent.get(field.pos()));
         break;
@@ -618,8 +616,7 @@ public class SolrStore<K, T extends PersistentBase> extends 
DataStoreBase<K, T>
       byte[] data = null;
       try {
         @SuppressWarnings("rawtypes")
-        SpecificDatumWriter writer = getDatumWriter(fieldSchema.getFullName(),
-            fieldSchema);
+        SpecificDatumWriter writer = getDatumWriter(fieldSchema);
         data = IOUtils.serialize(writer, fieldValue);
       } catch (IOException e) {
         LOG.error(e.getMessage(), e);
@@ -644,8 +641,7 @@ public class SolrStore<K, T extends PersistentBase> extends 
DataStoreBase<K, T>
         byte[] serilazeData = null;
         try {
           @SuppressWarnings("rawtypes")
-          SpecificDatumWriter writer = getDatumWriter(
-              String.valueOf(fieldSchema.hashCode()), fieldSchema);
+          SpecificDatumWriter writer = getDatumWriter(fieldSchema);
           serilazeData = IOUtils.serialize(writer, fieldValue);
         } catch (IOException e) {
           LOG.error(e.getMessage(), e);

http://git-wip-us.apache.org/repos/asf/gora/blob/04955513/gora-solr/src/test/conf/gora-solr-mapping.xml
----------------------------------------------------------------------
diff --git a/gora-solr/src/test/conf/gora-solr-mapping.xml 
b/gora-solr/src/test/conf/gora-solr-mapping.xml
index c860989..78ca39b 100644
--- a/gora-solr/src/test/conf/gora-solr-mapping.xml
+++ b/gora-solr/src/test/conf/gora-solr-mapping.xml
@@ -33,6 +33,8 @@
     <field name="outlinks" column="outlinks"/>
     <field name="headers" column="headers"/>     
     <field name="metadata" column="metadata"/>
+    <field name="byteData" column="byteData"/>
+    <field name="stringData" column="stringData"/>
   </class>
 </gora-otd>
 

http://git-wip-us.apache.org/repos/asf/gora/blob/04955513/gora-solr/src/test/conf/solr/WebPage/conf/schema.xml
----------------------------------------------------------------------
diff --git a/gora-solr/src/test/conf/solr/WebPage/conf/schema.xml 
b/gora-solr/src/test/conf/solr/WebPage/conf/schema.xml
index fe36abb..55765a3 100644
--- a/gora-solr/src/test/conf/solr/WebPage/conf/schema.xml
+++ b/gora-solr/src/test/conf/solr/WebPage/conf/schema.xml
@@ -30,6 +30,8 @@
     <field name="outlinks"      type="binary" stored="true" /> 
     <field name="headers"       type="binary" stored="true" />     
     <field name="metadata"      type="binary" stored="true" />
+    <field name="byteData"      type="binary" stored="true" />
+    <field name="stringData"    type="binary" stored="true" />
 
   </fields>
 

http://git-wip-us.apache.org/repos/asf/gora/blob/04955513/gora-tutorial/src/main/java/org/apache/gora/tutorial/log/generated/MetricDatum.java
----------------------------------------------------------------------
diff --git 
a/gora-tutorial/src/main/java/org/apache/gora/tutorial/log/generated/MetricDatum.java
 
b/gora-tutorial/src/main/java/org/apache/gora/tutorial/log/generated/MetricDatum.java
index 297100e..d993033 100644
--- 
a/gora-tutorial/src/main/java/org/apache/gora/tutorial/log/generated/MetricDatum.java
+++ 
b/gora-tutorial/src/main/java/org/apache/gora/tutorial/log/generated/MetricDatum.java
@@ -4,7 +4,6 @@
  * DO NOT EDIT DIRECTLY
  */
 package org.apache.gora.tutorial.log.generated;  
-@SuppressWarnings("all")
 public class MetricDatum extends 
org.apache.gora.persistency.impl.PersistentBase implements 
org.apache.avro.specific.SpecificRecord, org.apache.gora.persistency.Persistent 
{
   public static final org.apache.avro.Schema SCHEMA$ = new 
org.apache.avro.Schema.Parser().parse("{\"type\":\"record\",\"name\":\"MetricDatum\",\"namespace\":\"org.apache.gora.tutorial.log.generated\",\"fields\":[{\"name\":\"metricDimension\",\"type\":[\"null\",\"string\"],\"default\":null},{\"name\":\"timestamp\",\"type\":\"long\",\"default\":0},{\"name\":\"metric\",\"type\":\"long\",\"default\":0}],\"default\":null}");
 

Reply via email to