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

sergeyb pushed a commit to branch master
in repository https://gitbox.apache.org/repos/asf/cxf.git


The following commit(s) were added to refs/heads/master by this push:
     new 1c49bae  [CXF-7200] Adding wadltojava jaxbClassNameSuffix option
1c49bae is described below

commit 1c49baea37013d61f5032b5304bf9fcc42aeb666
Author: Sergey Beryozkin <[email protected]>
AuthorDate: Fri Dec 29 17:38:22 2017 +0000

    [CXF-7200] Adding wadltojava jaxbClassNameSuffix option
---
 .../apache/cxf/tools/wadlto/WadlToolConstants.java |  1 +
 .../cxf/tools/wadlto/jaxrs/JAXRSContainer.java     |  1 +
 .../cxf/tools/wadlto/jaxrs/SourceGenerator.java    | 22 ++++++++++++-
 .../cxf/tools/wadlto/jaxrs/jaxrs-toolspec.xml      | 10 ++++++
 .../cxf/tools/wadlto/jaxrs/JAXRSContainerTest.java | 37 ++++++++++++++++++++++
 .../src/test/resources/wadl/jaxbSchemaBindings.xml | 27 ++++++++++++++++
 6 files changed, 97 insertions(+), 1 deletion(-)

diff --git 
a/tools/wadlto/jaxrs/src/main/java/org/apache/cxf/tools/wadlto/WadlToolConstants.java
 
b/tools/wadlto/jaxrs/src/main/java/org/apache/cxf/tools/wadlto/WadlToolConstants.java
index 5cf8ebb..64a2034 100644
--- 
a/tools/wadlto/jaxrs/src/main/java/org/apache/cxf/tools/wadlto/WadlToolConstants.java
+++ 
b/tools/wadlto/jaxrs/src/main/java/org/apache/cxf/tools/wadlto/WadlToolConstants.java
@@ -56,6 +56,7 @@ public final class WadlToolConstants {
     public static final String CFG_WADL_NAMESPACE = "wadlNamespace";
     public static final String CFG_GENERATE_ENUMS = "generateEnums";
     public static final String CFG_INHERIT_PARAMS = "inheritResourceParams";
+    public static final String CFG_JAXB_CLASS_NAME_SUFFIX = 
"jaxbClassNameSuffix";
     public static final String CFG_CREATE_JAVA_DOCS = "javaDocs";
     public static final String CFG_GENERATE_RESPONSE_IF_HEADERS_SET = 
"generateResponseIfHeadersSet";
     public static final String CFG_GENERATE_RESPONSE_FOR_METHODS = 
"generateResponseForMethods";
diff --git 
a/tools/wadlto/jaxrs/src/main/java/org/apache/cxf/tools/wadlto/jaxrs/JAXRSContainer.java
 
b/tools/wadlto/jaxrs/src/main/java/org/apache/cxf/tools/wadlto/jaxrs/JAXRSContainer.java
index 8148768..42c909c 100644
--- 
a/tools/wadlto/jaxrs/src/main/java/org/apache/cxf/tools/wadlto/jaxrs/JAXRSContainer.java
+++ 
b/tools/wadlto/jaxrs/src/main/java/org/apache/cxf/tools/wadlto/jaxrs/JAXRSContainer.java
@@ -134,6 +134,7 @@ public class JAXRSContainer extends 
AbstractCXFToolContainer {
         if (wadlNs != null) {
             sg.setWadlNamespace(wadlNs);
         }
+        
sg.setJaxbClassNameSuffix((String)context.get(WadlToolConstants.CFG_JAXB_CLASS_NAME_SUFFIX));
 
         
sg.setSupportMultipleXmlReps(context.optionSet(WadlToolConstants.CFG_MULTIPLE_XML_REPS));
         
sg.setSupportBeanValidation(context.optionSet(WadlToolConstants.CFG_BEAN_VALIDATION));
diff --git 
a/tools/wadlto/jaxrs/src/main/java/org/apache/cxf/tools/wadlto/jaxrs/SourceGenerator.java
 
b/tools/wadlto/jaxrs/src/main/java/org/apache/cxf/tools/wadlto/jaxrs/SourceGenerator.java
index 098e3e8..cfc24db 100644
--- 
a/tools/wadlto/jaxrs/src/main/java/org/apache/cxf/tools/wadlto/jaxrs/SourceGenerator.java
+++ 
b/tools/wadlto/jaxrs/src/main/java/org/apache/cxf/tools/wadlto/jaxrs/SourceGenerator.java
@@ -227,6 +227,7 @@ public class SourceGenerator {
     private String encoding;
     private String authentication;
     private boolean createJavaDocs;
+    private String jaxbClassNameSuffix;
 
     public SourceGenerator() {
         this(Collections.<String, String>emptyMap());
@@ -1613,14 +1614,29 @@ public class SourceGenerator {
                 String[] pair = prefixedElementTypeName.split(":");
                 String elementTypeName = pair.length == 2 ? pair[1] : pair[0];
                 clsName = matchClassName(typeClassNames, packageName, 
elementTypeName);
+                if (clsName == null && jaxbClassNameSuffix != null) {
+                    clsName = matchClassName(typeClassNames, packageName, 
+                                             elementTypeName + 
jaxbClassNameSuffix);
+                }
                 if (clsName == null && elementTypeName.contains("_")) {
-                    clsName = matchClassName(typeClassNames, packageName, 
elementTypeName.replaceAll("_", ""));
+                    String elementTypeNameWithoutUnderscore = 
elementTypeName.replaceAll("_", "");
+                    clsName = matchClassName(typeClassNames, packageName, 
elementTypeNameWithoutUnderscore);
+                    if (clsName == null && jaxbClassNameSuffix != null) {
+                        clsName = matchClassName(typeClassNames, packageName, 
+                                                 
elementTypeNameWithoutUnderscore + jaxbClassNameSuffix);
+                    }
                 }
                 if (clsName == null && pair.length == 2) {
                     String namespace = gInfo.getNsMap().get(pair[0]);
                     if (namespace != null) {
                         packageName = getPackageFromNamespace(namespace);
                         clsName = matchClassName(typeClassNames, packageName, 
elementTypeName);
+                        //CHECKSTYLE:OFF
+                        if (clsName == null && jaxbClassNameSuffix != null) {
+                            clsName = matchClassName(typeClassNames, 
packageName, 
+                                                     elementTypeName + 
jaxbClassNameSuffix);
+                        }
+                        //CHECKSTYLE:ON
                     }
                 }
 
@@ -2027,6 +2043,10 @@ public class SourceGenerator {
         this.authentication = authentication;
     }
 
+    public void setJaxbClassNameSuffix(String jaxbClassNameSuffix) {
+        this.jaxbClassNameSuffix = jaxbClassNameSuffix;
+    }
+
     private static class GrammarInfo {
         private Map<String, String> nsMap = new HashMap<>();
         private Map<String, String> elementTypeMap = new HashMap<>();
diff --git 
a/tools/wadlto/jaxrs/src/main/java/org/apache/cxf/tools/wadlto/jaxrs/jaxrs-toolspec.xml
 
b/tools/wadlto/jaxrs/src/main/java/org/apache/cxf/tools/wadlto/jaxrs/jaxrs-toolspec.xml
index 7476251..463434e 100644
--- 
a/tools/wadlto/jaxrs/src/main/java/org/apache/cxf/tools/wadlto/jaxrs/jaxrs-toolspec.xml
+++ 
b/tools/wadlto/jaxrs/src/main/java/org/apache/cxf/tools/wadlto/jaxrs/jaxrs-toolspec.xml
@@ -58,6 +58,16 @@ Examples:
                     <annotation>[schema-namespace =]package-name</annotation>
                 </associatedArgument>
             </option>
+            <option id="jaxbClassNameSuffix">
+                <annotation>
+                    Specify the JAXB class name suffix which will be used to 
modify
+                    the method signatures where schema-generated types are used
+                </annotation>
+                <switch>jaxbClassNameSuffix</switch>
+                <associatedArgument placement="afterSpace">
+                    <annotation>jaxb-class-name-suffix</annotation>
+                </associatedArgument>
+            </option>
             <option id="schemaTypeMap" maxOccurs="unbounded">
                 <annotation>
                     Specifies the optional mapping between WADL parameter 
diff --git 
a/tools/wadlto/jaxrs/src/test/java/org/apache/cxf/tools/wadlto/jaxrs/JAXRSContainerTest.java
 
b/tools/wadlto/jaxrs/src/test/java/org/apache/cxf/tools/wadlto/jaxrs/JAXRSContainerTest.java
index 21d7dbb..0b17789 100644
--- 
a/tools/wadlto/jaxrs/src/test/java/org/apache/cxf/tools/wadlto/jaxrs/JAXRSContainerTest.java
+++ 
b/tools/wadlto/jaxrs/src/test/java/org/apache/cxf/tools/wadlto/jaxrs/JAXRSContainerTest.java
@@ -180,6 +180,36 @@ public class JAXRSContainerTest extends ProcessorTestBase {
             fail();
         }
     }
+    
+    @Test
+    public void testCodeGenInterfacesWithJaxbClassNameSuffix() {
+        try {
+            JAXRSContainer container = new JAXRSContainer(null);
+
+            ToolContext context = new ToolContext();
+            context.put(WadlToolConstants.CFG_OUTPUTDIR, 
output.getCanonicalPath());
+            context.put(WadlToolConstants.CFG_WADLURL, 
getLocation("/wadl/bookstore.xml"));
+            context.put(WadlToolConstants.CFG_JAXB_CLASS_NAME_SUFFIX, "DTO");
+            context.put(WadlToolConstants.CFG_BINDING, 
getLocation("/wadl/jaxbSchemaBindings.xml"));
+            context.put(WadlToolConstants.CFG_COMPILE, "true");
+
+            container.setContext(context);
+            container.execute();
+
+            assertNotNull(output.list());
+            List<File> schemafiles = FileUtils.getFilesRecurse(output, ".+\\." 
+ "java" + "$");
+            assertEquals(10, schemafiles.size());
+            doVerifyTypesWithSuffix(schemafiles, "superbooks", "java");
+            
+            List<File> classfiles = FileUtils.getFilesRecurse(output, ".+\\." 
+ "class" + "$");
+            assertEquals(10, classfiles.size());
+            doVerifyTypesWithSuffix(classfiles, "superbooks", "class");
+            
+        } catch (Exception e) {
+            e.printStackTrace();
+            fail();
+        }
+    }
 
     @Test
     public void testCodeGenWithImportedSchema() {
@@ -905,6 +935,13 @@ public class JAXRSContainerTest extends ProcessorTestBase {
         assertTrue(checkContains(files, schemaPackage + ".ObjectFactory." + 
ext));
         assertTrue(checkContains(files, schemaPackage + ".package-info." + 
ext));
     }
+    private void doVerifyTypesWithSuffix(List<File> files, String 
schemaPackage, String ext) {
+        assertTrue(checkContains(files, schemaPackage + ".BookDTO." + ext));
+        assertTrue(checkContains(files, schemaPackage + ".TheBook2DTO." + 
ext));
+        assertTrue(checkContains(files, schemaPackage + ".ChapterDTO." + ext));
+        assertTrue(checkContains(files, schemaPackage + ".ObjectFactory." + 
ext));
+        assertTrue(checkContains(files, schemaPackage + ".package-info." + 
ext));
+    }
 
     private boolean checkContains(List<File> clsFiles, String name) {
         for (File f : clsFiles) {
diff --git a/tools/wadlto/jaxrs/src/test/resources/wadl/jaxbSchemaBindings.xml 
b/tools/wadlto/jaxrs/src/test/resources/wadl/jaxbSchemaBindings.xml
new file mode 100644
index 0000000..eb77026
--- /dev/null
+++ b/tools/wadlto/jaxrs/src/test/resources/wadl/jaxbSchemaBindings.xml
@@ -0,0 +1,27 @@
+<?xml version="1.0"?>
+<!--
+  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
+ 
+  http://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.
+-->
+<jaxb:bindings xmlns:jaxb="http://java.sun.com/xml/ns/jaxb"; 
xmlns:xs="http://www.w3.org/2001/XMLSchema"; version="2.0">
+    <jaxb:schemaBindings>
+        <jaxb:nameXmlTransform>
+            <jaxb:elementName suffix="DTO" />
+            <jaxb:typeName suffix="DTO" />
+        </jaxb:nameXmlTransform>
+    </jaxb:schemaBindings>     
+</jaxb:bindings>

-- 
To stop receiving notification emails like this one, please contact
['"[email protected]" <[email protected]>'].

Reply via email to