Repository: cxf
Updated Branches:
  refs/heads/master 9f5b54ed7 -> 8d6ec66ff


[CXF-6015] Providing a workaround, a better solution will need to be provided 
in due time, also removing some redundant code to do with creating Context 
resolvers


Project: http://git-wip-us.apache.org/repos/asf/cxf/repo
Commit: http://git-wip-us.apache.org/repos/asf/cxf/commit/8d6ec66f
Tree: http://git-wip-us.apache.org/repos/asf/cxf/tree/8d6ec66f
Diff: http://git-wip-us.apache.org/repos/asf/cxf/diff/8d6ec66f

Branch: refs/heads/master
Commit: 8d6ec66fffcc11c49c314277d56b1ebcf5b90ec7
Parents: 9f5b54e
Author: Sergey Beryozkin <[email protected]>
Authored: Mon Sep 22 14:15:54 2014 +0100
Committer: Sergey Beryozkin <[email protected]>
Committed: Mon Sep 22 14:15:54 2014 +0100

----------------------------------------------------------------------
 .../cxf/jaxrs/provider/ProviderFactory.java     | 23 +++++---------------
 .../org/apache/cxf/jaxrs/utils/HttpUtils.java   |  3 +++
 .../cxf/jaxrs/provider/ProviderFactoryTest.java | 13 +----------
 .../jose/jaxrs/JweWriterInterceptor.java        |  5 ++---
 .../jose/jaxrs/JwsWriterInterceptor.java        |  7 +++---
 .../org/apache/cxf/transport/http/Headers.java  |  6 ++---
 .../jaxrs/JAXRS20ClientServerBookTest.java      |  1 +
 7 files changed, 20 insertions(+), 38 deletions(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/cxf/blob/8d6ec66f/rt/frontend/jaxrs/src/main/java/org/apache/cxf/jaxrs/provider/ProviderFactory.java
----------------------------------------------------------------------
diff --git 
a/rt/frontend/jaxrs/src/main/java/org/apache/cxf/jaxrs/provider/ProviderFactory.java
 
b/rt/frontend/jaxrs/src/main/java/org/apache/cxf/jaxrs/provider/ProviderFactory.java
index 43f7be3..e86f93b 100644
--- 
a/rt/frontend/jaxrs/src/main/java/org/apache/cxf/jaxrs/provider/ProviderFactory.java
+++ 
b/rt/frontend/jaxrs/src/main/java/org/apache/cxf/jaxrs/provider/ProviderFactory.java
@@ -42,7 +42,6 @@ import java.util.logging.Logger;
 import javax.ws.rs.Produces;
 import javax.ws.rs.core.Application;
 import javax.ws.rs.core.Configuration;
-import javax.ws.rs.core.HttpHeaders;
 import javax.ws.rs.core.MediaType;
 import javax.ws.rs.core.MultivaluedMap;
 import javax.ws.rs.ext.ContextResolver;
@@ -61,7 +60,6 @@ import org.apache.cxf.common.util.ClassHelper;
 import org.apache.cxf.endpoint.Endpoint;
 import org.apache.cxf.helpers.CastUtils;
 import org.apache.cxf.jaxrs.ext.ContextProvider;
-import org.apache.cxf.jaxrs.impl.HttpHeadersImpl;
 import org.apache.cxf.jaxrs.impl.MetadataMap;
 import org.apache.cxf.jaxrs.impl.ReaderInterceptorMBR;
 import org.apache.cxf.jaxrs.impl.WriterInterceptorMBW;
@@ -169,27 +167,18 @@ public abstract class ProviderFactory {
         boolean isRequestor = MessageUtils.isRequestor(m);
         Message requestMessage = isRequestor ? m.getExchange().getOutMessage() 
                                              : m.getExchange().getInMessage();
-        HttpHeaders requestHeaders = new HttpHeadersImpl(requestMessage);
-        MediaType mt = null;
         
         Message responseMessage = isRequestor ? m.getExchange().getInMessage() 
                                               : 
m.getExchange().getOutMessage();
+        Object ctProperty = null;
         if (responseMessage != null) {
-            Object ctProperty = responseMessage.get(Message.CONTENT_TYPE);
-            if (ctProperty == null) {
-                List<MediaType> accepts = 
requestHeaders.getAcceptableMediaTypes();
-                if (accepts.size() > 0) {
-                    mt = accepts.get(0);
-                }
-            } else {
-                mt = JAXRSUtils.toMediaType(ctProperty.toString());
-            }
+            ctProperty = responseMessage.get(Message.CONTENT_TYPE);
         } else {
-            mt = requestHeaders.getMediaType();
+            ctProperty = requestMessage.get(Message.CONTENT_TYPE);
         }
-        
-        return createContextResolver(contextType, m,
-               mt == null ? MediaType.WILDCARD_TYPE : mt);
+        MediaType mt = ctProperty != null ? 
JAXRSUtils.toMediaType(ctProperty.toString())
+            : MediaType.WILDCARD_TYPE;
+        return createContextResolver(contextType, m, mt);
         
     }
     

http://git-wip-us.apache.org/repos/asf/cxf/blob/8d6ec66f/rt/frontend/jaxrs/src/main/java/org/apache/cxf/jaxrs/utils/HttpUtils.java
----------------------------------------------------------------------
diff --git 
a/rt/frontend/jaxrs/src/main/java/org/apache/cxf/jaxrs/utils/HttpUtils.java 
b/rt/frontend/jaxrs/src/main/java/org/apache/cxf/jaxrs/utils/HttpUtils.java
index ac4dbca..f76cbf2 100644
--- a/rt/frontend/jaxrs/src/main/java/org/apache/cxf/jaxrs/utils/HttpUtils.java
+++ b/rt/frontend/jaxrs/src/main/java/org/apache/cxf/jaxrs/utils/HttpUtils.java
@@ -226,6 +226,9 @@ public final class HttpUtils {
     }
     
     public static void convertHeaderValuesToString(Map<String, List<Object>> 
headers, boolean delegateOnly) {
+        if (headers == null) {
+            return;
+        }
         RuntimeDelegate rd = getOtherRuntimeDelegate();
         if (rd == null && delegateOnly) {
             return;

http://git-wip-us.apache.org/repos/asf/cxf/blob/8d6ec66f/rt/frontend/jaxrs/src/test/java/org/apache/cxf/jaxrs/provider/ProviderFactoryTest.java
----------------------------------------------------------------------
diff --git 
a/rt/frontend/jaxrs/src/test/java/org/apache/cxf/jaxrs/provider/ProviderFactoryTest.java
 
b/rt/frontend/jaxrs/src/test/java/org/apache/cxf/jaxrs/provider/ProviderFactoryTest.java
index b95c2a8..b142814 100644
--- 
a/rt/frontend/jaxrs/src/test/java/org/apache/cxf/jaxrs/provider/ProviderFactoryTest.java
+++ 
b/rt/frontend/jaxrs/src/test/java/org/apache/cxf/jaxrs/provider/ProviderFactoryTest.java
@@ -420,18 +420,6 @@ public class ProviderFactoryTest extends Assert {
     }
     
     @Test
-    public void testCustomResolverOut() throws Exception {
-        ProviderFactory pf = ServerProviderFactory.getInstance();
-        pf.registerUserProvider(new JAXBContextProvider());
-        pf.registerUserProvider(new JAXBContextProvider2());
-        Message message = prepareMessage("text/xml+c", "text/xml+a");
-        ContextResolver<JAXBContext> cr = 
pf.createContextResolver(JAXBContext.class, message);
-        assertFalse(cr instanceof ProviderFactory.ContextResolverProxy);
-        assertTrue("JAXBContext ContextProvider can not be found", 
-                   cr instanceof JAXBContextProvider);
-    }
-    
-    @Test
     public void testCustomResolverProxy() throws Exception {
         ProviderFactory pf = ServerProviderFactory.getInstance();
         pf.registerUserProvider(new JAXBContextProvider());
@@ -457,6 +445,7 @@ public class ProviderFactoryTest extends Assert {
         } else {
             headers.put("Content-Type", 
Collections.singletonList(contentType));
         }
+        message.put("Content-Type", contentType);
         message.setExchange(exchange);
         return message;
     }

http://git-wip-us.apache.org/repos/asf/cxf/blob/8d6ec66f/rt/rs/security/oauth-parent/oauth2-jose/src/main/java/org/apache/cxf/rs/security/jose/jaxrs/JweWriterInterceptor.java
----------------------------------------------------------------------
diff --git 
a/rt/rs/security/oauth-parent/oauth2-jose/src/main/java/org/apache/cxf/rs/security/jose/jaxrs/JweWriterInterceptor.java
 
b/rt/rs/security/oauth-parent/oauth2-jose/src/main/java/org/apache/cxf/rs/security/jose/jaxrs/JweWriterInterceptor.java
index 9d5fc9c..fc03d1a 100644
--- 
a/rt/rs/security/oauth-parent/oauth2-jose/src/main/java/org/apache/cxf/rs/security/jose/jaxrs/JweWriterInterceptor.java
+++ 
b/rt/rs/security/oauth-parent/oauth2-jose/src/main/java/org/apache/cxf/rs/security/jose/jaxrs/JweWriterInterceptor.java
@@ -52,6 +52,7 @@ import 
org.apache.cxf.rs.security.jose.jwe.RSAOaepKeyEncryptionAlgorithm;
 import org.apache.cxf.rs.security.jose.jwe.WrappedKeyJweEncryption;
 import org.apache.cxf.rs.security.jose.jwk.JsonWebKey;
 import org.apache.cxf.rs.security.jose.jwk.JwkUtils;
+import org.apache.cxf.rs.security.jose.jwt.JwtConstants;
 import org.apache.cxf.rs.security.jose.jwt.JwtHeadersWriter;
 import org.apache.cxf.rs.security.jose.jwt.JwtTokenReaderWriter;
 import org.apache.cxf.rs.security.oauth2.utils.crypto.CryptoUtils;
@@ -70,8 +71,6 @@ public class JweWriterInterceptor implements 
WriterInterceptor {
     @Override
     public void aroundWriteTo(WriterInterceptorContext ctx) throws 
IOException, WebApplicationException {
         
-        
//ctx.setMediaType(JAXRSUtils.toMediaType(JwtConstants.MEDIA_TYPE_JOSE_JSON));
-        
         OutputStream actualOs = ctx.getOutputStream();
         
         JweEncryptionProvider theEncryptionProvider = 
getInitializedEncryptionProvider();
@@ -88,7 +87,7 @@ public class JweWriterInterceptor implements 
WriterInterceptor {
             }
         }
         
-        
+        
ctx.setMediaType(JAXRSUtils.toMediaType(JwtConstants.MEDIA_TYPE_JOSE_JSON));
         if (useJweOutputStream) {
             JweEncryptionState encryption = 
theEncryptionProvider.createJweEncryptionState(ctString);
             try {

http://git-wip-us.apache.org/repos/asf/cxf/blob/8d6ec66f/rt/rs/security/oauth-parent/oauth2-jose/src/main/java/org/apache/cxf/rs/security/jose/jaxrs/JwsWriterInterceptor.java
----------------------------------------------------------------------
diff --git 
a/rt/rs/security/oauth-parent/oauth2-jose/src/main/java/org/apache/cxf/rs/security/jose/jaxrs/JwsWriterInterceptor.java
 
b/rt/rs/security/oauth-parent/oauth2-jose/src/main/java/org/apache/cxf/rs/security/jose/jaxrs/JwsWriterInterceptor.java
index c99ec15..5c38928 100644
--- 
a/rt/rs/security/oauth-parent/oauth2-jose/src/main/java/org/apache/cxf/rs/security/jose/jaxrs/JwsWriterInterceptor.java
+++ 
b/rt/rs/security/oauth-parent/oauth2-jose/src/main/java/org/apache/cxf/rs/security/jose/jaxrs/JwsWriterInterceptor.java
@@ -33,6 +33,7 @@ import org.apache.cxf.rs.security.jose.jws.JwsCompactProducer;
 import org.apache.cxf.rs.security.jose.jws.JwsOutputStream;
 import org.apache.cxf.rs.security.jose.jws.JwsSignature;
 import org.apache.cxf.rs.security.jose.jws.JwsSignatureProvider;
+import org.apache.cxf.rs.security.jose.jwt.JwtConstants;
 import org.apache.cxf.rs.security.jose.jwt.JwtHeaders;
 import org.apache.cxf.rs.security.jose.jwt.JwtHeadersWriter;
 import org.apache.cxf.rs.security.jose.jwt.JwtTokenReaderWriter;
@@ -46,11 +47,10 @@ public class JwsWriterInterceptor extends 
AbstractJwsWriterProvider implements W
     private JwtHeadersWriter writer = new JwtTokenReaderWriter();
     @Override
     public void aroundWriteTo(WriterInterceptorContext ctx) throws 
IOException, WebApplicationException {
-        
//ctx.setMediaType(JAXRSUtils.toMediaType(JwtConstants.MEDIA_TYPE_JOSE_JSON));
         JwtHeaders headers = new JwtHeaders();
         JwsSignatureProvider sigProvider = getInitializedSigProvider(headers);
         setContentTypeIfNeeded(headers, ctx);
-        
+        
ctx.setMediaType(JAXRSUtils.toMediaType(JwtConstants.MEDIA_TYPE_JOSE_JSON));
         OutputStream actualOs = ctx.getOutputStream();
         if (useJwsOutputStream) {
             JwsSignature jwsSignature = 
sigProvider.createJwsSignature(headers);
@@ -86,7 +86,8 @@ public class JwsWriterInterceptor extends 
AbstractJwsWriterProvider implements W
     private void setContentTypeIfNeeded(JwtHeaders headers, 
WriterInterceptorContext ctx) {    
         if (contentTypeRequired) {
             MediaType mt = ctx.getMediaType();
-            if (mt != null) {
+            if (mt != null 
+                && 
!JAXRSUtils.mediaTypeToString(mt).equals(JwtConstants.MEDIA_TYPE_JOSE_JSON)) {
                 if ("application".equals(mt.getType())) {
                     headers.setContentType(mt.getSubtype());
                 } else {

http://git-wip-us.apache.org/repos/asf/cxf/blob/8d6ec66f/rt/transports/http/src/main/java/org/apache/cxf/transport/http/Headers.java
----------------------------------------------------------------------
diff --git 
a/rt/transports/http/src/main/java/org/apache/cxf/transport/http/Headers.java 
b/rt/transports/http/src/main/java/org/apache/cxf/transport/http/Headers.java
index cf5f0ed..46267ed 100644
--- 
a/rt/transports/http/src/main/java/org/apache/cxf/transport/http/Headers.java
+++ 
b/rt/transports/http/src/main/java/org/apache/cxf/transport/http/Headers.java
@@ -275,9 +275,9 @@ public class Headers {
      */
     void logProtocolHeaders(Level level) {
         for (String header : headers.keySet()) {
-            List<String> headerList = headers.get(header);
-            for (String value : headerList) {
-                LOG.log(level, header + ": " + value);
+            List<?> headerList = headers.get(header);
+            for (Object value : headerList) {
+                LOG.log(level, header + ": " + value.toString());
             }
         }
     }

http://git-wip-us.apache.org/repos/asf/cxf/blob/8d6ec66f/systests/jaxrs/src/test/java/org/apache/cxf/systest/jaxrs/JAXRS20ClientServerBookTest.java
----------------------------------------------------------------------
diff --git 
a/systests/jaxrs/src/test/java/org/apache/cxf/systest/jaxrs/JAXRS20ClientServerBookTest.java
 
b/systests/jaxrs/src/test/java/org/apache/cxf/systest/jaxrs/JAXRS20ClientServerBookTest.java
index 01feee0..497b31a 100644
--- 
a/systests/jaxrs/src/test/java/org/apache/cxf/systest/jaxrs/JAXRS20ClientServerBookTest.java
+++ 
b/systests/jaxrs/src/test/java/org/apache/cxf/systest/jaxrs/JAXRS20ClientServerBookTest.java
@@ -700,6 +700,7 @@ public class JAXRS20ClientServerBookTest extends 
AbstractBusClientServerTestBase
         @Override
         public void filter(ClientRequestContext context) throws IOException {
             context.getHeaders().putSingle("Simple", "simple");
+            context.getHeaders().putSingle("Content-Type", 
MediaType.APPLICATION_XML_TYPE);
         }
     }
     

Reply via email to