Author: sergeyb
Date: Tue Jan 11 22:07:26 2011
New Revision: 1057891
URL: http://svn.apache.org/viewvc?rev=1057891&view=rev
Log:
[CXF-3242] Better handling of primitive response/request types
Modified:
cxf/trunk/rt/frontend/jaxrs/src/main/java/org/apache/cxf/jaxrs/model/wadl/WadlGenerator.java
cxf/trunk/rt/frontend/jaxrs/src/test/java/org/apache/cxf/jaxrs/model/wadl/WadlGeneratorTest.java
Modified:
cxf/trunk/rt/frontend/jaxrs/src/main/java/org/apache/cxf/jaxrs/model/wadl/WadlGenerator.java
URL:
http://svn.apache.org/viewvc/cxf/trunk/rt/frontend/jaxrs/src/main/java/org/apache/cxf/jaxrs/model/wadl/WadlGenerator.java?rev=1057891&r1=1057890&r2=1057891&view=diff
==============================================================================
---
cxf/trunk/rt/frontend/jaxrs/src/main/java/org/apache/cxf/jaxrs/model/wadl/WadlGenerator.java
(original)
+++
cxf/trunk/rt/frontend/jaxrs/src/main/java/org/apache/cxf/jaxrs/model/wadl/WadlGenerator.java
Tue Jan 11 22:07:26 2011
@@ -461,12 +461,10 @@ public class WadlGenerator implements Re
}
protected void doWriteParam(StringBuilder sb, Parameter pm, Class<?> type,
String paramName) {
- if (ParameterType.REQUEST_BODY == pm.getType()) {
- return;
- }
sb.append("<param name=\"").append(paramName).append("\" ");
String style = ParameterType.PATH == pm.getType() ? "template"
: ParameterType.FORM == pm.getType() ? "query"
+ : ParameterType.REQUEST_BODY == pm.getType() ? "plain"
: pm.getType().toString().toLowerCase();
sb.append("style=\"").append(style).append("\"");
if (pm.getDefaultValue() != null) {
@@ -489,25 +487,40 @@ public class WadlGenerator implements Re
} else if (isWildcard(types)) {
types =
Collections.singletonList(MediaType.APPLICATION_OCTET_STREAM_TYPE);
}
+
+ boolean isPrimitive = InjectionUtils.isPrimitive(type);
for (MediaType mt : types) {
- if (InjectionUtils.isPrimitive(type)) {
- String rep =
XmlSchemaPrimitiveUtils.getSchemaRepresentation(type);
- String value = rep == null ? type.getSimpleName() : rep;
- sb.append("<!-- Primitive type : " + value + " -->");
- }
+
sb.append("<representation");
sb.append(" mediaType=\"").append(mt.toString()).append("\"");
- type = getActualJaxbType(type, ori.getAnnotatedMethod(), inbound);
- if (qnameResolver != null && mt.getSubtype().contains("xml") &&
jaxbTypes.contains(type)) {
- generateQName(sb, qnameResolver, clsMap, type,
- getBodyAnnotations(ori, inbound));
+ if (isPrimitive) {
+ sb.append(">");
+ Parameter p = inbound ? getRequestBodyParam(ori)
+ : new Parameter(ParameterType.REQUEST_BODY, 0, "result");
+ doWriteParam(sb, p, type, p.getName() == null ? "request" :
p.getName());
+ sb.append("</representation>");
+ } else {
+ type = getActualJaxbType(type, ori.getAnnotatedMethod(),
inbound);
+ if (qnameResolver != null && mt.getSubtype().contains("xml")
&& jaxbTypes.contains(type)) {
+ generateQName(sb, qnameResolver, clsMap, type,
+ getBodyAnnotations(ori, inbound));
+ }
+ sb.append("/>");
}
- sb.append("/>");
}
}
+ private Parameter getRequestBodyParam(OperationResourceInfo ori) {
+ for (Parameter p : ori.getParameters()) {
+ if (p.getType() == ParameterType.REQUEST_BODY) {
+ return p;
+ }
+ }
+ throw new IllegalStateException();
+ }
+
private boolean isWildcard(List<MediaType> types) {
return types.size() == 1 &&
types.get(0).equals(MediaType.WILDCARD_TYPE);
}
Modified:
cxf/trunk/rt/frontend/jaxrs/src/test/java/org/apache/cxf/jaxrs/model/wadl/WadlGeneratorTest.java
URL:
http://svn.apache.org/viewvc/cxf/trunk/rt/frontend/jaxrs/src/test/java/org/apache/cxf/jaxrs/model/wadl/WadlGeneratorTest.java?rev=1057891&r1=1057890&r2=1057891&view=diff
==============================================================================
---
cxf/trunk/rt/frontend/jaxrs/src/test/java/org/apache/cxf/jaxrs/model/wadl/WadlGeneratorTest.java
(original)
+++
cxf/trunk/rt/frontend/jaxrs/src/test/java/org/apache/cxf/jaxrs/model/wadl/WadlGeneratorTest.java
Tue Jan 11 22:07:26 2011
@@ -524,6 +524,10 @@ public class WadlGeneratorTest extends A
WadlGenerator.WADL_NS, "representation");
assertEquals(1, representationEls.size());
verifyMediTypeAndElementValue(representationEls.get(0), mediaType,
elementValue);
+ if ("text/plain".equals(mediaType)) {
+ String pName = "request".equals(name) ? "request" : "result";
+ verifyParameters(representationEls.get(0), 1, new Param(pName,
"plain", "xs:string"));
+ }
}
private void verifyXmlJsonRepresentations(Element element, String type) {