You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@cxf.apache.org by se...@apache.org on 2016/01/29 11:14:01 UTC

cxf git commit: [CXF-6759] Fixing a duplicate method issue, patch from Neal Hu applied with minor updates

Repository: cxf
Updated Branches:
  refs/heads/master 25c151ed9 -> 05470459f


[CXF-6759] Fixing a duplicate method issue, patch from Neal Hu applied with minor updates


Project: http://git-wip-us.apache.org/repos/asf/cxf/repo
Commit: http://git-wip-us.apache.org/repos/asf/cxf/commit/05470459
Tree: http://git-wip-us.apache.org/repos/asf/cxf/tree/05470459
Diff: http://git-wip-us.apache.org/repos/asf/cxf/diff/05470459

Branch: refs/heads/master
Commit: 05470459f4dad0864ae639d7d91ccc0637682710
Parents: 25c151e
Author: Sergey Beryozkin <sb...@gmail.com>
Authored: Fri Jan 29 10:13:46 2016 +0000
Committer: Sergey Beryozkin <sb...@gmail.com>
Committed: Fri Jan 29 10:13:46 2016 +0000

----------------------------------------------------------------------
 .../cxf/tools/wadlto/jaxrs/SourceGenerator.java | 32 ++++++++++++++-----
 .../tools/wadlto/jaxrs/JAXRSContainerTest.java  | 33 +++++++++++---------
 .../src/test/resources/wadl/testComplexPath.xml |  3 ++
 3 files changed, 46 insertions(+), 22 deletions(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/cxf/blob/05470459/tools/wadlto/jaxrs/src/main/java/org/apache/cxf/tools/wadlto/jaxrs/SourceGenerator.java
----------------------------------------------------------------------
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 ff37819..f07df3b 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
@@ -506,7 +506,10 @@ public class SourceGenerator {
         writeImplementsInterface(sbCode, qname.getLocalPart(), info.isInterfaceGenerated());              
         sbCode.append(" {" + getLineSep() + getLineSep());
         
-        writeMethods(rElement, classPackage, imports, sbCode, info, resourceId, isRoot, "");
+        Map<String, Integer> methodNameMap = new HashMap<String, Integer>();
+        writeMethods(rElement, classPackage, imports, sbCode, 
+                     info, resourceId, isRoot, "",
+                     methodNameMap);
         
         sbCode.append("}");
         writeImports(sbImports, imports, classPackage);
@@ -611,14 +614,15 @@ public class SourceGenerator {
                               ContextInfo info,
                               String resourceId,
                               boolean isRoot,
-                              String currentPath) {
+                              String currentPath,
+                              Map<String, Integer> methodNameMap) {
     //CHECKSTYLE:ON    
         List<Element> methodEls = getWadlElements(rElement, "method");
         
         List<Element> currentInheritedParams = inheritResourceParams 
             ? new LinkedList<Element>(info.getInheritedParams()) : Collections.<Element>emptyList();
         for (Element methodEl : methodEls) {
-            writeResourceMethod(methodEl, classPackage, imports, sbCode, info, isRoot, currentPath);    
+            writeResourceMethod(methodEl, classPackage, imports, sbCode, info, isRoot, currentPath, methodNameMap);    
         }
         if (inheritResourceParams && methodEls.isEmpty()) {
             info.getInheritedParams().addAll(getWadlElements(rElement, "param"));
@@ -633,9 +637,9 @@ public class SourceGenerator {
             String newPath = currentPath + path.replace("//", "/");
             String id = childEl.getAttribute("id");
             if (id.length() == 0) {
-                writeMethods(childEl, classPackage, imports, sbCode, info, id, false, newPath);
+                writeMethods(childEl, classPackage, imports, sbCode, info, id, false, newPath, methodNameMap);
             } else {
-                writeResourceMethod(childEl, classPackage, imports, sbCode, info, false, newPath);
+                writeResourceMethod(childEl, classPackage, imports, sbCode, info, false, newPath, methodNameMap);
             }
         }
         info.getInheritedParams().clear();
@@ -679,13 +683,16 @@ public class SourceGenerator {
         }
     }
     
+    //CHECKSTYLE:OFF
     private void writeResourceMethod(Element methodEl,
                                      String classPackage,
                                      Set<String> imports,
                                      StringBuilder sbCode,
                                      ContextInfo info,
                                      boolean isRoot,
-                                     String currentPath) {
+                                     String currentPath,
+                                     Map<String, Integer> methodNameMap) {
+    //CHECKSTYLE:ON    
         StringBuilder sbMethodCode = sbCode;
         StringBuilder sbMethodDocs = null;
         StringBuilder sbMethodRespDocs = null;
@@ -793,7 +800,18 @@ public class SourceGenerator {
                     }
                     genMethodName += firstCharToUpperCase(sb.toString());
                 }
-                sbMethodCode.append(genMethodName.replace("-", ""));
+                genMethodName = genMethodName.replace("-", "");
+                
+                Integer value = methodNameMap.get(genMethodName);
+                if (value == null) {
+                    value = 0;
+                }
+                methodNameMap.put(genMethodName, ++value);
+                if (value > 1) { 
+                    genMethodName = genMethodName + value.toString();
+                }
+                
+                sbMethodCode.append(genMethodName);
             } else {
                 writeSubresourceMethod(resourceEl, imports, sbMethodCode, info, id, suffixName);
             }

http://git-wip-us.apache.org/repos/asf/cxf/blob/05470459/tools/wadlto/jaxrs/src/test/java/org/apache/cxf/tools/wadlto/jaxrs/JAXRSContainerTest.java
----------------------------------------------------------------------
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 bbcde20..2be4efa 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
@@ -431,28 +431,31 @@ public class JAXRSContainerTest extends ProcessorTestBase {
             
             Class<?> test1 = loader.loadClass("application.Resource");
             Method[] test1Methods = test1.getDeclaredMethods();
-            assertEquals(1, test1Methods.length);
+            assertEquals(2, test1Methods.length);
             assertEquals(2, test1Methods[0].getAnnotations().length);
-            assertNotNull(test1Methods[0].getAnnotation(GET.class));            
-            Path path = test1Methods[0].getAnnotation(Path.class);
-            assertNotNull(path);
-            assertEquals("/get-add-method", path.value());
-            
-            assertEquals("getGetaddmethod", test1Methods[0].getName());
-            Class<?>[] paramTypes = test1Methods[0].getParameterTypes();
-            assertEquals(1, paramTypes.length);
-            Annotation[][] paramAnns = test1Methods[0].getParameterAnnotations();
-            assertEquals(String.class, paramTypes[0]);
-            assertEquals(1, paramAnns[0].length);
-            PathParam test1PathParam1 = (PathParam)paramAnns[0][0];
-            assertEquals("id", test1PathParam1.value());
-            
+            checkComplexPathMethod(test1Methods[0], "");
+            checkComplexPathMethod(test1Methods[1], "2");
         } catch (Exception e) {
             e.printStackTrace();
             fail();
         }
     }
     
+    private void checkComplexPathMethod(Method m, String suffix) {
+        assertNotNull(m.getAnnotation(GET.class));            
+        Path path = m.getAnnotation(Path.class);
+        assertNotNull(path);
+        assertEquals("/get-add-method", path.value());
+        assertEquals("getGetaddmethod" + suffix, m.getName());
+        Class<?>[] paramTypes = m.getParameterTypes();
+        assertEquals(1, paramTypes.length);
+        Annotation[][] paramAnns = m.getParameterAnnotations();
+        assertEquals(String.class, paramTypes[0]);
+        assertEquals(1, paramAnns[0].length);
+        PathParam methodPathParam1 = (PathParam)paramAnns[0][0];
+        assertEquals("id", methodPathParam1.value());
+    }
+    
     @Test    
     public void testCodeGenWithImportedSchemaAndResourceSet() {
         try {

http://git-wip-us.apache.org/repos/asf/cxf/blob/05470459/tools/wadlto/jaxrs/src/test/resources/wadl/testComplexPath.xml
----------------------------------------------------------------------
diff --git a/tools/wadlto/jaxrs/src/test/resources/wadl/testComplexPath.xml b/tools/wadlto/jaxrs/src/test/resources/wadl/testComplexPath.xml
index 372ca85..63cf53f 100644
--- a/tools/wadlto/jaxrs/src/test/resources/wadl/testComplexPath.xml
+++ b/tools/wadlto/jaxrs/src/test/resources/wadl/testComplexPath.xml
@@ -7,6 +7,9 @@
         <method name="GET">
           <response/>
         </method>
+        <method name="GET">
+          <response/>
+        </method>
       </resource>
      </resource>
 	</resources>