You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@wink.apache.org by bl...@apache.org on 2010/09/30 16:23:26 UTC
svn commit: r1003075 -
/incubator/wink/trunk/wink-common/src/main/java/org/apache/wink/common/model/wadl/WADLGenerator.java
Author: bluk
Date: Thu Sep 30 14:23:26 2010
New Revision: 1003075
URL: http://svn.apache.org/viewvc?rev=1003075&view=rev
Log:
Produce WADL information for subresources
Modified:
incubator/wink/trunk/wink-common/src/main/java/org/apache/wink/common/model/wadl/WADLGenerator.java
Modified: incubator/wink/trunk/wink-common/src/main/java/org/apache/wink/common/model/wadl/WADLGenerator.java
URL: http://svn.apache.org/viewvc/incubator/wink/trunk/wink-common/src/main/java/org/apache/wink/common/model/wadl/WADLGenerator.java?rev=1003075&r1=1003074&r2=1003075&view=diff
==============================================================================
--- incubator/wink/trunk/wink-common/src/main/java/org/apache/wink/common/model/wadl/WADLGenerator.java (original)
+++ incubator/wink/trunk/wink-common/src/main/java/org/apache/wink/common/model/wadl/WADLGenerator.java Thu Sep 30 14:23:26 2010
@@ -21,7 +21,6 @@
package org.apache.wink.common.model.wadl;
import java.lang.annotation.Annotation;
-import java.lang.reflect.Modifier;
import java.util.ArrayList;
import java.util.Collections;
import java.util.HashSet;
@@ -38,12 +37,13 @@ import javax.ws.rs.QueryParam;
import javax.ws.rs.core.MediaType;
import javax.xml.namespace.QName;
-import org.apache.wink.common.internal.i18n.Messages;
import org.apache.wink.common.internal.registry.Injectable;
import org.apache.wink.common.internal.registry.Injectable.ParamType;
import org.apache.wink.common.internal.registry.metadata.ClassMetadata;
import org.apache.wink.common.internal.registry.metadata.MethodMetadata;
import org.apache.wink.common.internal.registry.metadata.ResourceMetadataCollector;
+import org.apache.wink.common.internal.uritemplate.JaxRsUriTemplateProcessor;
+import org.apache.wink.common.internal.uritemplate.UriTemplateProcessor;
public class WADLGenerator {
@@ -95,17 +95,182 @@ public class WADLGenerator {
Resource r = new Resource();
/* set the path */
- r.setPath(metadata.getPath());
+ String path = metadata.getPath();
+ UriTemplateProcessor processor = JaxRsUriTemplateProcessor.newNormalizedInstance(path);
+ String pathStr = processor.getTemplate();
+ for(String var : processor.getVariableNames()) {
+ pathStr = pathStr.replaceAll("\\{(\\s)*" + var + "(\\s)*:.*\\}", "{" + var + "}");
+ }
+ r.setPath(pathStr);
List<Object> methodOrSubresource = r.getMethodOrResource();
+ List<Param> resourceParams = r.getParam();
+
List<MethodMetadata> methodMetadata = metadata.getResourceMethods();
if (methodMetadata != null && !methodMetadata.isEmpty()) {
for (MethodMetadata methodMeta : methodMetadata) {
Method m = buildMethod(metadata, methodMeta);
methodOrSubresource.add(m);
+
+ /* also scan for all the path and matrix parameters */
+ List<Injectable> params = methodMeta.getFormalParameters();
+ if (params != null && params.size() > 0) {
+ for (Injectable p : params) {
+ switch (p.getParamType()) {
+ case QUERY:
+ /* do nothing */
+ break;
+ case HEADER:
+ /* do nothing */
+ break;
+ case ENTITY:
+ /* do nothing */
+ break;
+ case COOKIE:
+ /* not supported in WADL */
+ break;
+ case FORM:
+ /* should show up in the representation instead */
+ break;
+ case PATH:
+ resourceParams.add(buildParam(p));
+ break;
+ case MATRIX:
+ resourceParams.add(buildParam(p));
+ break;
+ case CONTEXT:
+ /* do nothing */
+ break;
+ }
+ }
+ }
}
}
-
+
+ /*
+ * list the class level parameters
+ */
+ for(Injectable p : metadata.getInjectableFields()) {
+ switch (p.getParamType()) {
+ case QUERY:
+ resourceParams.add(buildParam(p));
+ break;
+ case HEADER:
+ resourceParams.add(buildParam(p));
+ break;
+ case ENTITY:
+ /* do nothing */
+ break;
+ case COOKIE:
+ /* not supported in WADL */
+ break;
+ case FORM:
+ /* should show up in the representation instead */
+ break;
+ case PATH:
+ resourceParams.add(buildParam(p));
+ break;
+ case MATRIX:
+ resourceParams.add(buildParam(p));
+ break;
+ case CONTEXT:
+ /* do nothing */
+ break;
+ }
+ }
+
+ /*
+ * list subresource methods
+ */
+ methodMetadata = metadata.getSubResourceMethods();
+ if (methodMetadata != null && !methodMetadata.isEmpty()) {
+ for (MethodMetadata methodMeta : methodMetadata) {
+ Resource subRes = new Resource();
+ Method m = buildMethod(metadata, methodMeta);
+ subRes.getMethodOrResource().add(m);
+ subRes.setPath(methodMeta.getPath());
+ methodOrSubresource.add(subRes);
+
+ /* also scan for all the path and matrix parameters */
+ List<Injectable> params = methodMeta.getFormalParameters();
+ if (params != null && params.size() > 0) {
+ for (Injectable p : params) {
+ switch (p.getParamType()) {
+ case QUERY:
+ /* do nothing */
+ break;
+ case HEADER:
+ /* do nothing */
+ break;
+ case ENTITY:
+ /* do nothing */
+ break;
+ case COOKIE:
+ /* not supported in WADL */
+ break;
+ case FORM:
+ /* should show up in the representation instead */
+ break;
+ case PATH:
+ subRes.getParam().add(buildParam(p));
+ break;
+ case MATRIX:
+ subRes.getParam().add(buildParam(p));
+ break;
+ case CONTEXT:
+ /* do nothing */
+ break;
+ }
+ }
+ }
+ }
+ }
+
+ /*
+ * list subresource locators
+ */
+ methodMetadata = metadata.getSubResourceLocators();
+ if (methodMetadata != null && !methodMetadata.isEmpty()) {
+ for (MethodMetadata methodMeta : methodMetadata) {
+ Resource subRes = new Resource();
+ subRes.setPath(methodMeta.getPath());
+ methodOrSubresource.add(subRes);
+
+ /* also scan for all the path and matrix parameters */
+ List<Injectable> params = methodMeta.getFormalParameters();
+ if (params != null && params.size() > 0) {
+ for (Injectable p : params) {
+ switch (p.getParamType()) {
+ case QUERY:
+ /* do nothing */
+ break;
+ case HEADER:
+ /* do nothing */
+ break;
+ case ENTITY:
+ /* do nothing */
+ break;
+ case COOKIE:
+ /* not supported in WADL */
+ break;
+ case FORM:
+ /* should show up in the representation instead */
+ break;
+ case PATH:
+ subRes.getParam().add(buildParam(p));
+ break;
+ case MATRIX:
+ subRes.getParam().add(buildParam(p));
+ break;
+ case CONTEXT:
+ /* do nothing */
+ break;
+ }
+ }
+ }
+ }
+ }
+
return r;
}