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/17 02:07:00 UTC

[1/2] cxf git commit: Recording .gitmergeinfo Changes

Repository: cxf
Updated Branches:
  refs/heads/3.1.x-fixes 868f24864 -> c4709d14f


Recording .gitmergeinfo Changes


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

Branch: refs/heads/3.1.x-fixes
Commit: c4709d14fda1cb3510c1b6f3670bbaa678f81d8f
Parents: 8c1459e
Author: Daniel Kulp <dk...@apache.org>
Authored: Thu Feb 16 17:12:21 2017 -0500
Committer: Daniel Kulp <dk...@apache.org>
Committed: Thu Feb 16 17:12:21 2017 -0500

----------------------------------------------------------------------
 .gitmergeinfo | 17 +++++++++++++++++
 1 file changed, 17 insertions(+)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/cxf/blob/c4709d14/.gitmergeinfo
----------------------------------------------------------------------
diff --git a/.gitmergeinfo b/.gitmergeinfo
index f8e4fe0..fd5abf5 100644
--- a/.gitmergeinfo
+++ b/.gitmergeinfo
@@ -32,6 +32,7 @@ B 189756a8ff668d39d59cb7ff1658ed40d70ec12b
 B 189b6643d30eab4d79a0f7722c9277e76e92a1fd
 B 1ae4d6dee70587b048c0dcded9cd0b2855c2e225
 B 1b2a3d0d2e1a4c8f13368fd7c3e0e1cbfabd2b32
+B 1b8064f475b09323c5c11d9e8a4e1440879cae26
 B 1c3085ea94a902e6bf4a49b50c121e778efd28c2
 B 1d2ff721ef4d63b86035238516afdf1a82855bd9
 B 1e49510ea71551e543b22f6693307b1436e81db0
@@ -55,11 +56,13 @@ B 32d044afbe9c6bf4fd4ef829a71af3d1d949315e
 B 333632ee013b26b6ed15d05818971d83927bd43d
 B 337742ff1215b34643c8c35d8a1a9c4d5238d743
 B 343d06d94838cd26f682f7afbcea0e422aa1597d
+B 3450d3854e97dbd67eeaa862d09d39cce9846de9
 B 38919f57bfb2b880691950fc5f992b5649ea579e
 B 39851b83af116611ce0efe70c4b9a32ee8491523
 B 39a5690d7d50d8481739c290f49128be4d55f8ad
 B 3b2f2ed2db01f05fa9b648693ce33978ccc8ede8
 B 3be1cef6d16eeee405b7e046c822c27dc7223f24
+B 3bebf6b49283d9a9c36365c030533a3508f836c7
 B 3f259221fa1dd9227397400ed9653374cb4fdc39
 B 3fbedf1397714824b9700cd4d49569087936fe1a
 B 40380d8e57cdea0d909f3a9ee207628831c202fa
@@ -77,6 +80,7 @@ B 45bc2219b761e671973acf297e0f37a1b8934c6c
 B 46438c487115889c4cadd86f70fd4109a0daa2b8
 B 4786e832573f1fcc07ed190ab21fdb2820348e4d
 B 47a431412dbd7669d89a70d6fed49053e70dfed1
+B 4a30203a08ea11f96b52b454220ed5ce9419e3be
 B 4a72362668b14f92f1a0252b723436fc86b681bf
 B 4b37844e9c15812d1855d0babded79880d2cd6fb
 B 4bf780105271e91451446a2d96032249486b32de
@@ -121,6 +125,7 @@ B 6d82b75eb982f13f5f071178aeef66e55b0e3fd4
 B 6df5deab24016d07e4099712b07535688d164d94
 B 6e7b79f6a8b6523b2248937275d92918e5682aa2
 B 6fcdc7e9eec2414a40bd3161cf237ef182e313a6
+B 702389744199001e6c35e602ffb197ebaaf84838
 B 707fa4f3c3f3aa40979e57468a9ac3eb3102a71f
 B 73d1f886ae5265131e8664ee952ffd1cdc82f71a
 B 741c9e349e7e48d3fe278ba8d8f17dd6bf4c4370
@@ -146,6 +151,8 @@ B 8b92fe57dd9a661dab382da7d556b1972f513a93
 B 8cea7c879658e83d7a4f54f6d4e8dfa0e449c67d
 B 8e7d8e18e820dcaef748c2cab6091f884fe647a4
 B 8f98be8e72d4dbe18347a7efab91f4b008d8385f
+B 90a74fc75af41898ee50359c13f298eb483a3d01
+B 9323b68565ef79717e9d3e60744dd1bf63c1a5d8
 B 938217b05928747f7ef0d2a8899cbc297926a4e6
 B 94b837228a1d9c706aa235bfe23b827eb04da63c
 B 9505a3c7c82691da2bad94459702a665b14420fa
@@ -156,6 +163,7 @@ B 970d918a69efe5f8a601f20bb575a23f95a472c5
 B 996d0745469b044cc8a29168add803f22706c443
 B 99f5296bfed5278b60d6fa4065e1537fd59fcf64
 B 9b6666816a21d8b85cc051be59a8ab6e968c5d0d
+B 9bb1148e093b5293454cd978673f5526443d1f55
 B 9bcde744c2ad59a67c278d155f2ba22e35bacb7d
 B 9c7ccd5cc10b1d4a6f1817a6c37c99b8f19d15a1
 B 9f39272a5f92c8bc27a8d3adc4da89f0eb30a54b
@@ -180,6 +188,7 @@ B b8132e5962e326355b699bca445afe9274d0f91d
 B bacef091c2152d51ebdefbe20244e73d1c26b39d
 B bbb04acb7c09d28ae8f662f1cbedd8c5f4d1bf1a
 B bbda68b6d7948d098ee598d248266f4ce81c820a
+B bcacbef8c3aa0e40e2cf560c6d0922edb4b641fb
 B bcb96eb5cbdfcd473da2ef64709ec0dc541d3609
 B bceee342b32f3704ca75176d06067f90c6d3fbdc
 B bd24e7efd7f8f4258e8fde99eb63e007378048f0
@@ -195,14 +204,17 @@ B c2daeb5b45b758e9f54ce73dc4567a69c47d9170
 B c3a1392d1656c41a9bbdb24698eb27fbc757628b
 B c63f06f3782148373912c1e4dc86de0d0c312229
 B c6d4592a8a5d31429333c0e539ae56f517c2523f
+B c783e60a8bcea76b9fecb75364b120d39c8ea28a
 B c8e788eee8f7b5ce3a2161dfe727f3153ded607b
 B c8ee5ae674f6e59b26d7b549481627d21103f7c1
+B c903d27ec726f059a2b5e9ee1485202d2aa4d76c
 B c92875b6da5934aded09170a30a46d4015cbfa29
 B c978ca0274c06abd6ebf67adf2a839c4624b4906
 B c9da051de80efd513e2a3e20c0b5c6ff942291a1
 B ca2f8e81168b5b4ca72fa6c3c4529109c7d7c5d0
 B cb405d4275a5cf30187c4fbf957dbbb70a9eeacf
 B ce274c7b4450279f2c0d4deae5bc5c3952af5c42
+B ce6cdcff2bee46194baa3e3b63b93616fcaea9c8
 B ced98c6e937bd93f92dac9043fa0406c696bfd84
 B cf3f537d210c979dc3b3f49e08ebad5f0c02993c
 B cf9ab27a843df4532d9bd78209aebcafee2ffffc
@@ -222,6 +234,7 @@ B de675431040a434c2bd1ef66667472fb4a49a9ab
 B dfc84b0fac84e001069800b32f01529d50339cdb
 B e14d803ff84be7c59dd7c2321f1090231967d45c
 B e1c60863ac10b56d423613c7d3d2f45c7ce18e14
+B e1d950605941ef77bd4a3e9e4ad47eb63ac8f221
 B e2efd0386e210d162c7646f4a4f2aa15e9752924
 B e5b9f0e1695e73c33a40248d45fa4eba034d39b3
 B e61a83d4ac18fc760fc5d4bc8fb19d6072aaac52
@@ -232,7 +245,9 @@ B e6f0722615190861192972a51b3986b34efd1f0e
 B e7895d6a7cb071fdea57f6d2607dabe2d22db47f
 B e7e75c58c283d0178c6929cf298a68f41f6a8459
 B e824784db1bda81c68aaa407f471588acea38865
+B e856de5370025ec6f897ef214e7f898fd8cb6756
 B e9b997e808857cda15f428aed8a78ea8d1856db7
+B e9e1fbe33658421590ec149b0f82c12d2fed2c53
 B ea458d27bdbd30b0b3ef785d18e45ddf2a75b74a
 B ea8b6e270c3a4a62061c4269174b6326a57ea2b5
 B ebce4a65b15a1a99f18c1ea0111affafc447ce7e
@@ -272,6 +287,7 @@ M 0e5fd5a54cb271ba494e7e30b45d4228b33364a9
 M 11637433df089a638e173d1ef57441e7456cf2ea
 M 1184e08f0d1c40c754e39fd5d6340d1057fbdd17
 M 11e18bf5622cafdb10723cee895885d676b35a7b
+M 146b00d1947058705c873dffe2ba78ad35c8b03c
 M 19d8da7f0672b86dbf88a08b54a72297d0ca2d20
 M 1afeea8bdc0ef96df1d52ea343957dc396723f8c
 M 20d0a2811c15cb65a402eb063e1359236d7014ea
@@ -340,6 +356,7 @@ M abcc137cb9b27e0da0b4270a18ac2a32df1e9990
 M b2b6f0137cd9f1bafff5d487e8383453692a2ff0
 M b2e5fb6583d64deeb8a42d2eeb6935c5f33dc0c6
 M b418fd7952dc36f1a3e577e457833588a2056104
+M b433c753d44350daff5a40ff8eb5a149cf557a68
 M b49075882641fcebbbdf1ed8d84247fcf80aa558
 M b624c034c5682b54b9faf3d3e90eb0c23cde1a5b
 M c01c68ddda10ec6db492b86d818498bec0bf4228


[2/2] cxf git commit: Revert some of the changes to logging feature and fix the issues using existing concepts

Posted by dk...@apache.org.
Revert some of the changes to logging feature and fix the issues using existing concepts

# Conflicts:
#	rt/features/logging/src/main/java/org/apache/cxf/ext/logging/LoggingFeature.java
#	rt/features/logging/src/main/java/org/apache/cxf/ext/logging/LoggingInInterceptor.java
#	rt/frontend/jaxws/src/main/java/org/apache/cxf/jaxws/ServiceImpl.java


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

Branch: refs/heads/3.1.x-fixes
Commit: 8c1459e3399647467ae01f9f2d04b9a9e8853ea0
Parents: 868f248
Author: Daniel Kulp <dk...@apache.org>
Authored: Thu Feb 16 16:24:05 2017 -0500
Committer: Daniel Kulp <dk...@apache.org>
Committed: Thu Feb 16 17:12:21 2017 -0500

----------------------------------------------------------------------
 .../apache/cxf/ext/logging/LoggingFeature.java  |   6 -
 .../cxf/ext/logging/LoggingInInterceptor.java   | 172 ++++++-------------
 .../org/apache/cxf/ext/logging/WireTapIn.java   |  10 +-
 .../java/org/apache/cxf/jaxws/ServiceImpl.java  |   3 +-
 .../ws/addr_fromjava/WSAFromJavaTest.java       |   4 +-
 5 files changed, 67 insertions(+), 128 deletions(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/cxf/blob/8c1459e3/rt/features/logging/src/main/java/org/apache/cxf/ext/logging/LoggingFeature.java
----------------------------------------------------------------------
diff --git a/rt/features/logging/src/main/java/org/apache/cxf/ext/logging/LoggingFeature.java b/rt/features/logging/src/main/java/org/apache/cxf/ext/logging/LoggingFeature.java
index 1e34887..6d383ee 100644
--- a/rt/features/logging/src/main/java/org/apache/cxf/ext/logging/LoggingFeature.java
+++ b/rt/features/logging/src/main/java/org/apache/cxf/ext/logging/LoggingFeature.java
@@ -49,21 +49,17 @@ public class LoggingFeature extends AbstractFeature {
     private LogEventSender sender;
     private LoggingInInterceptor in;
     private LoggingOutInterceptor out;
-    private WireTapIn wireTapIn;
     private PrettyLoggingFilter prettyFilter;
 
     public LoggingFeature() {
         this.sender = new Slf4jEventSender();
         prettyFilter = new PrettyLoggingFilter(sender);
-        wireTapIn = new WireTapIn();
         in = new LoggingInInterceptor(prettyFilter);
         out = new LoggingOutInterceptor(prettyFilter);
     }
     
     @Override
     protected void initializeProvider(InterceptorProvider provider, Bus bus) {
-        
-        provider.getInInterceptors().add(wireTapIn);
         provider.getInInterceptors().add(in);
         provider.getInFaultInterceptors().add(in);
 
@@ -74,13 +70,11 @@ public class LoggingFeature extends AbstractFeature {
     public void setLimit(int limit) {
         in.setLimit(limit);
         out.setLimit(limit);
-        wireTapIn.setLimit(limit);
     }
     
     public void setInMemThreshold(long inMemThreshold) {
         in.setInMemThreshold(inMemThreshold);
         out.setInMemThreshold(inMemThreshold);
-        wireTapIn.setThreshold(inMemThreshold);
     }
     
     public void setSender(LogEventSender sender) {

http://git-wip-us.apache.org/repos/asf/cxf/blob/8c1459e3/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 0643bc2..da2afa1 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,25 +18,22 @@
  */
 package org.apache.cxf.ext.logging;
 
-import java.io.InputStream;
+import java.io.IOException;
 import java.io.PrintWriter;
-import java.io.Reader;
-import java.io.SequenceInputStream;
+import java.nio.charset.StandardCharsets;
+import java.util.ArrayList;
 import java.util.Collection;
 
 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;
@@ -47,144 +44,85 @@ import org.apache.cxf.phase.PhaseInterceptor;
  */
 @NoJSR250Annotations
 public class LoggingInInterceptor extends AbstractLoggingInterceptor {
-    class SendLogEventInterceptor extends AbstractPhaseInterceptor<Message> {
-        SendLogEventInterceptor() {
-            super(Phase.PRE_INVOKE);
+    class LoggingInFaultInterceptor extends AbstractPhaseInterceptor<Message> {
+        LoggingInFaultInterceptor() {
+            super(Phase.RECEIVE);
         }
         @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);
-            }
-        }  
+        }
+        @Override
+        public void handleFault(Message message) throws Fault {
+            LoggingInInterceptor.this.handleMessage(message);
+        }
     }
     
+    
     public LoggingInInterceptor() {
         this(new Slf4jEventSender());
     }
+    public LoggingInInterceptor(LogEventSender sender) {
+        super(Phase.PRE_INVOKE, sender);
+    }
     public LoggingInInterceptor(PrintWriter writer) {
         this(new PrintWriterEventSender(writer));
     }
-    public LoggingInInterceptor(LogEventSender sender) {
-        super(Phase.RECEIVE, sender);
-    }
     public Collection<PhaseInterceptor<? extends Message>> getAdditionalInterceptors() {
-        PhaseInterceptor<Message> intc = new SendLogEventInterceptor();
-        java.util.Set<PhaseInterceptor<? extends Message>> ret = new java.util.HashSet<>();
-        ret.add(intc);
+        Collection<PhaseInterceptor<? extends Message>> ret = new ArrayList<>();
+        ret.add(new WireTapIn(limit, threshold));
+        ret.add(new LoggingInFaultInterceptor());
         return ret;
     }
-    
-    
-    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 {
-        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);
+        createExchangeId(message);
+        final LogEvent event = new DefaultLogEventMapper().map(message);
+        if (shouldLogContent(event)) {
+            addContent(message, event);
+        } else {
+            event.setPayload(AbstractLoggingInterceptor.CONTENT_SUPPRESSED);
         }
+        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 {
-            // 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 {
-                message.setContent(InputStream.class, bis);
-            }
-
-            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);
+            CachedOutputStream cos = message.getContent(CachedOutputStream.class);
+            if (cos != null) {
+                handleOutputStream(event, message, cos);
             } else {
-                bos.writeCacheTo(builder, encoding, limit);
+                CachedWriter writer = message.getContent(CachedWriter.class);
+                if (writer != null) {
+                    handleWriter(event, writer);
+                }
             }
-            bos.close();
-            event.setPayload(builder.toString());
-        } catch (Exception e) {
+        } catch (IOException e) {
             throw new Fault(e);
         }
     }
 
-    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);
+    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();
         }
+        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/8c1459e3/rt/features/logging/src/main/java/org/apache/cxf/ext/logging/WireTapIn.java
----------------------------------------------------------------------
diff --git a/rt/features/logging/src/main/java/org/apache/cxf/ext/logging/WireTapIn.java b/rt/features/logging/src/main/java/org/apache/cxf/ext/logging/WireTapIn.java
index e6b8508..5e117a2 100644
--- a/rt/features/logging/src/main/java/org/apache/cxf/ext/logging/WireTapIn.java
+++ b/rt/features/logging/src/main/java/org/apache/cxf/ext/logging/WireTapIn.java
@@ -33,6 +33,8 @@ import org.apache.cxf.phase.AbstractPhaseInterceptor;
 import org.apache.cxf.phase.Phase;
 
 public class WireTapIn extends AbstractPhaseInterceptor<Message> {
+    private static final String WIRE_TAP_STARTED = WireTapIn.class.getName() + ".Started";
+    
     private long threshold = -1;
     private int limit = AbstractLoggingInterceptor.DEFAULT_LIMIT;
 
@@ -42,12 +44,18 @@ public class WireTapIn extends AbstractPhaseInterceptor<Message> {
      *
      * @param logMessageContent the log message content
      */
-    public WireTapIn() {
+    public WireTapIn(int limit, long threshold) {
         super(Phase.RECEIVE);
+        this.limit = limit;
+        this.threshold = threshold;
     }
 
     @Override
     public void handleMessage(final Message message) throws Fault {
+        if (message.containsKey(WIRE_TAP_STARTED)) {
+            return;
+        }
+        message.put(WIRE_TAP_STARTED, Boolean.TRUE);
         try {
             InputStream is = message.getContent(InputStream.class);
             if (is != null) {

http://git-wip-us.apache.org/repos/asf/cxf/blob/8c1459e3/rt/frontend/jaxws/src/main/java/org/apache/cxf/jaxws/ServiceImpl.java
----------------------------------------------------------------------
diff --git a/rt/frontend/jaxws/src/main/java/org/apache/cxf/jaxws/ServiceImpl.java b/rt/frontend/jaxws/src/main/java/org/apache/cxf/jaxws/ServiceImpl.java
index df22406..10a2a4b 100644
--- a/rt/frontend/jaxws/src/main/java/org/apache/cxf/jaxws/ServiceImpl.java
+++ b/rt/frontend/jaxws/src/main/java/org/apache/cxf/jaxws/ServiceImpl.java
@@ -129,8 +129,7 @@ public class ServiceImpl extends ServiceDelegate {
             initialize(b, url, f);
         }
     }
-    
-    void initialize(Bus b, URL url, WebServiceFeature ... f) {
+    final void initialize(Bus b, URL url, WebServiceFeature ... f) {
         if (b == null) {
             b = BusFactory.getThreadDefaultBus(true);
         }

http://git-wip-us.apache.org/repos/asf/cxf/blob/8c1459e3/systests/ws-specs/src/test/java/org/apache/cxf/systest/ws/addr_fromjava/WSAFromJavaTest.java
----------------------------------------------------------------------
diff --git a/systests/ws-specs/src/test/java/org/apache/cxf/systest/ws/addr_fromjava/WSAFromJavaTest.java b/systests/ws-specs/src/test/java/org/apache/cxf/systest/ws/addr_fromjava/WSAFromJavaTest.java
index 23e9978..cf54e1c 100644
--- a/systests/ws-specs/src/test/java/org/apache/cxf/systest/ws/addr_fromjava/WSAFromJavaTest.java
+++ b/systests/ws-specs/src/test/java/org/apache/cxf/systest/ws/addr_fromjava/WSAFromJavaTest.java
@@ -131,8 +131,8 @@ public class WSAFromJavaTest extends AbstractWSATestBase {
             assert false;
         }
 
-        assertTrue(output.toString().indexOf("http://cxf.apache.org/input") != -1);
-        assertTrue(input.toString().indexOf("http://cxf.apache.org/fault3") != -1);
+        assertTrue(output.toString(), output.toString().indexOf("http://cxf.apache.org/input") != -1);
+        assertTrue(input.toString(), input.toString().indexOf("http://cxf.apache.org/fault3") != -1);
     }
 
     @Test