Return-Path: X-Original-To: apmail-cxf-commits-archive@www.apache.org Delivered-To: apmail-cxf-commits-archive@www.apache.org Received: from mail.apache.org (hermes.apache.org [140.211.11.3]) by minotaur.apache.org (Postfix) with SMTP id D3A07967C for ; Mon, 14 Nov 2011 13:58:52 +0000 (UTC) Received: (qmail 6355 invoked by uid 500); 14 Nov 2011 13:58:52 -0000 Delivered-To: apmail-cxf-commits-archive@cxf.apache.org Received: (qmail 6312 invoked by uid 500); 14 Nov 2011 13:58:52 -0000 Mailing-List: contact commits-help@cxf.apache.org; run by ezmlm Precedence: bulk List-Help: List-Unsubscribe: List-Post: List-Id: Reply-To: dev@cxf.apache.org Delivered-To: mailing list commits@cxf.apache.org Received: (qmail 6300 invoked by uid 99); 14 Nov 2011 13:58:52 -0000 Received: from nike.apache.org (HELO nike.apache.org) (192.87.106.230) by apache.org (qpsmtpd/0.29) with ESMTP; Mon, 14 Nov 2011 13:58:52 +0000 X-ASF-Spam-Status: No, hits=-2000.0 required=5.0 tests=ALL_TRUSTED X-Spam-Check-By: apache.org Received: from [140.211.11.4] (HELO eris.apache.org) (140.211.11.4) by apache.org (qpsmtpd/0.29) with ESMTP; Mon, 14 Nov 2011 13:58:48 +0000 Received: from eris.apache.org (localhost [127.0.0.1]) by eris.apache.org (Postfix) with ESMTP id 48B982388993 for ; Mon, 14 Nov 2011 13:58:27 +0000 (UTC) Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit Subject: 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... Date: Mon, 14 Nov 2011 13:58:26 -0000 To: commits@cxf.apache.org From: sergeyb@apache.org X-Mailer: svnmailer-1.0.8-patched Message-Id: <20111114135827.48B982388993@eris.apache.org> X-Virus-Checked: Checked by ClamAV on apache.org 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 classParams = new HashMap(); List 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 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 values = (MultivaluedMap)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 params = new ArrayList(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 subResourceEls = getElements(resourceEls.get(5), "resource", 5); + List 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 chapterMethodEls = getElements(subResourceEls.get(4), "resource", 1); + List 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 ""; + } }