You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@cxf.apache.org by dk...@apache.org on 2017/02/03 19:50:40 UTC

[1/2] cxf git commit: Update transports and uncategorized systests to use the logging feature instead of the deprecated interceptors

Repository: cxf
Updated Branches:
  refs/heads/master 8be745da6 -> bcacbef8c


Update transports and uncategorized systests to use the logging feature instead of the deprecated interceptors


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

Branch: refs/heads/master
Commit: bcacbef8c3aa0e40e2cf560c6d0922edb4b641fb
Parents: 5602eff
Author: Daniel Kulp <dk...@apache.org>
Authored: Fri Feb 3 14:47:59 2017 -0500
Committer: Daniel Kulp <dk...@apache.org>
Committed: Fri Feb 3 14:48:36 2017 -0500

----------------------------------------------------------------------
 systests/transports/pom.xml                     |  5 ++
 .../http_jetty/JettyBasicAuthServer.java        |  4 +-
 .../systest/http_jetty/JettyBasicAuthTest.java  |  4 +-
 .../systest/http_jetty/JettyDigestAuthTest.java |  4 +-
 .../cxf/systest/soap_udp/SoapUDPTest.java       |  2 +-
 systests/uncategorized/pom.xml                  |  5 ++
 .../java/org/apache/cxf/cxf2006/Server.java     |  4 +-
 .../factory_pattern/NumberFactoryImpl.java      |  4 +-
 .../systest/fault/IntFaultClientServerTest.java |  4 +-
 .../interceptor/InterceptorFaultTest.java       |  7 +-
 .../cxf/systest/mtom/ClientMtomXopTest.java     |  4 +-
 .../mtom_bindingtype/MTOMBindingTypeTest.java   |  4 +-
 .../MtomFeatureClientServerTest.java            |  5 +-
 .../ValidationClientServerTest.java             |  2 +-
 .../StaxTransformFeatureTest.java               | 71 +++++++-------------
 .../systest/stringarray/StringArrayTest.java    | 19 +++---
 .../apache/cxf/systest/versioning/Server.java   |  2 +-
 17 files changed, 72 insertions(+), 78 deletions(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/cxf/blob/bcacbef8/systests/transports/pom.xml
----------------------------------------------------------------------
diff --git a/systests/transports/pom.xml b/systests/transports/pom.xml
index 9bccf56..199427c 100644
--- a/systests/transports/pom.xml
+++ b/systests/transports/pom.xml
@@ -168,6 +168,11 @@
         </dependency>
         <dependency>
             <groupId>org.apache.cxf</groupId>
+            <artifactId>cxf-rt-features-logging</artifactId>
+            <version>${project.version}</version>
+        </dependency>
+        <dependency>
+            <groupId>org.apache.cxf</groupId>
             <artifactId>cxf-testutils</artifactId>
             <version>${project.version}</version>
             <scope>test</scope>

http://git-wip-us.apache.org/repos/asf/cxf/blob/bcacbef8/systests/transports/src/test/java/org/apache/cxf/systest/http_jetty/JettyBasicAuthServer.java
----------------------------------------------------------------------
diff --git a/systests/transports/src/test/java/org/apache/cxf/systest/http_jetty/JettyBasicAuthServer.java b/systests/transports/src/test/java/org/apache/cxf/systest/http_jetty/JettyBasicAuthServer.java
index ae26721..007f38e 100644
--- a/systests/transports/src/test/java/org/apache/cxf/systest/http_jetty/JettyBasicAuthServer.java
+++ b/systests/transports/src/test/java/org/apache/cxf/systest/http_jetty/JettyBasicAuthServer.java
@@ -26,8 +26,8 @@ import javax.xml.ws.Endpoint;
 
 import org.apache.cxf.Bus;
 import org.apache.cxf.bus.spring.SpringBusFactory;
-import org.apache.cxf.interceptor.LoggingInInterceptor;
-import org.apache.cxf.interceptor.LoggingOutInterceptor;
+import org.apache.cxf.ext.logging.LoggingInInterceptor;
+import org.apache.cxf.ext.logging.LoggingOutInterceptor;
 import org.apache.cxf.testutil.common.AbstractBusTestServerBase;
 
 

http://git-wip-us.apache.org/repos/asf/cxf/blob/bcacbef8/systests/transports/src/test/java/org/apache/cxf/systest/http_jetty/JettyBasicAuthTest.java
----------------------------------------------------------------------
diff --git a/systests/transports/src/test/java/org/apache/cxf/systest/http_jetty/JettyBasicAuthTest.java b/systests/transports/src/test/java/org/apache/cxf/systest/http_jetty/JettyBasicAuthTest.java
index 3072280..980e87c 100644
--- a/systests/transports/src/test/java/org/apache/cxf/systest/http_jetty/JettyBasicAuthTest.java
+++ b/systests/transports/src/test/java/org/apache/cxf/systest/http_jetty/JettyBasicAuthTest.java
@@ -28,9 +28,9 @@ import org.apache.cxf.Bus;
 import org.apache.cxf.BusFactory;
 import org.apache.cxf.bus.CXFBusFactory;
 import org.apache.cxf.configuration.security.AuthorizationPolicy;
+import org.apache.cxf.ext.logging.LoggingInInterceptor;
+import org.apache.cxf.ext.logging.LoggingOutInterceptor;
 import org.apache.cxf.frontend.ClientProxy;
-import org.apache.cxf.interceptor.LoggingInInterceptor;
-import org.apache.cxf.interceptor.LoggingOutInterceptor;
 import org.apache.cxf.jaxws.endpoint.dynamic.JaxWsDynamicClientFactory;
 import org.apache.cxf.testutil.common.AbstractClientServerTestBase;
 import org.apache.cxf.transport.http.HTTPConduit;

http://git-wip-us.apache.org/repos/asf/cxf/blob/bcacbef8/systests/transports/src/test/java/org/apache/cxf/systest/http_jetty/JettyDigestAuthTest.java
----------------------------------------------------------------------
diff --git a/systests/transports/src/test/java/org/apache/cxf/systest/http_jetty/JettyDigestAuthTest.java b/systests/transports/src/test/java/org/apache/cxf/systest/http_jetty/JettyDigestAuthTest.java
index fe6e106..130f38c 100644
--- a/systests/transports/src/test/java/org/apache/cxf/systest/http_jetty/JettyDigestAuthTest.java
+++ b/systests/transports/src/test/java/org/apache/cxf/systest/http_jetty/JettyDigestAuthTest.java
@@ -32,11 +32,11 @@ import org.apache.cxf.BusFactory;
 import org.apache.cxf.bus.CXFBusFactory;
 import org.apache.cxf.bus.spring.SpringBusFactory;
 import org.apache.cxf.configuration.security.AuthorizationPolicy;
+import org.apache.cxf.ext.logging.LoggingInInterceptor;
+import org.apache.cxf.ext.logging.LoggingOutInterceptor;
 import org.apache.cxf.frontend.ClientProxy;
 import org.apache.cxf.helpers.CastUtils;
 import org.apache.cxf.interceptor.Fault;
-import org.apache.cxf.interceptor.LoggingInInterceptor;
-import org.apache.cxf.interceptor.LoggingOutInterceptor;
 import org.apache.cxf.jaxws.endpoint.dynamic.JaxWsDynamicClientFactory;
 import org.apache.cxf.message.Message;
 import org.apache.cxf.phase.AbstractPhaseInterceptor;

http://git-wip-us.apache.org/repos/asf/cxf/blob/bcacbef8/systests/transports/src/test/java/org/apache/cxf/systest/soap_udp/SoapUDPTest.java
----------------------------------------------------------------------
diff --git a/systests/transports/src/test/java/org/apache/cxf/systest/soap_udp/SoapUDPTest.java b/systests/transports/src/test/java/org/apache/cxf/systest/soap_udp/SoapUDPTest.java
index f1e1f19..0bb1b8f 100644
--- a/systests/transports/src/test/java/org/apache/cxf/systest/soap_udp/SoapUDPTest.java
+++ b/systests/transports/src/test/java/org/apache/cxf/systest/soap_udp/SoapUDPTest.java
@@ -23,7 +23,7 @@ import javax.xml.namespace.QName;
 import javax.xml.ws.Service;
 
 import org.apache.cxf.BusFactory;
-import org.apache.cxf.feature.LoggingFeature;
+import org.apache.cxf.ext.logging.LoggingFeature;
 import org.apache.cxf.testutil.common.AbstractBusClientServerTestBase;
 import org.apache.hello_world_soap_http.Greeter;
 

http://git-wip-us.apache.org/repos/asf/cxf/blob/bcacbef8/systests/uncategorized/pom.xml
----------------------------------------------------------------------
diff --git a/systests/uncategorized/pom.xml b/systests/uncategorized/pom.xml
index 650d6ca..e7ee27c 100644
--- a/systests/uncategorized/pom.xml
+++ b/systests/uncategorized/pom.xml
@@ -151,6 +151,11 @@
         </dependency>
         <dependency>
             <groupId>org.apache.cxf</groupId>
+            <artifactId>cxf-rt-features-logging</artifactId>
+            <version>${project.version}</version>
+        </dependency>
+        <dependency>
+            <groupId>org.apache.cxf</groupId>
             <artifactId>cxf-rt-databinding-jaxb</artifactId>
             <version>${project.version}</version>
         </dependency>

http://git-wip-us.apache.org/repos/asf/cxf/blob/bcacbef8/systests/uncategorized/src/test/java/org/apache/cxf/cxf2006/Server.java
----------------------------------------------------------------------
diff --git a/systests/uncategorized/src/test/java/org/apache/cxf/cxf2006/Server.java b/systests/uncategorized/src/test/java/org/apache/cxf/cxf2006/Server.java
index 90580a9..62d69a5 100644
--- a/systests/uncategorized/src/test/java/org/apache/cxf/cxf2006/Server.java
+++ b/systests/uncategorized/src/test/java/org/apache/cxf/cxf2006/Server.java
@@ -23,8 +23,8 @@ import java.net.URL;
 
 import javax.xml.ws.Endpoint;
 
-import org.apache.cxf.interceptor.LoggingInInterceptor;
-import org.apache.cxf.interceptor.LoggingOutInterceptor;
+import org.apache.cxf.ext.logging.LoggingInInterceptor;
+import org.apache.cxf.ext.logging.LoggingOutInterceptor;
 import org.apache.cxf.jaxws.EndpointImpl;
 import org.apache.cxf.testutil.common.AbstractBusTestServerBase;
 import org.apache.hello_world_soap_http.RPCLitGreeterImpl;

http://git-wip-us.apache.org/repos/asf/cxf/blob/bcacbef8/systests/uncategorized/src/test/java/org/apache/cxf/systest/factory_pattern/NumberFactoryImpl.java
----------------------------------------------------------------------
diff --git a/systests/uncategorized/src/test/java/org/apache/cxf/systest/factory_pattern/NumberFactoryImpl.java b/systests/uncategorized/src/test/java/org/apache/cxf/systest/factory_pattern/NumberFactoryImpl.java
index 876cdf1..443fd2a7 100644
--- a/systests/uncategorized/src/test/java/org/apache/cxf/systest/factory_pattern/NumberFactoryImpl.java
+++ b/systests/uncategorized/src/test/java/org/apache/cxf/systest/factory_pattern/NumberFactoryImpl.java
@@ -28,9 +28,9 @@ import javax.xml.transform.Source;
 import javax.xml.ws.wsaddressing.W3CEndpointReference;
 
 import org.apache.cxf.Bus;
+import org.apache.cxf.ext.logging.LoggingInInterceptor;
+import org.apache.cxf.ext.logging.LoggingOutInterceptor;
 import org.apache.cxf.factory_pattern.NumberFactory;
-import org.apache.cxf.interceptor.LoggingInInterceptor;
-import org.apache.cxf.interceptor.LoggingOutInterceptor;
 import org.apache.cxf.jaxws.EndpointImpl;
 import org.apache.cxf.testutil.common.EmbeddedJMSBrokerLauncher;
 import org.apache.cxf.ws.addressing.EndpointReferenceType;

http://git-wip-us.apache.org/repos/asf/cxf/blob/bcacbef8/systests/uncategorized/src/test/java/org/apache/cxf/systest/fault/IntFaultClientServerTest.java
----------------------------------------------------------------------
diff --git a/systests/uncategorized/src/test/java/org/apache/cxf/systest/fault/IntFaultClientServerTest.java b/systests/uncategorized/src/test/java/org/apache/cxf/systest/fault/IntFaultClientServerTest.java
index 87368f8..bbe3d89 100644
--- a/systests/uncategorized/src/test/java/org/apache/cxf/systest/fault/IntFaultClientServerTest.java
+++ b/systests/uncategorized/src/test/java/org/apache/cxf/systest/fault/IntFaultClientServerTest.java
@@ -28,10 +28,10 @@ import javax.xml.ws.BindingProvider;
 import org.w3c.dom.Node;
 
 import org.apache.cxf.binding.soap.SoapHeader;
+import org.apache.cxf.ext.logging.LoggingInInterceptor;
+import org.apache.cxf.ext.logging.LoggingOutInterceptor;
 import org.apache.cxf.frontend.ClientProxy;
 import org.apache.cxf.headers.Header;
-import org.apache.cxf.interceptor.LoggingInInterceptor;
-import org.apache.cxf.interceptor.LoggingOutInterceptor;
 import org.apache.cxf.testutil.common.AbstractBusClientServerTestBase;
 import org.apache.intfault.BadRecordLitFault;
 import org.apache.intfault.Greeter;

http://git-wip-us.apache.org/repos/asf/cxf/blob/bcacbef8/systests/uncategorized/src/test/java/org/apache/cxf/systest/interceptor/InterceptorFaultTest.java
----------------------------------------------------------------------
diff --git a/systests/uncategorized/src/test/java/org/apache/cxf/systest/interceptor/InterceptorFaultTest.java b/systests/uncategorized/src/test/java/org/apache/cxf/systest/interceptor/InterceptorFaultTest.java
index ec7ae3d..8c0070e 100644
--- a/systests/uncategorized/src/test/java/org/apache/cxf/systest/interceptor/InterceptorFaultTest.java
+++ b/systests/uncategorized/src/test/java/org/apache/cxf/systest/interceptor/InterceptorFaultTest.java
@@ -38,6 +38,8 @@ import org.apache.cxf.binding.soap.SoapFault;
 import org.apache.cxf.bus.spring.SpringBusFactory;
 import org.apache.cxf.common.logging.LogUtils;
 import org.apache.cxf.endpoint.Client;
+import org.apache.cxf.ext.logging.LoggingInInterceptor;
+import org.apache.cxf.ext.logging.event.PrintWriterEventSender;
 import org.apache.cxf.frontend.ClientProxy;
 import org.apache.cxf.greeter_control.Control;
 import org.apache.cxf.greeter_control.ControlImpl;
@@ -47,7 +49,6 @@ import org.apache.cxf.greeter_control.Greeter;
 import org.apache.cxf.greeter_control.GreeterService;
 import org.apache.cxf.greeter_control.PingMeFault;
 import org.apache.cxf.greeter_control.types.FaultLocation;
-import org.apache.cxf.interceptor.LoggingInInterceptor;
 import org.apache.cxf.message.Message;
 import org.apache.cxf.phase.Phase;
 import org.apache.cxf.phase.PhaseComparator;
@@ -199,8 +200,8 @@ public class InterceptorFaultTest extends AbstractBusClientServerTestBase {
             // writer to grab the content of soap fault.
             // robust is not yet used at client's side, but I think it should
             StringWriter writer = new StringWriter();
-            ((Client)greeter).getInInterceptors().add(new LoggingInInterceptor());
-            ((LoggingInInterceptor)greeterBus.getInInterceptors().get(0)).setPrintWriter(new PrintWriter(writer));
+            ((Client)greeter).getInInterceptors()
+                .add(new LoggingInInterceptor(new PrintWriterEventSender(new PrintWriter(writer))));
             // it should tell CXF to convert one-way robust out faults into real SoapFaultException
             ((Client)greeter).getEndpoint().put(Message.ROBUST_ONEWAY, true);
             greeter.greetMeOneWay("oneway");

http://git-wip-us.apache.org/repos/asf/cxf/blob/bcacbef8/systests/uncategorized/src/test/java/org/apache/cxf/systest/mtom/ClientMtomXopTest.java
----------------------------------------------------------------------
diff --git a/systests/uncategorized/src/test/java/org/apache/cxf/systest/mtom/ClientMtomXopTest.java b/systests/uncategorized/src/test/java/org/apache/cxf/systest/mtom/ClientMtomXopTest.java
index d88d117..e604a7a 100644
--- a/systests/uncategorized/src/test/java/org/apache/cxf/systest/mtom/ClientMtomXopTest.java
+++ b/systests/uncategorized/src/test/java/org/apache/cxf/systest/mtom/ClientMtomXopTest.java
@@ -38,10 +38,10 @@ import org.apache.cxf.binding.soap.saaj.SAAJOutInterceptor;
 import org.apache.cxf.endpoint.Client;
 import org.apache.cxf.endpoint.ClientImpl;
 import org.apache.cxf.endpoint.Endpoint;
+import org.apache.cxf.ext.logging.LoggingInInterceptor;
+import org.apache.cxf.ext.logging.LoggingOutInterceptor;
 import org.apache.cxf.frontend.ClientProxy;
 import org.apache.cxf.helpers.IOUtils;
-import org.apache.cxf.interceptor.LoggingInInterceptor;
-import org.apache.cxf.interceptor.LoggingOutInterceptor;
 import org.apache.cxf.jaxws.EndpointImpl;
 import org.apache.cxf.jaxws.JaxWsClientProxy;
 import org.apache.cxf.jaxws.binding.soap.SOAPBindingImpl;

http://git-wip-us.apache.org/repos/asf/cxf/blob/bcacbef8/systests/uncategorized/src/test/java/org/apache/cxf/systest/mtom_bindingtype/MTOMBindingTypeTest.java
----------------------------------------------------------------------
diff --git a/systests/uncategorized/src/test/java/org/apache/cxf/systest/mtom_bindingtype/MTOMBindingTypeTest.java b/systests/uncategorized/src/test/java/org/apache/cxf/systest/mtom_bindingtype/MTOMBindingTypeTest.java
index f50919e..02d4df8 100644
--- a/systests/uncategorized/src/test/java/org/apache/cxf/systest/mtom_bindingtype/MTOMBindingTypeTest.java
+++ b/systests/uncategorized/src/test/java/org/apache/cxf/systest/mtom_bindingtype/MTOMBindingTypeTest.java
@@ -29,8 +29,8 @@ import javax.xml.namespace.QName;
 import javax.xml.ws.BindingProvider;
 import javax.xml.ws.Holder;
 import javax.xml.ws.soap.SOAPBinding;
-import org.apache.cxf.interceptor.LoggingInInterceptor;
-import org.apache.cxf.interceptor.LoggingOutInterceptor;
+import org.apache.cxf.ext.logging.LoggingInInterceptor;
+import org.apache.cxf.ext.logging.LoggingOutInterceptor;
 import org.apache.cxf.systest.mtom_feature.Hello;
 import org.apache.cxf.systest.mtom_feature.HelloService;
 import org.apache.cxf.systest.mtom_feature.ImageHelper;

http://git-wip-us.apache.org/repos/asf/cxf/blob/bcacbef8/systests/uncategorized/src/test/java/org/apache/cxf/systest/mtom_feature/MtomFeatureClientServerTest.java
----------------------------------------------------------------------
diff --git a/systests/uncategorized/src/test/java/org/apache/cxf/systest/mtom_feature/MtomFeatureClientServerTest.java b/systests/uncategorized/src/test/java/org/apache/cxf/systest/mtom_feature/MtomFeatureClientServerTest.java
index f5581a5..c87967c 100644
--- a/systests/uncategorized/src/test/java/org/apache/cxf/systest/mtom_feature/MtomFeatureClientServerTest.java
+++ b/systests/uncategorized/src/test/java/org/apache/cxf/systest/mtom_feature/MtomFeatureClientServerTest.java
@@ -31,7 +31,8 @@ import javax.xml.ws.Holder;
 import javax.xml.ws.Service;
 import javax.xml.ws.soap.MTOMFeature;
 
-import org.apache.cxf.interceptor.LoggingOutInterceptor;
+import org.apache.cxf.ext.logging.LoggingOutInterceptor;
+import org.apache.cxf.ext.logging.event.PrintWriterEventSender;
 import org.apache.cxf.testutil.common.AbstractBusClientServerTestBase;
 import org.apache.cxf.transport.local.LocalConduit;
 
@@ -135,7 +136,7 @@ public class MtomFeatureClientServerTest extends AbstractBusClientServerTestBase
         ByteArrayOutputStream bos = new ByteArrayOutputStream();
         PrintWriter writer = new PrintWriter(bos, true);
 
-        LoggingOutInterceptor out = new LoggingOutInterceptor(writer);
+        LoggingOutInterceptor out = new LoggingOutInterceptor(new PrintWriterEventSender(writer));
         this.bus.getOutInterceptors().add(out);
 
         return bos;

http://git-wip-us.apache.org/repos/asf/cxf/blob/bcacbef8/systests/uncategorized/src/test/java/org/apache/cxf/systest/schema_validation/ValidationClientServerTest.java
----------------------------------------------------------------------
diff --git a/systests/uncategorized/src/test/java/org/apache/cxf/systest/schema_validation/ValidationClientServerTest.java b/systests/uncategorized/src/test/java/org/apache/cxf/systest/schema_validation/ValidationClientServerTest.java
index 8fe92bb..6f89ea0 100644
--- a/systests/uncategorized/src/test/java/org/apache/cxf/systest/schema_validation/ValidationClientServerTest.java
+++ b/systests/uncategorized/src/test/java/org/apache/cxf/systest/schema_validation/ValidationClientServerTest.java
@@ -34,7 +34,7 @@ import javax.xml.ws.WebServiceException;
 
 import org.apache.cxf.annotations.SchemaValidation.SchemaValidationType;
 import org.apache.cxf.endpoint.Client;
-import org.apache.cxf.feature.LoggingFeature;
+import org.apache.cxf.ext.logging.LoggingFeature;
 import org.apache.cxf.message.Message;
 import org.apache.cxf.testutil.common.AbstractBusClientServerTestBase;
 import org.apache.schema_validation.DoSomethingFault;

http://git-wip-us.apache.org/repos/asf/cxf/blob/bcacbef8/systests/uncategorized/src/test/java/org/apache/cxf/systest/stax_transform_feature/StaxTransformFeatureTest.java
----------------------------------------------------------------------
diff --git a/systests/uncategorized/src/test/java/org/apache/cxf/systest/stax_transform_feature/StaxTransformFeatureTest.java b/systests/uncategorized/src/test/java/org/apache/cxf/systest/stax_transform_feature/StaxTransformFeatureTest.java
index f0dec31..344a080 100755
--- a/systests/uncategorized/src/test/java/org/apache/cxf/systest/stax_transform_feature/StaxTransformFeatureTest.java
+++ b/systests/uncategorized/src/test/java/org/apache/cxf/systest/stax_transform_feature/StaxTransformFeatureTest.java
@@ -30,14 +30,14 @@ import org.apache.cxf.Bus;
 import org.apache.cxf.BusFactory;
 import org.apache.cxf.bus.spring.SpringBusFactory;
 import org.apache.cxf.common.logging.LogUtils;
+import org.apache.cxf.ext.logging.LoggingInInterceptor;
+import org.apache.cxf.ext.logging.LoggingOutInterceptor;
+import org.apache.cxf.ext.logging.event.LogEvent;
+import org.apache.cxf.ext.logging.event.LogEventSender;
 import org.apache.cxf.greeter_control.Greeter;
 import org.apache.cxf.greeter_control.GreeterService;
-import org.apache.cxf.interceptor.Fault;
-import org.apache.cxf.interceptor.LoggingInInterceptor;
-import org.apache.cxf.interceptor.LoggingOutInterceptor;
 import org.apache.cxf.interceptor.transform.TransformInInterceptor;
 import org.apache.cxf.interceptor.transform.TransformOutInterceptor;
-import org.apache.cxf.message.Message;
 import org.apache.cxf.systest.interceptor.GreeterImpl;
 import org.apache.cxf.testutil.common.AbstractBusClientServerTestBase;
 import org.apache.cxf.testutil.common.AbstractBusTestServerBase;
@@ -57,8 +57,8 @@ public class StaxTransformFeatureTest extends AbstractBusClientServerTestBase {
     private static final Logger LOG = LogUtils.getLogger(StaxTransformFeatureTest.class);
     private static final String GREETER_PORT_ADDRESS = "http://localhost:" + PORT + "/SoapContext/GreeterPort";
     
-    private static TestLoggingInInterceptor serverlogIn = new TestLoggingInInterceptor();
-    private static TestLoggingOutInterceptor serverlogOut = new TestLoggingOutInterceptor();
+    private static TestLoggingEventSender serverlogIn = new TestLoggingEventSender();
+    private static TestLoggingEventSender serverlogOut = new TestLoggingEventSender();
     private static TransformInInterceptor servertransIn = new TransformInInterceptor();
     private static TransformOutInterceptor servertransOut = new TransformOutInterceptor();
     
@@ -74,9 +74,9 @@ public class StaxTransformFeatureTest extends AbstractBusClientServerTestBase {
             BusFactory.setDefaultBus(bus);
             setBus(bus);
 
-            bus.getInInterceptors().add(serverlogIn);
-            bus.getOutInterceptors().add(serverlogOut);
-            bus.getOutFaultInterceptors().add(serverlogOut);
+            bus.getInInterceptors().add(new LoggingInInterceptor(serverlogIn));
+            bus.getOutInterceptors().add(new LoggingOutInterceptor(serverlogOut));
+            bus.getOutFaultInterceptors().add(new LoggingOutInterceptor(serverlogOut));
 
 
             Map<String, String> inElements = new HashMap<String, String>();
@@ -149,11 +149,12 @@ public class StaxTransformFeatureTest extends AbstractBusClientServerTestBase {
         Bus bus = bf.createBus();
         BusFactory.setDefaultBus(bus);
 
-        TestLoggingInInterceptor logIn = new TestLoggingInInterceptor();
-        bus.getInInterceptors().add(logIn);
-        TestLoggingOutInterceptor logOut = new TestLoggingOutInterceptor();
-        bus.getOutInterceptors().add(logOut);
-        bus.getOutFaultInterceptors().add(logOut);
+        TestLoggingEventSender logIn = new TestLoggingEventSender();
+        bus.getInInterceptors().add(new LoggingInInterceptor(logIn));
+        bus.getInFaultInterceptors().add(new LoggingInInterceptor(logIn));
+        TestLoggingEventSender logOut = new TestLoggingEventSender();
+        bus.getOutInterceptors().add(new LoggingOutInterceptor(logOut));
+        bus.getOutFaultInterceptors().add(new LoggingOutInterceptor(logOut));
 
         TransformInInterceptor transIn = new TransformInInterceptor();
         Map<String, String> inElements = new HashMap<String, String>();
@@ -175,7 +176,7 @@ public class StaxTransformFeatureTest extends AbstractBusClientServerTestBase {
         
         updateAddressPort(greeter, PORT);
         LOG.fine("Created greeter client.");
-        
+
         // ping 1: request-response transformation
         greeter.pingMe();
         verifyPayload(logOut.getMessage(), "dontPingMe");
@@ -187,10 +188,11 @@ public class StaxTransformFeatureTest extends AbstractBusClientServerTestBase {
         serverlogIn.cleaerMessage();
         logOut.cleaerMessage();
         logIn.cleaerMessage();
-        
+
         // ping 2: request-fault transformation
         try {
             greeter.pingMe();
+            fail("Ping should have failed");
         } catch (Exception e) {
             assertEquals("Pings succeed only every other time.", e.getMessage());
         }
@@ -212,6 +214,7 @@ public class StaxTransformFeatureTest extends AbstractBusClientServerTestBase {
         servertransOut.setSkipOnFault(true);
         try {
             greeter.pingMe();
+            fail("Ping should have failed");
         } catch (Exception e) {
             assertEquals("Pings succeed only every other time.", e.getMessage());
         }
@@ -226,49 +229,25 @@ public class StaxTransformFeatureTest extends AbstractBusClientServerTestBase {
     private void verifyPayload(String m, String value) {
         assertNotNull("message not logged", m);
         // the entire soap envelope is logged
-        assertTrue(m.indexOf("Payload: <soap:Envelope") > 0 && m.indexOf("</soap:Envelope>") > 0);
+        assertTrue(m, m.indexOf("<soap:Envelope") >= 0 && m.indexOf("</soap:Envelope>") > 0);
         // the transformed body is logged
-        assertTrue(value + " must be found in payload", m.indexOf(value) > 0);
+        assertTrue(value + " must be found in payload: " + m, m.indexOf(value) > 0);
     }
 
-    static class TestLoggingInInterceptor extends LoggingInInterceptor {
+    static class TestLoggingEventSender implements LogEventSender {
         private String logMessage;
         
-        @Override
-        public void handleMessage(Message msg) throws Fault {
-            msg.getExchange().getEndpoint().getEndpointInfo().setProperty("MessageLogger", LOG);            
-            super.handleMessage(msg);
-        }
-        @Override
-        protected void log(Logger logger, String msg) {
-            logMessage = msg;
-        }
         public String getMessage() {
             return logMessage;
         }
         public void cleaerMessage() {
             logMessage = null;
         }
-    }
-    
-    static class TestLoggingOutInterceptor extends LoggingOutInterceptor {
-        private String message;
-        
-        @Override
-        public void handleMessage(Message msg) throws Fault {
-            msg.getExchange().getEndpoint().getEndpointInfo().setProperty("MessageLogger", LOG);            
-            super.handleMessage(msg);
-        }
         @Override
-        protected void log(Logger logger, String msg) {
-            message = msg;
-        }
-        public String getMessage() {
-            return message;
-        }
-        public void cleaerMessage() {
-            message = null;
+        public void send(LogEvent event) {
+            logMessage = event.getPayload();
         }
     }
 
+
 }

http://git-wip-us.apache.org/repos/asf/cxf/blob/bcacbef8/systests/uncategorized/src/test/java/org/apache/cxf/systest/stringarray/StringArrayTest.java
----------------------------------------------------------------------
diff --git a/systests/uncategorized/src/test/java/org/apache/cxf/systest/stringarray/StringArrayTest.java b/systests/uncategorized/src/test/java/org/apache/cxf/systest/stringarray/StringArrayTest.java
index 900f3a1..af209a9 100644
--- a/systests/uncategorized/src/test/java/org/apache/cxf/systest/stringarray/StringArrayTest.java
+++ b/systests/uncategorized/src/test/java/org/apache/cxf/systest/stringarray/StringArrayTest.java
@@ -23,8 +23,9 @@ import java.io.StringWriter;
 import org.apache.cxf.Bus;
 import org.apache.cxf.BusFactory;
 import org.apache.cxf.bus.spring.SpringBusFactory;
-import org.apache.cxf.interceptor.LoggingInInterceptor;
-import org.apache.cxf.interceptor.LoggingOutInterceptor;
+import org.apache.cxf.ext.logging.LoggingInInterceptor;
+import org.apache.cxf.ext.logging.LoggingOutInterceptor;
+import org.apache.cxf.ext.logging.event.PrintWriterEventSender;
 import org.apache.cxf.testutil.common.AbstractBusClientServerTestBase;
 import org.apache.stringarray.SOAPServiceRPCLit;
 import org.apache.stringarray.StringListTest;
@@ -53,11 +54,11 @@ public class StringArrayTest extends AbstractBusClientServerTestBase {
         setBus(bus);
         StringWriter swin = new java.io.StringWriter();
         java.io.PrintWriter pwin = new java.io.PrintWriter(swin);
-        LoggingInInterceptor logIn = new LoggingInInterceptor(pwin);
+        LoggingInInterceptor logIn = new LoggingInInterceptor(new PrintWriterEventSender(pwin));
         
         StringWriter swout = new java.io.StringWriter();
         java.io.PrintWriter pwout = new java.io.PrintWriter(swout);
-        LoggingOutInterceptor logOut = new LoggingOutInterceptor(pwout);
+        LoggingOutInterceptor logOut = new LoggingOutInterceptor(new PrintWriterEventSender(pwout));
         
         
         getBus().getInInterceptors().add(logIn);
@@ -69,10 +70,12 @@ public class StringArrayTest extends AbstractBusClientServerTestBase {
         String[] res =  port.stringListTest(strs);
         assertArrayEquals(strs, res);      
 
-        assertTrue("Request message is not marshalled correctly and @XmlList does not take effect",
-                     swout.toString().indexOf("<in>org apache cxf</in>") > -1);
-        assertTrue("Response message is not marshalled correctly and @XmlList does not take effect",
-                     swin.toString().indexOf("<out>org apache cxf</out>") > -1);
+        assertTrue("Request message is not marshalled correctly and @XmlList does not take effect:\n" 
+                   + swout.toString(),
+                   swout.toString().indexOf("<in>org apache cxf</in>") > -1);
+        assertTrue("Response message is not marshalled correctly and @XmlList does not take effect\n" 
+                   + swin.toString(),
+                   swin.toString().indexOf("<out>org apache cxf</out>") > -1);
     }
     
 }

http://git-wip-us.apache.org/repos/asf/cxf/blob/bcacbef8/systests/uncategorized/src/test/java/org/apache/cxf/systest/versioning/Server.java
----------------------------------------------------------------------
diff --git a/systests/uncategorized/src/test/java/org/apache/cxf/systest/versioning/Server.java b/systests/uncategorized/src/test/java/org/apache/cxf/systest/versioning/Server.java
index acd7d73..4f8cf8c 100644
--- a/systests/uncategorized/src/test/java/org/apache/cxf/systest/versioning/Server.java
+++ b/systests/uncategorized/src/test/java/org/apache/cxf/systest/versioning/Server.java
@@ -22,7 +22,7 @@ package org.apache.cxf.systest.versioning;
 import javax.xml.ws.Endpoint;
 
 import org.apache.cxf.BusFactory;
-import org.apache.cxf.interceptor.LoggingInInterceptor;
+import org.apache.cxf.ext.logging.LoggingInInterceptor;
 import org.apache.cxf.jaxws.EndpointImpl;
 import org.apache.cxf.testutil.common.AbstractBusTestServerBase;
 import org.apache.cxf.transport.MultipleEndpointObserver;


[2/2] cxf git commit: [CXF-7242] Update new LoggingInInterceptor to actually log payloads Also update new logging to take a PrintStream to make it more compatible with old interceptors

Posted by dk...@apache.org.
[CXF-7242] Update new LoggingInInterceptor to actually log payloads
Also update new logging to take a PrintStream to make it more compatible with old interceptors


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

Branch: refs/heads/master
Commit: 5602eff212c78c88e427375a6f139050d9b5c7b4
Parents: 8be745d
Author: Daniel Kulp <dk...@apache.org>
Authored: Fri Feb 3 14:47:09 2017 -0500
Committer: Daniel Kulp <dk...@apache.org>
Committed: Fri Feb 3 14:48:36 2017 -0500

----------------------------------------------------------------------
 .../cxf/ext/logging/LoggingInInterceptor.java   | 171 ++++++++++++++-----
 .../cxf/ext/logging/LoggingOutInterceptor.java  |   6 +-
 .../logging/event/DefaultLogEventMapper.java    |   4 +-
 .../logging/event/PrintWriterEventSender.java   |  77 +++++++++
 4 files changed, 213 insertions(+), 45 deletions(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/cxf/blob/5602eff2/rt/features/logging/src/main/java/org/apache/cxf/ext/logging/LoggingInInterceptor.java
----------------------------------------------------------------------
diff --git a/rt/features/logging/src/main/java/org/apache/cxf/ext/logging/LoggingInInterceptor.java b/rt/features/logging/src/main/java/org/apache/cxf/ext/logging/LoggingInInterceptor.java
index 940603f..6c19109 100644
--- a/rt/features/logging/src/main/java/org/apache/cxf/ext/logging/LoggingInInterceptor.java
+++ b/rt/features/logging/src/main/java/org/apache/cxf/ext/logging/LoggingInInterceptor.java
@@ -18,84 +18,171 @@
  */
 package org.apache.cxf.ext.logging;
 
-import java.io.IOException;
-import java.nio.charset.StandardCharsets;
+import java.io.InputStream;
+import java.io.PrintWriter;
+import java.io.Reader;
+import java.io.SequenceInputStream;
+import java.util.Collection;
+import java.util.Collections;
 
 import org.apache.cxf.common.injection.NoJSR250Annotations;
 import org.apache.cxf.common.util.StringUtils;
 import org.apache.cxf.ext.logging.event.DefaultLogEventMapper;
+import org.apache.cxf.ext.logging.event.EventType;
 import org.apache.cxf.ext.logging.event.LogEvent;
 import org.apache.cxf.ext.logging.event.LogEventSender;
+import org.apache.cxf.ext.logging.event.PrintWriterEventSender;
 import org.apache.cxf.ext.logging.slf4j.Slf4jEventSender;
+import org.apache.cxf.helpers.IOUtils;
 import org.apache.cxf.interceptor.Fault;
 import org.apache.cxf.io.CachedOutputStream;
 import org.apache.cxf.io.CachedWriter;
+import org.apache.cxf.io.DelegatingInputStream;
 import org.apache.cxf.message.Message;
+import org.apache.cxf.phase.AbstractPhaseInterceptor;
 import org.apache.cxf.phase.Phase;
+import org.apache.cxf.phase.PhaseInterceptor;
 
 /**
  * 
  */
 @NoJSR250Annotations
 public class LoggingInInterceptor extends AbstractLoggingInterceptor {
-
+    class SendLogEventInterceptor extends AbstractPhaseInterceptor<Message> {
+        SendLogEventInterceptor() {
+            super(Phase.PRE_INVOKE);
+        }
+        @Override
+        public void handleMessage(Message message) throws Fault {
+            LogEvent event = message.get(LogEvent.class);
+            if (event != null) {
+                DefaultLogEventMapper mapper = new DefaultLogEventMapper();
+                mapper.setEpInfo(message, event);
+                event.setType(mapper.getEventType(message));
+                message.remove(LogEvent.class);
+                sender.send(event);
+            }
+        }  
+    }
+    
     public LoggingInInterceptor() {
         this(new Slf4jEventSender());
     }
-    
+    public LoggingInInterceptor(PrintWriter writer) {
+        this(new PrintWriterEventSender(writer));
+    }
     public LoggingInInterceptor(LogEventSender sender) {
-        super(Phase.PRE_INVOKE, sender);
+        super(Phase.RECEIVE, sender);
+    }
+    public Collection<PhaseInterceptor<? extends Message>> getAdditionalInterceptors() {
+        return Collections.singleton(new SendLogEventInterceptor());
+    }
+    
+    
+    public void handleFault(Message message) {
+        LogEvent event = message.get(LogEvent.class);
+        if (event != null) {
+            DefaultLogEventMapper mapper = new DefaultLogEventMapper();
+            mapper.setEpInfo(message, event);
+            event.setType(EventType.FAULT_IN);
+            message.remove(LogEvent.class);
+            sender.send(event);
+        }
     }
-
     public void handleMessage(Message message) throws Fault {
-        createExchangeId(message);
-        final LogEvent event = new DefaultLogEventMapper().map(message);
-        if (shouldLogContent(event)) {
-            addContent(message, event);
-        } else {
-            event.setPayload(AbstractLoggingInterceptor.CONTENT_SUPPRESSED);
+        LogEvent event = message.get(LogEvent.class);
+        if (event == null) {
+            createExchangeId(message);
+            event = new DefaultLogEventMapper().map(message);
+            if (shouldLogContent(event)) {
+                addContent(message, event);
+            } else {
+                event.setPayload(AbstractLoggingInterceptor.CONTENT_SUPPRESSED);
+            }
+            // at this point, we have the payload.  However, we may not have the endpoint yet. Delay sending 
+            // the event till a little bit later 
+            message.put(LogEvent.class, event);
         }
-        sender.send(event);
     }
 
     private void addContent(Message message, final LogEvent event) {
+        InputStream is = message.getContent(InputStream.class);
+        if (is != null) {
+            logInputStream(message, is, event);
+        } else {
+            Reader reader = message.getContent(Reader.class);
+            if (reader != null) {
+                logReader(message, reader, event);
+            }
+        }
+    }
+    
+    protected void logInputStream(Message message, InputStream is, LogEvent event) {
+        CachedOutputStream bos = new CachedOutputStream();
+        if (threshold > 0) {
+            bos.setThreshold(threshold);
+        }
+        String encoding = event.getEncoding();
         try {
-            CachedOutputStream cos = message.getContent(CachedOutputStream.class);
-            if (cos != null) {
-                handleOutputStream(event, message, cos);
+            // use the appropriate input stream and restore it later
+            InputStream bis = is instanceof DelegatingInputStream 
+                ? ((DelegatingInputStream)is).getInputStream() : is;
+            
+
+            //only copy up to the limit since that's all we need to log
+            //we can stream the rest
+            IOUtils.copyAtLeast(bis, bos, limit == -1 ? Integer.MAX_VALUE : limit);
+            bos.flush();
+            bis = new SequenceInputStream(bos.getInputStream(), bis);
+            
+            // restore the delegating input stream or the input stream
+            if (is instanceof DelegatingInputStream) {
+                ((DelegatingInputStream)is).setInputStream(bis);
             } else {
-                CachedWriter writer = message.getContent(CachedWriter.class);
-                if (writer != null) {
-                    handleWriter(event, writer);
-                }
+                message.setContent(InputStream.class, bis);
             }
-        } catch (IOException e) {
+
+            if (bos.getTempFile() != null) {
+                //large thing on disk...
+                event.setFullContentFile(bos.getTempFile());
+            }
+            if (bos.size() > limit && limit != -1) {
+                event.setTruncated(true);
+            }
+            
+            StringBuilder builder = new StringBuilder(limit);
+            if (StringUtils.isEmpty(encoding)) {
+                bos.writeCacheTo(builder, limit);
+            } else {
+                bos.writeCacheTo(builder, encoding, limit);
+            }
+            bos.close();
+            event.setPayload(builder.toString());
+        } catch (Exception e) {
             throw new Fault(e);
         }
     }
 
-    private void handleOutputStream(final LogEvent event, Message message, CachedOutputStream cos) throws IOException {
-        String encoding = (String)message.get(Message.ENCODING);
-        if (StringUtils.isEmpty(encoding)) {
-            encoding = StandardCharsets.UTF_8.name();
+    protected void logReader(Message message, Reader reader, LogEvent event) {
+        try {
+            CachedWriter writer = new CachedWriter();
+            IOUtils.copyAndCloseInput(reader, writer);
+            message.setContent(Reader.class, writer.getReader());
+            
+            if (writer.getTempFile() != null) {
+                //large thing on disk...
+                event.setFullContentFile(writer.getTempFile());
+            }
+            if (writer.size() > limit && limit != -1) {
+                event.setTruncated(true);
+            }
+            int max = writer.size() > limit ? (int)limit : (int)writer.size();
+            StringBuilder b = new StringBuilder(max);
+            writer.writeCacheTo(b);
+            event.setPayload(b.toString());            
+        } catch (Exception e) {
+            throw new Fault(e);
         }
-        StringBuilder payload = new StringBuilder();
-        cos.writeCacheTo(payload, encoding, limit);
-        cos.close();
-        event.setPayload(payload.toString());
-        boolean isTruncated = cos.size() > limit && limit != -1;
-        event.setTruncated(isTruncated);
-        event.setFullContentFile(cos.getTempFile());
-    }
-
-    private void handleWriter(final LogEvent event, CachedWriter writer) throws IOException {
-        boolean isTruncated = writer.size() > limit && limit != -1;
-        StringBuilder payload = new StringBuilder();
-        writer.writeCacheTo(payload, limit);
-        event.setPayload(payload.toString());
-        event.setTruncated(isTruncated);
-        event.setFullContentFile(writer.getTempFile());
     }
 
-
 }

http://git-wip-us.apache.org/repos/asf/cxf/blob/5602eff2/rt/features/logging/src/main/java/org/apache/cxf/ext/logging/LoggingOutInterceptor.java
----------------------------------------------------------------------
diff --git a/rt/features/logging/src/main/java/org/apache/cxf/ext/logging/LoggingOutInterceptor.java b/rt/features/logging/src/main/java/org/apache/cxf/ext/logging/LoggingOutInterceptor.java
index 8620021..2885f6e 100644
--- a/rt/features/logging/src/main/java/org/apache/cxf/ext/logging/LoggingOutInterceptor.java
+++ b/rt/features/logging/src/main/java/org/apache/cxf/ext/logging/LoggingOutInterceptor.java
@@ -21,6 +21,7 @@ package org.apache.cxf.ext.logging;
 import java.io.FilterWriter;
 import java.io.IOException;
 import java.io.OutputStream;
+import java.io.PrintWriter;
 import java.io.StringWriter;
 import java.io.Writer;
 
@@ -29,6 +30,7 @@ import org.apache.cxf.common.util.StringUtils;
 import org.apache.cxf.ext.logging.event.DefaultLogEventMapper;
 import org.apache.cxf.ext.logging.event.LogEvent;
 import org.apache.cxf.ext.logging.event.LogEventSender;
+import org.apache.cxf.ext.logging.event.PrintWriterEventSender;
 import org.apache.cxf.ext.logging.slf4j.Slf4jEventSender;
 import org.apache.cxf.interceptor.Fault;
 import org.apache.cxf.interceptor.StaxOutInterceptor;
@@ -47,7 +49,9 @@ public class LoggingOutInterceptor extends AbstractLoggingInterceptor {
     public LoggingOutInterceptor() {
         this(new Slf4jEventSender());
     }
-    
+    public LoggingOutInterceptor(PrintWriter w) {
+        this(new PrintWriterEventSender(w));
+    }
     public LoggingOutInterceptor(LogEventSender sender) {
         super(Phase.PRE_STREAM, sender);
         addBefore(StaxOutInterceptor.class.getName());

http://git-wip-us.apache.org/repos/asf/cxf/blob/5602eff2/rt/features/logging/src/main/java/org/apache/cxf/ext/logging/event/DefaultLogEventMapper.java
----------------------------------------------------------------------
diff --git a/rt/features/logging/src/main/java/org/apache/cxf/ext/logging/event/DefaultLogEventMapper.java b/rt/features/logging/src/main/java/org/apache/cxf/ext/logging/event/DefaultLogEventMapper.java
index 0123a1b..f48629f 100644
--- a/rt/features/logging/src/main/java/org/apache/cxf/ext/logging/event/DefaultLogEventMapper.java
+++ b/rt/features/logging/src/main/java/org/apache/cxf/ext/logging/event/DefaultLogEventMapper.java
@@ -281,7 +281,7 @@ public class DefaultLogEventMapper implements LogEventMapper {
      * @param message the message
      * @return the event type
      */
-    private EventType getEventType(Message message) {
+    public EventType getEventType(Message message) {
         boolean isRequestor = MessageUtils.isRequestor(message);
         boolean isFault = MessageUtils.isFault(message);
         if (!isFault) {
@@ -320,7 +320,7 @@ public class DefaultLogEventMapper implements LogEventMapper {
         }
     }
 
-    private void setEpInfo(Message message, final LogEvent event) {
+    public void setEpInfo(Message message, final LogEvent event) {
         EndpointInfo endpoint = getEPInfo(message);
         event.setPortName(endpoint.getName());
         event.setPortTypeName(endpoint.getName());

http://git-wip-us.apache.org/repos/asf/cxf/blob/5602eff2/rt/features/logging/src/main/java/org/apache/cxf/ext/logging/event/PrintWriterEventSender.java
----------------------------------------------------------------------
diff --git a/rt/features/logging/src/main/java/org/apache/cxf/ext/logging/event/PrintWriterEventSender.java b/rt/features/logging/src/main/java/org/apache/cxf/ext/logging/event/PrintWriterEventSender.java
new file mode 100644
index 0000000..b34133d
--- /dev/null
+++ b/rt/features/logging/src/main/java/org/apache/cxf/ext/logging/event/PrintWriterEventSender.java
@@ -0,0 +1,77 @@
+/**
+ * Licensed to the Apache Software Foundation (ASF) under one
+ * or more contributor license agreements. See the NOTICE file
+ * distributed with this work for additional information
+ * regarding copyright ownership. The ASF licenses this file
+ * to you under the Apache License, Version 2.0 (the
+ * "License"); you may not use this file except in compliance
+ * with the License. You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing,
+ * software distributed under the License is distributed on an
+ * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+ * KIND, either express or implied. See the License for the
+ * specific language governing permissions and limitations
+ * under the License.
+ */
+
+package org.apache.cxf.ext.logging.event;
+
+import java.io.PrintWriter;
+import java.time.Instant;
+
+import javax.xml.namespace.QName;
+
+/**
+ * 
+ */
+public class PrintWriterEventSender implements LogEventSender {
+    PrintWriter writer;
+    
+    public PrintWriterEventSender(PrintWriter writer) {
+        this.writer = writer;
+    }
+    
+    void setPrintWriter(PrintWriter w) {
+        writer = w;
+    }
+    
+    
+    /** {@inheritDoc}*/
+    @Override
+    public void send(LogEvent event) {
+        StringBuilder b = new StringBuilder();
+        
+        b.append(Instant.now().toString()).append(" - PrintWriterEventSender\n");
+        put(b, "type", event.getType().toString());
+        put(b, "address", event.getAddress());
+        put(b, "content-type", event.getContentType());
+        put(b, "encoding", event.getEncoding());
+        put(b, "exchangeId", event.getExchangeId());
+        put(b, "httpMethod", event.getHttpMethod());
+        put(b, "messageId", event.getMessageId());
+        put(b, "responseCode", event.getResponseCode());
+        put(b, "serviceName", localPart(event.getServiceName()));
+        put(b, "portName", localPart(event.getPortName()));
+        put(b, "portTypeName", localPart(event.getPortTypeName()));
+        if (event.getFullContentFile() != null) {
+            put(b, "fullContentFile", event.getFullContentFile().getAbsolutePath());
+        }
+        put(b, "headers", event.getHeaders().toString());
+        synchronized (writer) {
+            writer.print(b.toString());
+            writer.println(event.getPayload());
+        }
+    }
+    protected String localPart(QName name) {
+        return name == null ? null : name.getLocalPart();
+    }
+   
+    protected void put(StringBuilder b, String key, String value) {
+        if (value != null) {
+            b.append("    ").append(key).append(": ").append(value).append("\n");
+        }
+    }
+}