cxf-commits mailing list archives

Site index · List index
Message view « Date » · « Thread »
Top « Date » · « Thread »
From serg...@apache.org
Subject svn commit: r737092 - in /cxf/branches/2.1.x-fixes: ./ rt/frontend/jaxrs/src/main/java/org/apache/cxf/jaxrs/ext/ rt/frontend/jaxrs/src/main/java/org/apache/cxf/jaxrs/impl/ rt/frontend/jaxrs/src/main/java/org/apache/cxf/jaxrs/provider/ rt/frontend/jaxrs...
Date Fri, 23 Jan 2009 16:57:05 GMT
Author: sergeyb
Date: Fri Jan 23 08:57:04 2009
New Revision: 737092

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

........
  r737046 | sergeyb | 2009-01-23 15:16:21 +0000 (Fri, 23 Jan 2009) | 1 line
  
  JAXRS : handling of multiparts by arbitrary providers 
........

Added:
    cxf/branches/2.1.x-fixes/rt/frontend/jaxrs/src/main/java/org/apache/cxf/jaxrs/utils/multipart/
      - copied from r737046, cxf/trunk/rt/frontend/jaxrs/src/main/java/org/apache/cxf/jaxrs/utils/multipart/
    cxf/branches/2.1.x-fixes/rt/frontend/jaxrs/src/main/java/org/apache/cxf/jaxrs/utils/multipart/AttachmentUtils.java
      - copied, changed from r737046, cxf/trunk/rt/frontend/jaxrs/src/main/java/org/apache/cxf/jaxrs/utils/multipart/AttachmentUtils.java
    cxf/branches/2.1.x-fixes/rt/frontend/jaxrs/src/main/java/org/apache/cxf/jaxrs/utils/multipart/MultipartInfo.java
      - copied unchanged from r737046, cxf/trunk/rt/frontend/jaxrs/src/main/java/org/apache/cxf/jaxrs/utils/multipart/MultipartInfo.java
    cxf/branches/2.1.x-fixes/systests/src/test/java/org/apache/cxf/systest/jaxrs/attachmentData2
      - copied unchanged from r737046, cxf/trunk/systests/src/test/java/org/apache/cxf/systest/jaxrs/attachmentData2
Removed:
    cxf/branches/2.1.x-fixes/rt/frontend/jaxrs/src/main/java/org/apache/cxf/jaxrs/utils/AttachmentUtils.java
Modified:
    cxf/branches/2.1.x-fixes/   (props changed)
    cxf/branches/2.1.x-fixes/rt/frontend/jaxrs/src/main/java/org/apache/cxf/jaxrs/ext/MultipartID.java
    cxf/branches/2.1.x-fixes/rt/frontend/jaxrs/src/main/java/org/apache/cxf/jaxrs/impl/HttpHeadersImpl.java
    cxf/branches/2.1.x-fixes/rt/frontend/jaxrs/src/main/java/org/apache/cxf/jaxrs/provider/AbstractJAXBProvider.java
    cxf/branches/2.1.x-fixes/rt/frontend/jaxrs/src/main/java/org/apache/cxf/jaxrs/provider/ActivationProvider.java
    cxf/branches/2.1.x-fixes/rt/frontend/jaxrs/src/main/java/org/apache/cxf/jaxrs/provider/JAXBElementProvider.java
    cxf/branches/2.1.x-fixes/rt/frontend/jaxrs/src/main/java/org/apache/cxf/jaxrs/provider/JSONProvider.java
    cxf/branches/2.1.x-fixes/rt/frontend/jaxrs/src/main/java/org/apache/cxf/jaxrs/provider/ProviderFactory.java
    cxf/branches/2.1.x-fixes/rt/frontend/jaxrs/src/test/java/org/apache/cxf/jaxrs/provider/ProviderFactoryTest.java
    cxf/branches/2.1.x-fixes/systests/src/test/java/org/apache/cxf/systest/jaxrs/JAXRSMultipartTest.java
    cxf/branches/2.1.x-fixes/systests/src/test/java/org/apache/cxf/systest/jaxrs/MultipartStore.java

Propchange: cxf/branches/2.1.x-fixes/
------------------------------------------------------------------------------
--- svn:mergeinfo (original)
+++ svn:mergeinfo Fri Jan 23 08:57:04 2009
@@ -1 +1 @@
-/cxf/trunk:686333-686363,686764,686820,687096,687194,687363,687387,687463,687543,687722,687798,687814,687817,687891,687910,687914,688086,688102,688133,688596,688735,688870,689572,689596,689855,689924,690067,690289,691246,691271,691295,691338,691355,691488,691602,691646,691706,691728,692116,692157,692310,692466,692499,693653,693819,694179,694263,694417,694716,694744,694747,694795,694869,694981,694987,694993,695041,695096,695396,695484,695537,695552,695561,695619,695684,695835,695840,695868,695935,695977,696016,696094,696433,696720,697085,697868,698128,699289,700261,700507,700602,700981,701316,701783,701830,701862,702187,702205-702248,702267,702547,702561,702580,702602,702609,702616,702653,702656,702957,703191,703239,703309,703501,703513,703548,704584,704937,704997,705150,705235,705274,705340,705446,705548,705614,705692,705708,706482,706631,706675,706900,706909,707034,707089,707100,707902,708035,708044,708074,708410,708417,708550,708554,709353-709354,709425,710076,710150,71015
 4,711193,711388,711410,711490,711635,711949,711975,712194,712198,712238,712272,712299,712312,712670,712893,713082,713095-713096,713099,713584,713597,713737,713804,713899,714167-714168,714245,714255,717937-717961,718281-718448,718565,718620,718640,718665,718970,719017,719210,719215-719218,719222-719273,719305,719327-719680,720053,720119-720218,720238,720293-720316,720497,721221,721241,721501,722117,722129,722412,722988,723024,723338,723378,723716-723791,724333-724372,724433-724438,724449,724481,724485,724668,724780,724782,724785,724793,724795,724940,725071,725316,725332,725335,725348,725364,725418,725425-725426,725455,725506,725554,725562,725651,725671,725688,725754,725773,725799,725839,726342,726524,726631,726634,726637,726639,726692,726724,726769,726992,727096,727445,727521,727568,727692,727754,727781,727792,728070,728087,728696,728897,729051,729430,729449,729460,729863,730082,730139,730889,730891,731598,731604,731615,731631,731635,732036,732050,732320,732363,732411,732450,
 732710,732827,733512,733582,733901,734367,734462,734666,734762,734772,734812,734836,734965,735113,735252,735722-735723,735729,735734,735751,735782,735787,735987,736352,736358-736362,736408,736423,736448,736491,736621,736726,736736,736738-736739,736766,736825,736852
+/cxf/trunk:686333-686363,686764,686820,687096,687194,687363,687387,687463,687543,687722,687798,687814,687817,687891,687910,687914,688086,688102,688133,688596,688735,688870,689572,689596,689855,689924,690067,690289,691246,691271,691295,691338,691355,691488,691602,691646,691706,691728,692116,692157,692310,692466,692499,693653,693819,694179,694263,694417,694716,694744,694747,694795,694869,694981,694987,694993,695041,695096,695396,695484,695537,695552,695561,695619,695684,695835,695840,695868,695935,695977,696016,696094,696433,696720,697085,697868,698128,699289,700261,700507,700602,700981,701316,701783,701830,701862,702187,702205-702248,702267,702547,702561,702580,702602,702609,702616,702653,702656,702957,703191,703239,703309,703501,703513,703548,704584,704937,704997,705150,705235,705274,705340,705446,705548,705614,705692,705708,706482,706631,706675,706900,706909,707034,707089,707100,707902,708035,708044,708074,708410,708417,708550,708554,709353-709354,709425,710076,710150,71015
 4,711193,711388,711410,711490,711635,711949,711975,712194,712198,712238,712272,712299,712312,712670,712893,713082,713095-713096,713099,713584,713597,713737,713804,713899,714167-714168,714245,714255,717937-717961,718281-718448,718565,718620,718640,718665,718970,719017,719210,719215-719218,719222-719273,719305,719327-719680,720053,720119-720218,720238,720293-720316,720497,721221,721241,721501,722117,722129,722412,722988,723024,723338,723378,723716-723791,724333-724372,724433-724438,724449,724481,724485,724668,724780,724782,724785,724793,724795,724940,725071,725316,725332,725335,725348,725364,725418,725425-725426,725455,725506,725554,725562,725651,725671,725688,725754,725773,725799,725839,726342,726524,726631,726634,726637,726639,726692,726724,726769,726992,727096,727445,727521,727568,727692,727754,727781,727792,728070,728087,728696,728897,729051,729430,729449,729460,729863,730082,730139,730889,730891,731598,731604,731615,731631,731635,732036,732050,732320,732363,732411,732450,
 732710,732827,733512,733582,733901,734367,734462,734666,734762,734772,734812,734836,734965,735113,735252,735722-735723,735729,735734,735751,735782,735787,735987,736352,736358-736362,736408,736423,736448,736491,736621,736726,736736,736738-736739,736766,736825,736852,737046

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

Modified: cxf/branches/2.1.x-fixes/rt/frontend/jaxrs/src/main/java/org/apache/cxf/jaxrs/ext/MultipartID.java
URL: http://svn.apache.org/viewvc/cxf/branches/2.1.x-fixes/rt/frontend/jaxrs/src/main/java/org/apache/cxf/jaxrs/ext/MultipartID.java?rev=737092&r1=737091&r2=737092&view=diff
==============================================================================
--- cxf/branches/2.1.x-fixes/rt/frontend/jaxrs/src/main/java/org/apache/cxf/jaxrs/ext/MultipartID.java
(original)
+++ cxf/branches/2.1.x-fixes/rt/frontend/jaxrs/src/main/java/org/apache/cxf/jaxrs/ext/MultipartID.java
Fri Jan 23 08:57:04 2009
@@ -27,5 +27,6 @@
 @Target({ElementType.PARAMETER, ElementType.FIELD })
 @Retention(RetentionPolicy.RUNTIME)
 public @interface MultipartID {
-    String value();
+    String value() default "root";
+    String type() default "*/*";
 }

Modified: cxf/branches/2.1.x-fixes/rt/frontend/jaxrs/src/main/java/org/apache/cxf/jaxrs/impl/HttpHeadersImpl.java
URL: http://svn.apache.org/viewvc/cxf/branches/2.1.x-fixes/rt/frontend/jaxrs/src/main/java/org/apache/cxf/jaxrs/impl/HttpHeadersImpl.java?rev=737092&r1=737091&r2=737092&view=diff
==============================================================================
--- cxf/branches/2.1.x-fixes/rt/frontend/jaxrs/src/main/java/org/apache/cxf/jaxrs/impl/HttpHeadersImpl.java
(original)
+++ cxf/branches/2.1.x-fixes/rt/frontend/jaxrs/src/main/java/org/apache/cxf/jaxrs/impl/HttpHeadersImpl.java
Fri Jan 23 08:57:04 2009
@@ -43,8 +43,9 @@
     @SuppressWarnings("unchecked")
     public HttpHeadersImpl(Message message) {
         this.m = message;
-        this.headers = new MetadataMap<String, String>(
-            (Map<String, List<String>>)message.get(Message.PROTOCOL_HEADERS));
+        Map<String, List<String>> mHeaders = (Map<String, List<String>>)message.get(Message.PROTOCOL_HEADERS);
+        this.headers = mHeaders == null ? new MetadataMap<String, String>()
+                                        : new MetadataMap<String, String>(mHeaders);
     }
     
     public List<MediaType> getAcceptableMediaTypes() {
@@ -67,7 +68,8 @@
     }
 
     public MediaType getMediaType() {
-        return MediaType.valueOf((String)m.get(Message.CONTENT_TYPE));
+        String value = (String)m.get(Message.CONTENT_TYPE);
+        return value == null ? MediaType.valueOf("*/*") : MediaType.valueOf(value);
     }
 
     public MultivaluedMap<String, String> getRequestHeaders() {

Modified: cxf/branches/2.1.x-fixes/rt/frontend/jaxrs/src/main/java/org/apache/cxf/jaxrs/provider/AbstractJAXBProvider.java
URL: http://svn.apache.org/viewvc/cxf/branches/2.1.x-fixes/rt/frontend/jaxrs/src/main/java/org/apache/cxf/jaxrs/provider/AbstractJAXBProvider.java?rev=737092&r1=737091&r2=737092&view=diff
==============================================================================
--- cxf/branches/2.1.x-fixes/rt/frontend/jaxrs/src/main/java/org/apache/cxf/jaxrs/provider/AbstractJAXBProvider.java
(original)
+++ cxf/branches/2.1.x-fixes/rt/frontend/jaxrs/src/main/java/org/apache/cxf/jaxrs/provider/AbstractJAXBProvider.java
Fri Jan 23 08:57:04 2009
@@ -19,8 +19,6 @@
 
 package org.apache.cxf.jaxrs.provider;
 
-import java.io.IOException;
-import java.io.InputStream;
 import java.lang.annotation.Annotation;
 import java.lang.reflect.Type;
 import java.util.List;
@@ -50,7 +48,6 @@
 import org.apache.cxf.common.util.PackageUtils;
 import org.apache.cxf.jaxrs.ext.MessageContext;
 import org.apache.cxf.jaxrs.utils.AnnotationUtils;
-import org.apache.cxf.jaxrs.utils.AttachmentUtils;
 import org.apache.cxf.jaxrs.utils.InjectionUtils;
 import org.apache.cxf.jaxrs.utils.schemas.SchemaHandler;
 
@@ -59,8 +56,6 @@
     
     protected static final ResourceBundle BUNDLE = BundleUtils.getBundle(AbstractJAXBProvider.class);
 
-    private static final MediaType MULTIPART_RELATED_TYPE = 
-        MediaType.valueOf("multipart/related");
     private static final Logger LOG = LogUtils.getL7dLogger(AbstractJAXBProvider.class);
     private static final String CHARSET_PARAMETER = "charset"; 
         
@@ -100,17 +95,6 @@
         return mc;
     }
     
-    public InputStream getInputStream(Class<Object> type, Annotation[] anns, MediaType
mt, 
-                                      InputStream is) throws IOException {
-        if (mt.isCompatible(MULTIPART_RELATED_TYPE)) {
-            is = (InputStream)AttachmentUtils.getMultipart(type, anns, mt, getContext(),
is);
-            if (is == null) {
-                throw new WebApplicationException(404);
-            }
-        }
-        return is;
-    }
-    
     @SuppressWarnings("unchecked")
     protected JAXBContext getJAXBContext(Class<?> type, Type genericType) throws JAXBException
{
         if (mc != null) {

Modified: cxf/branches/2.1.x-fixes/rt/frontend/jaxrs/src/main/java/org/apache/cxf/jaxrs/provider/ActivationProvider.java
URL: http://svn.apache.org/viewvc/cxf/branches/2.1.x-fixes/rt/frontend/jaxrs/src/main/java/org/apache/cxf/jaxrs/provider/ActivationProvider.java?rev=737092&r1=737091&r2=737092&view=diff
==============================================================================
--- cxf/branches/2.1.x-fixes/rt/frontend/jaxrs/src/main/java/org/apache/cxf/jaxrs/provider/ActivationProvider.java
(original)
+++ cxf/branches/2.1.x-fixes/rt/frontend/jaxrs/src/main/java/org/apache/cxf/jaxrs/provider/ActivationProvider.java
Fri Jan 23 08:57:04 2009
@@ -35,7 +35,8 @@
 import javax.ws.rs.ext.Provider;
 
 import org.apache.cxf.jaxrs.ext.MessageContext;
-import org.apache.cxf.jaxrs.utils.AttachmentUtils;
+import org.apache.cxf.jaxrs.utils.multipart.AttachmentUtils;
+import org.apache.cxf.jaxrs.utils.multipart.MultipartInfo;
 
 @Provider
 @ConsumeMime("multipart/related")
@@ -45,17 +46,37 @@
     private MessageContext mc;
     
     public boolean isReadable(Class<?> type, Type genericType, Annotation[] annotations)
{
-        return DataSource.class.isAssignableFrom(type)
-               || DataHandler.class.isAssignableFrom(type);
+        
+        if (DataHandler.class.isAssignableFrom(type) || DataSource.class.isAssignableFrom(type))
{
+            return true;
+        }
+        if (mc == null) {
+            return false;
+        }
+        MediaType mt = mc.getHttpHeaders().getMediaType();        
+        if (mt.getType().equals("multipart") && mt.getSubtype().equals("related"))
{
+            return true;
+        } 
+
+        return false;
     }
 
     public Object readFrom(Class<Object> c, Type t, Annotation[] anns, MediaType mt,

                            MultivaluedMap<String, String> headers, InputStream is)

         throws IOException, WebApplicationException {
-        
-        Object multipart = AttachmentUtils.getMultipart(c, anns, mt, mc, is);
+        MultipartInfo multipart = AttachmentUtils.getMultipart(c, anns, mt, mc, is);
         if (multipart != null) {
-            return multipart;
+            if (InputStream.class.isAssignableFrom(multipart.getPart().getClass())) {
+                MessageBodyReader<Object> r = 
+                    mc.getProviders().getMessageBodyReader(c, t, anns, multipart.getType());
+                if (r != null) {
+                    return r.readFrom(c, t, anns, multipart.getType(), headers, 
+                                           (InputStream)multipart.getPart());
+                }
+            } else {
+                // it's either DataSource or DataHandler
+                return multipart.getPart();
+            }
         }
         throw new WebApplicationException(404);
     }

Modified: cxf/branches/2.1.x-fixes/rt/frontend/jaxrs/src/main/java/org/apache/cxf/jaxrs/provider/JAXBElementProvider.java
URL: http://svn.apache.org/viewvc/cxf/branches/2.1.x-fixes/rt/frontend/jaxrs/src/main/java/org/apache/cxf/jaxrs/provider/JAXBElementProvider.java?rev=737092&r1=737091&r2=737092&view=diff
==============================================================================
--- cxf/branches/2.1.x-fixes/rt/frontend/jaxrs/src/main/java/org/apache/cxf/jaxrs/provider/JAXBElementProvider.java
(original)
+++ cxf/branches/2.1.x-fixes/rt/frontend/jaxrs/src/main/java/org/apache/cxf/jaxrs/provider/JAXBElementProvider.java
Fri Jan 23 08:57:04 2009
@@ -45,9 +45,7 @@
 import org.apache.cxf.jaxrs.utils.schemas.SchemaHandler;
 
 @ProduceMime({"application/xml", "text/xml" })
-@ConsumeMime({"application/xml", "text/xml", 
-           "multipart/related;type=\"text/xml\"",
-           "multipart/related;type=\"application/xml\"" })
+@ConsumeMime({"application/xml", "text/xml" })
 @Provider
 public class JAXBElementProvider extends AbstractJAXBProvider  {
     
@@ -83,10 +81,9 @@
     }
     
     public Object readFrom(Class<Object> type, Type genericType, Annotation[] anns,
MediaType mt, 
-        MultivaluedMap<String, String> headers, InputStream stream) 
+        MultivaluedMap<String, String> headers, InputStream is) 
         throws IOException {
         try {
-            InputStream is = getInputStream(type, anns, mt, stream);
             Class<?> theType = getActualType(type, genericType);
             Unmarshaller unmarshaller = createUnmarshaller(theType, genericType);
             

Modified: cxf/branches/2.1.x-fixes/rt/frontend/jaxrs/src/main/java/org/apache/cxf/jaxrs/provider/JSONProvider.java
URL: http://svn.apache.org/viewvc/cxf/branches/2.1.x-fixes/rt/frontend/jaxrs/src/main/java/org/apache/cxf/jaxrs/provider/JSONProvider.java?rev=737092&r1=737091&r2=737092&view=diff
==============================================================================
--- cxf/branches/2.1.x-fixes/rt/frontend/jaxrs/src/main/java/org/apache/cxf/jaxrs/provider/JSONProvider.java
(original)
+++ cxf/branches/2.1.x-fixes/rt/frontend/jaxrs/src/main/java/org/apache/cxf/jaxrs/provider/JSONProvider.java
Fri Jan 23 08:57:04 2009
@@ -54,8 +54,7 @@
 import org.codehaus.jettison.mapped.MappedXMLStreamWriter;
 
 @ProduceMime("application/json")
-@ConsumeMime({"application/json",
-           "multipart/related;type=\"application/json\"" })
+@ConsumeMime("application/json")
 @Provider
 public class JSONProvider extends AbstractJAXBProvider  {
     
@@ -100,11 +99,10 @@
     }
 
     public Object readFrom(Class<Object> type, Type genericType, Annotation[] anns,
MediaType mt, 
-        MultivaluedMap<String, String> headers, InputStream stream) 
+        MultivaluedMap<String, String> headers, InputStream is) 
         throws IOException {
         
         try {
-            InputStream is = getInputStream(type, anns, mt, stream);
             Class<?> theType = getActualType(type, genericType);
             Unmarshaller unmarshaller = createUnmarshaller(theType, genericType);
             

Modified: cxf/branches/2.1.x-fixes/rt/frontend/jaxrs/src/main/java/org/apache/cxf/jaxrs/provider/ProviderFactory.java
URL: http://svn.apache.org/viewvc/cxf/branches/2.1.x-fixes/rt/frontend/jaxrs/src/main/java/org/apache/cxf/jaxrs/provider/ProviderFactory.java?rev=737092&r1=737091&r2=737092&view=diff
==============================================================================
--- cxf/branches/2.1.x-fixes/rt/frontend/jaxrs/src/main/java/org/apache/cxf/jaxrs/provider/ProviderFactory.java
(original)
+++ cxf/branches/2.1.x-fixes/rt/frontend/jaxrs/src/main/java/org/apache/cxf/jaxrs/provider/ProviderFactory.java
Fri Jan 23 08:57:04 2009
@@ -370,10 +370,9 @@
                                                          MediaType mediaType,
                                                          Message m) {
         for (ProviderInfo<MessageBodyReader> ep : readers) {
-            
+            InjectionUtils.injectContextFields(ep.getProvider(), ep, m);
+            InjectionUtils.injectContextMethods(ep.getProvider(), ep, m);             
             if (matchesReaderCriterias(ep.getProvider(), type, genericType, annotations,
mediaType)) {
-                InjectionUtils.injectContextFields(ep.getProvider(), ep, m);
-                InjectionUtils.injectContextMethods(ep.getProvider(), ep, m);
                 return ep.getProvider();
             }
         }     
@@ -419,9 +418,9 @@
                                                          MediaType mediaType,
                                                          Message m) {
         for (ProviderInfo<MessageBodyWriter> ep : writers) {
+            InjectionUtils.injectContextFields(ep.getProvider(), ep, m);
+            InjectionUtils.injectContextMethods(ep.getProvider(), ep, m); 
             if (matchesWriterCriterias(ep.getProvider(), type, genericType, annotations,
mediaType)) {
-                InjectionUtils.injectContextFields(ep.getProvider(), ep, m);
-                InjectionUtils.injectContextMethods(ep.getProvider(), ep, m);
                 return ep.getProvider();
             }
         }     

Copied: cxf/branches/2.1.x-fixes/rt/frontend/jaxrs/src/main/java/org/apache/cxf/jaxrs/utils/multipart/AttachmentUtils.java
(from r737046, cxf/trunk/rt/frontend/jaxrs/src/main/java/org/apache/cxf/jaxrs/utils/multipart/AttachmentUtils.java)
URL: http://svn.apache.org/viewvc/cxf/branches/2.1.x-fixes/rt/frontend/jaxrs/src/main/java/org/apache/cxf/jaxrs/utils/multipart/AttachmentUtils.java?p2=cxf/branches/2.1.x-fixes/rt/frontend/jaxrs/src/main/java/org/apache/cxf/jaxrs/utils/multipart/AttachmentUtils.java&p1=cxf/trunk/rt/frontend/jaxrs/src/main/java/org/apache/cxf/jaxrs/utils/multipart/AttachmentUtils.java&r1=737046&r2=737092&rev=737092&view=diff
==============================================================================
--- cxf/trunk/rt/frontend/jaxrs/src/main/java/org/apache/cxf/jaxrs/utils/multipart/AttachmentUtils.java
(original)
+++ cxf/branches/2.1.x-fixes/rt/frontend/jaxrs/src/main/java/org/apache/cxf/jaxrs/utils/multipart/AttachmentUtils.java
Fri Jan 23 08:57:04 2009
@@ -43,6 +43,7 @@
 public final class AttachmentUtils {
     private static final Logger LOG = LogUtils.getL7dLogger(JAXRSUtils.class);
     private static final ResourceBundle BUNDLE = BundleUtils.getBundle(JAXRSUtils.class);
+    private static final MediaType WILDCARD_TYPE = MediaType.valueOf("*/*");
     
     private AttachmentUtils() {
     }
@@ -71,7 +72,7 @@
                     if (entry.getKey().equals(contentId)) {
                         DataHandler dh = entry.getValue();
                         MediaType handlerType = dh.getContentType() == null 
-                            ? MediaType.WILDCARD_TYPE : MediaType.valueOf(dh.getContentType());
+                            ? WILDCARD_TYPE : MediaType.valueOf(dh.getContentType());
                         checkMediaTypes(handlerType, id.type());
                         Object o =  DataHandler.class.isAssignableFrom(c) ? dh 
                             : DataSource.class.isAssignableFrom(c) ? dh.getDataSource()
@@ -90,7 +91,7 @@
             stream = is;
         }
         if (stream != null) {
-            MediaType partType = MediaType.WILDCARD_TYPE;
+            MediaType partType = WILDCARD_TYPE;
             String ct = mt.getParameters().get("type");
             if (ct != null) {
                 partType = MediaType.valueOf(ct.replace("\"", "").replace("'", "")); 

Modified: cxf/branches/2.1.x-fixes/rt/frontend/jaxrs/src/test/java/org/apache/cxf/jaxrs/provider/ProviderFactoryTest.java
URL: http://svn.apache.org/viewvc/cxf/branches/2.1.x-fixes/rt/frontend/jaxrs/src/test/java/org/apache/cxf/jaxrs/provider/ProviderFactoryTest.java?rev=737092&r1=737091&r2=737092&view=diff
==============================================================================
--- cxf/branches/2.1.x-fixes/rt/frontend/jaxrs/src/test/java/org/apache/cxf/jaxrs/provider/ProviderFactoryTest.java
(original)
+++ cxf/branches/2.1.x-fixes/rt/frontend/jaxrs/src/test/java/org/apache/cxf/jaxrs/provider/ProviderFactoryTest.java
Fri Jan 23 08:57:04 2009
@@ -189,11 +189,11 @@
         MediaType mType = MediaType.valueOf(mediaType);
         
         MessageBodyReader reader = ProviderFactory.getInstance()
-            .createMessageBodyReader(type, null, null, mType, null);
+            .createMessageBodyReader(type, null, null, mType, new MessageImpl());
         assertSame(errorMessage, provider, reader.getClass());
     
         MessageBodyWriter writer = ProviderFactory.getInstance()
-            .createMessageBodyWriter(type, null, null, mType, null);
+            .createMessageBodyWriter(type, null, null, mType, new MessageImpl());
         assertTrue(errorMessage, provider == writer.getClass());
     }
     

Modified: cxf/branches/2.1.x-fixes/systests/src/test/java/org/apache/cxf/systest/jaxrs/JAXRSMultipartTest.java
URL: http://svn.apache.org/viewvc/cxf/branches/2.1.x-fixes/systests/src/test/java/org/apache/cxf/systest/jaxrs/JAXRSMultipartTest.java?rev=737092&r1=737091&r2=737092&view=diff
==============================================================================
--- cxf/branches/2.1.x-fixes/systests/src/test/java/org/apache/cxf/systest/jaxrs/JAXRSMultipartTest.java
(original)
+++ cxf/branches/2.1.x-fixes/systests/src/test/java/org/apache/cxf/systest/jaxrs/JAXRSMultipartTest.java
Fri Jan 23 08:57:04 2009
@@ -43,70 +43,88 @@
     @Test
     public void testBookAsRootAttachmentStreamSource() throws Exception {
         String address = "http://localhost:9080/bookstore/books/stream";
-        doAddBook(address);               
+        doAddBook(address, "attachmentData", 200);               
     }
     
     @Test
     public void testBookAsRootAttachmentInputStream() throws Exception {
         String address = "http://localhost:9080/bookstore/books/istream";
-        doAddBook(address);               
+        doAddBook(address, "attachmentData", 200);               
     }
     
     @Test
     public void testBookAsMessageContextDataHandler() throws Exception {
         String address = "http://localhost:9080/bookstore/books/mchandlers";
-        doAddBook(address);               
+        doAddBook(address, "attachmentData", 200);               
     }
     
     @Test
     public void testAddBookAsRootAttachmentJAXB() throws Exception {
         String address = "http://localhost:9080/bookstore/books/jaxb";
-        doAddBook(address);               
+        doAddBook(address, "attachmentData", 200);               
     }
     
     @Test
     public void testAddBookAsDataSource() throws Exception {
         String address = "http://localhost:9080/bookstore/books/dsource";
-        doAddBook(address);               
+        doAddBook(address, "attachmentData", 200);               
     }
     
     @Test
     public void testAddBookAsDataSource2() throws Exception {
         String address = "http://localhost:9080/bookstore/books/dsource2";
-        doAddBook(address);               
+        doAddBook(address, "attachmentData", 200);               
     }
     
     @Test
     public void testAddBookAsJAXB2() throws Exception {
         String address = "http://localhost:9080/bookstore/books/jaxb2";
-        doAddBook(address);               
+        doAddBook(address, "attachmentData", 200);               
+    }
+    
+    @Test
+    public void testAddBookAsJAXBJSON() throws Exception {
+        String address = "http://localhost:9080/bookstore/books/jaxbjson";
+        doAddBook(address, "attachmentData2", 200);               
+    }
+    
+    @Test
+    public void testConsumesMismatch() throws Exception {
+        String address = "http://localhost:9080/bookstore/books/mismatch1";
+        doAddBook(address, "attachmentData2", 415);               
+    }
+    
+    @Test
+    public void testConsumesMismatch2() throws Exception {
+        String address = "http://localhost:9080/bookstore/books/mismatch2";
+        doAddBook(address, "attachmentData2", 415);               
     }
     
     @Test
     public void testAddBookAsDataHandler() throws Exception {
         String address = "http://localhost:9080/bookstore/books/dhandler";
-        doAddBook(address);               
+        doAddBook(address, "attachmentData", 200);               
     }
     
-    private void doAddBook(String address) throws Exception {
+    private void doAddBook(String address, String resourceName, int status) throws Exception
{
         PostMethod post = new PostMethod(address);
         
         String ct = "multipart/related; type=\"text/xml\"; " + "start=\"rootPart\"; "
             + "boundary=\"----=_Part_4_701508.1145579811786\"";
         post.setRequestHeader("Content-Type", ct);
         InputStream is = 
-            getClass().getResourceAsStream("/org/apache/cxf/systest/jaxrs/attachmentData");
+            getClass().getResourceAsStream("/org/apache/cxf/systest/jaxrs/" + resourceName);
         RequestEntity entity = new InputStreamRequestEntity(is);
         post.setRequestEntity(entity);
         HttpClient httpclient = new HttpClient();
         
         try {
             int result = httpclient.executeMethod(post);
-            assertEquals(200, result);
-            
-            InputStream expected = getClass().getResourceAsStream("resources/expected_add_book.txt");
-            
-            assertEquals(getStringFromInputStream(expected), post.getResponseBodyAsString());
+            assertEquals(status, result);
+            if (status == 200) {
+                InputStream expected = getClass().getResourceAsStream("resources/expected_add_book.txt");
+                assertEquals(getStringFromInputStream(expected), post.getResponseBodyAsString());
+            }
         } finally {
             // Release current connection to the connection pool once you are done
             post.releaseConnection();

Modified: cxf/branches/2.1.x-fixes/systests/src/test/java/org/apache/cxf/systest/jaxrs/MultipartStore.java
URL: http://svn.apache.org/viewvc/cxf/branches/2.1.x-fixes/systests/src/test/java/org/apache/cxf/systest/jaxrs/MultipartStore.java?rev=737092&r1=737091&r2=737092&view=diff
==============================================================================
--- cxf/branches/2.1.x-fixes/systests/src/test/java/org/apache/cxf/systest/jaxrs/MultipartStore.java
(original)
+++ cxf/branches/2.1.x-fixes/systests/src/test/java/org/apache/cxf/systest/jaxrs/MultipartStore.java
Fri Jan 23 08:57:04 2009
@@ -25,6 +25,7 @@
 
 import javax.activation.DataHandler;
 import javax.activation.DataSource;
+import javax.ws.rs.ConsumeMime;
 import javax.ws.rs.POST;
 import javax.ws.rs.Path;
 import javax.ws.rs.ProduceMime;
@@ -37,7 +38,7 @@
 
 import org.apache.cxf.jaxrs.ext.MessageContext;
 import org.apache.cxf.jaxrs.ext.MultipartID;
-import org.apache.cxf.jaxrs.utils.AttachmentUtils;
+import org.apache.cxf.jaxrs.utils.multipart.AttachmentUtils;
 
 @Path("/bookstore")
 public class MultipartStore {
@@ -75,9 +76,10 @@
     
     @POST
     @Path("/books/jaxb2")
+    @ConsumeMime("multipart/related;type=\"text/xml\"")
     @ProduceMime("text/xml")
-    public Response addBook2(@MultipartID("rootPart") Book b1,
-                             @MultipartID("book2") Book b2) 
+    public Response addBookParts(@MultipartID("rootPart") Book b1,
+                                 @MultipartID("book2") Book b2) 
         throws Exception {
         if (b1.equals(b2)) {
             throw new WebApplicationException();
@@ -90,6 +92,21 @@
     }
     
     @POST
+    @Path("/books/jaxbjson")
+    @ProduceMime("text/xml")
+    public Response addBookJaxbJson(
+        @MultipartID(value = "rootPart", type = "text/xml") Book2 b1,
+        @MultipartID(value = "book2", type = "application/json") Book b2) 
+        throws Exception {
+        if (!"CXF in Action".equals(b1.getName())
+            || !"CXF in Action - 2".equals(b2.getName())) {
+            throw new WebApplicationException();
+        }
+        b2.setId(124);
+        return Response.ok(b2).build();
+    }
+    
+    @POST
     @Path("/books/dsource2")
     @ProduceMime("text/xml")
     public Response addBookFromDataSource2(@MultipartID("rootPart") DataSource ds1,
@@ -136,6 +153,21 @@
         return Response.ok(b).build();
     }
     
+    @POST
+    @Path("/books/mismatch1")
+    @ConsumeMime("multipart/related;type=\"bar/foo\"")
+    @ProduceMime("text/xml")
+    public Response addBookMismatched(Book b) {
+        throw new WebApplicationException();
+    }
+    
+    @POST
+    @Path("/books/mismatch2")
+    @ProduceMime("text/xml")
+    public Response addBookMismatched2(@MultipartID(value = "rootPart", type = "f/b") Book
b) {
+        throw new WebApplicationException();
+    }
+    
     private Response readBookFromInputStream(InputStream is) throws Exception {
         JAXBContext c = JAXBContext.newInstance(new Class[]{Book.class});
         Unmarshaller u = c.createUnmarshaller();



Mime
View raw message