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 2013/12/30 17:39:41 UTC
svn commit: r1554274 -
/cxf/trunk/rt/rs/description/src/main/java/org/apache/cxf/jaxrs/model/wadl/JavaDocProvider.java
Author: sergeyb
Date: Mon Dec 30 16:39:40 2013
New Revision: 1554274
URL: http://svn.apache.org/r1554274
Log:
[CXF-5353] Updating JavaDocsHandler to pick up the right HTML resource
Modified:
cxf/trunk/rt/rs/description/src/main/java/org/apache/cxf/jaxrs/model/wadl/JavaDocProvider.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=1554274&r1=1554273&r2=1554274&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 Mon Dec 30 16:39:40 2013
@@ -20,12 +20,15 @@
package org.apache.cxf.jaxrs.model.wadl;
import java.io.InputStream;
+import java.lang.reflect.Method;
import java.net.URL;
import java.net.URLClassLoader;
import java.util.LinkedList;
import java.util.List;
import java.util.concurrent.ConcurrentHashMap;
+import javax.ws.rs.Path;
+
import org.apache.cxf.Bus;
import org.apache.cxf.BusFactory;
import org.apache.cxf.common.util.StringUtils;
@@ -122,15 +125,31 @@ public class JavaDocProvider implements
return null;
}
+ private Class<?> getPathAnnotatedClass(Class<?> cls) {
+ if (cls.getAnnotation(Path.class) != null) {
+ return cls;
+ }
+ if (cls.getSuperclass().getAnnotation(Path.class) != null) {
+ return cls.getSuperclass();
+ }
+ for (Class<?> i : cls.getInterfaces()) {
+ if (i.getAnnotation(Path.class) != null) {
+ return i;
+ }
+ }
+ return cls;
+ }
+
private ClassDocs getClassDocInternal(ClassResourceInfo cri) throws Exception {
- String resource = cri.getServiceClass().getName().replace(".", "/") + ".html";
+ Class<?> annotatedClass = getPathAnnotatedClass(cri.getServiceClass());
+ String resource = annotatedClass.getName().replace(".", "/") + ".html";
ClassDocs classDocs = docs.get(resource);
if (classDocs == null) {
InputStream resourceStream = javaDocLoader.getResourceAsStream(resource);
if (resourceStream != null) {
String doc = IOUtils.readStringFromStream(resourceStream);
- String classMarker = "Class " + cri.getServiceClass().getSimpleName();
+ String classMarker = "Class " + annotatedClass.getSimpleName();
int index = doc.indexOf(classMarker);
if (index != -1) {
String classInfoTag = getClassInfoTag();
@@ -150,7 +169,9 @@ public class JavaDocProvider implements
if (classDoc == null) {
return null;
}
- String methodName = ori.getMethodToInvoke().getName();
+ Method method = ori.getAnnotatedMethod() == null ? ori.getMethodToInvoke()
+ : ori.getAnnotatedMethod();
+ String methodName = method.getName();
MethodDocs mDocs = classDoc.getMethodDocs(methodName);
if (mDocs == null) {
String operLink = getOperLink();