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 2013/06/19 15:22:59 UTC
svn commit: r1494608 - in /cxf/branches/2.7.x-fixes: ./
rt/frontend/jaxrs/src/main/java/org/apache/cxf/jaxrs/impl/
rt/frontend/jaxrs/src/main/java/org/apache/cxf/jaxrs/interceptor/
rt/frontend/jaxrs/src/main/java/org/apache/cxf/jaxrs/utils/ systests/ja...
Author: sergeyb
Date: Wed Jun 19 13:22:59 2013
New Revision: 1494608
URL: http://svn.apache.org/r1494608
Log:
Merged revisions 1479604,1479874 via svnmerge from
https://svn.apache.org/repos/asf/cxf/trunk
........
r1479604 | sergeyb | 2013-05-06 16:25:01 +0100 (Mon, 06 May 2013) | 1 line
[CXF-4988] The exceptions thrown from readers should be mapped too
........
r1479874 | sergeyb | 2013-05-07 13:12:26 +0100 (Tue, 07 May 2013) | 1 line
[CXF-4988] Minor update to the way readers/writers manage tcontent types
........
Modified:
cxf/branches/2.7.x-fixes/ (props changed)
cxf/branches/2.7.x-fixes/rt/frontend/jaxrs/src/main/java/org/apache/cxf/jaxrs/impl/AbstractInterceptorContextImpl.java
cxf/branches/2.7.x-fixes/rt/frontend/jaxrs/src/main/java/org/apache/cxf/jaxrs/impl/ReaderInterceptorContextImpl.java
cxf/branches/2.7.x-fixes/rt/frontend/jaxrs/src/main/java/org/apache/cxf/jaxrs/impl/WriterInterceptorContextImpl.java
cxf/branches/2.7.x-fixes/rt/frontend/jaxrs/src/main/java/org/apache/cxf/jaxrs/interceptor/JAXRSInInterceptor.java
cxf/branches/2.7.x-fixes/rt/frontend/jaxrs/src/main/java/org/apache/cxf/jaxrs/utils/JAXRSUtils.java
cxf/branches/2.7.x-fixes/systests/jaxrs/src/test/java/org/apache/cxf/systest/jaxrs/BookServer20.java
Propchange: cxf/branches/2.7.x-fixes/
------------------------------------------------------------------------------
Merged /cxf/trunk:r1479604,1479874
Propchange: cxf/branches/2.7.x-fixes/
------------------------------------------------------------------------------
Binary property 'svnmerge-blocked' - no diff available.
Propchange: cxf/branches/2.7.x-fixes/
------------------------------------------------------------------------------
Binary property 'svnmerge-integrated' - no diff available.
Modified: cxf/branches/2.7.x-fixes/rt/frontend/jaxrs/src/main/java/org/apache/cxf/jaxrs/impl/AbstractInterceptorContextImpl.java
URL: http://svn.apache.org/viewvc/cxf/branches/2.7.x-fixes/rt/frontend/jaxrs/src/main/java/org/apache/cxf/jaxrs/impl/AbstractInterceptorContextImpl.java?rev=1494608&r1=1494607&r2=1494608&view=diff
==============================================================================
--- cxf/branches/2.7.x-fixes/rt/frontend/jaxrs/src/main/java/org/apache/cxf/jaxrs/impl/AbstractInterceptorContextImpl.java (original)
+++ cxf/branches/2.7.x-fixes/rt/frontend/jaxrs/src/main/java/org/apache/cxf/jaxrs/impl/AbstractInterceptorContextImpl.java Wed Jun 19 13:22:59 2013
@@ -21,8 +21,6 @@ package org.apache.cxf.jaxrs.impl;
import java.lang.annotation.Annotation;
import java.lang.reflect.Type;
-import javax.ws.rs.core.MediaType;
-
import org.apache.cxf.message.Message;
public class AbstractInterceptorContextImpl extends AbstractPropertiesImpl {
@@ -30,16 +28,13 @@ public class AbstractInterceptorContextI
private Class<?> cls;
private Type type;
private Annotation[] anns;
- private MediaType mt;
public AbstractInterceptorContextImpl(Class<?> cls,
Type type,
Annotation[] anns,
- MediaType mt,
Message message) {
super(message);
this.cls = cls;
this.type = type;
- this.mt = mt;
this.anns = anns;
}
@@ -55,10 +50,6 @@ public class AbstractInterceptorContextI
return type;
}
- public MediaType getMediaType() {
- return mt;
- }
-
public void setAnnotations(Annotation[] annotations) {
anns = annotations;
@@ -68,10 +59,6 @@ public class AbstractInterceptorContextI
type = genType;
}
- public void setMediaType(MediaType mtype) {
- mt = mtype;
- }
-
public void setType(Class<?> ctype) {
cls = ctype;
}
Modified: cxf/branches/2.7.x-fixes/rt/frontend/jaxrs/src/main/java/org/apache/cxf/jaxrs/impl/ReaderInterceptorContextImpl.java
URL: http://svn.apache.org/viewvc/cxf/branches/2.7.x-fixes/rt/frontend/jaxrs/src/main/java/org/apache/cxf/jaxrs/impl/ReaderInterceptorContextImpl.java?rev=1494608&r1=1494607&r2=1494608&view=diff
==============================================================================
--- cxf/branches/2.7.x-fixes/rt/frontend/jaxrs/src/main/java/org/apache/cxf/jaxrs/impl/ReaderInterceptorContextImpl.java (original)
+++ cxf/branches/2.7.x-fixes/rt/frontend/jaxrs/src/main/java/org/apache/cxf/jaxrs/impl/ReaderInterceptorContextImpl.java Wed Jun 19 13:22:59 2013
@@ -25,11 +25,13 @@ import java.lang.reflect.Type;
import java.util.List;
import java.util.Map;
+import javax.ws.rs.core.HttpHeaders;
import javax.ws.rs.core.MediaType;
import javax.ws.rs.core.MultivaluedMap;
import javax.ws.rs.ext.ReaderInterceptor;
import javax.ws.rs.ext.ReaderInterceptorContext;
+import org.apache.cxf.jaxrs.utils.JAXRSUtils;
import org.apache.cxf.message.Message;
public class ReaderInterceptorContextImpl extends AbstractInterceptorContextImpl
@@ -40,11 +42,10 @@ public class ReaderInterceptorContextImp
public ReaderInterceptorContextImpl(Class<?> cls,
Type type,
Annotation[] anns,
- MediaType mt,
InputStream is,
Message message,
List<ReaderInterceptor> readers) {
- super(cls, type, anns, mt, message);
+ super(cls, type, anns, message);
this.is = is;
this.readers = readers;
}
@@ -77,4 +78,15 @@ public class ReaderInterceptorContextImp
}
+ @Override
+ public MediaType getMediaType() {
+ return JAXRSUtils.toMediaType(getHeaders().getFirst(HttpHeaders.CONTENT_TYPE));
+ }
+
+ @Override
+ public void setMediaType(MediaType mt) {
+ getHeaders().putSingle(HttpHeaders.CONTENT_TYPE, JAXRSUtils.mediaTypeToString(mt));
+
+ }
+
}
Modified: cxf/branches/2.7.x-fixes/rt/frontend/jaxrs/src/main/java/org/apache/cxf/jaxrs/impl/WriterInterceptorContextImpl.java
URL: http://svn.apache.org/viewvc/cxf/branches/2.7.x-fixes/rt/frontend/jaxrs/src/main/java/org/apache/cxf/jaxrs/impl/WriterInterceptorContextImpl.java?rev=1494608&r1=1494607&r2=1494608&view=diff
==============================================================================
--- cxf/branches/2.7.x-fixes/rt/frontend/jaxrs/src/main/java/org/apache/cxf/jaxrs/impl/WriterInterceptorContextImpl.java (original)
+++ cxf/branches/2.7.x-fixes/rt/frontend/jaxrs/src/main/java/org/apache/cxf/jaxrs/impl/WriterInterceptorContextImpl.java Wed Jun 19 13:22:59 2013
@@ -25,11 +25,13 @@ import java.lang.reflect.Type;
import java.util.List;
import java.util.Map;
+import javax.ws.rs.core.HttpHeaders;
import javax.ws.rs.core.MediaType;
import javax.ws.rs.core.MultivaluedMap;
import javax.ws.rs.ext.WriterInterceptor;
import javax.ws.rs.ext.WriterInterceptorContext;
+import org.apache.cxf.jaxrs.utils.JAXRSUtils;
import org.apache.cxf.message.Message;
public class WriterInterceptorContextImpl extends AbstractInterceptorContextImpl
@@ -43,12 +45,11 @@ public class WriterInterceptorContextImp
Class<?> cls,
Type type,
Annotation[] anns,
- MediaType mt,
OutputStream os,
Message message,
List<WriterInterceptor> writers) {
//CHECKSTYLE:ON
- super(cls, type, anns, mt, message);
+ super(cls, type, anns, message);
this.entity = entity;
this.os = os;
this.writers = writers;
@@ -94,4 +95,17 @@ public class WriterInterceptorContextImp
}
+
+ @Override
+ public MediaType getMediaType() {
+ Object value = getHeaders().getFirst(HttpHeaders.CONTENT_TYPE);
+ return value instanceof MediaType ? (MediaType)value : JAXRSUtils.toMediaType((String)value);
+ }
+
+
+ @Override
+ public void setMediaType(MediaType mt) {
+ getHeaders().putSingle(HttpHeaders.CONTENT_TYPE, mt);
+ }
+
}
Modified: cxf/branches/2.7.x-fixes/rt/frontend/jaxrs/src/main/java/org/apache/cxf/jaxrs/interceptor/JAXRSInInterceptor.java
URL: http://svn.apache.org/viewvc/cxf/branches/2.7.x-fixes/rt/frontend/jaxrs/src/main/java/org/apache/cxf/jaxrs/interceptor/JAXRSInInterceptor.java?rev=1494608&r1=1494607&r2=1494608&view=diff
==============================================================================
--- cxf/branches/2.7.x-fixes/rt/frontend/jaxrs/src/main/java/org/apache/cxf/jaxrs/interceptor/JAXRSInInterceptor.java (original)
+++ cxf/branches/2.7.x-fixes/rt/frontend/jaxrs/src/main/java/org/apache/cxf/jaxrs/interceptor/JAXRSInInterceptor.java Wed Jun 19 13:22:59 2013
@@ -36,6 +36,7 @@ import javax.ws.rs.core.Response;
import org.apache.cxf.common.i18n.BundleUtils;
import org.apache.cxf.common.logging.LogUtils;
+import org.apache.cxf.interceptor.Fault;
import org.apache.cxf.jaxrs.JAXRSServiceImpl;
import org.apache.cxf.jaxrs.ext.RequestHandler;
import org.apache.cxf.jaxrs.impl.MetadataMap;
@@ -98,15 +99,10 @@ public class JAXRSInInterceptor extends
try {
processRequest(message);
+ } catch (Fault ex) {
+ convertExceptionToResponseIfPossible(ex.getCause(), message);
} catch (RuntimeException ex) {
- Response excResponse = JAXRSUtils.convertFaultToResponse(ex, message);
- if (excResponse == null) {
- ProviderFactory.getInstance(message).clearThreadLocalProxies();
- message.getExchange().put(Message.PROPOGATE_EXCEPTION,
- JAXRSUtils.propogateException(message));
- throw ex;
- }
- message.getExchange().put(Response.class, excResponse);
+ convertExceptionToResponseIfPossible(ex, message);
}
@@ -240,16 +236,22 @@ public class JAXRSInInterceptor extends
List<Object> params = JAXRSUtils.processParameters(ori, values, message);
message.setContent(List.class, params);
} catch (IOException ex) {
- Response excResponse = JAXRSUtils.convertFaultToResponse(ex, message);
- if (excResponse == null) {
- throw new InternalServerErrorException(ex);
- } else {
- message.getExchange().put(Response.class, excResponse);
- }
+ convertExceptionToResponseIfPossible(ex, message);
}
}
+ private void convertExceptionToResponseIfPossible(Throwable ex, Message message) {
+ Response excResponse = JAXRSUtils.convertFaultToResponse(ex, message);
+ if (excResponse == null) {
+ ProviderFactory.getInstance(message).clearThreadLocalProxies();
+ message.getExchange().put(Message.PROPOGATE_EXCEPTION,
+ JAXRSUtils.propogateException(message));
+ throw ex instanceof RuntimeException ? (RuntimeException)ex : new InternalServerErrorException(ex);
+ }
+ message.getExchange().put(Response.class, excResponse);
+ }
+
private void setExchangeProperties(Message message, OperationResourceInfo ori,
MultivaluedMap<String, String> values,
int numberOfResources) {
Modified: cxf/branches/2.7.x-fixes/rt/frontend/jaxrs/src/main/java/org/apache/cxf/jaxrs/utils/JAXRSUtils.java
URL: http://svn.apache.org/viewvc/cxf/branches/2.7.x-fixes/rt/frontend/jaxrs/src/main/java/org/apache/cxf/jaxrs/utils/JAXRSUtils.java?rev=1494608&r1=1494607&r2=1494608&view=diff
==============================================================================
--- cxf/branches/2.7.x-fixes/rt/frontend/jaxrs/src/main/java/org/apache/cxf/jaxrs/utils/JAXRSUtils.java (original)
+++ cxf/branches/2.7.x-fixes/rt/frontend/jaxrs/src/main/java/org/apache/cxf/jaxrs/utils/JAXRSUtils.java Wed Jun 19 13:22:59 2013
@@ -100,6 +100,7 @@ import org.apache.cxf.common.util.Packag
import org.apache.cxf.common.util.ReflectionUtil;
import org.apache.cxf.common.util.StringUtils;
import org.apache.cxf.helpers.XMLUtils;
+import org.apache.cxf.interceptor.Fault;
import org.apache.cxf.jaxrs.ext.ContextProvider;
import org.apache.cxf.jaxrs.ext.MessageContext;
import org.apache.cxf.jaxrs.ext.MessageContextImpl;
@@ -1245,7 +1246,7 @@ public final class JAXRSUtils {
} catch (WebApplicationException ex) {
throw ex;
} catch (Exception ex) {
- throw new WebApplicationException(ex);
+ throw new Fault(ex);
}
} else {
String errorMessage = new org.apache.cxf.common.i18n.Message("NO_MSG_READER",
@@ -1275,7 +1276,6 @@ public final class JAXRSUtils {
ReaderInterceptorContext context = new ReaderInterceptorContextImpl(targetTypeClass,
parameterType,
parameterAnnotations,
- mediaType,
is,
m,
readers);
@@ -1308,8 +1308,7 @@ public final class JAXRSUtils {
WriterInterceptorContext context = new WriterInterceptorContextImpl(entity,
type,
genericType,
- annotations,
- mediaType,
+ annotations,
entityStream,
message,
writers);
Modified: cxf/branches/2.7.x-fixes/systests/jaxrs/src/test/java/org/apache/cxf/systest/jaxrs/BookServer20.java
URL: http://svn.apache.org/viewvc/cxf/branches/2.7.x-fixes/systests/jaxrs/src/test/java/org/apache/cxf/systest/jaxrs/BookServer20.java?rev=1494608&r1=1494607&r2=1494608&view=diff
==============================================================================
--- cxf/branches/2.7.x-fixes/systests/jaxrs/src/test/java/org/apache/cxf/systest/jaxrs/BookServer20.java (original)
+++ cxf/branches/2.7.x-fixes/systests/jaxrs/src/test/java/org/apache/cxf/systest/jaxrs/BookServer20.java Wed Jun 19 13:22:59 2013
@@ -46,6 +46,7 @@ import javax.ws.rs.container.PreMatching
import javax.ws.rs.container.ResourceInfo;
import javax.ws.rs.core.Configurable;
import javax.ws.rs.core.Context;
+import javax.ws.rs.core.MediaType;
import javax.ws.rs.core.Response;
import javax.ws.rs.core.UriInfo;
import javax.ws.rs.ext.ReaderInterceptor;
@@ -360,7 +361,7 @@ public class BookServer20 extends Abstra
if (!ct.endsWith("ISO-8859-1")) {
ct += "us-ascii";
}
- context.getHeaders().putSingle("Content-Type", ct);
+ context.setMediaType(MediaType.valueOf(ct));
context.proceed();
}