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();