This is an automated email from the ASF dual-hosted git repository.

mgrigorov pushed a commit to branch branch-1.12
in repository https://gitbox.apache.org/repos/asf/avro.git


The following commit(s) were added to refs/heads/branch-1.12 by this push:
     new 94a289994 AVRO-4062: Allow leading underscores for names in idl (#3178)
94a289994 is described below

commit 94a28999403b5c34780ad275d15e428893d1334d
Author: Isak Lindbeck <[email protected]>
AuthorDate: Mon Oct 14 15:05:42 2024 +0200

    AVRO-4062: Allow leading underscores for names in idl (#3178)
    
    * AVRO-4062 [java] Fix broken test data
    
    * AVRO-4062 [java] Make maven run unit test for IdlReader
    
    The test is not run automatically unless the class naming convention is 
followed
    
    * AVRO-4062 Allow leading underscore for names in idl
    
    * AVRO-4062 [java] Add test for leading underscore in names
    
    ---------
    
    Co-authored-by: Isak Lindbeck <[email protected]>
    (cherry picked from commit ed6d4b74173a10bbddabf1dbe6929c89a9b98df6)
---
 .../idl/src/test/idl/input/leading_underscore.avdl | 26 ++++++++++++++++++++++
 .../src/test/idl/output/leading_underscore.avpr    | 17 ++++++++++++++
 lang/java/idl/src/test/idl/output/simple.avpr      |  8 +++++++
 .../idl/{IdlReaderTest.java => TestIdlReader.java} |  3 +--
 share/idl_grammar/org/apache/avro/idl/Idl.g4       |  4 ++--
 5 files changed, 54 insertions(+), 4 deletions(-)

diff --git a/lang/java/idl/src/test/idl/input/leading_underscore.avdl 
b/lang/java/idl/src/test/idl/input/leading_underscore.avdl
new file mode 100644
index 000000000..cd5db70be
--- /dev/null
+++ b/lang/java/idl/src/test/idl/input/leading_underscore.avdl
@@ -0,0 +1,26 @@
+/**
+ * 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
+ *
+ *     https://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.
+ */
+
+/**
+Testing leading underscore for identifiers
+*/
+protocol _LeadingUnderscore {
+  record _TestRecord {
+    string _testField;
+  }
+}
diff --git a/lang/java/idl/src/test/idl/output/leading_underscore.avpr 
b/lang/java/idl/src/test/idl/output/leading_underscore.avpr
new file mode 100644
index 000000000..af30efa3d
--- /dev/null
+++ b/lang/java/idl/src/test/idl/output/leading_underscore.avpr
@@ -0,0 +1,17 @@
+{
+  "protocol" : "_LeadingUnderscore",
+  "doc":"Testing leading underscore for identifiers",
+  "types" : [
+    {
+      "type" : "record",
+      "name" : "_TestRecord",
+      "fields" : [
+        {
+          "name" : "_testField",
+          "type" : "string"
+        }
+      ]
+    }
+  ],
+  "messages" : {}
+}
diff --git a/lang/java/idl/src/test/idl/output/simple.avpr 
b/lang/java/idl/src/test/idl/output/simple.avpr
index 0ec9edb4c..004e32480 100644
--- a/lang/java/idl/src/test/idl/output/simple.avpr
+++ b/lang/java/idl/src/test/idl/output/simple.avpr
@@ -78,6 +78,14 @@
       "name": "prop",
       "type": [ "null" , {"type":"string", "foo.foo.bar": 42, "foo.foo.foo": 
"3foo"} ],
       "default": null
+    }, {
+      "name": "numbers",
+      "type": {"type": "array", "items": "int"},
+      "default": []
+    }, {
+      "name": "dictionary",
+      "type": {"type": "map", "values": "string"},
+      "default": {}
     }],
     "my-property" : {
       "key" : 3
diff --git a/lang/java/idl/src/test/java/org/apache/avro/idl/IdlReaderTest.java 
b/lang/java/idl/src/test/java/org/apache/avro/idl/TestIdlReader.java
similarity index 99%
rename from lang/java/idl/src/test/java/org/apache/avro/idl/IdlReaderTest.java
rename to lang/java/idl/src/test/java/org/apache/avro/idl/TestIdlReader.java
index 9b503bcb2..96034cf39 100644
--- a/lang/java/idl/src/test/java/org/apache/avro/idl/IdlReaderTest.java
+++ b/lang/java/idl/src/test/java/org/apache/avro/idl/TestIdlReader.java
@@ -23,7 +23,6 @@ import org.apache.avro.Protocol;
 import org.apache.avro.Schema;
 import org.junit.Before;
 import org.junit.Test;
-
 import java.io.BufferedReader;
 import java.io.File;
 import java.io.FileInputStream;
@@ -55,7 +54,7 @@ import static org.junit.Assert.fail;
  * To make it simpler to write these tests, you can run ant -Dtestcase=TestIdl
  * -Dtest.idl.mode=write, which will *replace* all expected output.
  */
-public class IdlReaderTest {
+public class TestIdlReader {
   private static final File TEST_DIR = new 
File(System.getProperty("test.idl.dir", "src/test/idl"));
 
   private static final File TEST_INPUT_DIR = new File(TEST_DIR, 
"input").getAbsoluteFile();
diff --git a/share/idl_grammar/org/apache/avro/idl/Idl.g4 
b/share/idl_grammar/org/apache/avro/idl/Idl.g4
index 7572e9cc3..6144abadc 100644
--- a/share/idl_grammar/org/apache/avro/idl/Idl.g4
+++ b/share/idl_grammar/org/apache/avro/idl/Idl.g4
@@ -252,6 +252,6 @@ fragment HexadecimalExponent: [pP] [+\-]? Digit+;
  * Also note that this token should *only* be used in the identifier grammar 
rule above.
  */
 IdentifierToken: ( '`' IdentifierPart '`' | IdentifierPart)([.-] ( '`' 
IdentifierPart '`' | IdentifierPart) )*;
-fragment IdentifierPart: [\p{XID_Start}] [\p{XID_Continue}]*;
+fragment IdentifierPart: [\p{XID_Start}_] [\p{XID_Continue}]*;
 // See discussion in AVRO-1022, AVRO-2659, AVRO-3115
-// fragment IdentifierPart: [A-Za-z] [A-Za-z0-9_]*
+// fragment IdentifierPart: [A-Za-z_] [A-Za-z0-9_]*

Reply via email to