You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@avro.apache.org by cu...@apache.org on 2011/03/07 21:12:47 UTC
svn commit: r1078917 - in /avro/trunk: CHANGES.txt
lang/java/avro/src/main/java/org/apache/avro/generic/GenericDatumReader.java
lang/java/avro/src/main/java/org/apache/avro/generic/GenericDatumWriter.java
Author: cutting
Date: Mon Mar 7 20:12:47 2011
New Revision: 1078917
URL: http://svn.apache.org/viewvc?rev=1078917&view=rev
Log:
AVRO-726. Java: Make GenericDatum{Reader,Writer} easier to extend. Contributed by scottcarey.
Modified:
avro/trunk/CHANGES.txt
avro/trunk/lang/java/avro/src/main/java/org/apache/avro/generic/GenericDatumReader.java
avro/trunk/lang/java/avro/src/main/java/org/apache/avro/generic/GenericDatumWriter.java
Modified: avro/trunk/CHANGES.txt
URL: http://svn.apache.org/viewvc/avro/trunk/CHANGES.txt?rev=1078917&r1=1078916&r2=1078917&view=diff
==============================================================================
--- avro/trunk/CHANGES.txt (original)
+++ avro/trunk/CHANGES.txt Mon Mar 7 20:12:47 2011
@@ -159,6 +159,9 @@ Avro 1.5.0 (4 March 2011)
AVRO-771. Java: Update dependency versions
(scottcarey)
+ AVRO-726. Java: Make GenericDatum{Reader,Writer} easier to extend.
+ (scottcarey)
+
AVRO-765. Java: Improvement to BinaryDecoder readLong performance
(scottcarey)
Modified: avro/trunk/lang/java/avro/src/main/java/org/apache/avro/generic/GenericDatumReader.java
URL: http://svn.apache.org/viewvc/avro/trunk/lang/java/avro/src/main/java/org/apache/avro/generic/GenericDatumReader.java?rev=1078917&r1=1078916&r2=1078917&view=diff
==============================================================================
--- avro/trunk/lang/java/avro/src/main/java/org/apache/avro/generic/GenericDatumReader.java (original)
+++ avro/trunk/lang/java/avro/src/main/java/org/apache/avro/generic/GenericDatumReader.java Mon Mar 7 20:12:47 2011
@@ -35,7 +35,7 @@ import org.apache.avro.util.WeakIdentity
/** {@link DatumReader} for generic Java objects. */
public class GenericDatumReader<D> implements DatumReader<D> {
- private GenericData data;
+ private final GenericData data;
private Schema actual;
private Schema expected;
@@ -63,6 +63,9 @@ public class GenericDatumReader<D> imple
this.creator = Thread.currentThread();
}
+ /** Return the {@link GenericData} implementation. */
+ public GenericData getData() { return data; }
+
@Override
public void setSchema(Schema writer) {
this.actual = writer;
@@ -86,7 +89,12 @@ public class GenericDatumReader<D> imple
}
};
- private ResolvingDecoder getResolver(Schema actual, Schema expected)
+ /** Gets a resolving decoder for use by this GenericDatumReader.
+ * Unstable API.
+ * Currently uses a thread local cache to prevent constructing the
+ * resolvers too often, because that is very expensive.
+ */
+ protected final ResolvingDecoder getResolver(Schema actual, Schema expected)
throws IOException {
Thread currThread = Thread.currentThread();
ResolvingDecoder resolver;
Modified: avro/trunk/lang/java/avro/src/main/java/org/apache/avro/generic/GenericDatumWriter.java
URL: http://svn.apache.org/viewvc/avro/trunk/lang/java/avro/src/main/java/org/apache/avro/generic/GenericDatumWriter.java?rev=1078917&r1=1078916&r2=1078917&view=diff
==============================================================================
--- avro/trunk/lang/java/avro/src/main/java/org/apache/avro/generic/GenericDatumWriter.java (original)
+++ avro/trunk/lang/java/avro/src/main/java/org/apache/avro/generic/GenericDatumWriter.java Mon Mar 7 20:12:47 2011
@@ -48,6 +48,9 @@ public class GenericDatumWriter<D> imple
setSchema(root);
}
+ /** Return the {@link GenericData} implementation. */
+ public GenericData getData() { return data; }
+
public void setSchema(Schema root) { this.root = root; }
public void write(D datum, Encoder out) throws IOException {
@@ -84,7 +87,8 @@ public class GenericDatumWriter<D> imple
}
}
- private NullPointerException npe(NullPointerException e, String s) {
+ /** Helper method for adding a message to an NPE. */
+ protected NullPointerException npe(NullPointerException e, String s) {
NullPointerException result = new NullPointerException(e.getMessage()+s);
result.initCause(e.getCause() == null ? e : e.getCause());
return result;