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 2010/08/10 19:09:05 UTC
svn commit: r984128 - in /avro/trunk: ./
lang/java/src/java/org/apache/avro/generic/
lang/java/src/java/org/apache/avro/ipc/
lang/java/src/java/org/apache/avro/ipc/trace/
lang/java/src/java/org/apache/avro/mapred/
lang/java/src/java/org/apache/avro/map...
Author: cutting
Date: Tue Aug 10 17:09:04 2010
New Revision: 984128
URL: http://svn.apache.org/viewvc?rev=984128&view=rev
Log:
AVRO-605. Java: Change Utf8 to implement CharSequence.
Added:
avro/trunk/lang/java/src/java/org/apache/avro/generic/GenericEnumSymbol.java
Modified:
avro/trunk/CHANGES.txt
avro/trunk/lang/java/src/java/org/apache/avro/generic/GenericData.java
avro/trunk/lang/java/src/java/org/apache/avro/generic/GenericDatumReader.java
avro/trunk/lang/java/src/java/org/apache/avro/generic/GenericDatumWriter.java
avro/trunk/lang/java/src/java/org/apache/avro/generic/GenericRequestor.java
avro/trunk/lang/java/src/java/org/apache/avro/ipc/RPCContext.java
avro/trunk/lang/java/src/java/org/apache/avro/ipc/Requestor.java
avro/trunk/lang/java/src/java/org/apache/avro/ipc/Responder.java
avro/trunk/lang/java/src/java/org/apache/avro/ipc/trace/Trace.java
avro/trunk/lang/java/src/java/org/apache/avro/ipc/trace/TracePlugin.java
avro/trunk/lang/java/src/java/org/apache/avro/mapred/Pair.java
avro/trunk/lang/java/src/java/org/apache/avro/mapred/tether/TetherOutputService.java
avro/trunk/lang/java/src/java/org/apache/avro/reflect/ReflectData.java
avro/trunk/lang/java/src/java/org/apache/avro/reflect/ReflectDatumWriter.java
avro/trunk/lang/java/src/java/org/apache/avro/reflect/ReflectResponder.java
avro/trunk/lang/java/src/java/org/apache/avro/specific/SpecificCompiler.java
avro/trunk/lang/java/src/java/org/apache/avro/specific/SpecificData.java
avro/trunk/lang/java/src/java/org/apache/avro/util/Utf8.java
avro/trunk/lang/java/src/test/java/org/apache/avro/RPCMetaTestPlugin.java
avro/trunk/lang/java/src/test/java/org/apache/avro/RandomData.java
avro/trunk/lang/java/src/test/java/org/apache/avro/TestProtocolGeneric.java
avro/trunk/lang/java/src/test/java/org/apache/avro/TestProtocolSpecific.java
avro/trunk/lang/java/src/test/java/org/apache/avro/TestSchema.java
avro/trunk/lang/java/src/test/java/org/apache/avro/ipc/TestNettyServer.java
avro/trunk/lang/java/src/test/java/org/apache/avro/mapred/tether/TetherTask.java
avro/trunk/lang/java/src/test/java/org/apache/avro/mapred/tether/TetherTaskRunner.java
avro/trunk/lang/java/src/test/java/org/apache/avro/specific/TestSpecificCompiler.java
Modified: avro/trunk/CHANGES.txt
URL: http://svn.apache.org/viewvc/avro/trunk/CHANGES.txt?rev=984128&r1=984127&r2=984128&view=diff
==============================================================================
--- avro/trunk/CHANGES.txt (original)
+++ avro/trunk/CHANGES.txt Tue Aug 10 17:09:04 2010
@@ -11,6 +11,14 @@ Avro 1.4.0 (unreleased)
methods. Servers are no longer started in their constructor.
(hammer & cutting)
+ AVRO-605. Java: Change Utf8 to implement CharSequence and change
+ specific, generic & reflect APIs to accept any CharSequence
+ implementation for string schemas, including java.lang.String.
+ This incompatibly changes method signatures of generated protocol
+ interfaces. It also incompatibly changes the generic
+ representation of enum symbols from java.lang.String to
+ org.apache.avro.generic.GenericEnumSymbol.
+
NEW FEATURES
AVRO-595. Add Basic Trace Collection and Propagation.
Modified: avro/trunk/lang/java/src/java/org/apache/avro/generic/GenericData.java
URL: http://svn.apache.org/viewvc/avro/trunk/lang/java/src/java/org/apache/avro/generic/GenericData.java?rev=984128&r1=984127&r2=984128&view=diff
==============================================================================
--- avro/trunk/lang/java/src/java/org/apache/avro/generic/GenericData.java (original)
+++ avro/trunk/lang/java/src/java/org/apache/avro/generic/GenericData.java Tue Aug 10 17:09:04 2010
@@ -27,7 +27,6 @@ import org.apache.avro.AvroTypeException
import org.apache.avro.Schema;
import org.apache.avro.Schema.Field;
import org.apache.avro.Schema.Type;
-import org.apache.avro.util.Utf8;
import org.apache.avro.io.BinaryData;
/** Utilities for generic Java data. */
@@ -186,6 +185,22 @@ public class GenericData {
}
}
+ /** Default implementation of {@link GenericEnumSymbol}. */
+ public static class EnumSymbol implements GenericEnumSymbol {
+ private String symbol;
+ public EnumSymbol(String symbol) { this.symbol = symbol; }
+
+ public boolean equals(Object o) {
+ if (o == this) return true;
+ return o instanceof GenericEnumSymbol
+ && symbol.equals(o.toString());
+ }
+
+ public int hashCode() { return symbol.hashCode(); }
+
+ public String toString() { return symbol; }
+ }
+
/** Returns true if a Java datum matches a schema. */
public boolean validate(Schema schema, Object datum) {
switch (schema.getType()) {
@@ -198,7 +213,7 @@ public class GenericData {
}
return true;
case ENUM:
- return schema.getEnumSymbols().contains(datum);
+ return schema.getEnumSymbols().contains(datum.toString());
case ARRAY:
if (!(datum instanceof GenericArray)) return false;
for (Object element : (GenericArray)datum)
@@ -277,7 +292,7 @@ public class GenericData {
buffer.append(", ");
}
buffer.append("}");
- } else if (datum instanceof Utf8 || datum instanceof String) {
+ } else if (datum instanceof CharSequence) {
buffer.append("\"");
buffer.append(datum); // TODO: properly escape!
buffer.append("\"");
@@ -329,7 +344,7 @@ public class GenericData {
return Schema.createFixed(null, null, null,
((GenericFixed)datum).bytes().length);
}
- else if (datum instanceof Utf8) return Schema.create(Type.STRING);
+ else if (datum instanceof CharSequence) return Schema.create(Type.STRING);
else if (datum instanceof ByteBuffer) return Schema.create(Type.BYTES);
else if (datum instanceof Integer) return Schema.create(Type.INT);
else if (datum instanceof Long) return Schema.create(Type.LONG);
@@ -396,7 +411,7 @@ public class GenericData {
/** Called by the default implementation of {@link #instanceOf}.*/
protected boolean isEnum(Object datum) {
- return datum instanceof String;
+ return datum instanceof GenericEnumSymbol;
}
/** Called by the default implementation of {@link #instanceOf}.*/
@@ -411,7 +426,7 @@ public class GenericData {
/** Called by the default implementation of {@link #instanceOf}.*/
protected boolean isString(Object datum) {
- return datum instanceof Utf8;
+ return datum instanceof CharSequence;
}
/** Called by the default implementation of {@link #instanceOf}.*/
@@ -476,7 +491,7 @@ public class GenericData {
}
return 0;
case ENUM:
- return s.getEnumOrdinal((String)o1) - s.getEnumOrdinal((String)o2);
+ return s.getEnumOrdinal(o1.toString()) - s.getEnumOrdinal(o2.toString());
case ARRAY:
GenericArray a1 = (GenericArray)o1;
GenericArray a2 = (GenericArray)o2;
Modified: avro/trunk/lang/java/src/java/org/apache/avro/generic/GenericDatumReader.java
URL: http://svn.apache.org/viewvc/avro/trunk/lang/java/src/java/org/apache/avro/generic/GenericDatumReader.java?rev=984128&r1=984127&r2=984128&view=diff
==============================================================================
--- avro/trunk/lang/java/src/java/org/apache/avro/generic/GenericDatumReader.java (original)
+++ avro/trunk/lang/java/src/java/org/apache/avro/generic/GenericDatumReader.java Tue Aug 10 17:09:04 2010
@@ -135,14 +135,16 @@ public class GenericDatumReader<D> imple
}
/** Called to read an enum value. May be overridden for alternate enum
- * representations. By default, returns the symbol as a String. */
+ * representations. By default, returns a GenericEnumSymbol. */
protected Object readEnum(Schema expected, Decoder in) throws IOException {
return createEnum(expected.getEnumSymbols().get(in.readEnum()), expected);
}
/** Called to create an enum value. May be overridden for alternate enum
- * representations. By default, returns the symbol as a String. */
- protected Object createEnum(String symbol, Schema schema) { return symbol; }
+ * representations. By default, returns a GenericEnumSymbol. */
+ protected Object createEnum(String symbol, Schema schema) {
+ return new GenericData.EnumSymbol(symbol);
+ }
/** Called to read an array instance. May be overridden for alternate array
* representations.*/
@@ -279,7 +281,7 @@ public class GenericDatumReader<D> imple
* string representation. By default, this calls {@link
* Decoder#readString(Utf8)}.*/
protected Object readString(Object old, Decoder in) throws IOException {
- return in.readString((Utf8)old);
+ return in.readString(old instanceof Utf8 ? (Utf8)old : null);
}
/** Called to create a string from a default value. Subclasses may override
Modified: avro/trunk/lang/java/src/java/org/apache/avro/generic/GenericDatumWriter.java
URL: http://svn.apache.org/viewvc/avro/trunk/lang/java/src/java/org/apache/avro/generic/GenericDatumWriter.java?rev=984128&r1=984127&r2=984128&view=diff
==============================================================================
--- avro/trunk/lang/java/src/java/org/apache/avro/generic/GenericDatumWriter.java (original)
+++ avro/trunk/lang/java/src/java/org/apache/avro/generic/GenericDatumWriter.java Tue Aug 10 17:09:04 2010
@@ -101,7 +101,7 @@ public class GenericDatumWriter<D> imple
* representations.*/
protected void writeEnum(Schema schema, Object datum, Encoder out)
throws IOException {
- out.writeEnum(schema.getEnumOrdinal((String)datum));
+ out.writeEnum(schema.getEnumOrdinal(datum.toString()));
}
/** Called to write a array. May be overridden for alternate array
@@ -173,7 +173,9 @@ public class GenericDatumWriter<D> imple
/** Called to write a string. May be overridden for alternate string
* representations.*/
protected void writeString(Object datum, Encoder out) throws IOException {
- out.writeString((Utf8)datum);
+ out.writeString(datum instanceof Utf8
+ ? (Utf8)datum
+ : new Utf8(datum.toString()));
}
/** Called to write a bytes. May be overridden for alternate bytes
Added: avro/trunk/lang/java/src/java/org/apache/avro/generic/GenericEnumSymbol.java
URL: http://svn.apache.org/viewvc/avro/trunk/lang/java/src/java/org/apache/avro/generic/GenericEnumSymbol.java?rev=984128&view=auto
==============================================================================
--- avro/trunk/lang/java/src/java/org/apache/avro/generic/GenericEnumSymbol.java (added)
+++ avro/trunk/lang/java/src/java/org/apache/avro/generic/GenericEnumSymbol.java Tue Aug 10 17:09:04 2010
@@ -0,0 +1,24 @@
+/**
+ * Licensed to the Apache Software Foundation (ASF) under one
+ * or more contributor license agreements. See the NOTICE file
+ * distributed with this work for additional information
+ * regarding copyright ownership. The ASF licenses this file
+ * to you under the Apache License, Version 2.0 (the
+ * "License"); you may not use this file except in compliance
+ * with the License. You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+package org.apache.avro.generic;
+
+/** An enum symbol. */
+public interface GenericEnumSymbol {
+ /** Return the symbol. */
+ String toString();
+}
Modified: avro/trunk/lang/java/src/java/org/apache/avro/generic/GenericRequestor.java
URL: http://svn.apache.org/viewvc/avro/trunk/lang/java/src/java/org/apache/avro/generic/GenericRequestor.java?rev=984128&r1=984127&r2=984128&view=diff
==============================================================================
--- avro/trunk/lang/java/src/java/org/apache/avro/generic/GenericRequestor.java (original)
+++ avro/trunk/lang/java/src/java/org/apache/avro/generic/GenericRequestor.java Tue Aug 10 17:09:04 2010
@@ -28,7 +28,6 @@ import org.apache.avro.io.Encoder;
import org.apache.avro.ipc.AvroRemoteException;
import org.apache.avro.ipc.Requestor;
import org.apache.avro.ipc.Transceiver;
-import org.apache.avro.util.Utf8;
/** {@link Requestor} implementation for generic Java data. */
public class GenericRequestor extends Requestor {
@@ -66,7 +65,7 @@ public class GenericRequestor extends Re
public Exception readError(Schema schema, Decoder in)
throws IOException {
Object error = new GenericDatumReader<Object>(schema).read(null,in);
- if (error instanceof Utf8)
+ if (error instanceof CharSequence)
return new AvroRuntimeException(error.toString()); // system error
return new AvroRemoteException(error);
}
Modified: avro/trunk/lang/java/src/java/org/apache/avro/ipc/RPCContext.java
URL: http://svn.apache.org/viewvc/avro/trunk/lang/java/src/java/org/apache/avro/ipc/RPCContext.java?rev=984128&r1=984127&r2=984128&view=diff
==============================================================================
--- avro/trunk/lang/java/src/java/org/apache/avro/ipc/RPCContext.java (original)
+++ avro/trunk/lang/java/src/java/org/apache/avro/ipc/RPCContext.java Tue Aug 10 17:09:04 2010
@@ -23,7 +23,6 @@ import java.util.List;
import java.util.Map;
import org.apache.avro.Protocol.Message;
-import org.apache.avro.util.Utf8;
/**
* This class represents the context of an RPC call or RPC handshake.
@@ -36,8 +35,8 @@ import org.apache.avro.util.Utf8;
*/
public class RPCContext {
- protected Map<Utf8,ByteBuffer> requestHandshakeMeta, responseHandshakeMeta;
- protected Map<Utf8,ByteBuffer> requestCallMeta, responseCallMeta;
+ protected Map<CharSequence,ByteBuffer> requestHandshakeMeta, responseHandshakeMeta;
+ protected Map<CharSequence,ByteBuffer> requestCallMeta, responseCallMeta;
protected Object response;
protected Exception error;
@@ -51,14 +50,14 @@ public class RPCContext {
* @return a map representing handshake state from
* the client to the server
*/
- public Map<Utf8,ByteBuffer> requestHandshakeMeta() {
+ public Map<CharSequence,ByteBuffer> requestHandshakeMeta() {
if (requestHandshakeMeta == null) {
- requestHandshakeMeta = new HashMap<Utf8,ByteBuffer>();
+ requestHandshakeMeta = new HashMap<CharSequence,ByteBuffer>();
}
return requestHandshakeMeta;
}
- void setRequestHandshakeMeta(Map<Utf8,ByteBuffer> newmeta) {
+ void setRequestHandshakeMeta(Map<CharSequence,ByteBuffer> newmeta) {
requestHandshakeMeta = newmeta;
}
@@ -68,14 +67,14 @@ public class RPCContext {
* @return a map representing handshake state from
* the server to the client
*/
- public Map<Utf8,ByteBuffer> responseHandshakeMeta() {
+ public Map<CharSequence,ByteBuffer> responseHandshakeMeta() {
if (responseHandshakeMeta == null) {
- responseHandshakeMeta = new HashMap<Utf8,ByteBuffer>();
+ responseHandshakeMeta = new HashMap<CharSequence,ByteBuffer>();
}
return responseHandshakeMeta;
}
- void setResponseHandshakeMeta(Map<Utf8,ByteBuffer> newmeta) {
+ void setResponseHandshakeMeta(Map<CharSequence,ByteBuffer> newmeta) {
responseHandshakeMeta = newmeta;
}
@@ -85,14 +84,14 @@ public class RPCContext {
* @return a map representing per-call state from
* the client to the server
*/
- public Map<Utf8,ByteBuffer> requestCallMeta() {
+ public Map<CharSequence,ByteBuffer> requestCallMeta() {
if (requestCallMeta == null) {
- requestCallMeta = new HashMap<Utf8,ByteBuffer>();
+ requestCallMeta = new HashMap<CharSequence,ByteBuffer>();
}
return requestCallMeta;
}
- void setRequestCallMeta(Map<Utf8,ByteBuffer> newmeta) {
+ void setRequestCallMeta(Map<CharSequence,ByteBuffer> newmeta) {
requestCallMeta = newmeta;
}
@@ -102,14 +101,14 @@ public class RPCContext {
* @return a map representing per-call state from
* the server to the client
*/
- public Map<Utf8,ByteBuffer> responseCallMeta() {
+ public Map<CharSequence,ByteBuffer> responseCallMeta() {
if (responseCallMeta == null) {
- responseCallMeta = new HashMap<Utf8,ByteBuffer>();
+ responseCallMeta = new HashMap<CharSequence,ByteBuffer>();
}
return responseCallMeta;
}
- void setResponseCallMeta(Map<Utf8,ByteBuffer> newmeta) {
+ void setResponseCallMeta(Map<CharSequence,ByteBuffer> newmeta) {
responseCallMeta = newmeta;
}
Modified: avro/trunk/lang/java/src/java/org/apache/avro/ipc/Requestor.java
URL: http://svn.apache.org/viewvc/avro/trunk/lang/java/src/java/org/apache/avro/ipc/Requestor.java?rev=984128&r1=984127&r2=984128&view=diff
==============================================================================
--- avro/trunk/lang/java/src/java/org/apache/avro/ipc/Requestor.java (original)
+++ avro/trunk/lang/java/src/java/org/apache/avro/ipc/Requestor.java Tue Aug 10 17:09:04 2010
@@ -49,10 +49,10 @@ public abstract class Requestor {
private static final Schema META =
Schema.createMap(Schema.create(Schema.Type.BYTES));
- private static final GenericDatumReader<Map<Utf8,ByteBuffer>> META_READER =
- new GenericDatumReader<Map<Utf8,ByteBuffer>>(META);
- private static final GenericDatumWriter<Map<Utf8,ByteBuffer>> META_WRITER =
- new GenericDatumWriter<Map<Utf8,ByteBuffer>>(META);
+ private static final GenericDatumReader<Map<CharSequence,ByteBuffer>>
+ META_READER = new GenericDatumReader<Map<CharSequence,ByteBuffer>>(META);
+ private static final GenericDatumWriter<Map<CharSequence,ByteBuffer>>
+ META_WRITER = new GenericDatumWriter<Map<CharSequence,ByteBuffer>>(META);
private Protocol local;
private Protocol remote;
@@ -218,7 +218,7 @@ public abstract class Requestor {
RPCContext context = new RPCContext();
if (handshake.meta != null) {
- context.setResponseHandshakeMeta((Map<Utf8, ByteBuffer>) handshake.meta);
+ context.setResponseHandshakeMeta((Map<CharSequence, ByteBuffer>) handshake.meta);
}
for (RPCPlugin plugin : rpcMetaPlugins) {
Modified: avro/trunk/lang/java/src/java/org/apache/avro/ipc/Responder.java
URL: http://svn.apache.org/viewvc/avro/trunk/lang/java/src/java/org/apache/avro/ipc/Responder.java?rev=984128&r1=984127&r2=984128&view=diff
==============================================================================
--- avro/trunk/lang/java/src/java/org/apache/avro/ipc/Responder.java (original)
+++ avro/trunk/lang/java/src/java/org/apache/avro/ipc/Responder.java Tue Aug 10 17:09:04 2010
@@ -50,10 +50,10 @@ public abstract class Responder {
private static final Schema META =
Schema.createMap(Schema.create(Schema.Type.BYTES));
- private static final GenericDatumReader<Map<Utf8,ByteBuffer>> META_READER =
- new GenericDatumReader<Map<Utf8,ByteBuffer>>(META);
- private static final GenericDatumWriter<Map<Utf8,ByteBuffer>> META_WRITER =
- new GenericDatumWriter<Map<Utf8,ByteBuffer>>(META);
+ private static final GenericDatumReader<Map<CharSequence,ByteBuffer>>
+ META_READER = new GenericDatumReader<Map<CharSequence,ByteBuffer>>(META);
+ private static final GenericDatumWriter<Map<CharSequence,ByteBuffer>>
+ META_WRITER = new GenericDatumWriter<Map<CharSequence,ByteBuffer>>(META);
private Map<MD5,Protocol> protocols
= Collections.synchronizedMap(new HashMap<MD5,Protocol>());
@@ -203,7 +203,7 @@ public abstract class Responder {
}
RPCContext context = new RPCContext();
- context.setRequestHandshakeMeta((Map<Utf8, ByteBuffer>) request.meta);
+ context.setRequestHandshakeMeta((Map<CharSequence, ByteBuffer>) request.meta);
for (RPCPlugin plugin : rpcMetaPlugins) {
plugin.serverConnecting(context);
Modified: avro/trunk/lang/java/src/java/org/apache/avro/ipc/trace/Trace.java
URL: http://svn.apache.org/viewvc/avro/trunk/lang/java/src/java/org/apache/avro/ipc/trace/Trace.java?rev=984128&r1=984127&r2=984128&view=diff
==============================================================================
--- avro/trunk/lang/java/src/java/org/apache/avro/ipc/trace/Trace.java (original)
+++ avro/trunk/lang/java/src/java/org/apache/avro/ipc/trace/Trace.java Tue Aug 10 17:09:04 2010
@@ -59,10 +59,10 @@ public class Trace {
}
private class NodeComparator implements Comparator<TraceNode> {
- @Override
+ @Override @SuppressWarnings("unchecked")
public int compare(TraceNode tn0, TraceNode tn1) {
// We sort nodes alphabetically by the message name
- int result = tn0.span.messageName.compareTo(tn1.span.messageName);
+ int result = ((Comparable)tn0.span.messageName).compareTo((Comparable)tn1.span.messageName);
if (result != 0) {
return result;
Modified: avro/trunk/lang/java/src/java/org/apache/avro/ipc/trace/TracePlugin.java
URL: http://svn.apache.org/viewvc/avro/trunk/lang/java/src/java/org/apache/avro/ipc/trace/TracePlugin.java?rev=984128&r1=984127&r2=984128&view=diff
==============================================================================
--- avro/trunk/lang/java/src/java/org/apache/avro/ipc/trace/TracePlugin.java (original)
+++ avro/trunk/lang/java/src/java/org/apache/avro/ipc/trace/TracePlugin.java Tue Aug 10 17:09:04 2010
@@ -208,7 +208,7 @@ public class TracePlugin extends RPCPlug
@Override
public void serverConnecting(RPCContext context) {
- Map<Utf8, ByteBuffer> meta = context.requestHandshakeMeta();
+ Map<CharSequence, ByteBuffer> meta = context.requestHandshakeMeta();
// Are we being asked to propagate a trace?
if (meta.containsKey(TRACE_ID_KEY) && enabled) {
if (!(meta.containsKey(SPAN_ID_KEY))) {
Modified: avro/trunk/lang/java/src/java/org/apache/avro/mapred/Pair.java
URL: http://svn.apache.org/viewvc/avro/trunk/lang/java/src/java/org/apache/avro/mapred/Pair.java?rev=984128&r1=984127&r2=984128&view=diff
==============================================================================
--- avro/trunk/lang/java/src/java/org/apache/avro/mapred/Pair.java (original)
+++ avro/trunk/lang/java/src/java/org/apache/avro/mapred/Pair.java Tue Aug 10 17:09:04 2010
@@ -31,7 +31,6 @@ import org.apache.avro.generic.GenericDa
import org.apache.avro.generic.GenericContainer;
import org.apache.avro.generic.IndexedRecord;
import org.apache.avro.specific.SpecificDatumReader.SchemaConstructable;
-import org.apache.avro.util.Utf8;
/** A key/value pair. */
public class Pair<K,V>
@@ -168,7 +167,7 @@ public class Pair<K,V>
this((K)key, key.getSchema(), (V)value, value.getSchema());
}
@SuppressWarnings("unchecked")
- public Pair(GenericContainer key, Utf8 value) {
+ public Pair(GenericContainer key, CharSequence value) {
this((K)key, key.getSchema(), (V)value, STRING_SCHEMA);
}
@SuppressWarnings("unchecked")
@@ -196,35 +195,35 @@ public class Pair<K,V>
this((K)key, key.getSchema(), (V)value, NULL_SCHEMA);
}
@SuppressWarnings("unchecked")
- public Pair(Utf8 key, GenericContainer value) {
+ public Pair(CharSequence key, GenericContainer value) {
this((K)key, STRING_SCHEMA, (V)value, value.getSchema());
}
@SuppressWarnings("unchecked")
- public Pair(Utf8 key, Utf8 value) {
+ public Pair(CharSequence key, CharSequence value) {
this((K)key, STRING_SCHEMA, (V)value, STRING_SCHEMA);
}
@SuppressWarnings("unchecked")
- public Pair(Utf8 key, ByteBuffer value) {
+ public Pair(CharSequence key, ByteBuffer value) {
this((K)key, STRING_SCHEMA, (V)value, BYTES_SCHEMA);
}
@SuppressWarnings("unchecked")
- public Pair(Utf8 key, Integer value) {
+ public Pair(CharSequence key, Integer value) {
this((K)key, STRING_SCHEMA, (V)value, INT_SCHEMA);
}
@SuppressWarnings("unchecked")
- public Pair(Utf8 key, Long value) {
+ public Pair(CharSequence key, Long value) {
this((K)key, STRING_SCHEMA, (V)value, LONG_SCHEMA);
}
@SuppressWarnings("unchecked")
- public Pair(Utf8 key, Float value) {
+ public Pair(CharSequence key, Float value) {
this((K)key, STRING_SCHEMA, (V)value, FLOAT_SCHEMA);
}
@SuppressWarnings("unchecked")
- public Pair(Utf8 key, Double value) {
+ public Pair(CharSequence key, Double value) {
this((K)key, STRING_SCHEMA, (V)value, DOUBLE_SCHEMA);
}
@SuppressWarnings("unchecked")
- public Pair(Utf8 key, Void value) {
+ public Pair(CharSequence key, Void value) {
this((K)key, STRING_SCHEMA, (V)value, NULL_SCHEMA);
}
@SuppressWarnings("unchecked")
@@ -232,7 +231,7 @@ public class Pair<K,V>
this((K)key, BYTES_SCHEMA, (V)value, value.getSchema());
}
@SuppressWarnings("unchecked")
- public Pair(ByteBuffer key, Utf8 value) {
+ public Pair(ByteBuffer key, CharSequence value) {
this((K)key, BYTES_SCHEMA, (V)value, STRING_SCHEMA);
}
@SuppressWarnings("unchecked")
@@ -264,7 +263,7 @@ public class Pair<K,V>
this((K)key, INT_SCHEMA, (V)value, value.getSchema());
}
@SuppressWarnings("unchecked")
- public Pair(Integer key, Utf8 value) {
+ public Pair(Integer key, CharSequence value) {
this((K)key, INT_SCHEMA, (V)value, STRING_SCHEMA);
}
@SuppressWarnings("unchecked")
@@ -296,7 +295,7 @@ public class Pair<K,V>
this((K)key, LONG_SCHEMA, (V)value, value.getSchema());
}
@SuppressWarnings("unchecked")
- public Pair(Long key, Utf8 value) {
+ public Pair(Long key, CharSequence value) {
this((K)key, LONG_SCHEMA, (V)value, STRING_SCHEMA);
}
@SuppressWarnings("unchecked")
@@ -328,7 +327,7 @@ public class Pair<K,V>
this((K)key, FLOAT_SCHEMA, (V)value, value.getSchema());
}
@SuppressWarnings("unchecked")
- public Pair(Float key, Utf8 value) {
+ public Pair(Float key, CharSequence value) {
this((K)key, FLOAT_SCHEMA, (V)value, STRING_SCHEMA);
}
@SuppressWarnings("unchecked")
@@ -360,7 +359,7 @@ public class Pair<K,V>
this((K)key, DOUBLE_SCHEMA, (V)value, value.getSchema());
}
@SuppressWarnings("unchecked")
- public Pair(Double key, Utf8 value) {
+ public Pair(Double key, CharSequence value) {
this((K)key, DOUBLE_SCHEMA, (V)value, STRING_SCHEMA);
}
@SuppressWarnings("unchecked")
@@ -392,7 +391,7 @@ public class Pair<K,V>
this((K)key, NULL_SCHEMA, (V)value, value.getSchema());
}
@SuppressWarnings("unchecked")
- public Pair(Void key, Utf8 value) {
+ public Pair(Void key, CharSequence value) {
this((K)key, NULL_SCHEMA, (V)value, STRING_SCHEMA);
}
@SuppressWarnings("unchecked")
@@ -422,7 +421,7 @@ public class Pair<K,V>
// private static final String[][] TABLE = new String[][] {
// {"GenericContainer", "{0}.getSchema()"},
- // {"Utf8", "STRING_SCHEMA"},
+ // {"CharSequence", "STRING_SCHEMA"},
// {"ByteBuffer", "BYTES_SCHEMA"},
// {"Integer", "INT_SCHEMA"},
// {"Long", "LONG_SCHEMA"},
Modified: avro/trunk/lang/java/src/java/org/apache/avro/mapred/tether/TetherOutputService.java
URL: http://svn.apache.org/viewvc/avro/trunk/lang/java/src/java/org/apache/avro/mapred/tether/TetherOutputService.java?rev=984128&r1=984127&r2=984128&view=diff
==============================================================================
--- avro/trunk/lang/java/src/java/org/apache/avro/mapred/tether/TetherOutputService.java (original)
+++ avro/trunk/lang/java/src/java/org/apache/avro/mapred/tether/TetherOutputService.java Tue Aug 10 17:09:04 2010
@@ -24,8 +24,6 @@ import org.apache.hadoop.io.NullWritable
import org.apache.hadoop.mapred.OutputCollector;
import org.apache.hadoop.mapred.Reporter;
-import org.apache.avro.util.Utf8;
-
class TetherOutputService implements OutputProtocol {
private Reporter reporter;
private OutputCollector<TetherData, NullWritable> collector;
@@ -69,14 +67,14 @@ class TetherOutputService implements Out
output(datum);
}
- public void status(Utf8 message) { reporter.setStatus(message.toString()); }
+ public void status(CharSequence message) { reporter.setStatus(message.toString()); }
- public void count(Utf8 group, Utf8 name, long amount) {
+ public void count(CharSequence group, CharSequence name, long amount) {
reporter.getCounter(group.toString(), name.toString()).increment(amount);
}
- public synchronized void fail(Utf8 message) {
+ public synchronized void fail(CharSequence message) {
TetherMapRunner.LOG.warn("Failing: "+message);
error = message.toString();
notify();
Modified: avro/trunk/lang/java/src/java/org/apache/avro/reflect/ReflectData.java
URL: http://svn.apache.org/viewvc/avro/trunk/lang/java/src/java/org/apache/avro/reflect/ReflectData.java?rev=984128&r1=984127&r2=984128&view=diff
==============================================================================
--- avro/trunk/lang/java/src/java/org/apache/avro/reflect/ReflectData.java (original)
+++ avro/trunk/lang/java/src/java/org/apache/avro/reflect/ReflectData.java Tue Aug 10 17:09:04 2010
@@ -84,11 +84,6 @@ public class ReflectData extends Specifi
}
@Override
- protected boolean isString(Object datum) {
- return datum instanceof String;
- }
-
- @Override
protected boolean isBytes(Object datum) {
if (datum == null) return false;
Class c = datum.getClass();
@@ -244,7 +239,7 @@ public class ReflectData extends Specifi
setElement(result, component);
return result;
}
- if (c == String.class) // String
+ if (CharSequence.class.isAssignableFrom(c)) // String
return Schema.create(Schema.Type.STRING);
String fullName = c.getName();
Schema schema = names.get(fullName);
Modified: avro/trunk/lang/java/src/java/org/apache/avro/reflect/ReflectDatumWriter.java
URL: http://svn.apache.org/viewvc/avro/trunk/lang/java/src/java/org/apache/avro/reflect/ReflectDatumWriter.java?rev=984128&r1=984127&r2=984128&view=diff
==============================================================================
--- avro/trunk/lang/java/src/java/org/apache/avro/reflect/ReflectDatumWriter.java (original)
+++ avro/trunk/lang/java/src/java/org/apache/avro/reflect/ReflectDatumWriter.java Tue Aug 10 17:09:04 2010
@@ -26,7 +26,6 @@ import org.apache.avro.AvroRuntimeExcept
import org.apache.avro.Schema;
import org.apache.avro.specific.SpecificDatumWriter;
import org.apache.avro.io.Encoder;
-import org.apache.avro.util.Utf8;
/**
* {@link org.apache.avro.io.DatumWriter DatumWriter} for existing classes
@@ -98,11 +97,6 @@ public class ReflectDatumWriter<T> exten
}
@Override
- protected void writeString(Object datum, Encoder out) throws IOException {
- out.writeString(new Utf8((String)datum));
- }
-
- @Override
protected void writeBytes(Object datum, Encoder out) throws IOException {
out.writeBytes((byte[])datum);
}
Modified: avro/trunk/lang/java/src/java/org/apache/avro/reflect/ReflectResponder.java
URL: http://svn.apache.org/viewvc/avro/trunk/lang/java/src/java/org/apache/avro/reflect/ReflectResponder.java?rev=984128&r1=984127&r2=984128&view=diff
==============================================================================
--- avro/trunk/lang/java/src/java/org/apache/avro/reflect/ReflectResponder.java (original)
+++ avro/trunk/lang/java/src/java/org/apache/avro/reflect/ReflectResponder.java Tue Aug 10 17:09:04 2010
@@ -26,7 +26,6 @@ import org.apache.avro.io.Encoder;
import org.apache.avro.io.DatumReader;
import org.apache.avro.io.DatumWriter;
import org.apache.avro.specific.SpecificResponder;
-import org.apache.avro.util.Utf8;
/** {@link org.apache.avro.ipc.Responder} for existing interfaces.*/
public class ReflectResponder extends SpecificResponder {
@@ -51,7 +50,7 @@ public class ReflectResponder extends Sp
@Override
public void writeError(Schema schema, Object error,
Encoder out) throws IOException {
- if (error instanceof Utf8)
+ if (error instanceof CharSequence)
error = error.toString(); // system error: convert
super.writeError(schema, error, out);
}
Modified: avro/trunk/lang/java/src/java/org/apache/avro/specific/SpecificCompiler.java
URL: http://svn.apache.org/viewvc/avro/trunk/lang/java/src/java/org/apache/avro/specific/SpecificCompiler.java?rev=984128&r1=984127&r2=984128&view=diff
==============================================================================
--- avro/trunk/lang/java/src/java/org/apache/avro/specific/SpecificCompiler.java (original)
+++ avro/trunk/lang/java/src/java/org/apache/avro/specific/SpecificCompiler.java Tue Aug 10 17:09:04 2010
@@ -346,13 +346,13 @@ public class SpecificCompiler {
case ARRAY:
return "org.apache.avro.generic.GenericArray<"+type(schema.getElementType())+">";
case MAP:
- return "java.util.Map<org.apache.avro.util.Utf8,"+type(schema.getValueType())+">";
+ return "java.util.Map<java.lang.CharSequence,"+type(schema.getValueType())+">";
case UNION:
List<Schema> types = schema.getTypes(); // elide unions with null
if ((types.size() == 2) && types.contains(NULL_SCHEMA))
return type(types.get(types.get(0).equals(NULL_SCHEMA) ? 1 : 0));
return "java.lang.Object";
- case STRING: return "org.apache.avro.util.Utf8";
+ case STRING: return "java.lang.CharSequence";
case BYTES: return "java.nio.ByteBuffer";
case INT: return "java.lang.Integer";
case LONG: return "java.lang.Long";
Modified: avro/trunk/lang/java/src/java/org/apache/avro/specific/SpecificData.java
URL: http://svn.apache.org/viewvc/avro/trunk/lang/java/src/java/org/apache/avro/specific/SpecificData.java?rev=984128&r1=984127&r2=984128&view=diff
==============================================================================
--- avro/trunk/lang/java/src/java/org/apache/avro/specific/SpecificData.java (original)
+++ avro/trunk/lang/java/src/java/org/apache/avro/specific/SpecificData.java Tue Aug 10 17:09:04 2010
@@ -32,7 +32,6 @@ import org.apache.avro.AvroTypeException
import org.apache.avro.Schema.Type;
import org.apache.avro.generic.GenericData;
import org.apache.avro.generic.GenericArray;
-import org.apache.avro.util.Utf8;
/** Utilities for generated Java classes and interfaces. */
public class SpecificData extends GenericData {
@@ -45,29 +44,8 @@ public class SpecificData extends Generi
public static SpecificData get() { return INSTANCE; }
@Override
- protected boolean isRecord(Object datum) {
- return datum instanceof SpecificRecord;
- }
-
- @Override
- protected Schema getRecordSchema(Object record) {
- return ((SpecificRecord)record).getSchema();
- }
-
- @Override
protected boolean isEnum(Object datum) {
- return datum instanceof Enum;
- }
-
- @Override
- public boolean validate(Schema schema, Object datum) {
- switch (schema.getType()) {
- case ENUM:
- return datum instanceof Enum
- && schema.getEnumSymbols().contains(((Enum)datum).name());
- default:
- return super.validate(schema, datum);
- }
+ return datum instanceof Enum || super.isEnum(datum);
}
private Map<String,Class> classCache = new ConcurrentHashMap<String,Class>();
@@ -99,7 +77,7 @@ public class SpecificData extends Generi
if ((types.size() == 2) && types.contains(NULL_SCHEMA))
return getClass(types.get(types.get(0).equals(NULL_SCHEMA) ? 1 : 0));
return Object.class;
- case STRING: return Utf8.class;
+ case STRING: return CharSequence.class;
case BYTES: return ByteBuffer.class;
case INT: return Integer.TYPE;
case LONG: return Long.TYPE;
@@ -138,7 +116,8 @@ public class SpecificData extends Generi
@SuppressWarnings(value="unchecked")
protected Schema createSchema(java.lang.reflect.Type type,
Map<String,Schema> names) {
- if (type == Utf8.class)
+ if (type instanceof Class
+ && CharSequence.class.isAssignableFrom((Class)type))
return Schema.create(Type.STRING);
else if (type == ByteBuffer.class)
return Schema.create(Type.BYTES);
@@ -165,8 +144,9 @@ public class SpecificData extends Generi
} else if (Map.class.isAssignableFrom(raw)) { // map
java.lang.reflect.Type key = params[0];
java.lang.reflect.Type value = params[1];
- if (!(key == Utf8.class))
- throw new AvroTypeException("Map key class not Utf8: "+key);
+ if (!(type instanceof Class
+ && CharSequence.class.isAssignableFrom((Class)type)))
+ throw new AvroTypeException("Map key class not CharSequence: "+key);
return Schema.createMap(createSchema(value, names));
} else {
return createSchema(raw, names);
Modified: avro/trunk/lang/java/src/java/org/apache/avro/util/Utf8.java
URL: http://svn.apache.org/viewvc/avro/trunk/lang/java/src/java/org/apache/avro/util/Utf8.java?rev=984128&r1=984127&r2=984128&view=diff
==============================================================================
--- avro/trunk/lang/java/src/java/org/apache/avro/util/Utf8.java (original)
+++ avro/trunk/lang/java/src/java/org/apache/avro/util/Utf8.java Tue Aug 10 17:09:04 2010
@@ -20,15 +20,16 @@ package org.apache.avro.util;
import java.io.UnsupportedEncodingException;
import org.apache.avro.io.BinaryData;
-import org.apache.avro.reflect.Stringable;
-/** A Utf8 string. */
-@Stringable
-public class Utf8 implements Comparable<Utf8> {
+/** A Utf8 string. Unlike {@link String}, instances are mutable. This is more
+ * efficient than {@link String} when reading or writing a sequence of values,
+ * as a single instance may be reused. */
+public class Utf8 implements Comparable<Utf8>, CharSequence {
private static final byte[] EMPTY = new byte[0];
- byte[] bytes = EMPTY;
- int length;
+ private byte[] bytes = EMPTY;
+ private int length;
+ private String string;
public Utf8() {}
@@ -39,6 +40,7 @@ public class Utf8 implements Comparable<
throw new RuntimeException(e);
}
this.length = bytes.length;
+ this.string = string;
}
public Utf8(byte[] bytes) {
@@ -46,25 +48,45 @@ public class Utf8 implements Comparable<
this.length = bytes.length;
}
+ /** Return UTF-8 encoded bytes.
+ * Only valid through {@link #getByteLength()}. */
public byte[] getBytes() { return bytes; }
+
+ /** Return length in bytes.
+ * @deprecated call {@link #getByteLength()} instead. */
public int getLength() { return length; }
+ /** Return length in bytes. */
+ public int getByteLength() { return length; }
+
+ /** Set length in bytes. Should called whenever byte content changes, even
+ * if the length does not change, as this also clears the cached String.
+ * @deprecated call {@link #setByteLength(int)} instead. */
public Utf8 setLength(int newLength) {
+ return setByteLength(newLength);
+ }
+
+ /** Set length in bytes. Should called whenever byte content changes, even
+ * if the length does not change, as this also clears the cached String. */
+ public Utf8 setByteLength(int newLength) {
if (this.length < newLength) {
byte[] newBytes = new byte[newLength];
System.arraycopy(bytes, 0, newBytes, 0, this.length);
this.bytes = newBytes;
}
this.length = newLength;
+ this.string = null;
return this;
}
public String toString() {
- try {
- return new String(bytes, 0, length, "UTF-8");
- } catch (UnsupportedEncodingException e) {
- throw new RuntimeException(e);
- }
+ if (this.string == null)
+ try {
+ this.string = new String(bytes, 0, length, "UTF-8");
+ } catch (UnsupportedEncodingException e) {
+ throw new RuntimeException(e);
+ }
+ return this.string;
}
public boolean equals(Object o) {
@@ -91,4 +113,12 @@ public class Utf8 implements Comparable<
that.bytes, 0, that.length);
}
+ // CharSequence implementation
+ @Override public char charAt(int index) { return toString().charAt(index); }
+ @Override public int length() { return toString().length(); }
+ @Override public CharSequence subSequence(int start, int end) {
+ return toString().subSequence(start, end);
+ }
+
+
}
Modified: avro/trunk/lang/java/src/test/java/org/apache/avro/RPCMetaTestPlugin.java
URL: http://svn.apache.org/viewvc/avro/trunk/lang/java/src/test/java/org/apache/avro/RPCMetaTestPlugin.java?rev=984128&r1=984127&r2=984128&view=diff
==============================================================================
--- avro/trunk/lang/java/src/test/java/org/apache/avro/RPCMetaTestPlugin.java (original)
+++ avro/trunk/lang/java/src/test/java/org/apache/avro/RPCMetaTestPlugin.java Tue Aug 10 17:09:04 2010
@@ -36,7 +36,7 @@ import org.apache.avro.util.Utf8;
*/
public final class RPCMetaTestPlugin extends RPCPlugin {
- protected final Utf8 key;
+ protected final CharSequence key;
public RPCMetaTestPlugin(String keyname) {
key = new Utf8(keyname);
@@ -73,7 +73,7 @@ public final class RPCMetaTestPlugin ext
@Override
public void clientFinishConnect(RPCContext context) {
- Map<Utf8,ByteBuffer> handshakeMeta = context.responseHandshakeMeta();
+ Map<CharSequence,ByteBuffer> handshakeMeta = context.responseHandshakeMeta();
Assert.assertNull(context.getRequestPayload());
Assert.assertNull(context.getResponsePayload());
@@ -107,7 +107,7 @@ public final class RPCMetaTestPlugin ext
@Override
public void serverReceiveRequest(RPCContext context) {
- Map<Utf8,ByteBuffer> meta = context.requestCallMeta();
+ Map<CharSequence,ByteBuffer> meta = context.requestCallMeta();
Assert.assertNotNull(meta);
Assert.assertNotNull(context.getMessage());
@@ -175,7 +175,7 @@ public final class RPCMetaTestPlugin ext
checkRPCMetaMap(context.responseCallMeta());
}
- protected void checkRPCMetaMap(Map<Utf8,ByteBuffer> rpcMeta) {
+ protected void checkRPCMetaMap(Map<CharSequence,ByteBuffer> rpcMeta) {
Assert.assertNotNull(rpcMeta);
Assert.assertTrue("key not present in map", rpcMeta.containsKey(key));
Modified: avro/trunk/lang/java/src/test/java/org/apache/avro/RandomData.java
URL: http://svn.apache.org/viewvc/avro/trunk/lang/java/src/test/java/org/apache/avro/RandomData.java?rev=984128&r1=984127&r2=984128&view=diff
==============================================================================
--- avro/trunk/lang/java/src/test/java/org/apache/avro/RandomData.java (original)
+++ avro/trunk/lang/java/src/test/java/org/apache/avro/RandomData.java Tue Aug 10 17:09:04 2010
@@ -71,7 +71,7 @@ public class RandomData implements Itera
return record;
case ENUM:
List<String> symbols = schema.getEnumSymbols();
- return symbols.get(random.nextInt(symbols.size()));
+ return new GenericData.EnumSymbol(symbols.get(random.nextInt(symbols.size())));
case ARRAY:
int length = (random.nextInt(5)+2)-d;
GenericArray<Object> array =
Modified: avro/trunk/lang/java/src/test/java/org/apache/avro/TestProtocolGeneric.java
URL: http://svn.apache.org/viewvc/avro/trunk/lang/java/src/test/java/org/apache/avro/TestProtocolGeneric.java?rev=984128&r1=984127&r2=984128&view=diff
==============================================================================
--- avro/trunk/lang/java/src/test/java/org/apache/avro/TestProtocolGeneric.java (original)
+++ avro/trunk/lang/java/src/test/java/org/apache/avro/TestProtocolGeneric.java Tue Aug 10 17:09:04 2010
@@ -123,7 +123,7 @@ public class TestProtocolGeneric {
GenericRecord record =
new GenericData.Record(PROTOCOL.getType("TestRecord"));
record.put("name", new Utf8("foo"));
- record.put("kind", "BAR");
+ record.put("kind", new GenericData.EnumSymbol("BAR"));
record.put("hash", new GenericData.Fixed
(new byte[]{0,1,2,3,4,5,6,7,8,9,0,1,2,3,4,5}));
GenericRecord params =
Modified: avro/trunk/lang/java/src/test/java/org/apache/avro/TestProtocolSpecific.java
URL: http://svn.apache.org/viewvc/avro/trunk/lang/java/src/test/java/org/apache/avro/TestProtocolSpecific.java?rev=984128&r1=984127&r2=984128&view=diff
==============================================================================
--- avro/trunk/lang/java/src/test/java/org/apache/avro/TestProtocolSpecific.java (original)
+++ avro/trunk/lang/java/src/test/java/org/apache/avro/TestProtocolSpecific.java Tue Aug 10 17:09:04 2010
@@ -56,7 +56,9 @@ public class TestProtocolSpecific {
private static boolean throwUndeclaredError;
public static class TestImpl implements Simple {
- public Utf8 hello(Utf8 greeting) { return new Utf8("goodbye"); }
+ public CharSequence hello(CharSequence greeting) {
+ return new Utf8("goodbye");
+ }
public int add(int arg1, int arg2) { return arg1 + arg2; }
public TestRecord echo(TestRecord record) { return record; }
public ByteBuffer echoBytes(ByteBuffer data) { return data; }
@@ -85,7 +87,7 @@ public class TestProtocolSpecific {
@Test
public void testHello() throws IOException {
- Utf8 response = proxy.hello(new Utf8("bob"));
+ CharSequence response = proxy.hello(new Utf8("bob"));
assertEquals(new Utf8("goodbye"), response);
}
Modified: avro/trunk/lang/java/src/test/java/org/apache/avro/TestSchema.java
URL: http://svn.apache.org/viewvc/avro/trunk/lang/java/src/test/java/org/apache/avro/TestSchema.java?rev=984128&r1=984127&r2=984128&view=diff
==============================================================================
--- avro/trunk/lang/java/src/test/java/org/apache/avro/TestSchema.java (original)
+++ avro/trunk/lang/java/src/test/java/org/apache/avro/TestSchema.java Tue Aug 10 17:09:04 2010
@@ -182,7 +182,7 @@ public class TestSchema {
@Test
public void testEnum() throws Exception {
- check(BASIC_ENUM_SCHEMA, "\"B\"", "B", false);
+ check(BASIC_ENUM_SCHEMA, "\"B\"", new GenericData.EnumSymbol("B"), false);
checkParseError("{\"type\":\"enum\"}"); // symbols required
checkParseError("{\"type\":\"enum\",\"symbols\": [\"X\",\"X\"]}");
}
@@ -242,7 +242,9 @@ public class TestSchema {
checkJson(union,
new GenericData.Fixed(new byte[]{(byte)'a'}),
"{\"Bar\":\"a\"}");
- checkJson(union, "X", "{\"Baz\":\"X\"}");
+ checkJson(union,
+ new GenericData.EnumSymbol("X"),
+ "{\"Baz\":\"X\"}");
}
@Test
@@ -518,13 +520,14 @@ public class TestSchema {
ByteArrayOutputStream out = new ByteArrayOutputStream();
DatumWriter<Object> writer = new GenericDatumWriter<Object>(actual);
Encoder encoder = new BinaryEncoder(out);
- writer.write("Y", encoder);
- writer.write("X", encoder);
+ writer.write(new GenericData.EnumSymbol("Y"), encoder);
+ writer.write(new GenericData.EnumSymbol("X"), encoder);
byte[] data = out.toByteArray();
Decoder decoder = DecoderFactory.defaultFactory().createBinaryDecoder(
data, null);
DatumReader<String> in = new GenericDatumReader<String>(actual, expected);
- assertEquals("Wrong value", "Y", in.read(null, decoder));
+ assertEquals("Wrong value", new GenericData.EnumSymbol("Y"),
+ in.read(null, decoder));
try {
in.read(null, decoder);
fail("Should have thrown exception.");
Modified: avro/trunk/lang/java/src/test/java/org/apache/avro/ipc/TestNettyServer.java
URL: http://svn.apache.org/viewvc/avro/trunk/lang/java/src/test/java/org/apache/avro/ipc/TestNettyServer.java?rev=984128&r1=984127&r2=984128&view=diff
==============================================================================
--- avro/trunk/lang/java/src/test/java/org/apache/avro/ipc/TestNettyServer.java (original)
+++ avro/trunk/lang/java/src/test/java/org/apache/avro/ipc/TestNettyServer.java Tue Aug 10 17:09:04 2010
@@ -15,7 +15,7 @@ public class TestNettyServer {
public static class MailImpl implements Mail {
// in this simple example just return details of the message
- public Utf8 send(Message message) {
+ public CharSequence send(Message message) {
return new Utf8("Sent message to [" + message.to.toString() + "] from ["
+ message.from.toString() + "] with body [" + message.body.toString()
+ "]");
@@ -44,7 +44,7 @@ public class TestNettyServer {
msg.body = new Utf8("I love you!");
try {
- Utf8 result = proxy.send(msg);
+ CharSequence result = proxy.send(msg);
System.out.println("Result: " + result);
Assert.assertEquals(
"Sent message to [wife] from [husband] with body [I love you!]",
Modified: avro/trunk/lang/java/src/test/java/org/apache/avro/mapred/tether/TetherTask.java
URL: http://svn.apache.org/viewvc/avro/trunk/lang/java/src/test/java/org/apache/avro/mapred/tether/TetherTask.java?rev=984128&r1=984127&r2=984128&view=diff
==============================================================================
--- avro/trunk/lang/java/src/test/java/org/apache/avro/mapred/tether/TetherTask.java (original)
+++ avro/trunk/lang/java/src/test/java/org/apache/avro/mapred/tether/TetherTask.java Tue Aug 10 17:09:04 2010
@@ -107,7 +107,7 @@ public abstract class TetherTask<IN,MID,
outputClient.configure(inputPort);
}
- void configure(TaskType taskType, Utf8 inSchemaText, Utf8 outSchemaText) {
+ void configure(TaskType taskType, CharSequence inSchemaText, CharSequence outSchemaText) {
this.taskType = taskType;
try {
Schema inSchema = Schema.parse(inSchemaText.toString());
Modified: avro/trunk/lang/java/src/test/java/org/apache/avro/mapred/tether/TetherTaskRunner.java
URL: http://svn.apache.org/viewvc/avro/trunk/lang/java/src/test/java/org/apache/avro/mapred/tether/TetherTaskRunner.java?rev=984128&r1=984127&r2=984128&view=diff
==============================================================================
--- avro/trunk/lang/java/src/test/java/org/apache/avro/mapred/tether/TetherTaskRunner.java (original)
+++ avro/trunk/lang/java/src/test/java/org/apache/avro/mapred/tether/TetherTaskRunner.java Tue Aug 10 17:09:04 2010
@@ -25,7 +25,6 @@ import java.nio.ByteBuffer;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
-import org.apache.avro.util.Utf8;
import org.apache.avro.ipc.SocketServer;
import org.apache.avro.specific.SpecificResponder;
@@ -53,8 +52,8 @@ public class TetherTaskRunner implements
}
@Override public void configure(TaskType taskType,
- Utf8 inSchema,
- Utf8 outSchema) {
+ CharSequence inSchema,
+ CharSequence outSchema) {
LOG.info("got configure");
task.configure(taskType, inSchema, outSchema);
}
Modified: avro/trunk/lang/java/src/test/java/org/apache/avro/specific/TestSpecificCompiler.java
URL: http://svn.apache.org/viewvc/avro/trunk/lang/java/src/test/java/org/apache/avro/specific/TestSpecificCompiler.java?rev=984128&r1=984127&r2=984128&view=diff
==============================================================================
--- avro/trunk/lang/java/src/test/java/org/apache/avro/specific/TestSpecificCompiler.java (original)
+++ avro/trunk/lang/java/src/test/java/org/apache/avro/specific/TestSpecificCompiler.java Tue Aug 10 17:09:04 2010
@@ -103,7 +103,7 @@ public class TestSpecificCompiler {
assertTrue(errType.contains("public class finally$ extends org.apache.avro.specific.SpecificExceptionBase"));
assertTrue(errType.contains("public boolean catch$;"));
- assertTrue(protocol.contains("org.apache.avro.util.Utf8 goto$(org.apache.avro.util.Utf8 break$)"));
+ assertTrue(protocol.contains("java.lang.CharSequence goto$(java.lang.CharSequence break$)"));
assertTrue(protocol.contains("public interface default$"));
assertTrue(protocol.contains("throws org.apache.avro.ipc.AvroRemoteException, finally$"));
@@ -122,7 +122,7 @@ public class TestSpecificCompiler {
assertEquals(1, c.size());
String contents = c.iterator().next().contents;
- assertTrue(contents.contains("public org.apache.avro.util.Utf8 package$;"));
+ assertTrue(contents.contains("public java.lang.CharSequence package$;"));
assertTrue(contents.contains("class volatile$ extends"));
assertTrue(contents.contains("volatile$ short$;"));