You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@cxf.apache.org by em...@apache.org on 2018/01/29 14:06:57 UTC

[cxf] 02/02: [CXF-7520]:Fix DecoupledJMSTests

This is an automated email from the ASF dual-hosted git repository.

ema pushed a commit to branch master
in repository https://gitbox.apache.org/repos/asf/cxf.git

commit bbe2ddf81f05a8b69ea5fdc176488c1c5412555e
Author: Jim Ma <em...@apache.org>
AuthorDate: Fri Jan 26 19:03:32 2018 +0800

    [CXF-7520]:Fix DecoupledJMSTests
---
 .../java/org/apache/cxf/jaxb/JAXBDataBinding.java  |  8 +++++++-
 .../org/apache/cxf/jaxb/io/DataWriterImpl.java     |  3 +--
 .../apache/cxf/ws/addressing/soap/MAPCodec.java    |  4 +++-
 .../apache/cxf/testutil/common/ServerLauncher.java | 23 +++++++++++++---------
 4 files changed, 25 insertions(+), 13 deletions(-)

diff --git a/rt/databinding/jaxb/src/main/java/org/apache/cxf/jaxb/JAXBDataBinding.java b/rt/databinding/jaxb/src/main/java/org/apache/cxf/jaxb/JAXBDataBinding.java
index 98e0635..20ab5c2 100644
--- a/rt/databinding/jaxb/src/main/java/org/apache/cxf/jaxb/JAXBDataBinding.java
+++ b/rt/databinding/jaxb/src/main/java/org/apache/cxf/jaxb/JAXBDataBinding.java
@@ -243,13 +243,14 @@ public class JAXBDataBinding extends AbstractInterceptorProvidingDataBinding
         this();
         setContext(context);
     }
-
+    
     public JAXBContext getContext() {
         return context;
     }
 
     public final void setContext(JAXBContext ctx) {
         context = ctx;
+        //create default MininumEscapeHandler
         escapeHandler = JAXBUtils.createMininumEscapeHandler(ctx.getClass());
     }
 
@@ -257,6 +258,11 @@ public class JAXBDataBinding extends AbstractInterceptorProvidingDataBinding
         return escapeHandler;
     }
     
+    public void setEscapeHandler(Object handler) {
+        escapeHandler = handler;
+        
+    }
+    
     @SuppressWarnings("unchecked")
     public <T> DataWriter<T> createWriter(Class<T> c) {
 
diff --git a/rt/databinding/jaxb/src/main/java/org/apache/cxf/jaxb/io/DataWriterImpl.java b/rt/databinding/jaxb/src/main/java/org/apache/cxf/jaxb/io/DataWriterImpl.java
index db7c424..b342c32 100644
--- a/rt/databinding/jaxb/src/main/java/org/apache/cxf/jaxb/io/DataWriterImpl.java
+++ b/rt/databinding/jaxb/src/main/java/org/apache/cxf/jaxb/io/DataWriterImpl.java
@@ -135,11 +135,10 @@ public class DataWriterImpl<T> extends JAXBDataBase implements DataWriter<T> {
             marshaller.setProperty(Marshaller.JAXB_FRAGMENT, true);
             marshaller.setProperty(Marshaller.JAXB_FORMATTED_OUTPUT, Boolean.FALSE);
             marshaller.setListener(databinding.getMarshallerListener());
-            if (noEscape) {
+            if (noEscape || databinding.getEscapeHandler() == null) {
                 JAXBUtils.setNoEscapeHandler(marshaller);
             } else {
                 JAXBUtils.setEscapeHandler(marshaller, databinding.getEscapeHandler());
-
             }
 
             if (setEventHandler) {
diff --git a/rt/ws/addr/src/main/java/org/apache/cxf/ws/addressing/soap/MAPCodec.java b/rt/ws/addr/src/main/java/org/apache/cxf/ws/addressing/soap/MAPCodec.java
index 4967467..f134814 100644
--- a/rt/ws/addr/src/main/java/org/apache/cxf/ws/addressing/soap/MAPCodec.java
+++ b/rt/ws/addr/src/main/java/org/apache/cxf/ws/addressing/soap/MAPCodec.java
@@ -715,8 +715,10 @@ public class MAPCodec extends AbstractSoapInterceptor {
                                  Class<T> clz,
                                  JAXBContext ctx,
                                  boolean mustUnderstand) throws JAXBException {
+        JAXBDataBinding jaxbDataBinding = new JAXBDataBinding(ctx);
+        jaxbDataBinding.setEscapeHandler(null);
         SoapHeader h = new SoapHeader(qname, new JAXBElement<T>(qname, clz, value),
-                                      new JAXBDataBinding(ctx));
+                                      jaxbDataBinding);
         h.setMustUnderstand(mustUnderstand);
         message.getHeaders().add(h);
     }
diff --git a/testutils/src/main/java/org/apache/cxf/testutil/common/ServerLauncher.java b/testutils/src/main/java/org/apache/cxf/testutil/common/ServerLauncher.java
index ed2f0bf..873c40f 100644
--- a/testutils/src/main/java/org/apache/cxf/testutil/common/ServerLauncher.java
+++ b/testutils/src/main/java/org/apache/cxf/testutil/common/ServerLauncher.java
@@ -30,6 +30,7 @@ import java.net.URISyntaxException;
 import java.net.URL;
 import java.net.URLClassLoader;
 import java.nio.file.Files;
+import java.nio.file.NoSuchFileException;
 import java.nio.file.Paths;
 import java.util.ArrayList;
 import java.util.HashMap;
@@ -287,17 +288,21 @@ public class ServerLauncher {
             try {
                 try {
                     os = Files.newOutputStream(Paths.get(outputDir + className + ".out"));
-                } catch (FileNotFoundException fex) {
-                    outputDir = System.getProperty("basedir");
-                    if (outputDir == null) {
-                        outputDir = "target/surefire-reports/";
+                } catch (IOException ioe) {
+                    if (ioe instanceof FileNotFoundException || ioe instanceof NoSuchFileException) {
+                        outputDir = System.getProperty("basedir");
+                        if (outputDir == null) {
+                            outputDir = "target/surefire-reports/";
+                        } else {
+                            outputDir += "/target/surefire-reports/";
+                        }
+
+                        File file = new File(outputDir);
+                        file.mkdirs();
+                        os = Files.newOutputStream(Paths.get(outputDir + className + ".out"));
                     } else {
-                        outputDir += "/target/surefire-reports/";
+                        throw ioe;
                     }
-
-                    File file = new File(outputDir);
-                    file.mkdirs();
-                    os = Files.newOutputStream(Paths.get(outputDir + className + ".out"));
                 }
             } catch (IOException ex) {
                 if (!ex.getMessage().contains("Stream closed")) {

-- 
To stop receiving notification emails like this one, please contact
ema@apache.org.