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 2011/11/14 14:58:26 UTC

svn commit: r1201709 - in /cxf/branches/2.4.x-fixes: ./ rt/frontend/jaxrs/src/main/java/org/apache/cxf/jaxrs/model/wadl/ rt/frontend/jaxrs/src/main/java/org/apache/cxf/jaxrs/utils/ rt/frontend/jaxrs/src/test/java/org/apache/cxf/jaxrs/model/wadl/ rt/fro...

Author: sergeyb
Date: Mon Nov 14 13:58:26 2011
New Revision: 1201709

URL: http://svn.apache.org/viewvc?rev=1201709&view=rev
Log:
Merged revisions 1201708 via svnmerge from 
https://svn.apache.org/repos/asf/cxf/trunk

........
  r1201708 | sergeyb | 2011-11-14 13:56:57 +0000 (Mon, 14 Nov 2011) | 1 line
  
  [CXF-3903] Support for primitive multipart/form-data parameters
........

Modified:
    cxf/branches/2.4.x-fixes/   (props changed)
    cxf/branches/2.4.x-fixes/rt/frontend/jaxrs/src/main/java/org/apache/cxf/jaxrs/model/wadl/WadlGenerator.java
    cxf/branches/2.4.x-fixes/rt/frontend/jaxrs/src/main/java/org/apache/cxf/jaxrs/utils/JAXRSUtils.java
    cxf/branches/2.4.x-fixes/rt/frontend/jaxrs/src/main/java/org/apache/cxf/jaxrs/utils/ResourceUtils.java
    cxf/branches/2.4.x-fixes/rt/frontend/jaxrs/src/test/java/org/apache/cxf/jaxrs/model/wadl/FormInterface.java
    cxf/branches/2.4.x-fixes/rt/frontend/jaxrs/src/test/java/org/apache/cxf/jaxrs/model/wadl/WadlGeneratorTest.java
    cxf/branches/2.4.x-fixes/rt/frontend/jaxrs/src/test/java/org/apache/cxf/jaxrs/model/wadl/jaxb/Book.java

Propchange: cxf/branches/2.4.x-fixes/
------------------------------------------------------------------------------
--- svn:mergeinfo (original)
+++ svn:mergeinfo Mon Nov 14 13:58:26 2011
@@ -1 +1 @@
-/cxf/trunk:1197048,1198584,1198875,1198884,1199905,1200850,1200876,1200920,1200934,1201680,1201698
+/cxf/trunk:1197048,1198584,1198875,1198884,1199905,1200850,1200876,1200920,1200934,1201680,1201698,1201708

Propchange: cxf/branches/2.4.x-fixes/
------------------------------------------------------------------------------
Binary property 'svnmerge-integrated' - no diff available.

Modified: cxf/branches/2.4.x-fixes/rt/frontend/jaxrs/src/main/java/org/apache/cxf/jaxrs/model/wadl/WadlGenerator.java
URL: http://svn.apache.org/viewvc/cxf/branches/2.4.x-fixes/rt/frontend/jaxrs/src/main/java/org/apache/cxf/jaxrs/model/wadl/WadlGenerator.java?rev=1201709&r1=1201708&r2=1201709&view=diff
==============================================================================
--- cxf/branches/2.4.x-fixes/rt/frontend/jaxrs/src/main/java/org/apache/cxf/jaxrs/model/wadl/WadlGenerator.java (original)
+++ cxf/branches/2.4.x-fixes/rt/frontend/jaxrs/src/main/java/org/apache/cxf/jaxrs/model/wadl/WadlGenerator.java Mon Nov 14 13:58:26 2011
@@ -296,11 +296,13 @@ public class WadlGenerator implements Re
         Map<Parameter, Object> classParams = new HashMap<Parameter, Object>();
         List<Method> paramMethods = cri.getParameterMethods();
         for (Method m : paramMethods) {
-            classParams.put(ResourceUtils.getParameter(0, m.getAnnotations()), m);
+            classParams.put(ResourceUtils.getParameter(0, m.getAnnotations(),
+                                                       m.getParameterTypes()[0]), m);
         }
         List<Field> fieldParams = cri.getParameterFields();
         for (Field f : fieldParams) {
-            classParams.put(ResourceUtils.getParameter(0, f.getAnnotations()), f);
+            classParams.put(ResourceUtils.getParameter(0, f.getAnnotations(),
+                                                       f.getType()), f);
         }
         return classParams;
     }

Modified: cxf/branches/2.4.x-fixes/rt/frontend/jaxrs/src/main/java/org/apache/cxf/jaxrs/utils/JAXRSUtils.java
URL: http://svn.apache.org/viewvc/cxf/branches/2.4.x-fixes/rt/frontend/jaxrs/src/main/java/org/apache/cxf/jaxrs/utils/JAXRSUtils.java?rev=1201709&r1=1201708&r2=1201709&view=diff
==============================================================================
--- cxf/branches/2.4.x-fixes/rt/frontend/jaxrs/src/main/java/org/apache/cxf/jaxrs/utils/JAXRSUtils.java (original)
+++ cxf/branches/2.4.x-fixes/rt/frontend/jaxrs/src/main/java/org/apache/cxf/jaxrs/utils/JAXRSUtils.java Mon Nov 14 13:58:26 2011
@@ -200,7 +200,8 @@ public final class JAXRSUtils {
         MultivaluedMap<String, String> values = 
             (MultivaluedMap<String, String>)message.get(URITemplate.TEMPLATE_PARAMETERS);
         for (Method m : cri.getParameterMethods()) {
-            Parameter p = ResourceUtils.getParameter(0, m.getAnnotations());
+            Parameter p = ResourceUtils.getParameter(0, m.getAnnotations(), 
+                                                     m.getParameterTypes()[0]);
             Object o = createHttpParameterValue(p, 
                                                 m.getParameterTypes()[0],
                                                 m.getGenericParameterTypes()[0],
@@ -212,7 +213,8 @@ public final class JAXRSUtils {
         }
         // Param fields
         for (Field f : cri.getParameterFields()) {
-            Parameter p = ResourceUtils.getParameter(0, f.getAnnotations());
+            Parameter p = ResourceUtils.getParameter(0, f.getAnnotations(), 
+                                                     f.getType());
             Object o = createHttpParameterValue(p, 
                                                 f.getType(),
                                                 f.getGenericType(),

Modified: cxf/branches/2.4.x-fixes/rt/frontend/jaxrs/src/main/java/org/apache/cxf/jaxrs/utils/ResourceUtils.java
URL: http://svn.apache.org/viewvc/cxf/branches/2.4.x-fixes/rt/frontend/jaxrs/src/main/java/org/apache/cxf/jaxrs/utils/ResourceUtils.java?rev=1201709&r1=1201708&r2=1201709&view=diff
==============================================================================
--- cxf/branches/2.4.x-fixes/rt/frontend/jaxrs/src/main/java/org/apache/cxf/jaxrs/utils/ResourceUtils.java (original)
+++ cxf/branches/2.4.x-fixes/rt/frontend/jaxrs/src/main/java/org/apache/cxf/jaxrs/utils/ResourceUtils.java Mon Nov 14 13:58:26 2011
@@ -73,6 +73,7 @@ import org.apache.cxf.helpers.CastUtils;
 import org.apache.cxf.helpers.DOMUtils;
 import org.apache.cxf.jaxb.JAXBUtils;
 import org.apache.cxf.jaxrs.JAXRSServerFactoryBean;
+import org.apache.cxf.jaxrs.ext.multipart.Multipart;
 import org.apache.cxf.jaxrs.lifecycle.PerRequestResourceProvider;
 import org.apache.cxf.jaxrs.lifecycle.ResourceProvider;
 import org.apache.cxf.jaxrs.lifecycle.SingletonResourceProvider;
@@ -277,15 +278,16 @@ public final class ResourceUtils {
         if (paramAnns.length == 0) {
             return CastUtils.cast(Collections.emptyList(), Parameter.class);
         }
+        Class<?>[] types = resourceMethod.getParameterTypes();
         List<Parameter> params = new ArrayList<Parameter>(paramAnns.length);
         for (int i = 0; i < paramAnns.length; i++) {
-            Parameter p = getParameter(i, paramAnns[i]);
+            Parameter p = getParameter(i, paramAnns[i], types[i]);
             params.add(p);
         }
         return params;
     }
     
-    public static Parameter getParameter(int index, Annotation[] anns) {
+    public static Parameter getParameter(int index, Annotation[] anns, Class<?> type) {
         
         Context ctx = AnnotationUtils.getAnnotation(anns, Context.class);
         if (ctx != null) {
@@ -316,10 +318,19 @@ public final class ResourceUtils {
             return new Parameter(ParameterType.MATRIX, index, m.value(), isEncoded, dValue);
         }  
     
+        Parameter formParam = null;
         FormParam f = AnnotationUtils.getAnnotation(anns, FormParam.class);
         if (f != null) {
-            return new Parameter(ParameterType.FORM, index, f.value(), isEncoded, dValue);
-        }  
+            formParam = new Parameter(ParameterType.FORM, index, f.value(), isEncoded, dValue);
+        } else {    
+            Multipart multipart = AnnotationUtils.getAnnotation(anns, Multipart.class);
+            if (multipart != null && InjectionUtils.isPrimitive(type)) {
+                formParam = new Parameter(ParameterType.FORM, index, multipart.value(), isEncoded, dValue);
+            }
+        }
+        if (formParam != null) {
+            return formParam;
+        }
         
         HeaderParam h = AnnotationUtils.getAnnotation(anns, HeaderParam.class);
         if (h != null) {
@@ -564,7 +575,7 @@ public final class ResourceUtils {
             if (AnnotationUtils.isContextClass(params[i])) {
                 values[i] = JAXRSUtils.createContextValue(m, genericTypes[i], params[i]);
             } else {
-                Parameter p = ResourceUtils.getParameter(i, anns[i]);
+                Parameter p = ResourceUtils.getParameter(i, anns[i], params[i]);
                 values[i] = JAXRSUtils.createHttpParameterValue(
                                 p, params[i], genericTypes[i], anns[i], m, templateValues, null);
             }

Modified: cxf/branches/2.4.x-fixes/rt/frontend/jaxrs/src/test/java/org/apache/cxf/jaxrs/model/wadl/FormInterface.java
URL: http://svn.apache.org/viewvc/cxf/branches/2.4.x-fixes/rt/frontend/jaxrs/src/test/java/org/apache/cxf/jaxrs/model/wadl/FormInterface.java?rev=1201709&r1=1201708&r2=1201709&view=diff
==============================================================================
--- cxf/branches/2.4.x-fixes/rt/frontend/jaxrs/src/test/java/org/apache/cxf/jaxrs/model/wadl/FormInterface.java (original)
+++ cxf/branches/2.4.x-fixes/rt/frontend/jaxrs/src/test/java/org/apache/cxf/jaxrs/model/wadl/FormInterface.java Mon Nov 14 13:58:26 2011
@@ -27,6 +27,8 @@ import javax.ws.rs.Produces;
 import javax.ws.rs.core.MediaType;
 import javax.ws.rs.core.MultivaluedMap;
 
+import org.apache.cxf.jaxrs.ext.multipart.Multipart;
+
 public interface FormInterface {
     @Path("/form1")
     @POST
@@ -44,4 +46,11 @@ public interface FormInterface {
     @Produces(MediaType.TEXT_PLAIN)
     String form3(@PathParam("id") String id, 
                  @FormParam("field1") String f1, @FormParam("field2") String f2);
+    
+    @Path("/form4/{id}")
+    @POST
+    @Consumes("multipart/form-data")
+    @Produces(MediaType.TEXT_PLAIN)
+    String form4(@PathParam("id") String id, 
+                 @Multipart("field1") String f1, @Multipart("field2") String f2);
 }

Modified: cxf/branches/2.4.x-fixes/rt/frontend/jaxrs/src/test/java/org/apache/cxf/jaxrs/model/wadl/WadlGeneratorTest.java
URL: http://svn.apache.org/viewvc/cxf/branches/2.4.x-fixes/rt/frontend/jaxrs/src/test/java/org/apache/cxf/jaxrs/model/wadl/WadlGeneratorTest.java?rev=1201709&r1=1201708&r2=1201709&view=diff
==============================================================================
--- cxf/branches/2.4.x-fixes/rt/frontend/jaxrs/src/test/java/org/apache/cxf/jaxrs/model/wadl/WadlGeneratorTest.java (original)
+++ cxf/branches/2.4.x-fixes/rt/frontend/jaxrs/src/test/java/org/apache/cxf/jaxrs/model/wadl/WadlGeneratorTest.java Mon Nov 14 13:58:26 2011
@@ -440,14 +440,15 @@ public class WadlGeneratorTest extends A
                          new Param("mid", "matrix", "xs:int"));
         checkDocs(resourceEls.get(5), "", "Book subresource", ""); 
         // should have 4 child resources
-        List<Element> subResourceEls = getElements(resourceEls.get(5), "resource", 5);
+        List<Element> subResourceEls = getElements(resourceEls.get(5), "resource", 6);
 
         assertEquals("/book", subResourceEls.get(0).getAttribute("path"));
         assertEquals("/form1", subResourceEls.get(1).getAttribute("path"));
         assertEquals("/form2", subResourceEls.get(2).getAttribute("path"));
         assertEquals("/form3/{id}", subResourceEls.get(3).getAttribute("path"));
-        assertEquals("/chapter/{cid}", subResourceEls.get(4).getAttribute("path"));
-        checkDocs(subResourceEls.get(4), "", "Chapter subresource", "");
+        assertEquals("/form4/{id}", subResourceEls.get(4).getAttribute("path"));
+        assertEquals("/chapter/{cid}", subResourceEls.get(5).getAttribute("path"));
+        checkDocs(subResourceEls.get(5), "", "Chapter subresource", "");
         // verify book-subresource /book resource
         // GET 
         verifyGetResourceMethod(subResourceEls.get(0), bookEl, null);
@@ -472,9 +473,9 @@ public class WadlGeneratorTest extends A
         
         
         // verify subresource /chapter/{id}
-        List<Element> chapterMethodEls = getElements(subResourceEls.get(4), "resource", 1);
+        List<Element> chapterMethodEls = getElements(subResourceEls.get(5), "resource", 1);
         assertEquals("/id", chapterMethodEls.get(0).getAttribute("path"));
-        verifyParameters(subResourceEls.get(4), 1, 
+        verifyParameters(subResourceEls.get(5), 1, 
                          new Param("cid", "template", "xs:int"));
         // GET
         verifyGetResourceMethod(chapterMethodEls.get(0), chapterEl, "Get the chapter");

Modified: cxf/branches/2.4.x-fixes/rt/frontend/jaxrs/src/test/java/org/apache/cxf/jaxrs/model/wadl/jaxb/Book.java
URL: http://svn.apache.org/viewvc/cxf/branches/2.4.x-fixes/rt/frontend/jaxrs/src/test/java/org/apache/cxf/jaxrs/model/wadl/jaxb/Book.java?rev=1201709&r1=1201708&r2=1201709&view=diff
==============================================================================
--- cxf/branches/2.4.x-fixes/rt/frontend/jaxrs/src/test/java/org/apache/cxf/jaxrs/model/wadl/jaxb/Book.java (original)
+++ cxf/branches/2.4.x-fixes/rt/frontend/jaxrs/src/test/java/org/apache/cxf/jaxrs/model/wadl/jaxb/Book.java Mon Nov 14 13:58:26 2011
@@ -79,5 +79,9 @@ public class Book implements FormInterfa
     public String form3(String identificator, String f1, String f2) {
         return "";
     }
+
+    public String form4(String theid, String f1, String f2) {
+        return "";
+    }
     
 }