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 2014/01/02 14:59:16 UTC

svn commit: r1554806 - in /cxf/trunk/rt/rs/description/src: main/java/org/apache/cxf/jaxrs/model/wadl/JavaDocProvider.java test/java/org/apache/cxf/jaxrs/model/wadl/JavaDocProviderTest.java

Author: sergeyb
Date: Thu Jan  2 13:59:15 2014
New Revision: 1554806

URL: http://svn.apache.org/r1554806
Log:
[CXF-5353] Some more updates to JavaDocProvider

Modified:
    cxf/trunk/rt/rs/description/src/main/java/org/apache/cxf/jaxrs/model/wadl/JavaDocProvider.java
    cxf/trunk/rt/rs/description/src/test/java/org/apache/cxf/jaxrs/model/wadl/JavaDocProviderTest.java

Modified: cxf/trunk/rt/rs/description/src/main/java/org/apache/cxf/jaxrs/model/wadl/JavaDocProvider.java
URL: http://svn.apache.org/viewvc/cxf/trunk/rt/rs/description/src/main/java/org/apache/cxf/jaxrs/model/wadl/JavaDocProvider.java?rev=1554806&r1=1554805&r2=1554806&view=diff
==============================================================================
--- cxf/trunk/rt/rs/description/src/main/java/org/apache/cxf/jaxrs/model/wadl/JavaDocProvider.java (original)
+++ cxf/trunk/rt/rs/description/src/main/java/org/apache/cxf/jaxrs/model/wadl/JavaDocProvider.java Thu Jan  2 13:59:15 2014
@@ -43,6 +43,7 @@ public class JavaDocProvider implements 
 
     private ClassLoader javaDocLoader;
     private ConcurrentHashMap<String, ClassDocs> docs = new ConcurrentHashMap<String, ClassDocs>();
+    private double javaDocsBuiltByVersion = JAVA_VERSION;
     
     public JavaDocProvider(URL javaDocUrl) {
         if (javaDocUrl == null) {
@@ -149,7 +150,8 @@ public class JavaDocProvider implements 
             if (resourceStream != null) {
                 String doc = IOUtils.readStringFromStream(resourceStream);
                 
-                String classMarker = "Class " + annotatedClass.getSimpleName();
+                String qualifier = annotatedClass.isInterface() ? "Interface" : "Class"; 
+                String classMarker = qualifier + " " + annotatedClass.getSimpleName();
                 int index = doc.indexOf(classMarker);
                 if (index != -1) {
                     String classInfoTag = getClassInfoTag();
@@ -171,15 +173,33 @@ public class JavaDocProvider implements 
         }
         Method method = ori.getAnnotatedMethod() == null ? ori.getMethodToInvoke() 
             : ori.getAnnotatedMethod(); 
-        String methodName = method.getName();
-        MethodDocs mDocs = classDoc.getMethodDocs(methodName);
+        MethodDocs mDocs = classDoc.getMethodDocs(method);
         if (mDocs == null) {
             String operLink = getOperLink();
-            String operMarker = operLink + methodName + "(";
+            String operMarker = operLink + method.getName() + "(";
+            
             int operMarkerIndex = classDoc.getClassDoc().indexOf(operMarker);
+            while (operMarkerIndex != -1) { 
+                int startOfOpSigIndex = operMarkerIndex + operMarker.length();
+                int endOfOpSigIndex = classDoc.getClassDoc().indexOf(")", operMarkerIndex);
+                int paramLen = method.getParameterTypes().length;
+                if (endOfOpSigIndex == startOfOpSigIndex + 1 && paramLen == 0) {
+                    break;
+                } else if (endOfOpSigIndex > startOfOpSigIndex + 1) {
+                    String[] opBits = 
+                        classDoc.getClassDoc().substring(operMarkerIndex, endOfOpSigIndex).split(",");
+                    if (opBits.length == paramLen) {
+                        break;
+                    }
+                }
+                operMarkerIndex = classDoc.getClassDoc().indexOf(operMarker, 
+                                                                 operMarkerIndex + operMarker.length());
+            }
+            
             if (operMarkerIndex == -1) { 
                 return null;
             }
+            
             String operDoc = classDoc.getClassDoc().substring(operMarkerIndex + operMarker.length());
             String operInfoTag = getOperInfoTag();
             String operInfo = getJavaDocText(operDoc, operInfoTag, operLink, 0);
@@ -221,7 +241,7 @@ public class JavaDocProvider implements 
                 }
             }
             mDocs = new MethodDocs(operInfo, paramDocs, responseInfo);
-            classDoc.addMethodDocs(methodName, mDocs);
+            classDoc.addMethodDocs(method, mDocs);
         }
         
         return mDocs;
@@ -244,14 +264,14 @@ public class JavaDocProvider implements 
     }
     
     protected String getClassInfoTag() {
-        if (JAVA_VERSION == JAVA_VERSION_16) {
+        if (javaDocsBuiltByVersion == JAVA_VERSION_16) {
             return "<P>";
         } else {
             return "<div class=\"block\">";
         }
     }
     protected String getOperInfoTag() {
-        if (JAVA_VERSION == JAVA_VERSION_16) {
+        if (javaDocsBuiltByVersion == JAVA_VERSION_16) {
             return "<DD>";
         } else {
             return "<div class=\"block\">";
@@ -259,22 +279,27 @@ public class JavaDocProvider implements 
     }
     protected String getOperLink() {
         String operLink = "<A NAME=\"";
-        return JAVA_VERSION == JAVA_VERSION_16 ? operLink : operLink.toLowerCase();
+        return javaDocsBuiltByVersion == JAVA_VERSION_16 ? operLink : operLink.toLowerCase();
     }
     
     protected String getResponseMarker() {
         String tag = "<DD>";
-        return JAVA_VERSION == JAVA_VERSION_16 ? tag : tag.toLowerCase();
+        return javaDocsBuiltByVersion == JAVA_VERSION_16 ? tag : tag.toLowerCase();
     }
     
     protected String getCodeTag() {
         String tag = "</CODE>";
-        return JAVA_VERSION == JAVA_VERSION_16 ? tag : tag.toLowerCase();
+        return javaDocsBuiltByVersion == JAVA_VERSION_16 ? tag : tag.toLowerCase();
+    }
+    
+    public void setJavaDocsBuiltByVersion(String version) {
+        javaDocsBuiltByVersion = Double.valueOf(version);
     }
+    
     private static class ClassDocs {
         private String classDoc;
         private String classInfo;
-        private ConcurrentHashMap<String, MethodDocs> mdocs = new ConcurrentHashMap<String, MethodDocs>(); 
+        private ConcurrentHashMap<Method, MethodDocs> mdocs = new ConcurrentHashMap<Method, MethodDocs>(); 
         public ClassDocs(String classDoc, String classInfo) {
             this.classDoc = classDoc;
             this.classInfo = classInfo;
@@ -288,12 +313,12 @@ public class JavaDocProvider implements 
             return classInfo;
         }
         
-        public MethodDocs getMethodDocs(String name) {
-            return mdocs.get(name);
+        public MethodDocs getMethodDocs(Method method) {
+            return mdocs.get(method);
         }
         
-        public void addMethodDocs(String name, MethodDocs doc) {
-            mdocs.putIfAbsent(name, doc);
+        public void addMethodDocs(Method method, MethodDocs doc) {
+            mdocs.putIfAbsent(method, doc);
         }
     }
     

Modified: cxf/trunk/rt/rs/description/src/test/java/org/apache/cxf/jaxrs/model/wadl/JavaDocProviderTest.java
URL: http://svn.apache.org/viewvc/cxf/trunk/rt/rs/description/src/test/java/org/apache/cxf/jaxrs/model/wadl/JavaDocProviderTest.java?rev=1554806&r1=1554805&r2=1554806&view=diff
==============================================================================
--- cxf/trunk/rt/rs/description/src/test/java/org/apache/cxf/jaxrs/model/wadl/JavaDocProviderTest.java (original)
+++ cxf/trunk/rt/rs/description/src/test/java/org/apache/cxf/jaxrs/model/wadl/JavaDocProviderTest.java Thu Jan  2 13:59:15 2014
@@ -39,7 +39,7 @@ public class JavaDocProviderTest extends
     @Test
     public void testJava7Docs() throws Exception {
         if (JavaDocProvider.JAVA_VERSION != JavaDocProvider.JAVA_VERSION_16) {
-            //doTestJavaDocs("classpath:/javadocs/pet-store-javadoc17.jar");
+            doTestJavaDocs("classpath:/javadocs/pet-store-javadoc17.jar");
         }
     }