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/02/04 21:00:37 UTC
svn commit: r906628 - in /hadoop/avro/trunk: CHANGES.txt
doc/src/content/xdocs/spec.xml lang/java/src/java/org/apache/avro/Schema.java
lang/java/src/test/java/org/apache/avro/TestSchema.java
Author: cutting
Date: Thu Feb 4 20:00:36 2010
New Revision: 906628
URL: http://svn.apache.org/viewvc?rev=906628&view=rev
Log:
AVRO-208. Clarify that enum symbols must be unique.
Modified:
hadoop/avro/trunk/CHANGES.txt
hadoop/avro/trunk/doc/src/content/xdocs/spec.xml
hadoop/avro/trunk/lang/java/src/java/org/apache/avro/Schema.java
hadoop/avro/trunk/lang/java/src/test/java/org/apache/avro/TestSchema.java
Modified: hadoop/avro/trunk/CHANGES.txt
URL: http://svn.apache.org/viewvc/hadoop/avro/trunk/CHANGES.txt?rev=906628&r1=906627&r2=906628&view=diff
==============================================================================
--- hadoop/avro/trunk/CHANGES.txt (original)
+++ hadoop/avro/trunk/CHANGES.txt Thu Feb 4 20:00:36 2010
@@ -300,6 +300,8 @@
AVRO-342. Document that Java's socket and datagram RPC transports
are non-standard. (cutting)
+ AVRO-208. Clarify that enum symbols must be unique. (cutting)
+
OPTIMIZATIONS
AVRO-172. More efficient schema processing (massie)
Modified: hadoop/avro/trunk/doc/src/content/xdocs/spec.xml
URL: http://svn.apache.org/viewvc/hadoop/avro/trunk/doc/src/content/xdocs/spec.xml?rev=906628&r1=906627&r2=906628&view=diff
==============================================================================
--- hadoop/avro/trunk/doc/src/content/xdocs/spec.xml (original)
+++ hadoop/avro/trunk/doc/src/content/xdocs/spec.xml Thu Feb 4 20:00:36 2010
@@ -163,7 +163,8 @@
<li><code>doc</code>: a JSON string providing documentation to the
user of this schema (optional).</li>
<li><code>symbols</code>: a JSON array, listing symbols,
- as JSON strings (required).</li>
+ as JSON strings (required). All symbols in an enum must
+ be unique; duplicates are prohibited.</li>
</ul>
<p>For example, playing card suits might be defined with:</p>
<source>
Modified: hadoop/avro/trunk/lang/java/src/java/org/apache/avro/Schema.java
URL: http://svn.apache.org/viewvc/hadoop/avro/trunk/lang/java/src/java/org/apache/avro/Schema.java?rev=906628&r1=906627&r2=906628&view=diff
==============================================================================
--- hadoop/avro/trunk/lang/java/src/java/org/apache/avro/Schema.java (original)
+++ hadoop/avro/trunk/lang/java/src/java/org/apache/avro/Schema.java Thu Feb 4 20:00:36 2010
@@ -528,7 +528,8 @@
this.ordinals = new HashMap<String,Integer>();
int i = 0;
for (String symbol : symbols)
- ordinals.put(symbol, i++);
+ if (ordinals.put(symbol, i++) != null)
+ throw new SchemaParseException("Duplicate enum symbol: "+symbol);
}
public List<String> getEnumSymbols() { return symbols; }
public boolean hasEnumSymbol(String symbol) {
Modified: hadoop/avro/trunk/lang/java/src/test/java/org/apache/avro/TestSchema.java
URL: http://svn.apache.org/viewvc/hadoop/avro/trunk/lang/java/src/test/java/org/apache/avro/TestSchema.java?rev=906628&r1=906627&r2=906628&view=diff
==============================================================================
--- hadoop/avro/trunk/lang/java/src/test/java/org/apache/avro/TestSchema.java (original)
+++ hadoop/avro/trunk/lang/java/src/test/java/org/apache/avro/TestSchema.java Thu Feb 4 20:00:36 2010
@@ -175,6 +175,7 @@
public void testEnum() throws Exception {
check(BASIC_ENUM_SCHEMA, "\"B\"", "B", false);
checkParseError("{\"type\":\"enum\"}"); // symbols required
+ checkParseError("{\"type\":\"enum\",\"symbols\": [\"X\",\"X\"]}");
}
@Test