This is an automated email from the ASF dual-hosted git repository.
dkulp pushed a commit to branch master
in repository https://gitbox.apache.org/repos/asf/avro.git
The following commit(s) were added to refs/heads/master by this push:
new b5bec5c Avro1363 C# union schema can now contain multiple entries
with the same name and different namespace (#131)
b5bec5c is described below
commit b5bec5ca18901507f6fc01d635f10465fd3edcdf
Author: Simon24601 <[email protected]>
AuthorDate: Mon Dec 3 20:13:34 2018 +0000
Avro1363 C# union schema can now contain multiple entries with the same
name and different namespace (#131)
* AVRO-1849 Fix the issue where converting the schema of a record with no
fields produced an invalid JSON
* Fix style issues in the code.
* Fix the build scripts; build.sh requires the :z addition to work on
SELinux (see Jira 1925). lang/c++/build.sh refers to the lang/c++/build
directory which is empty. These are now fixed.
* Update to use BOOST_TEST_CHECKPOINT
* AVRO-1926 Revert changes to the lang/c++/build.sh script and add the
SchemaTests to the list of tests. Also revert SELinux changes to build.sh as
these should be committed separately
* AVRO-1363 Fix the parsing of a union schema with duplicate names but
different namespaces. In Java, this works, but not in C#
* Remove c++ changes from the AVRO1363 branch
---
lang/csharp/src/apache/main/Schema/NamedSchema.cs | 2 +-
lang/csharp/src/apache/main/Schema/Schema.cs | 12 ++++++++++--
lang/csharp/src/apache/main/Schema/UnionSchema.cs | 2 +-
lang/csharp/src/apache/test/Schema/SchemaTests.cs | 3 ++-
4 files changed, 14 insertions(+), 5 deletions(-)
diff --git a/lang/csharp/src/apache/main/Schema/NamedSchema.cs
b/lang/csharp/src/apache/main/Schema/NamedSchema.cs
index e0bfab0..6963238 100644
--- a/lang/csharp/src/apache/main/Schema/NamedSchema.cs
+++ b/lang/csharp/src/apache/main/Schema/NamedSchema.cs
@@ -52,7 +52,7 @@ namespace Avro
/// <summary>
/// Namespace.Name of the schema
/// </summary>
- public string Fullname
+ public override string Fullname
{
get { return SchemaName.Fullname; }
}
diff --git a/lang/csharp/src/apache/main/Schema/Schema.cs
b/lang/csharp/src/apache/main/Schema/Schema.cs
index a9de877..676cce9 100644
--- a/lang/csharp/src/apache/main/Schema/Schema.cs
+++ b/lang/csharp/src/apache/main/Schema/Schema.cs
@@ -71,11 +71,19 @@ namespace Avro
}
/// <summary>
+ /// If this is a record, enum or fixed, returns its name, otherwise
the name the primitive type.
+ /// </summary>
+ public abstract string Name { get; }
+
+ /// <summary>
/// The name of this schema. If this is a named schema such as an
enum, it returns the fully qualified
/// name for the schema. For other schemas, it returns the type of the
schema.
/// </summary>
- public abstract string Name { get; }
-
+ public virtual string Fullname
+ {
+ get { return Name; }
+ }
+
/// <summary>
/// Static class to return new instance of schema object
/// </summary>
diff --git a/lang/csharp/src/apache/main/Schema/UnionSchema.cs
b/lang/csharp/src/apache/main/Schema/UnionSchema.cs
index df2c37f..bc2ab5b 100644
--- a/lang/csharp/src/apache/main/Schema/UnionSchema.cs
+++ b/lang/csharp/src/apache/main/Schema/UnionSchema.cs
@@ -56,7 +56,7 @@ namespace Avro
if (null == unionType)
throw new SchemaParseException("Invalid JSON in union" +
jvalue.ToString());
- string name = unionType.Name;
+ string name = unionType.Fullname;
if (uniqueSchemas.ContainsKey(name))
throw new SchemaParseException("Duplicate type in union: "
+ name);
diff --git a/lang/csharp/src/apache/test/Schema/SchemaTests.cs
b/lang/csharp/src/apache/test/Schema/SchemaTests.cs
index 7931d40..a1c3f3c 100644
--- a/lang/csharp/src/apache/test/Schema/SchemaTests.cs
+++ b/lang/csharp/src/apache/test/Schema/SchemaTests.cs
@@ -69,7 +69,8 @@ namespace Avro.Test
Description = "No fields", ExpectedException =
typeof(SchemaParseException))]
[TestCase("{\"type\":\"record\",\"name\":\"LongList\", \"fields\":
\"hi\"}",
Description = "Fields not an array", ExpectedException =
typeof(SchemaParseException))]
-
+ [TestCase("[{\"type\": \"record\",\"name\":
\"Test\",\"namespace\":\"ns1\",\"fields\": [{\"name\": \"f\",\"type\":
\"long\"}]}," +
+ "{\"type\": \"record\",\"name\":
\"Test\",\"namespace\":\"ns2\",\"fields\": [{\"name\": \"f\",\"type\":
\"long\"}]}]")]
// Enum
[TestCase("{\"type\": \"enum\", \"name\": \"Test\", \"symbols\":
[\"A\", \"B\"]}")]
[TestCase("{\"type\": \"enum\", \"name\": \"Status\", \"symbols\":
\"Normal Caution Critical\"}",