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

buhhunyx pushed a commit to branch 3.3.x-fixes
in repository https://gitbox.apache.org/repos/asf/cxf.git


The following commit(s) were added to refs/heads/3.3.x-fixes by this push:
     new 5c1270a  CXF-8168 Wadl2java maven plugin not allows mapping to array 
types (#611)
5c1270a is described below

commit 5c1270a27b6b2547ed614b17f7956b1e55712a93
Author: Alexey Markevich <[email protected]>
AuthorDate: Wed Dec 4 22:59:35 2019 +0300

    CXF-8168 Wadl2java maven plugin not allows mapping to array types (#611)
---
 .../cxf/tools/common/toolspec/parser/Option.java   | 23 +++++++++++-----------
 .../cxf/tools/wadlto/jaxrs/WADLToJavaTest.java     |  2 ++
 .../jaxrs/src/test/resources/wadl/bookstore.xml    |  2 +-
 3 files changed, 14 insertions(+), 13 deletions(-)

diff --git 
a/tools/common/src/main/java/org/apache/cxf/tools/common/toolspec/parser/Option.java
 
b/tools/common/src/main/java/org/apache/cxf/tools/common/toolspec/parser/Option.java
index fe358d5..6031ec0 100644
--- 
a/tools/common/src/main/java/org/apache/cxf/tools/common/toolspec/parser/Option.java
+++ 
b/tools/common/src/main/java/org/apache/cxf/tools/common/toolspec/parser/Option.java
@@ -37,7 +37,6 @@ public class Option implements TokenConsumer {
     protected Element argument;
     protected Element annotation;
     private final Element element;
-    private Element valueType;
 
     private int numMatches;
 
@@ -163,14 +162,12 @@ public class Option implements TokenConsumer {
         List<Element> list =
             DOMUtils.findAllElementsByTagNameNS(argument, 
Tool.TOOL_SPEC_PUBLIC_ID, "valuetype");
         //NodeList list = 
argument.getElementsByTagNameNS(Tool.TOOL_SPEC_PUBLIC_ID, "valuetype");
-        String valuetypeStr = null;
 
         if (list != null && !list.isEmpty()) {
-            valueType = list.get(0);
-            valuetypeStr = valueType.getFirstChild().getNodeValue();
+            String valuetypeStr = list.get(0).getFirstChild().getNodeValue();
 
             if ("IdentifyString".equals(valuetypeStr)) {
-                return !isIdentifyString(argValue);
+                return !isIdentifyString(argValue, false);
             } else if ("NamingSpacePackageString".equals(valuetypeStr)) {
                 return !isNamingSpacePackageString(argValue);
             } else if ("Digital".equals(valuetypeStr)) {
@@ -207,9 +204,10 @@ public class Option implements TokenConsumer {
         return result;
     }
 
-    private boolean isIdentifyString(String value) {
+    private static boolean isIdentifyString(String value, boolean 
allowBrackets) {
         for (int i = 0; i < value.length(); i++) {
-            if (value.charAt(i) == '.') {
+            if (value.charAt(i) == '.'
+                || (allowBrackets && (value.charAt(i) == '[' || 
value.charAt(i) == ']'))) {
                 continue;
             }
             if (!Character.isJavaIdentifierPart(value.charAt(i))) {
@@ -219,12 +217,13 @@ public class Option implements TokenConsumer {
         return true;
     }
 
-    private boolean isNamingSpacePackageString(String value) {
-        if (value.indexOf('=') < 0) {
-            return isIdentifyString(value);
+    private static boolean isNamingSpacePackageString(String value) {
+        int idx = value.indexOf('=');
+        if (idx == -1) {
+            return isIdentifyString(value, true);
         }
-        String packageName = value.substring(value.indexOf('=') + 1, 
value.length());
-        return isIdentifyString(packageName);
+        String packageName = value.substring(idx + 1, value.length());
+        return isIdentifyString(packageName, true);
     }
 
 
diff --git 
a/tools/wadlto/jaxrs/src/test/java/org/apache/cxf/tools/wadlto/jaxrs/WADLToJavaTest.java
 
b/tools/wadlto/jaxrs/src/test/java/org/apache/cxf/tools/wadlto/jaxrs/WADLToJavaTest.java
index 566ff01..6d4f979 100644
--- 
a/tools/wadlto/jaxrs/src/test/java/org/apache/cxf/tools/wadlto/jaxrs/WADLToJavaTest.java
+++ 
b/tools/wadlto/jaxrs/src/test/java/org/apache/cxf/tools/wadlto/jaxrs/WADLToJavaTest.java
@@ -48,6 +48,8 @@ public class WADLToJavaTest extends ProcessorTestBase {
             "custom.service",
             "-tMap",
             "{http://www.w3.org/2001/XMLSchema}date=java.util.List..String";,
+            "-tMap",
+            "{http://www.w3.org/2001/XMLSchema}base64Binary=byte[]";,
             "-async getName,delete",
             "-inheritResourceParams first",
             "-compile",
diff --git a/tools/wadlto/jaxrs/src/test/resources/wadl/bookstore.xml 
b/tools/wadlto/jaxrs/src/test/resources/wadl/bookstore.xml
index 69a8108..844cf27 100644
--- a/tools/wadlto/jaxrs/src/test/resources/wadl/bookstore.xml
+++ b/tools/wadlto/jaxrs/src/test/resources/wadl/bookstore.xml
@@ -64,7 +64,7 @@
                     <param name="enumType" style="query" 
type="prefix1:enumType"/>
                     <param name="a" style="query" type="xs:int"/>
                     <param name="c.a" style="query" type="xs:int"/>
-                    <param name="c.b" style="query" type="xs:int"/>
+                    <param name="c.b" style="query" type="xs:base64Binary"/>
                     <param name="c.d.a" style="query" type="xs:dateTime"/>
                     <param name="option" default="A" style="query" 
required="true">
                         <option value="A"/>

Reply via email to