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 2012/02/07 23:22:16 UTC
svn commit: r1241665 - in /avro/trunk: CHANGES.txt
lang/java/avro/src/main/java/org/apache/avro/Schema.java
lang/java/ipc/src/test/java/org/apache/avro/TestSchema.java
Author: cutting
Date: Tue Feb 7 22:22:16 2012
New Revision: 1241665
URL: http://svn.apache.org/viewvc?rev=1241665&view=rev
Log:
AVRO-1016. Java: Add Field#getAliases() method to better permit copying of schemas.
Modified:
avro/trunk/CHANGES.txt
avro/trunk/lang/java/avro/src/main/java/org/apache/avro/Schema.java
avro/trunk/lang/java/ipc/src/test/java/org/apache/avro/TestSchema.java
Modified: avro/trunk/CHANGES.txt
URL: http://svn.apache.org/viewvc/avro/trunk/CHANGES.txt?rev=1241665&r1=1241664&r2=1241665&view=diff
==============================================================================
--- avro/trunk/CHANGES.txt (original)
+++ avro/trunk/CHANGES.txt Tue Feb 7 22:22:16 2012
@@ -48,6 +48,9 @@ Avro 1.6.2 (unreleased)
AVRO-1011. Improve POM structure. (Lars Francke via scottcarey)
+ AVRO-1016. Java: Add Field#getAliases() method to better permit
+ copying of schemas. (cutting)
+
BUG FIXES
AVRO-962. Java: Fix Maven plugin to support string type override.
Modified: avro/trunk/lang/java/avro/src/main/java/org/apache/avro/Schema.java
URL: http://svn.apache.org/viewvc/avro/trunk/lang/java/avro/src/main/java/org/apache/avro/Schema.java?rev=1241665&r1=1241664&r2=1241665&view=diff
==============================================================================
--- avro/trunk/lang/java/avro/src/main/java/org/apache/avro/Schema.java (original)
+++ avro/trunk/lang/java/avro/src/main/java/org/apache/avro/Schema.java Tue Feb 7 22:22:16 2012
@@ -438,6 +438,12 @@ public abstract class Schema {
this.aliases = new LinkedHashSet<String>();
aliases.add(alias);
}
+ /** Return the defined aliases as an unmodifieable Set. */
+ public Set<String> aliases() {
+ if (aliases == null)
+ return Collections.emptySet();
+ return Collections.unmodifiableSet(aliases);
+ }
public boolean equals(Object other) {
if (other == this) return true;
if (!(other instanceof Field)) return false;
@@ -554,7 +560,7 @@ public abstract class Schema {
return super.computeHash() + name.hashCode();
}
public void aliasesToJson(JsonGenerator gen) throws IOException {
- if (aliases == null) return;
+ if (aliases == null || aliases.size() == 0) return;
gen.writeFieldName("aliases");
gen.writeStartArray();
for (Name alias : aliases)
@@ -686,7 +692,7 @@ public abstract class Schema {
}
if (f.order() != Field.Order.ASCENDING)
gen.writeStringField("order", f.order().name);
- if (f.aliases != null) {
+ if (f.aliases != null && f.aliases.size() != 0) {
gen.writeFieldName("aliases");
gen.writeStartArray();
for (String alias : f.aliases)
Modified: avro/trunk/lang/java/ipc/src/test/java/org/apache/avro/TestSchema.java
URL: http://svn.apache.org/viewvc/avro/trunk/lang/java/ipc/src/test/java/org/apache/avro/TestSchema.java?rev=1241665&r1=1241664&r2=1241665&view=diff
==============================================================================
--- avro/trunk/lang/java/ipc/src/test/java/org/apache/avro/TestSchema.java (original)
+++ avro/trunk/lang/java/ipc/src/test/java/org/apache/avro/TestSchema.java Tue Feb 7 22:22:16 2012
@@ -33,6 +33,7 @@ import java.util.HashMap;
import java.util.Iterator;
import java.util.List;
import java.util.Collection;
+import java.util.Collections;
import org.codehaus.jackson.JsonNode;
@@ -549,6 +550,12 @@ public class TestSchema {
+"{\"name\":\"h\",\"type\":\"int\"}]}";
Schema s1 = Schema.parse(t1);
Schema s2 = Schema.parse(t2);
+
+ assertEquals(s1.getAliases(), Collections.emptySet());
+ assertEquals(s1.getField("f").aliases(), Collections.emptySet());
+ assertEquals(s2.getAliases(), Collections.singleton("a.b"));
+ assertEquals(s2.getField("g").aliases(), Collections.singleton("f"));
+
Schema s3 = Schema.applyAliases(s1,s2);
assertFalse(s2 == s3);
assertEquals(s2, s3);