Repository: cxf
Updated Branches:
  refs/heads/master 3085f0fb4 -> 2841fc7c2


Workaround to get the exceptional responses ignored by XML security out 
interceptors


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

Branch: refs/heads/master
Commit: c4b5bf8b52a7d83a5047c145ca20b37ee608c216
Parents: 2be0649
Author: Sergey Beryozkin <[email protected]>
Authored: Thu Feb 20 17:23:39 2014 +0000
Committer: Sergey Beryozkin <[email protected]>
Committed: Thu Feb 20 17:23:39 2014 +0000

----------------------------------------------------------------------
 .../org/apache/cxf/jaxrs/interceptor/JAXRSInInterceptor.java    | 1 +
 .../cxf/rs/security/xml/AbstractXmlSecOutInterceptor.java       | 3 +++
 .../org/apache/cxf/rs/security/xml/XmlSecOutInterceptor.java    | 5 +++++
 .../apache/cxf/systest/jaxrs/security/xml/JAXRSXmlSecTest.java  | 4 ----
 4 files changed, 9 insertions(+), 4 deletions(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/cxf/blob/c4b5bf8b/rt/frontend/jaxrs/src/main/java/org/apache/cxf/jaxrs/interceptor/JAXRSInInterceptor.java
----------------------------------------------------------------------
diff --git 
a/rt/frontend/jaxrs/src/main/java/org/apache/cxf/jaxrs/interceptor/JAXRSInInterceptor.java
 
b/rt/frontend/jaxrs/src/main/java/org/apache/cxf/jaxrs/interceptor/JAXRSInInterceptor.java
index e382712..9c140fa 100644
--- 
a/rt/frontend/jaxrs/src/main/java/org/apache/cxf/jaxrs/interceptor/JAXRSInInterceptor.java
+++ 
b/rt/frontend/jaxrs/src/main/java/org/apache/cxf/jaxrs/interceptor/JAXRSInInterceptor.java
@@ -227,6 +227,7 @@ public class JAXRSInInterceptor extends 
AbstractPhaseInterceptor<Message> {
                 : ExceptionUtils.toInternalServerErrorException(ex, null);
         }
         message.getExchange().put(Response.class, excResponse);
+        message.getExchange().put(Throwable.class, ex);
     }
     
     private void setExchangeProperties(Message message, OperationResourceInfo 
ori, 

http://git-wip-us.apache.org/repos/asf/cxf/blob/c4b5bf8b/rt/rs/security/xml/src/main/java/org/apache/cxf/rs/security/xml/AbstractXmlSecOutInterceptor.java
----------------------------------------------------------------------
diff --git 
a/rt/rs/security/xml/src/main/java/org/apache/cxf/rs/security/xml/AbstractXmlSecOutInterceptor.java
 
b/rt/rs/security/xml/src/main/java/org/apache/cxf/rs/security/xml/AbstractXmlSecOutInterceptor.java
index 884962b..61a30cd 100644
--- 
a/rt/rs/security/xml/src/main/java/org/apache/cxf/rs/security/xml/AbstractXmlSecOutInterceptor.java
+++ 
b/rt/rs/security/xml/src/main/java/org/apache/cxf/rs/security/xml/AbstractXmlSecOutInterceptor.java
@@ -56,6 +56,9 @@ public abstract class AbstractXmlSecOutInterceptor extends 
AbstractPhaseIntercep
     } 
 
     public void handleMessage(Message message) throws Fault {
+        if (message.getExchange().get(Throwable.class) != null) {
+            return;
+        }
         try {
             Document doc = getDomDocument(message);
             if (doc == null) {

http://git-wip-us.apache.org/repos/asf/cxf/blob/c4b5bf8b/rt/rs/security/xml/src/main/java/org/apache/cxf/rs/security/xml/XmlSecOutInterceptor.java
----------------------------------------------------------------------
diff --git 
a/rt/rs/security/xml/src/main/java/org/apache/cxf/rs/security/xml/XmlSecOutInterceptor.java
 
b/rt/rs/security/xml/src/main/java/org/apache/cxf/rs/security/xml/XmlSecOutInterceptor.java
index f9f7a6a..aa6f381 100644
--- 
a/rt/rs/security/xml/src/main/java/org/apache/cxf/rs/security/xml/XmlSecOutInterceptor.java
+++ 
b/rt/rs/security/xml/src/main/java/org/apache/cxf/rs/security/xml/XmlSecOutInterceptor.java
@@ -102,6 +102,11 @@ public class XmlSecOutInterceptor implements 
PhaseInterceptor<Message> {
     }
 
     public void handleMessage(Message message) throws Fault {
+        
+        if (message.getExchange().get(Throwable.class) != null) {
+            return;
+        }
+        
         OutputStream os = message.getContent(OutputStream.class);
         String encoding = getEncoding(message);
         

http://git-wip-us.apache.org/repos/asf/cxf/blob/c4b5bf8b/systests/rs-security/src/test/java/org/apache/cxf/systest/jaxrs/security/xml/JAXRSXmlSecTest.java
----------------------------------------------------------------------
diff --git 
a/systests/rs-security/src/test/java/org/apache/cxf/systest/jaxrs/security/xml/JAXRSXmlSecTest.java
 
b/systests/rs-security/src/test/java/org/apache/cxf/systest/jaxrs/security/xml/JAXRSXmlSecTest.java
index e2e2f25..68c8047 100644
--- 
a/systests/rs-security/src/test/java/org/apache/cxf/systest/jaxrs/security/xml/JAXRSXmlSecTest.java
+++ 
b/systests/rs-security/src/test/java/org/apache/cxf/systest/jaxrs/security/xml/JAXRSXmlSecTest.java
@@ -347,10 +347,6 @@ public class JAXRSXmlSecTest extends 
AbstractBusClientServerTestBase {
     
     @Test
     public void testPostEncryptedSignedBookInvalid() throws Exception {
-        if (STAX_PORT.equals(test.port)) {
-            // TODO Problem with error handling on the server side
-            return;
-        }
         String address = "https://localhost:"; + test.port + 
"/xmlsec-validate/bookstore/books";
         Map<String, Object> properties = new HashMap<String, Object>();
         properties.put("ws-security.callback-handler", 

Reply via email to