You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@cxf.apache.org by ff...@apache.org on 2013/08/26 10:57:42 UTC

svn commit: r1517467 - in /cxf/branches/2.6.x-fixes: ./ api/src/main/java/org/apache/cxf/interceptor/ api/src/main/java/org/apache/cxf/message/ rt/bindings/soap/src/main/java/org/apache/cxf/binding/soap/interceptor/ systests/uncategorized/src/test/java...

Author: ffang
Date: Mon Aug 26 08:57:41 2013
New Revision: 1517467

URL: http://svn.apache.org/r1517467
Log:
Merged revisions 1517463 via svnmerge from 
https://svn.apache.org/repos/asf/cxf/branches/2.7.x-fixes

................
  r1517463 | ffang | 2013-08-26 16:46:44 +0800 (一, 26  8 2013) | 9 lines
  
  Merged revisions 1517432 via svnmerge from 
  https://svn.apache.org/repos/asf/cxf/trunk
  
  ........
    r1517432 | ffang | 2013-08-26 14:14:27 +0800 (一, 26  8 2013) | 1 line
    
    [CXF-5231]NoSuchElementException in ClientFaultConverter when stack trace message contains line breaks
  ........
................

Modified:
    cxf/branches/2.6.x-fixes/   (props changed)
    cxf/branches/2.6.x-fixes/api/src/main/java/org/apache/cxf/interceptor/ClientFaultConverter.java
    cxf/branches/2.6.x-fixes/api/src/main/java/org/apache/cxf/message/Message.java
    cxf/branches/2.6.x-fixes/rt/bindings/soap/src/main/java/org/apache/cxf/binding/soap/interceptor/AbstractSoapInterceptor.java
    cxf/branches/2.6.x-fixes/systests/uncategorized/src/test/java/org/apache/cxf/systest/soapfault/details/GreeterImpl11.java
    cxf/branches/2.6.x-fixes/systests/uncategorized/src/test/java/org/apache/cxf/systest/soapfault/details/Soap11ClientServerTest.java

Propchange: cxf/branches/2.6.x-fixes/
------------------------------------------------------------------------------
  Merged /cxf/branches/2.7.x-fixes:r1517463
  Merged /cxf/trunk:r1517432

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

Modified: cxf/branches/2.6.x-fixes/api/src/main/java/org/apache/cxf/interceptor/ClientFaultConverter.java
URL: http://svn.apache.org/viewvc/cxf/branches/2.6.x-fixes/api/src/main/java/org/apache/cxf/interceptor/ClientFaultConverter.java?rev=1517467&r1=1517466&r2=1517467&view=diff
==============================================================================
--- cxf/branches/2.6.x-fixes/api/src/main/java/org/apache/cxf/interceptor/ClientFaultConverter.java (original)
+++ cxf/branches/2.6.x-fixes/api/src/main/java/org/apache/cxf/interceptor/ClientFaultConverter.java Mon Aug 26 08:57:41 2013
@@ -239,7 +239,7 @@ public class ClientFaultConverter extend
                 XPathConstants.STRING);
         List<StackTraceElement> stackTraceList = new ArrayList<StackTraceElement>();
         if (!StringUtils.isEmpty(ss)) {
-            StringTokenizer st = new StringTokenizer(ss, "\n");
+            StringTokenizer st = new StringTokenizer(ss, Message.EXCEPTION_CAUSE_SUFFIX);
             while (st.hasMoreTokens()) {
                 String oneLine = st.nextToken();
                 if (oneLine.startsWith("Caused by:")) {

Modified: cxf/branches/2.6.x-fixes/api/src/main/java/org/apache/cxf/message/Message.java
URL: http://svn.apache.org/viewvc/cxf/branches/2.6.x-fixes/api/src/main/java/org/apache/cxf/message/Message.java?rev=1517467&r1=1517466&r2=1517467&view=diff
==============================================================================
--- cxf/branches/2.6.x-fixes/api/src/main/java/org/apache/cxf/message/Message.java (original)
+++ cxf/branches/2.6.x-fixes/api/src/main/java/org/apache/cxf/message/Message.java Mon Aug 26 08:57:41 2013
@@ -118,6 +118,13 @@ public interface Message extends StringM
      */
     String EXCEPTION_MESSAGE_CAUSE_ENABLED = "exceptionMessageCauseEnabled";
 
+    /**
+     * A very unique delimiter used for exception with FAULT_STACKTRACE_ENABLED enable, 
+     * which is easy for client to differentiate the cause and stacktrace when unmarsall 
+     * a fault message 
+     */
+    String EXCEPTION_CAUSE_SUFFIX = "#*#";
+
     String CONTENT_TYPE = "Content-Type";    
     String ACCEPT_CONTENT_TYPE = "Accept";
     String BASE_PATH = Message.class.getName() + ".BASE_PATH";

Modified: cxf/branches/2.6.x-fixes/rt/bindings/soap/src/main/java/org/apache/cxf/binding/soap/interceptor/AbstractSoapInterceptor.java
URL: http://svn.apache.org/viewvc/cxf/branches/2.6.x-fixes/rt/bindings/soap/src/main/java/org/apache/cxf/binding/soap/interceptor/AbstractSoapInterceptor.java?rev=1517467&r1=1517466&r2=1517467&view=diff
==============================================================================
--- cxf/branches/2.6.x-fixes/rt/bindings/soap/src/main/java/org/apache/cxf/binding/soap/interceptor/AbstractSoapInterceptor.java (original)
+++ cxf/branches/2.6.x-fixes/rt/bindings/soap/src/main/java/org/apache/cxf/binding/soap/interceptor/AbstractSoapInterceptor.java Mon Aug 26 08:57:41 2013
@@ -82,12 +82,12 @@ public abstract class AbstractSoapInterc
             while (throwable != null) {
                 for (StackTraceElement ste : throwable.getStackTrace()) {
                     sb.append(ste.getClassName() + "!" + ste.getMethodName() + "!" + ste.getFileName() + "!"
-                          + ste.getLineNumber() + "\n");
+                          + ste.getLineNumber() + Message.EXCEPTION_CAUSE_SUFFIX);
                 }
                 throwable = throwable.getCause();
                 if (throwable != null) {
                     sb.append("Caused by: " +  throwable.getClass().getCanonicalName() 
-                              + " : " + throwable.getMessage() + "\n");
+                              + " : " + throwable.getMessage() + Message.EXCEPTION_CAUSE_SUFFIX);
                 }
             }
             Element detail = fault.getDetail();

Modified: cxf/branches/2.6.x-fixes/systests/uncategorized/src/test/java/org/apache/cxf/systest/soapfault/details/GreeterImpl11.java
URL: http://svn.apache.org/viewvc/cxf/branches/2.6.x-fixes/systests/uncategorized/src/test/java/org/apache/cxf/systest/soapfault/details/GreeterImpl11.java?rev=1517467&r1=1517466&r2=1517467&view=diff
==============================================================================
--- cxf/branches/2.6.x-fixes/systests/uncategorized/src/test/java/org/apache/cxf/systest/soapfault/details/GreeterImpl11.java (original)
+++ cxf/branches/2.6.x-fixes/systests/uncategorized/src/test/java/org/apache/cxf/systest/soapfault/details/GreeterImpl11.java Mon Aug 26 08:57:41 2013
@@ -53,6 +53,11 @@ public class GreeterImpl11 {
             throw new Fault("greetMeFault", LOG, new IllegalArgumentException("Get a wrong name greetMe"));
         } else if (me.startsWith("E")) {
             throw new Fault("invalid", LOG);
+        } else if (me.startsWith("newline")) {
+            Exception cause = new IllegalArgumentException("Get a wrong name <greetMe>"
+                                                           , new NullPointerException("Test \n cause."));
+            cause.fillInStackTrace();
+            throw new Fault("greetMeFault", LOG, cause);
         } else {
             return "Hello " + me;
         }

Modified: cxf/branches/2.6.x-fixes/systests/uncategorized/src/test/java/org/apache/cxf/systest/soapfault/details/Soap11ClientServerTest.java
URL: http://svn.apache.org/viewvc/cxf/branches/2.6.x-fixes/systests/uncategorized/src/test/java/org/apache/cxf/systest/soapfault/details/Soap11ClientServerTest.java?rev=1517467&r1=1517466&r2=1517467&view=diff
==============================================================================
--- cxf/branches/2.6.x-fixes/systests/uncategorized/src/test/java/org/apache/cxf/systest/soapfault/details/Soap11ClientServerTest.java (original)
+++ cxf/branches/2.6.x-fixes/systests/uncategorized/src/test/java/org/apache/cxf/systest/soapfault/details/Soap11ClientServerTest.java Mon Aug 26 08:57:41 2013
@@ -95,6 +95,26 @@ public class Soap11ClientServerTest exte
             assertEquals("invalid", ex.getMessage());
         } 
     }
+    
+    
+    @Test
+    public void testNewLineInExceptionMessage() throws Exception {
+        Greeter greeter = getGreeter();
+        
+        try {
+            greeter.greetMe("newline");
+            fail("Should throw Exception!");
+        } catch (SOAPFaultException ex) {
+            assertEquals("greetMeFault Caused by: Get a wrong name <greetMe>", ex.getMessage());
+            StackTraceElement[] elements = ex.getCause().getStackTrace();
+            assertEquals("org.apache.cxf.systest.soapfault.details.GreeterImpl11", 
+                         elements[0].getClassName());
+            assertTrue(ex.getCause().getMessage().endsWith("Test \n cause."));
+        } 
+
+        
+    }
+
 
     @Test
     public void testPingMeFault() throws Exception {