Author: sergeyb
Date: Fri Sep 30 12:36:47 2011
New Revision: 1177631
URL: http://svn.apache.org/viewvc?rev=1177631&view=rev
Log:
[CXF-3797] Better support for optional or repeating query parametets, thanks to
Christos Fragoulides
Modified:
cxf/trunk/rt/frontend/jaxrs/src/main/java/org/apache/cxf/jaxrs/ext/codegen/SourceGenerator.java
cxf/trunk/tools/wadlto/jaxrs/src/test/resources/wadl/bookstore.xml
Modified:
cxf/trunk/rt/frontend/jaxrs/src/main/java/org/apache/cxf/jaxrs/ext/codegen/SourceGenerator.java
URL:
http://svn.apache.org/viewvc/cxf/trunk/rt/frontend/jaxrs/src/main/java/org/apache/cxf/jaxrs/ext/codegen/SourceGenerator.java?rev=1177631&r1=1177630&r2=1177631&view=diff
==============================================================================
---
cxf/trunk/rt/frontend/jaxrs/src/main/java/org/apache/cxf/jaxrs/ext/codegen/SourceGenerator.java
(original)
+++
cxf/trunk/rt/frontend/jaxrs/src/main/java/org/apache/cxf/jaxrs/ext/codegen/SourceGenerator.java
Fri Sep 30 12:36:47 2011
@@ -106,6 +106,7 @@ public class SourceGenerator {
private static final Map<String, Class<?>> HTTP_METHOD_ANNOTATIONS;
private static final Map<String, Class<?>> PARAM_ANNOTATIONS;
private static final Set<String> RESOURCE_LEVEL_PARAMS;
+ private static final Map<String, String> AUTOBOXED_PRIMITIVES_MAP;
static {
HTTP_METHOD_ANNOTATIONS = new HashMap<String, Class<?>>();
@@ -125,6 +126,15 @@ public class SourceGenerator {
RESOURCE_LEVEL_PARAMS = new HashSet<String>();
RESOURCE_LEVEL_PARAMS.add("template");
RESOURCE_LEVEL_PARAMS.add("matrix");
+
+ AUTOBOXED_PRIMITIVES_MAP = new HashMap<String, String>();
+ AUTOBOXED_PRIMITIVES_MAP.put(byte.class.getSimpleName(),
Byte.class.getSimpleName());
+ AUTOBOXED_PRIMITIVES_MAP.put(short.class.getSimpleName(),
Short.class.getSimpleName());
+ AUTOBOXED_PRIMITIVES_MAP.put(int.class.getSimpleName(),
Integer.class.getSimpleName());
+ AUTOBOXED_PRIMITIVES_MAP.put(long.class.getSimpleName(),
Long.class.getSimpleName());
+ AUTOBOXED_PRIMITIVES_MAP.put(float.class.getSimpleName(),
Float.class.getSimpleName());
+ AUTOBOXED_PRIMITIVES_MAP.put(double.class.getSimpleName(),
Double.class.getSimpleName());
+ AUTOBOXED_PRIMITIVES_MAP.put(boolean.class.getSimpleName(),
Boolean.class.getSimpleName());
}
private Comparator<String> importsComparator;
@@ -719,8 +729,14 @@ public class SourceGenerator {
writeAnnotation(sbCode, imports, paramAnn, name, false, false);
sbCode.append(" ");
}
+ boolean isRepeating =
Boolean.valueOf(paramEl.getAttribute("repeating"));
String type = getPrimitiveType(paramEl);
- if (Boolean.valueOf(paramEl.getAttribute("repeating"))) {
+ if (paramAnn == QueryParam.class
+ && (isRepeating ||
!Boolean.valueOf(paramEl.getAttribute("required")))
+ && AUTOBOXED_PRIMITIVES_MAP.containsKey(type)) {
+ type = AUTOBOXED_PRIMITIVES_MAP.get(type);
+ }
+ if (isRepeating) {
addImport(imports, List.class.getName());
type = "List<" + type + ">";
}
Modified: cxf/trunk/tools/wadlto/jaxrs/src/test/resources/wadl/bookstore.xml
URL:
http://svn.apache.org/viewvc/cxf/trunk/tools/wadlto/jaxrs/src/test/resources/wadl/bookstore.xml?rev=1177631&r1=1177630&r2=1177631&view=diff
==============================================================================
--- cxf/trunk/tools/wadlto/jaxrs/src/test/resources/wadl/bookstore.xml
(original)
+++ cxf/trunk/tools/wadlto/jaxrs/src/test/resources/wadl/bookstore.xml Fri Sep
30 12:36:47 2011
@@ -97,9 +97,9 @@
<param name="hid" style="header" type="xs:int">
<doc>header param</doc>
</param>
- <param name="provider.bar" style="query" type="xs:int"/>
+ <param name="provider.bar" style="query" required="true" type="xs:int"/>
<param name="a" style="query" repeating="true" type="xs:string"/>
-
+ <param name="b" style="query" repeating="true" type="xs:long"/>
<representation mediaType="application/xml" element="prefix1:theBook2">
<doc>InputBook</doc>
</representation>