Author: cutting
Date: Thu Dec 31 21:18:43 2009
New Revision: 894940
URL: http://svn.apache.org/viewvc?rev=894940&view=rev
Log:
AVRO-258. Don't make Schema.Names public.
Modified:
hadoop/avro/trunk/src/java/org/apache/avro/Schema.java
hadoop/avro/trunk/src/java/org/apache/avro/genavro/genavro.jj
Modified: hadoop/avro/trunk/src/java/org/apache/avro/Schema.java
URL:
http://svn.apache.org/viewvc/hadoop/avro/trunk/src/java/org/apache/avro/Schema.java?rev=894940&r1=894939&r2=894940&view=diff
==============================================================================
--- hadoop/avro/trunk/src/java/org/apache/avro/Schema.java (original)
+++ hadoop/avro/trunk/src/java/org/apache/avro/Schema.java Thu Dec 31 21:18:43
2009
@@ -732,7 +732,7 @@
PRIMITIVES.put("null", Type.NULL);
}
- public static class Names extends LinkedHashMap<Name, Schema> {
+ static class Names extends LinkedHashMap<Name, Schema> {
private String space; // default namespace
public Names() {}
Modified: hadoop/avro/trunk/src/java/org/apache/avro/genavro/genavro.jj
URL:
http://svn.apache.org/viewvc/hadoop/avro/trunk/src/java/org/apache/avro/genavro/genavro.jj?rev=894940&r1=894939&r2=894940&view=diff
==============================================================================
--- hadoop/avro/trunk/src/java/org/apache/avro/genavro/genavro.jj (original)
+++ hadoop/avro/trunk/src/java/org/apache/avro/genavro/genavro.jj Thu Dec 31
21:18:43 2009
@@ -82,7 +82,8 @@
*/
public class GenAvro
{
- Names names = new Names();
+ String namespace;
+ Map<String,Schema> names = new LinkedHashMap<String,Schema>();
}
PARSER_END(GenAvro)
@@ -919,13 +920,13 @@
{
Schema s;
Map<String, String> props = new HashMap<String, String>();
- String savedSpace = names.space();
+ String savedSpace = this.namespace;
}
{
( SchemaProperty(props) )*
{
if (props.containsKey("namespace")) {
- names.space(props.get("namespace"));
+ this.namespace = props.get("namespace");
}
}
(
@@ -934,7 +935,7 @@
| s = RecordDeclaration()
)
{
- names.space(savedSpace);
+ this.namespace = savedSpace;
return s;
}
}
@@ -974,13 +975,13 @@
( SchemaProperty(props) )*
{
if (props.containsKey("namespace")) {
- names.space(props.get("namespace"));
+ namespace = props.get("namespace");
}
}
"protocol"
name = Identifier()
{
- p = new Protocol(name, names.space());
+ p = new Protocol(name, namespace);
}
ProtocolBody(p)
{
@@ -999,8 +1000,8 @@
name = Identifier()
symbols = EnumBody()
{
- Schema s = Schema.createEnum(name, names.space(), symbols);
- names.add(s);
+ Schema s = Schema.createEnum(name, this.namespace, symbols);
+ names.put(s.getFullName(), s);
return s;
}
}
@@ -1063,9 +1064,9 @@
"fixed" name = Identifier() "(" sizeTok = <INTEGER_LITERAL> ")"
";"
{
- Schema s = Schema.createFixed(name, names.space(),
+ Schema s = Schema.createFixed(name, this.namespace,
Integer.parseInt(sizeTok.image));
- names.add(s);
+ names.put(s.getFullName(), s);
return s;
}
}
@@ -1084,8 +1085,8 @@
name = Identifier()
{
Schema result = Schema.createRecord(
- name, names.space(), isError);
- names.add(result);
+ name, this.namespace, isError);
+ names.put(result.getFullName(), result);
}
"{"
( FieldDeclaration(fields) )*
@@ -1251,9 +1252,12 @@
("." tok = AnyIdentifier() { sb.append(".").append(tok.image); })*
)
{
- Schema type = names.get(sb.toString());
+ String name = sb.toString();
+ if ((name.indexOf('.') == -1) && namespace != null)
+ name = namespace + "." + name;
+ Schema type = names.get(name);
if (type == null) {
- throw new ParseException("Undefined name '" + sb + "'" +
+ throw new ParseException("Undefined name '" + name + "'" +
" at line " + token.beginLine + ", column " +
token.beginColumn);
}
@@ -1367,4 +1371,4 @@
{
return t;
}
-}
\ No newline at end of file
+}