You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@gora.apache.org by le...@apache.org on 2013/11/01 21:46:21 UTC

svn commit: r1538057 - in /gora/branches/GORA_94: gora-compiler/src/main/java/org/apache/gora/compiler/ gora-compiler/src/main/velocity/org/apache/gora/compiler/templates/ gora-core/src/examples/avro/ gora-core/src/examples/java/org/apache/gora/example...

Author: lewismc
Date: Fri Nov  1 20:46:20 2013
New Revision: 1538057

URL: http://svn.apache.org/r1538057
Log:
GORA-94v9 patch. All tests in gora-core now pass and module stabalized.

Modified:
    gora/branches/GORA_94/gora-compiler/src/main/java/org/apache/gora/compiler/GoraCompiler.java
    gora/branches/GORA_94/gora-compiler/src/main/velocity/org/apache/gora/compiler/templates/record.vm
    gora/branches/GORA_94/gora-core/src/examples/avro/employee.json
    gora/branches/GORA_94/gora-core/src/examples/avro/webpage.json
    gora/branches/GORA_94/gora-core/src/examples/java/org/apache/gora/examples/WebPageDataCreator.java
    gora/branches/GORA_94/gora-core/src/examples/java/org/apache/gora/examples/generated/Employee.java
    gora/branches/GORA_94/gora-core/src/examples/java/org/apache/gora/examples/generated/Metadata.java
    gora/branches/GORA_94/gora-core/src/examples/java/org/apache/gora/examples/generated/WebPage.java
    gora/branches/GORA_94/gora-core/src/main/java/org/apache/gora/mapreduce/GoraMapReduceUtils.java
    gora/branches/GORA_94/gora-core/src/main/java/org/apache/gora/mapreduce/PersistentSerializer.java
    gora/branches/GORA_94/gora-core/src/main/java/org/apache/gora/persistency/impl/PersistentBase.java
    gora/branches/GORA_94/gora-core/src/main/java/org/apache/gora/store/impl/DataStoreBase.java
    gora/branches/GORA_94/gora-core/src/main/java/org/apache/gora/util/ReflectionUtils.java
    gora/branches/GORA_94/gora-core/src/test/java/org/apache/gora/GoraTestDriver.java
    gora/branches/GORA_94/gora-core/src/test/java/org/apache/gora/mapreduce/TestPersistentSerialization.java
    gora/branches/GORA_94/gora-core/src/test/java/org/apache/gora/persistency/impl/TestPersistentBase.java
    gora/branches/GORA_94/gora-core/src/test/java/org/apache/gora/store/DataStoreTestUtil.java
    gora/branches/GORA_94/gora-core/src/test/java/org/apache/gora/store/TestDataStoreFactory.java
    gora/branches/GORA_94/gora-tutorial/src/main/java/org/apache/gora/tutorial/log/generated/Pageview.java

Modified: gora/branches/GORA_94/gora-compiler/src/main/java/org/apache/gora/compiler/GoraCompiler.java
URL: http://svn.apache.org/viewvc/gora/branches/GORA_94/gora-compiler/src/main/java/org/apache/gora/compiler/GoraCompiler.java?rev=1538057&r1=1538056&r2=1538057&view=diff
==============================================================================
--- gora/branches/GORA_94/gora-compiler/src/main/java/org/apache/gora/compiler/GoraCompiler.java (original)
+++ gora/branches/GORA_94/gora-compiler/src/main/java/org/apache/gora/compiler/GoraCompiler.java Fri Nov  1 20:46:20 2013
@@ -17,6 +17,7 @@
  */
 package org.apache.gora.compiler;
 
+import java.beans.PersistenceDelegate;
 import java.io.File;
 import java.io.IOException;
 import java.util.ArrayList;
@@ -32,6 +33,7 @@ import org.apache.avro.Schema;
 import org.apache.avro.Schema.Field;
 import org.apache.avro.Schema.Type;
 import org.apache.avro.compiler.specific.SpecificCompiler;
+import org.apache.avro.generic.GenericData.StringType;
 import org.codehaus.jackson.JsonNode;
 import org.codehaus.jackson.node.JsonNodeFactory;
 
@@ -66,19 +68,16 @@ public class GoraCompiler extends Specif
 
     }
   }
-  
 
   public static String generateAppropriateImmutabilityModifier(Schema schema){
     switch (schema.getType()) {
-      case STRING:
-        return ".toString()";
       case BYTES:
         return ".asReadOnlyBuffer()";
       default:
         return "";
     }
   }
-	
+
   public static String generateAppropriateWrapperOrValue(Schema schema) {
     switch (schema.getType()) {
       case MAP:
@@ -87,14 +86,57 @@ public class GoraCompiler extends Specif
       case ARRAY:
         return "(value instanceof org.apache.gora.persistency.Dirtyable) ? "
           + "value : new org.apache.gora.persistency.impl.DirtyListWrapper(value)";
-      case STRING:
-        return "value.toString()";
       case BYTES:
         return "deepCopyToReadOnlyBuffer(value)";
       default:
         return "value";
     }
   }
+  
+  public static String generateAppropriateWrapperOrValueForPut(Schema schema) {
+    switch (schema.getType()) {
+      case MAP:
+        return "(value instanceof org.apache.gora.persistency.Dirtyable) ? "
+          + "value : new org.apache.gora.persistency.impl.DirtyMapWrapper((java.util.Map)value)";
+      case ARRAY:
+        return "(value instanceof org.apache.gora.persistency.Dirtyable) ? "
+          + "value : new org.apache.gora.persistency.impl.DirtyListWrapper((java.util.List)value)";
+      default:
+        return "value";
+    }
+  }
+  
+  public static String generateAppropriateWrapper(Schema schema, Field field) {
+    if (field.name() == "__g__dirty") {
+      return "java.nio.ByteBuffer.wrap(new byte["
+        + getNumberOfBytesNeededForDirtyBits(schema) + "])";
+    } else {
+      switch (field.schema().getType()) {
+      case RECORD:
+        return field.schema().getName()+".newBuilder().build()";
+      case MAP:
+        return "new org.apache.gora.persistency.impl.DirtyMapWrapper((java.util.Map)defaultValue(fields()["+field.pos()+"]))";
+      case ARRAY:
+        return "new org.apache.gora.persistency.impl.DirtyListWrapper((java.util.List)defaultValue(fields()["+field.pos()+"]))";
+      default:
+        return "defaultValue(fields()["+field.pos()+"])";
+      }
+    }
+    
+  }
+  
+  public static String generateAppropriateValue(Field field) {
+    switch (field.schema().getType()) {
+      case RECORD:
+        return field.schema().getName()+".newBuilder().build()";
+      case MAP:
+        return "new org.apache.gora.persistency.impl.DirtyMapWrapper(new java.util.HashMap())";
+      case ARRAY:
+        return "new org.apache.gora.persistency.impl.DirtyListWrapper(new java.util.ArrayList())";
+      default:
+        return "this."+field.name();
+    }
+  }
 
   private static int getNumberOfBytesNeededForDirtyBits(Schema originalSchema) {
     return (int) Math.ceil((originalSchema.getFields().size() + 1) * 0.125);

Modified: gora/branches/GORA_94/gora-compiler/src/main/velocity/org/apache/gora/compiler/templates/record.vm
URL: http://svn.apache.org/viewvc/gora/branches/GORA_94/gora-compiler/src/main/velocity/org/apache/gora/compiler/templates/record.vm?rev=1538057&r1=1538056&r2=1538057&view=diff
==============================================================================
--- gora/branches/GORA_94/gora-compiler/src/main/velocity/org/apache/gora/compiler/templates/record.vm (original)
+++ gora/branches/GORA_94/gora-compiler/src/main/velocity/org/apache/gora/compiler/templates/record.vm Fri Nov  1 20:46:20 2013
@@ -24,13 +24,6 @@ package $schema.getNamespace();  
 #end
 public class ${this.mangle($schema.getName())}#if ($schema.isError()) extends org.apache.avro.specific.SpecificExceptionBase#else extends org.apache.gora.persistency.impl.PersistentBase#end 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("${this.javaEscape($schema.toString())}");
-  
-  public static final String[] _ALL_FIELDS = {
-#foreach ($field in $schema.getFields())
-  "${this.mangle($field.name(), $schema.isError())}",
-#end		
-  };
-
 #foreach ($field in $schema.getFields())
 #if ($field.doc())
   /** $field.doc() */
@@ -68,13 +61,14 @@ public class ${this.mangle($schema.getNa
     default: throw new org.apache.avro.AvroRuntimeException("Bad index");
     }
   }
+  
   // Used by DatumReader.  Applications should not call. 
   @SuppressWarnings(value="unchecked")
-  public void put(int field$, java.lang.Object value$) {
+  public void put(int field$, java.lang.Object value) {
     switch (field$) {
 #set ($i = 0)
 #foreach ($field in $schema.getFields())
-    case $i: ${this.mangle($field.name(), $schema.isError())} = (${this.javaType($field.schema())})value$; break;
+    case $i: ${this.mangle($field.name(), $schema.isError())} = (${this.javaType($field.schema())})(${this.generateAppropriateWrapperOrValueForPut($field.schema())}); break;
 #set ($i = $i + 1)
 #end
     default: throw new org.apache.avro.AvroRuntimeException("Bad index");
@@ -245,7 +239,7 @@ public class ${this.mangle($schema.getNa
       try {
         ${this.mangle($schema.getName())} record = new ${this.mangle($schema.getName())}(#if ($schema.isError())getValue(), getCause()#end);
 #foreach ($field in $schema.getFields())
-        record.${this.mangle($field.name(), $schema.isError())} = fieldSetFlags()[$field.pos()] ? this.${this.mangle($field.name(), $schema.isError())} : (${this.javaType($field.schema())}) defaultValue(fields()[$field.pos()]);
+        record.${this.mangle($field.name(), $schema.isError())} = fieldSetFlags()[$field.pos()] ? this.${this.mangle($field.name(), $schema.isError())} : (${this.javaType($field.schema())}) ${this.generateAppropriateWrapper($schema,$field)};
 #end
         return record;
       } catch (Exception e) {

Modified: gora/branches/GORA_94/gora-core/src/examples/avro/employee.json
URL: http://svn.apache.org/viewvc/gora/branches/GORA_94/gora-core/src/examples/avro/employee.json?rev=1538057&r1=1538056&r2=1538057&view=diff
==============================================================================
--- gora/branches/GORA_94/gora-core/src/examples/avro/employee.json (original)
+++ gora/branches/GORA_94/gora-core/src/examples/avro/employee.json Fri Nov  1 20:46:20 2013
@@ -1,30 +1,30 @@
   {
     "type": "record",
-    "name": "Employee",
+    "name": "Employee","default":null,
     "namespace": "org.apache.gora.examples.generated",
     "fields" : [
-      {"name": "name", "type": ["string","null"]},
-      {"name": "dateOfBirth", "type": "long"},
-      {"name": "ssn", "type": "string"},
-      {"name": "salary", "type": "int"},
-      {"name": "boss", "type":["null","Employee","string"]},
-      {"name": "webpage", "type":["null",
+      {"name": "name", "type": ["null","string"],"default":null},
+      {"name": "dateOfBirth", "type": "long","default":0},
+      {"name": "ssn", "type": ["null","string"],"default":null},
+      {"name": "salary", "type": "int","default":0},
+      {"name": "boss", "type":["null","Employee","string"],"default":null},
+      {"name": "webpage","default":null, "type":["null",
         {
       	  "type": "record",
       	  "name": "WebPage",
       	  "namespace": "org.apache.gora.examples.generated",
           "fields" : [
-           {"name": "url", "type": "string"},
-           {"name": "content", "type": ["null","bytes"]},
-           {"name": "parsedContent", "type": {"type":"array", "items": "string"}},
-           {"name": "outlinks", "type": {"type":"map", "values":"string"}},
-           {"name": "metadata", "type": {
+           {"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":null},
+           {"name": "metadata", "default":null, "type": {
             "name": "Metadata",
             "type": "record",
             "namespace": "org.apache.gora.examples.generated",
             "fields": [
-             {"name": "version", "type": "int"},
-             {"name": "data", "type": {"type": "map", "values": "string"}}
+             {"name": "version", "type": "int","default":0},
+             {"name": "data", "type": {"type": "map", "values": "string"},"default":null}
             ]
           }}
           ]

Modified: gora/branches/GORA_94/gora-core/src/examples/avro/webpage.json
URL: http://svn.apache.org/viewvc/gora/branches/GORA_94/gora-core/src/examples/avro/webpage.json?rev=1538057&r1=1538056&r2=1538057&view=diff
==============================================================================
--- gora/branches/GORA_94/gora-core/src/examples/avro/webpage.json (original)
+++ gora/branches/GORA_94/gora-core/src/examples/avro/webpage.json Fri Nov  1 20:46:20 2013
@@ -1,20 +1,20 @@
 {
   "type": "record",
-  "name": "WebPage",
+  "name": "WebPage","default":null,
   "namespace": "org.apache.gora.examples.generated",
   "fields" : [
-    {"name": "url", "type": "string"},
-    {"name": "content", "type": ["null","bytes"]},
-    {"name": "parsedContent", "type": {"type":"array", "items": "string"}},
-    {"name": "outlinks", "type": {"type":"map", "values":"string"}},
-    {"name": "metadata", "type": {
+    {"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":null},
+    {"name": "metadata", "default":null, "type": {
       "name": "Metadata",
       "type": "record",
       "namespace": "org.apache.gora.examples.generated",
-      "fields": [
-        {"name": "version", "type": "int"},
-        {"name": "data", "type": {"type": "map", "values": "string"}}
-      ]
+      "fields" : [
+			  {"name":"version","type":"int","default":0},
+			  {"name":"data","type":{"type":"map","values":"string"}, "default":null}
+			]
     }}
   ]
 }

Modified: gora/branches/GORA_94/gora-core/src/examples/java/org/apache/gora/examples/WebPageDataCreator.java
URL: http://svn.apache.org/viewvc/gora/branches/GORA_94/gora-core/src/examples/java/org/apache/gora/examples/WebPageDataCreator.java?rev=1538057&r1=1538056&r2=1538057&view=diff
==============================================================================
--- gora/branches/GORA_94/gora-core/src/examples/java/org/apache/gora/examples/WebPageDataCreator.java (original)
+++ gora/branches/GORA_94/gora-core/src/examples/java/org/apache/gora/examples/WebPageDataCreator.java Fri Nov  1 20:46:20 2013
@@ -51,6 +51,7 @@ public class WebPageDataCreator {
     "http://baz.com/1.jsp&q=barbaz&p=foo",
     "http://baz.com/1.jsp&q=foo",
     "http://bazbar.com",
+    //"http://example.com",
   };
   
   public static HashMap<String, Integer> URL_INDEXES = new HashMap<String, Integer>();
@@ -72,6 +73,7 @@ public class WebPageDataCreator {
     "a b b b b b a",
     "a a a",
     "foo bar baz",
+    //"fck fck dck",
   };
   
   public static final int[][] LINKS = {
@@ -115,14 +117,14 @@ public class WebPageDataCreator {
       log.info("creating web page data");
       
       for(int i=0; i<URLS.length; i++) {
-        page = new WebPage();
+        page = WebPage.newBuilder().build();
         page.setUrl(new Utf8(URLS[i]));
         page.setParsedContent(new ArrayList<CharSequence>());
 	    if (CONTENTS[i]!=null){
-		  page.setContent(ByteBuffer.wrap(CONTENTS[i].getBytes()));
-		  for(String token : CONTENTS[i].split(" ")) {
-		    page.getParsedContent().add(new Utf8(token));  
-		  }
+		    page.setContent(ByteBuffer.wrap(CONTENTS[i].getBytes()));
+		    for(String token : CONTENTS[i].split(" ")) {
+		      page.getParsedContent().add(new Utf8(token));  
+		    }
 	    }
         
         page.setOutlinks(new HashMap<CharSequence, CharSequence>());
@@ -130,7 +132,7 @@ public class WebPageDataCreator {
           page.getOutlinks().put(new Utf8(URLS[LINKS[i][j]]), new Utf8(ANCHORS[i][j]));
         }
         
-        Metadata metadata = new Metadata();
+        Metadata metadata = Metadata.newBuilder().build();
         metadata.setVersion(1);
         metadata.setData(new HashMap<CharSequence, CharSequence>());
         metadata.getData().put(new Utf8("metakey"), new Utf8("metavalue"));

Modified: gora/branches/GORA_94/gora-core/src/examples/java/org/apache/gora/examples/generated/Employee.java
URL: http://svn.apache.org/viewvc/gora/branches/GORA_94/gora-core/src/examples/java/org/apache/gora/examples/generated/Employee.java?rev=1538057&r1=1538056&r2=1538057&view=diff
==============================================================================
--- gora/branches/GORA_94/gora-core/src/examples/java/org/apache/gora/examples/generated/Employee.java (original)
+++ gora/branches/GORA_94/gora-core/src/examples/java/org/apache/gora/examples/generated/Employee.java Fri Nov  1 20:46:20 2013
@@ -6,18 +6,7 @@
 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\":\"__g__dirty\",\"type\":\"bytes\",\"doc\":\"Bytes used to represent weather or not a field is dirty.\",\"default\":\"AA==\"},{\"name\":\"name\",\"type\":[\"string\",\"null\"]},{\"name\":\"dateOfBirth\",\"type\":\"long\"},{\"name\":\"ssn\",\"type\":\"string\"},{\"name\":\"salary\",\"type\":\"int\"},{\"name\":\"boss\",\"type\":[\"null\",\"Employee\",\"string\"]},{\"name\":\"webpage\",\"type\":[\"null\",{\"type\":\"record\",\"name\":\"WebPage\",\"fields\":[{\"name\":\"__g__dirty\",\"type\":\"bytes\",\"doc\":\"Bytes used to represent weather or not a field is dirty.\",\"default\":\"AA==\"},{\"name\":\"url\",\"type\":\"string\"},{\"name\":\"content\",\"type\":[\"null\",\"bytes\"]},{\"name\":\"parsedContent\",\"type\":{\"type\":\"array\",\"items\":\"string\"}},{\"name\":\"outl
 inks\",\"type\":{\"type\":\"map\",\"values\":\"string\"}},{\"name\":\"metadata\",\"type\":{\"type\":\"record\",\"name\":\"Metadata\",\"fields\":[{\"name\":\"__g__dirty\",\"type\":\"bytes\",\"doc\":\"Bytes used to represent weather or not a field is dirty.\",\"default\":\"AA==\"},{\"name\":\"version\",\"type\":\"int\"},{\"name\":\"data\",\"type\":{\"type\":\"map\",\"values\":\"string\"}}]}}]}]}]}");
-  
-  public static final String[] _ALL_FIELDS = {
-  "__g__dirty",
-  "name",
-  "dateOfBirth",
-  "ssn",
-  "salary",
-  "boss",
-  "webpage",
-  };
-
+  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\":\"__g__dirty\",\"type\":\"bytes\",\"doc\":\"Bytes used to represent weather or not a field is dirty.\",\"default\":\"AA==\"},{\"name\":\"name\",\"type\":[\"null\",\"string\"],\"default\":null},{\"name\":\"dateOfBirth\",\"type\":\"long\",\"default\":0},{\"name\":\"ssn\",\"type\":[\"null\",\"string\"],\"default\":null},{\"name\":\"salary\",\"type\":\"int\",\"default\":0},{\"name\":\"boss\",\"type\":[\"null\",\"Employee\",\"string\"],\"default\":null},{\"name\":\"webpage\",\"type\":[\"null\",{\"type\":\"record\",\"name\":\"WebPage\",\"fields\":[{\"name\":\"__g__dirty\",\"type\":\"bytes\",\"doc\":\"Bytes used to represent weather or not a field is dirty.\",\"default\":\"AA==\"},{\"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\":null},{\"name\":\"metadata\",\"type\":{\"type\":\"record\",\"name\":\"Metadata\",\"fields\":[{\"name\":\"__g__dirty\",\"type\":\"bytes\",\"doc\":\"Bytes used to represent weather or not a field is dirty.\",\"default\":\"AA==\"},{\"name\":\"version\",\"type\":\"int\",\"default\":0},{\"name\":\"data\",\"type\":{\"type\":\"map\",\"values\":\"string\"},\"default\":null}]},\"default\":null}]}],\"default\":null}]}");
   /** Bytes used to represent weather or not a field is dirty. */
   private java.nio.ByteBuffer __g__dirty = java.nio.ByteBuffer.wrap(new byte[1]);
   private java.lang.CharSequence name;
@@ -40,17 +29,18 @@ public class Employee extends org.apache
     default: throw new org.apache.avro.AvroRuntimeException("Bad index");
     }
   }
+  
   // Used by DatumReader.  Applications should not call. 
   @SuppressWarnings(value="unchecked")
-  public void put(int field$, java.lang.Object value$) {
+  public void put(int field$, java.lang.Object value) {
     switch (field$) {
-    case 0: __g__dirty = (java.nio.ByteBuffer)value$; break;
-    case 1: name = (java.lang.CharSequence)value$; break;
-    case 2: dateOfBirth = (java.lang.Long)value$; break;
-    case 3: ssn = (java.lang.CharSequence)value$; break;
-    case 4: salary = (java.lang.Integer)value$; break;
-    case 5: boss = (java.lang.Object)value$; break;
-    case 6: webpage = (org.apache.gora.examples.generated.WebPage)value$; break;
+    case 0: __g__dirty = (java.nio.ByteBuffer)(value); break;
+    case 1: name = (java.lang.CharSequence)(value); break;
+    case 2: dateOfBirth = (java.lang.Long)(value); break;
+    case 3: ssn = (java.lang.CharSequence)(value); break;
+    case 4: salary = (java.lang.Integer)(value); break;
+    case 5: boss = (java.lang.Object)(value); break;
+    case 6: webpage = (org.apache.gora.examples.generated.WebPage)(value); break;
     default: throw new org.apache.avro.AvroRuntimeException("Bad index");
     }
   }
@@ -107,7 +97,7 @@ public class Employee extends org.apache
    * Gets the value of the 'ssn' field.
    */
   public java.lang.CharSequence getSsn() {
-    return ssn.toString();
+    return ssn;
   }
 
   /**
@@ -115,7 +105,7 @@ public class Employee extends org.apache
    * @param value the value to set.
    */
   public void setSsn(java.lang.CharSequence value) {
-    this.ssn = value.toString();
+    this.ssn = value;
     setDirty(3);
   }
   
@@ -446,7 +436,7 @@ public class Employee extends org.apache
     public Employee build() {
       try {
         Employee record = new Employee();
-        record.__g__dirty = fieldSetFlags()[0] ? this.__g__dirty : (java.nio.ByteBuffer) defaultValue(fields()[0]);
+        record.__g__dirty = fieldSetFlags()[0] ? this.__g__dirty : (java.nio.ByteBuffer) java.nio.ByteBuffer.wrap(new byte[1]);
         record.name = fieldSetFlags()[1] ? this.name : (java.lang.CharSequence) defaultValue(fields()[1]);
         record.dateOfBirth = fieldSetFlags()[2] ? this.dateOfBirth : (java.lang.Long) defaultValue(fields()[2]);
         record.ssn = fieldSetFlags()[3] ? this.ssn : (java.lang.CharSequence) defaultValue(fields()[3]);

Modified: gora/branches/GORA_94/gora-core/src/examples/java/org/apache/gora/examples/generated/Metadata.java
URL: http://svn.apache.org/viewvc/gora/branches/GORA_94/gora-core/src/examples/java/org/apache/gora/examples/generated/Metadata.java?rev=1538057&r1=1538056&r2=1538057&view=diff
==============================================================================
--- gora/branches/GORA_94/gora-core/src/examples/java/org/apache/gora/examples/generated/Metadata.java (original)
+++ gora/branches/GORA_94/gora-core/src/examples/java/org/apache/gora/examples/generated/Metadata.java Fri Nov  1 20:46:20 2013
@@ -6,7 +6,14 @@
 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\":\"__g__dirty\",\"type\":\"bytes\",\"doc\":\"Bytes used to represent weather or not a field is dirty.\",\"default\":\"AA==\"},{\"name\":\"version\",\"type\":\"int\"},{\"name\":\"data\",\"type\":{\"type\":\"map\",\"values\":\"string\"}}]}");
+  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\":\"__g__dirty\",\"type\":\"bytes\",\"doc\":\"Bytes used to represent weather or not a field is dirty.\",\"default\":\"AA==\"},{\"name\":\"version\",\"type\":\"int\",\"default\":0},{\"name\":\"data\",\"type\":{\"type\":\"map\",\"values\":\"string\"},\"default\":null}]}");
+  
+  public static final String[] _ALL_FIELDS = {
+  "__g__dirty",
+  "version",
+  "data",
+  };
+
   /** Bytes used to represent weather or not a field is dirty. */
   private java.nio.ByteBuffer __g__dirty = java.nio.ByteBuffer.wrap(new byte[1]);
   private int version;

Modified: gora/branches/GORA_94/gora-core/src/examples/java/org/apache/gora/examples/generated/WebPage.java
URL: http://svn.apache.org/viewvc/gora/branches/GORA_94/gora-core/src/examples/java/org/apache/gora/examples/generated/WebPage.java?rev=1538057&r1=1538056&r2=1538057&view=diff
==============================================================================
--- gora/branches/GORA_94/gora-core/src/examples/java/org/apache/gora/examples/generated/WebPage.java (original)
+++ gora/branches/GORA_94/gora-core/src/examples/java/org/apache/gora/examples/generated/WebPage.java Fri Nov  1 20:46:20 2013
@@ -6,7 +6,17 @@
 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\":\"__g__dirty\",\"type\":\"bytes\",\"doc\":\"Bytes used to represent weather or not a field is dirty.\",\"default\":\"AA==\"},{\"name\":\"url\",\"type\":\"string\"},{\"name\":\"content\",\"type\":[\"null\",\"bytes\"]},{\"name\":\"parsedContent\",\"type\":{\"type\":\"array\",\"items\":\"string\"}},{\"name\":\"outlinks\",\"type\":{\"type\":\"map\",\"values\":\"string\"}},{\"name\":\"metadata\",\"type\":{\"type\":\"record\",\"name\":\"Metadata\",\"fields\":[{\"name\":\"__g__dirty\",\"type\":\"bytes\",\"doc\":\"Bytes used to represent weather or not a field is dirty.\",\"default\":\"AA==\"},{\"name\":\"version\",\"type\":\"int\"},{\"name\":\"data\",\"type\":{\"type\":\"map\",\"values\":\"string\"}}]}}]}");
+  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\":\"__g__dirty\",\"type\":\"bytes\",\"doc\":\"Bytes used to represent weather or not a field is dirty.\",\"default\":\"AA==\"},{\"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\":null},{\"name\":\"metadata\",\"type\":{\"type\":\"record\",\"name\":\"Metadata\",\"fields\":[{\"name\":\"__g__dirty\",\"type\":\"bytes\",\"doc\":\"Bytes used to represent weather or not a field is dirty.\",\"default\":\"AA==\"},{\"name\":\"version\",\"type\":\"int\",\"default\":0},{\"name\":\"data\",\"type\":{\"type\":\"map\",\"values\"
 :\"string\"},\"default\":null}]},\"default\":null}]}");
+  
+  public static final String[] _ALL_FIELDS = {
+  "__g__dirty",
+  "url",
+  "content",
+  "parsedContent",
+  "outlinks",
+  "metadata",
+  };
+
   /** Bytes used to represent weather or not a field is dirty. */
   private java.nio.ByteBuffer __g__dirty = java.nio.ByteBuffer.wrap(new byte[1]);
   private java.lang.CharSequence url;

Modified: gora/branches/GORA_94/gora-core/src/main/java/org/apache/gora/mapreduce/GoraMapReduceUtils.java
URL: http://svn.apache.org/viewvc/gora/branches/GORA_94/gora-core/src/main/java/org/apache/gora/mapreduce/GoraMapReduceUtils.java?rev=1538057&r1=1538056&r2=1538057&view=diff
==============================================================================
--- gora/branches/GORA_94/gora-core/src/main/java/org/apache/gora/mapreduce/GoraMapReduceUtils.java (original)
+++ gora/branches/GORA_94/gora-core/src/main/java/org/apache/gora/mapreduce/GoraMapReduceUtils.java Fri Nov  1 20:46:20 2013
@@ -44,6 +44,14 @@ public class GoraMapReduceUtils {
     }
   }
   
+  /**
+   * Add our own serializer (obtained via the {@link PersistentSerialization} 
+   * wrapper) to any other <code>io.serializations</code> which may be specified 
+   * within existing Hadoop configuration.
+   * 
+   * @param conf the Hadoop configuration object
+   * @param reuseObjects boolean parameter to reuse objects
+   */
   public static void setIOSerializations(Configuration conf, boolean reuseObjects) {
     String serializationClass =
       PersistentSerialization.class.getCanonicalName();

Modified: gora/branches/GORA_94/gora-core/src/main/java/org/apache/gora/mapreduce/PersistentSerializer.java
URL: http://svn.apache.org/viewvc/gora/branches/GORA_94/gora-core/src/main/java/org/apache/gora/mapreduce/PersistentSerializer.java?rev=1538057&r1=1538056&r2=1538057&view=diff
==============================================================================
--- gora/branches/GORA_94/gora-core/src/main/java/org/apache/gora/mapreduce/PersistentSerializer.java (original)
+++ gora/branches/GORA_94/gora-core/src/main/java/org/apache/gora/mapreduce/PersistentSerializer.java Fri Nov  1 20:46:20 2013
@@ -27,7 +27,7 @@ import org.apache.gora.persistency.Persi
 import org.apache.hadoop.io.serializer.Serializer;
 
 /**
- * Hadoop serializer using {@link PersistentDatumWriter}
+ * Hadoop serializer using Avro's {@link SpecificDatumWriter}
  * with {@link BinaryEncoder}.
  */
 public class PersistentSerializer implements Serializer<Persistent> {
@@ -44,11 +44,19 @@ public class PersistentSerializer implem
     encoder.flush();
   }
 
+  /**
+   * Open a connection for the {@link OutputStream}; should be
+   * called before serialization occurs. N.B. the {@link PersistentSerializer#close()}
+   * should be called 'finally' after serialization is complete.
+   */
   @Override
   public void open(OutputStream out) throws IOException {
     encoder = EncoderFactory.get().directBinaryEncoder(out, null);
   }
 
+  /**
+   * Do the serialization of the {@link Persistent} object
+   */
   @Override
   public void serialize(Persistent persistent) throws IOException {
     datumWriter.setSchema(persistent.getSchema());

Modified: gora/branches/GORA_94/gora-core/src/main/java/org/apache/gora/persistency/impl/PersistentBase.java
URL: http://svn.apache.org/viewvc/gora/branches/GORA_94/gora-core/src/main/java/org/apache/gora/persistency/impl/PersistentBase.java?rev=1538057&r1=1538056&r2=1538057&view=diff
==============================================================================
--- gora/branches/GORA_94/gora-core/src/main/java/org/apache/gora/persistency/impl/PersistentBase.java (original)
+++ gora/branches/GORA_94/gora-core/src/main/java/org/apache/gora/persistency/impl/PersistentBase.java Fri Nov  1 20:46:20 2013
@@ -28,7 +28,7 @@ import org.apache.gora.persistency.Dirty
 import org.apache.gora.persistency.Persistent;
 
 /**
- * Base classs implementing common functionality for Persistent
+ * Base class implementing common functionality for Persistent
  * classes.
  */
 public abstract class PersistentBase extends SpecificRecordBase implements Persistent  {
@@ -113,9 +113,10 @@ public abstract class PersistentBase ext
     case RECORD:
     case MAP:
     case ARRAY:
-      return ((Dirtyable) get(field.pos())).isDirty();
-    case UNION:
       Object value = get(field.pos());
+      return value==null ? false : ((Dirtyable) value).isDirty();
+    case UNION:
+      value = get(field.pos());
       if (value instanceof Dirtyable) {
         return ((Dirtyable) value).isDirty();
       }

Modified: gora/branches/GORA_94/gora-core/src/main/java/org/apache/gora/store/impl/DataStoreBase.java
URL: http://svn.apache.org/viewvc/gora/branches/GORA_94/gora-core/src/main/java/org/apache/gora/store/impl/DataStoreBase.java?rev=1538057&r1=1538056&r2=1538057&view=diff
==============================================================================
--- gora/branches/GORA_94/gora-core/src/main/java/org/apache/gora/store/impl/DataStoreBase.java (original)
+++ gora/branches/GORA_94/gora-core/src/main/java/org/apache/gora/store/impl/DataStoreBase.java Fri Nov  1 20:46:20 2013
@@ -22,6 +22,7 @@ import java.io.Closeable;
 import java.io.DataInput;
 import java.io.DataOutput;
 import java.io.IOException;
+import java.util.ArrayList;
 import java.util.List;
 import java.util.Map;
 import java.util.Properties;
@@ -33,6 +34,7 @@ import org.apache.avro.specific.Specific
 import org.apache.commons.lang.builder.EqualsBuilder;
 import org.apache.gora.avro.store.AvroStore;
 import org.apache.gora.persistency.BeanFactory;
+import org.apache.gora.persistency.Persistent;
 import org.apache.gora.persistency.impl.BeanFactoryImpl;
 import org.apache.gora.persistency.impl.PersistentBase;
 import org.apache.gora.store.DataStore;
@@ -165,11 +167,25 @@ public abstract class DataStoreBase<K, T
     if(fields != null) {
       return fields;
     }
+    return getFields();
+  }
+  
+  protected String[] getFields() {
     List<Field> schemaFields = beanFactory.getCachedPersistent().getSchema().getFields();
+    
+    List<Field> list = new ArrayList<Field>();
+    for (Field field : schemaFields) {
+      if (!Persistent.DIRTY_BYTES_FIELD_NAME.equalsIgnoreCase(field.name())) {
+        list.add(field);
+      }
+    }
+    schemaFields = list;
+    
     String[] fieldNames = new String[schemaFields.size()];
     for(int i = 0; i<fieldNames.length; i++ ){
       fieldNames[i] = schemaFields.get(i).name();
     }
+    
     return fieldNames;
   }
 

Modified: gora/branches/GORA_94/gora-core/src/main/java/org/apache/gora/util/ReflectionUtils.java
URL: http://svn.apache.org/viewvc/gora/branches/GORA_94/gora-core/src/main/java/org/apache/gora/util/ReflectionUtils.java?rev=1538057&r1=1538056&r2=1538057&view=diff
==============================================================================
--- gora/branches/GORA_94/gora-core/src/main/java/org/apache/gora/util/ReflectionUtils.java (original)
+++ gora/branches/GORA_94/gora-core/src/main/java/org/apache/gora/util/ReflectionUtils.java Fri Nov  1 20:46:20 2013
@@ -20,6 +20,10 @@ package org.apache.gora.util;
 
 import java.lang.reflect.Constructor;
 import java.lang.reflect.InvocationTargetException;
+import java.lang.reflect.Method;
+
+import org.apache.avro.specific.SpecificRecordBuilderBase;
+import org.apache.gora.persistency.Persistent;
 
 /**
  * Utility methods related to reflection
@@ -100,4 +104,10 @@ public class ReflectionUtils {
     
     return clazz.getField(fieldName).get(null);
   }
+  
+  public static <T extends Persistent> SpecificRecordBuilderBase<T> classBuilder(Class<T> clazz) throws SecurityException
+    , NoSuchMethodException, IllegalArgumentException, IllegalAccessException, InvocationTargetException {
+    return (SpecificRecordBuilderBase<T>) clazz.getMethod("newBuilder").invoke(null);
+  }
+  
 }

Modified: gora/branches/GORA_94/gora-core/src/test/java/org/apache/gora/GoraTestDriver.java
URL: http://svn.apache.org/viewvc/gora/branches/GORA_94/gora-core/src/test/java/org/apache/gora/GoraTestDriver.java?rev=1538057&r1=1538056&r2=1538057&view=diff
==============================================================================
--- gora/branches/GORA_94/gora-core/src/test/java/org/apache/gora/GoraTestDriver.java (original)
+++ gora/branches/GORA_94/gora-core/src/test/java/org/apache/gora/GoraTestDriver.java Fri Nov  1 20:46:20 2013
@@ -18,7 +18,6 @@
 
 package org.apache.gora;
 
-import java.io.IOException;
 import java.util.HashSet;
 import java.util.Properties;
 
@@ -112,4 +111,8 @@ public class GoraTestDriver {
   public Class<?> getDataStoreClass() {
     return dataStoreClass;
   }
+  
+  public Configuration getConfiguration() {
+    return this.conf;
+  }
 }

Modified: gora/branches/GORA_94/gora-core/src/test/java/org/apache/gora/mapreduce/TestPersistentSerialization.java
URL: http://svn.apache.org/viewvc/gora/branches/GORA_94/gora-core/src/test/java/org/apache/gora/mapreduce/TestPersistentSerialization.java?rev=1538057&r1=1538056&r2=1538057&view=diff
==============================================================================
--- gora/branches/GORA_94/gora-core/src/test/java/org/apache/gora/mapreduce/TestPersistentSerialization.java (original)
+++ gora/branches/GORA_94/gora-core/src/test/java/org/apache/gora/mapreduce/TestPersistentSerialization.java Fri Nov  1 20:46:20 2013
@@ -67,7 +67,7 @@ public class TestPersistentSerialization
    */
   @Test
   public void testSerdeEmployeeOneField() throws Exception {
-    Employee employee = new Employee();
+    Employee employee = Employee.newBuilder().build();
     employee.setSsn(new Utf8("11111"));
 
     TestIOUtils.testSerializeDeserialize(employee);
@@ -81,7 +81,7 @@ public class TestPersistentSerialization
    */
   @Test
   public void testSerdeEmployeeTwoFields() throws Exception {
-    Employee employee = new Employee();
+    Employee employee = Employee.newBuilder().build();
     employee.setSsn(new Utf8("11111"));
     employee.setSalary(100);
 
@@ -126,9 +126,9 @@ public class TestPersistentSerialization
    */
   @Test
   public void testSerdeMultipleWebPages() throws Exception {
-    WebPage page1 = new WebPage();
-    WebPage page2 = new WebPage();
-    WebPage page3 = new WebPage();
+    WebPage page1 = WebPage.newBuilder().build();
+    WebPage page2 = WebPage.newBuilder().build();
+    WebPage page3 = WebPage.newBuilder().build();
 
     page1.setUrl(new Utf8("foo"));
     page2.setUrl(new Utf8("baz"));

Modified: gora/branches/GORA_94/gora-core/src/test/java/org/apache/gora/persistency/impl/TestPersistentBase.java
URL: http://svn.apache.org/viewvc/gora/branches/GORA_94/gora-core/src/test/java/org/apache/gora/persistency/impl/TestPersistentBase.java?rev=1538057&r1=1538056&r2=1538057&view=diff
==============================================================================
--- gora/branches/GORA_94/gora-core/src/test/java/org/apache/gora/persistency/impl/TestPersistentBase.java (original)
+++ gora/branches/GORA_94/gora-core/src/test/java/org/apache/gora/persistency/impl/TestPersistentBase.java Fri Nov  1 20:46:20 2013
@@ -48,7 +48,7 @@ public class TestPersistentBase {
    */
   @Test
   public void testGetFields() {
-    WebPage page = new WebPage();
+    WebPage page = WebPage.newBuilder().build();
     List<Field> fields = page.getSchema().getFields();
     assertEquals(WebPage.SCHEMA$.getFields(), fields);
   }
@@ -59,7 +59,7 @@ public class TestPersistentBase {
    */
   @Test
   public void testGetField() {
-    WebPage page = new WebPage();
+    WebPage page = WebPage.newBuilder().build();
     for(int i=0; i<WebPage.SCHEMA$.getFields().toArray().length; i++) {
       Field field = page.getSchema().getFields().get(i);
       assertEquals(WebPage.SCHEMA$.getFields().get(i), field);
@@ -72,7 +72,7 @@ public class TestPersistentBase {
    */
   @Test
   public void testGetFieldIndex() {
-    WebPage page = new WebPage();
+    WebPage page = WebPage.newBuilder().build();
     for(int i=0; i<WebPage.SCHEMA$.getFields().toArray().length; i++) {
       int index = page.getSchema().getFields().get(i).pos();
       assertEquals(i, index);
@@ -86,13 +86,13 @@ public class TestPersistentBase {
    */
   @Test
   public void testFieldsWithTwoClasses() {
-    WebPage page = new WebPage();
+    WebPage page = WebPage.newBuilder().build();
     for(int i=0; i<WebPage.SCHEMA$.getFields().toArray().length; i++) {
       int index = page.getSchema().getFields().get(i).pos();
       assertEquals(i, index);
     }
-    Employee employee = new Employee();
-    for(int i=0; i<Employee._ALL_FIELDS.length; i++) {
+    Employee employee = Employee.newBuilder().build();
+    for(int i=0; i<Employee.SCHEMA$.getFields().toArray().length; i++) {
       int index = employee.getSchema().getFields().get(i).pos();
       assertEquals(i, index);
     }
@@ -112,7 +112,7 @@ public class TestPersistentBase {
   public void testClear() {
     
     //test clear all fields
-    WebPage page = new WebPage();
+    WebPage page = WebPage.newBuilder().build();
    
     page.setUrl(new Utf8("http://foo.com"));
     page.setParsedContent(new ArrayList<CharSequence>());
@@ -137,7 +137,7 @@ public class TestPersistentBase {
     page.setContent(ByteBuffer.wrap("foo baz bar barbaz".getBytes()));
     
     //test clear new object
-    page = new WebPage();
+    page = WebPage.newBuilder().build();
     page.clear();
   }
   

Modified: gora/branches/GORA_94/gora-core/src/test/java/org/apache/gora/store/DataStoreTestUtil.java
URL: http://svn.apache.org/viewvc/gora/branches/GORA_94/gora-core/src/test/java/org/apache/gora/store/DataStoreTestUtil.java?rev=1538057&r1=1538056&r2=1538057&view=diff
==============================================================================
--- gora/branches/GORA_94/gora-core/src/test/java/org/apache/gora/store/DataStoreTestUtil.java (original)
+++ gora/branches/GORA_94/gora-core/src/test/java/org/apache/gora/store/DataStoreTestUtil.java Fri Nov  1 20:46:20 2013
@@ -42,6 +42,7 @@ import static org.junit.Assert.assertFal
 import static org.junit.Assert.assertTrue;
 import static org.junit.Assert.assertNull;
 
+import org.apache.avro.Schema.Field;
 import org.apache.avro.util.Utf8;
 import org.apache.gora.examples.WebPageDataCreator;
 import org.apache.gora.examples.generated.Employee;
@@ -169,12 +170,12 @@ public class DataStoreTestUtil {
 
     Employee employee = DataStoreTestUtil.createEmployee(dataStore);
     Employee boss = DataStoreTestUtil.createBoss(dataStore);
-    employee.setBoss(boss) ;
+    employee.setBoss(boss);
     
     String ssn = employee.getSsn().toString();
     dataStore.put(ssn, employee);
     dataStore.flush();
-    Employee after = dataStore.get(ssn, Employee._ALL_FIELDS);
+    Employee after = dataStore.get(ssn, getFields(Employee.SCHEMA$.getFields()));
     assertEquals(employee, after);
     assertEquals(boss, after.getBoss()) ;
   }
@@ -192,7 +193,7 @@ public class DataStoreTestUtil {
       String ssn = employee.getSsn().toString();
       dataStore.put(ssn, employee);
       dataStore.flush();
-      Employee after = dataStore.get(ssn, Employee._ALL_FIELDS);
+      Employee after = dataStore.get(ssn, getFields(Employee.SCHEMA$.getFields()));
       assertEquals(employee, after);
       assertEquals(boss, after.getBoss()) ;
       assertEquals(uberBoss, ((Employee)after.getBoss()).getBoss()) ;
@@ -214,7 +215,7 @@ public class DataStoreTestUtil {
    
     dataStore.put(ssn, employee);
     dataStore.flush();
-    Employee after = dataStore.get(ssn, Employee._ALL_FIELDS);
+    Employee after = dataStore.get(ssn, getFields(Employee.SCHEMA$.getFields()));
     assertEquals(employee, after);
     assertEquals(webpage, after.getWebpage()) ;
   }
@@ -228,7 +229,7 @@ public class DataStoreTestUtil {
     String ssn = employee.getSsn().toString();
     dataStore.put(ssn, employee);
     dataStore.flush();
-    Employee after = dataStore.get(ssn, Employee._ALL_FIELDS);
+    Employee after = dataStore.get(ssn, getFields(Employee.SCHEMA$.getFields()));
     assertEquals(employee, after);
     assertEquals("Real boss", ((Utf8)after.getBoss()).toString()) ;
   }
@@ -251,7 +252,7 @@ public class DataStoreTestUtil {
       if(subset.isEmpty())
         continue;
       Employee after = dataStore.get(ssn, subset.toArray(new String[subset.size()]));
-      Employee expected = new Employee();
+      Employee expected = Employee.newBuilder().build();
       for(String field:subset) {
         int index = expected.getSchema().getField(field).pos();
         expected.put(index, employee.get(index));
@@ -469,7 +470,7 @@ public class DataStoreTestUtil {
   }
 
   public static void testGetWebPage(DataStore<String, WebPage> store) throws IOException, Exception {
-    testGetWebPage(store, WebPage.SCHEMA$.getFields().toArray(new String[0]));
+    testGetWebPage(store, getFields(WebPage.SCHEMA$.getFields()));
   }
 
   public static void testGetWebPageDefaultFields(DataStore<String, WebPage> store)
@@ -496,7 +497,7 @@ public class DataStoreTestUtil {
 
   public static void testQueryWebPageSingleKey(DataStore<String, WebPage> store)
   throws IOException, Exception {
-    testQueryWebPageSingleKey(store, WebPage.SCHEMA$.getFields().toArray(new String[0]));
+    testQueryWebPageSingleKey(store, getFields(WebPage.SCHEMA$.getFields()));
   }
 
   public static void testQueryWebPageSingleKeyDefaultFields(
@@ -822,7 +823,7 @@ public class DataStoreTestUtil {
 
     store.createSchema();
     WebPage page = store.newPersistent();
-    Metadata metadata = new Metadata();
+    Metadata metadata = Metadata.newBuilder().build();
     metadata.setVersion(1);
     metadata.getData().put(new Utf8("foo"), new Utf8("baz"));
 
@@ -894,5 +895,23 @@ public class DataStoreTestUtil {
     }
     return bytes;
   }
+  
+  public static String[] getFields(List<Field> schemaFields) {
+    
+    List<Field> list = new ArrayList<Field>();
+    for (Field field : schemaFields) {
+      if (!Persistent.DIRTY_BYTES_FIELD_NAME.equalsIgnoreCase(field.name())) {
+        list.add(field);
+      }
+    }
+    schemaFields = list;
+    
+    String[] fieldNames = new String[schemaFields.size()];
+    for(int i = 0; i<fieldNames.length; i++ ){
+      fieldNames[i] = schemaFields.get(i).name();
+    }
+    
+    return fieldNames;
+  }
 
 }

Modified: gora/branches/GORA_94/gora-core/src/test/java/org/apache/gora/store/TestDataStoreFactory.java
URL: http://svn.apache.org/viewvc/gora/branches/GORA_94/gora-core/src/test/java/org/apache/gora/store/TestDataStoreFactory.java?rev=1538057&r1=1538056&r2=1538057&view=diff
==============================================================================
--- gora/branches/GORA_94/gora-core/src/test/java/org/apache/gora/store/TestDataStoreFactory.java (original)
+++ gora/branches/GORA_94/gora-core/src/test/java/org/apache/gora/store/TestDataStoreFactory.java Fri Nov  1 20:46:20 2013
@@ -20,9 +20,9 @@ package org.apache.gora.store;
 
 import java.util.Properties;
 
-import static junit.framework.Assert.assertNotNull;
-import static junit.framework.Assert.assertEquals;
-import static junit.framework.Assert.assertNotSame;
+import static org.junit.Assert.assertNotNull;
+import static org.junit.Assert.assertEquals;
+import static org.junit.Assert.assertNotSame;
 
 import org.apache.gora.avro.store.DataFileAvroStore;
 import org.apache.gora.mock.persistency.MockPersistent;

Modified: gora/branches/GORA_94/gora-tutorial/src/main/java/org/apache/gora/tutorial/log/generated/Pageview.java
URL: http://svn.apache.org/viewvc/gora/branches/GORA_94/gora-tutorial/src/main/java/org/apache/gora/tutorial/log/generated/Pageview.java?rev=1538057&r1=1538056&r2=1538057&view=diff
==============================================================================
--- gora/branches/GORA_94/gora-tutorial/src/main/java/org/apache/gora/tutorial/log/generated/Pageview.java (original)
+++ gora/branches/GORA_94/gora-tutorial/src/main/java/org/apache/gora/tutorial/log/generated/Pageview.java Fri Nov  1 20:46:20 2013
@@ -6,8 +6,21 @@
 package org.apache.gora.tutorial.log.generated;  
 @SuppressWarnings("all")
 public class Pageview 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\":\"Pageview\",\"namespace\":\"org.apache.gora.tutorial.log.generated\",\"fields\":[{\"name\":\"__g__dirty\",\"type\":\"bytes\",\"doc\":\"Bytes used to represent weather or not a field is dirty.\",\"default\":\"AAA=\"},{\"name\":\"url\",\"type\":\"string\"},{\"name\":\"timestamp\",\"type\":\"long\"},{\"name\":\"ip\",\"type\":\"string\"},{\"name\":\"httpMethod\",\"type\":\"string\"},{\"name\":\"httpStatusCode\",\"type\":\"int\"},{\"name\":\"responseSize\",\"type\":\"int\"},{\"name\":\"referrer\",\"type\":\"string\"},{\"name\":\"userAgent\",\"type\":\"string\"}]}");
-  /** Bytes used to represent weather or not a field is dirty. */
+  public static final org.apache.avro.Schema SCHEMA$ = new org.apache.avro.Schema.Parser().parse("{\"type\":\"record\",\"name\":\"Pageview\",\"namespace\":\"org.apache.gora.tutorial.log.generated\",\"fields\":[{\"name\":\"__g__dirty\",\"type\":\"bytes\",\"doc\":\"Bytes used to represent weather or not a field is dirty\",\"default\":\"AAA=\"},{\"name\":\"url\",\"type\":\"string\"},{\"name\":\"timestamp\",\"type\":\"long\"},{\"name\":\"ip\",\"type\":\"string\"},{\"name\":\"httpMethod\",\"type\":\"string\"},{\"name\":\"httpStatusCode\",\"type\":\"int\"},{\"name\":\"responseSize\",\"type\":\"int\"},{\"name\":\"referrer\",\"type\":\"string\"},{\"name\":\"userAgent\",\"type\":\"string\"}]}");
+  
+  public static final String[] _ALL_FIELDS = {
+  "__g__dirty",
+  "url",
+  "timestamp",
+  "ip",
+  "httpMethod",
+  "httpStatusCode",
+  "responseSize",
+  "referrer",
+  "userAgent",
+  };
+
+  /** Bytes used to represent weather or not a field is dirty */
   private java.nio.ByteBuffer __g__dirty = java.nio.ByteBuffer.wrap(new byte[2]);
   private java.lang.CharSequence url;
   private long timestamp;