You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@cxf.apache.org by ay...@apache.org on 2012/03/14 10:40:01 UTC

svn commit: r1300485 - in /cxf/trunk/rt/ws/rm/src/main/java/org/apache/cxf/ws/rm: Destination.java RMCaptureInInterceptor.java persistence/RMMessage.java persistence/jdbc/RMTxStore.java

Author: ay
Date: Wed Mar 14 09:40:00 2012
New Revision: 1300485

URL: http://svn.apache.org/viewvc?rev=1300485&view=rev
Log:
improvement to CXF-4164 to utilize robust-mode to avoid persisting messages in ws-rm

Modified:
    cxf/trunk/rt/ws/rm/src/main/java/org/apache/cxf/ws/rm/Destination.java
    cxf/trunk/rt/ws/rm/src/main/java/org/apache/cxf/ws/rm/RMCaptureInInterceptor.java
    cxf/trunk/rt/ws/rm/src/main/java/org/apache/cxf/ws/rm/persistence/RMMessage.java
    cxf/trunk/rt/ws/rm/src/main/java/org/apache/cxf/ws/rm/persistence/jdbc/RMTxStore.java

Modified: cxf/trunk/rt/ws/rm/src/main/java/org/apache/cxf/ws/rm/Destination.java
URL: http://svn.apache.org/viewvc/cxf/trunk/rt/ws/rm/src/main/java/org/apache/cxf/ws/rm/Destination.java?rev=1300485&r1=1300484&r2=1300485&view=diff
==============================================================================
--- cxf/trunk/rt/ws/rm/src/main/java/org/apache/cxf/ws/rm/Destination.java (original)
+++ cxf/trunk/rt/ws/rm/src/main/java/org/apache/cxf/ws/rm/Destination.java Wed Mar 14 09:40:00 2012
@@ -33,6 +33,7 @@ import org.apache.cxf.io.CachedOutputStr
 import org.apache.cxf.message.Exchange;
 import org.apache.cxf.message.Message;
 import org.apache.cxf.message.MessageImpl;
+import org.apache.cxf.message.MessageUtils;
 import org.apache.cxf.transport.Conduit;
 import org.apache.cxf.ws.addressing.AddressingProperties;
 import org.apache.cxf.ws.rm.persistence.RMMessage;
@@ -145,8 +146,10 @@ public class Destination extends Abstrac
 
         RMStore store = getReliableEndpoint().getManager().getStore();
         if (null != store) {
-            CachedOutputStream saved = 
-                (CachedOutputStream)message.get(RMMessageConstants.SAVED_CONTENT);
+            CachedOutputStream saved = null;
+            if (!MessageUtils.isTrue(message.getContextualProperty(Message.ROBUST_ONEWAY))) {
+                saved = (CachedOutputStream)message.get(RMMessageConstants.SAVED_CONTENT);
+            }
             RMMessage msg = new RMMessage();
             msg.setMessageNumber(sequenceType.getMessageNumber());
             msg.setContent(saved);

Modified: cxf/trunk/rt/ws/rm/src/main/java/org/apache/cxf/ws/rm/RMCaptureInInterceptor.java
URL: http://svn.apache.org/viewvc/cxf/trunk/rt/ws/rm/src/main/java/org/apache/cxf/ws/rm/RMCaptureInInterceptor.java?rev=1300485&r1=1300484&r2=1300485&view=diff
==============================================================================
--- cxf/trunk/rt/ws/rm/src/main/java/org/apache/cxf/ws/rm/RMCaptureInInterceptor.java (original)
+++ cxf/trunk/rt/ws/rm/src/main/java/org/apache/cxf/ws/rm/RMCaptureInInterceptor.java Wed Mar 14 09:40:00 2012
@@ -27,6 +27,7 @@ import org.apache.cxf.helpers.IOUtils;
 import org.apache.cxf.interceptor.Fault;
 import org.apache.cxf.io.CachedOutputStream;
 import org.apache.cxf.message.Message;
+import org.apache.cxf.message.MessageUtils;
 import org.apache.cxf.phase.Phase;
 
 /**
@@ -41,23 +42,26 @@ public class RMCaptureInInterceptor exte
 
     protected void handle(Message message) throws SequenceFault, RMException {
         LOG.entering(getClass().getName(), "handleMessage");
-        
-        InputStream is = message.getContent(InputStream.class);
-        if (is != null) {
-            CachedOutputStream saved = new CachedOutputStream();
-            try {
-                IOUtils.copy(is, saved);
+        // This message capturing mechanism will need to be changed at some point.
+        // Until then, we keep this interceptor here and utilize the robust
+        // option to avoid the unnecessary message capturing/caching.
+        if (!MessageUtils.isTrue(message.getContextualProperty(Message.ROBUST_ONEWAY))) {
+            InputStream is = message.getContent(InputStream.class);
+            if (is != null) {
+                CachedOutputStream saved = new CachedOutputStream();
+                try {
+                    IOUtils.copy(is, saved);
 
-                saved.flush();
-                is.close();
+                    saved.flush();
+                    is.close();
 
-                message.setContent(InputStream.class, saved.getInputStream());
-                LOG.fine("Capturing the original RM message");
-                message.put(RMMessageConstants.SAVED_CONTENT, saved);
-            } catch (Exception e) {
-                throw new Fault(e);
+                    message.setContent(InputStream.class, saved.getInputStream());
+                    LOG.fine("Capturing the original RM message");
+                    message.put(RMMessageConstants.SAVED_CONTENT, saved);
+                } catch (Exception e) {
+                    throw new Fault(e);
+                }
             }
         }
     }
-
 }

Modified: cxf/trunk/rt/ws/rm/src/main/java/org/apache/cxf/ws/rm/persistence/RMMessage.java
URL: http://svn.apache.org/viewvc/cxf/trunk/rt/ws/rm/src/main/java/org/apache/cxf/ws/rm/persistence/RMMessage.java?rev=1300485&r1=1300484&r2=1300485&view=diff
==============================================================================
--- cxf/trunk/rt/ws/rm/src/main/java/org/apache/cxf/ws/rm/persistence/RMMessage.java (original)
+++ cxf/trunk/rt/ws/rm/src/main/java/org/apache/cxf/ws/rm/persistence/RMMessage.java Wed Mar 14 09:40:00 2012
@@ -55,7 +55,7 @@ public class RMMessage {
     public byte[] getContent() {
         byte[] bytes = null;
         try {
-            bytes = content.getBytes();
+            bytes = content != null ? content.getBytes() : null;
         } catch (IOException e) {
             // ignore and treat it as null
         }
@@ -120,7 +120,7 @@ public class RMMessage {
      * @throws IOException
      */
     public InputStream getInputStream() throws IOException {
-        return content.getInputStream();
+        return content != null ? content.getInputStream() : null;
     }
     
     /**
@@ -137,6 +137,6 @@ public class RMMessage {
      * @return
      */
     public long getSize() {
-        return content.size();
+        return content != null ? content.size() : -1L;
     }
 }

Modified: cxf/trunk/rt/ws/rm/src/main/java/org/apache/cxf/ws/rm/persistence/jdbc/RMTxStore.java
URL: http://svn.apache.org/viewvc/cxf/trunk/rt/ws/rm/src/main/java/org/apache/cxf/ws/rm/persistence/jdbc/RMTxStore.java?rev=1300485&r1=1300484&r2=1300485&view=diff
==============================================================================
--- cxf/trunk/rt/ws/rm/src/main/java/org/apache/cxf/ws/rm/persistence/jdbc/RMTxStore.java (original)
+++ cxf/trunk/rt/ws/rm/src/main/java/org/apache/cxf/ws/rm/persistence/jdbc/RMTxStore.java Wed Mar 14 09:40:00 2012
@@ -473,7 +473,9 @@ public class RMTxStore implements RMStor
             
             updateDestinationSequence(seq);
             
-            storeMessage(seq.getIdentifier(), msg, false);
+            if (msg.getCachedOutputStream() != null) {
+                storeMessage(seq.getIdentifier(), msg, false);
+            }
             
             commit();
             
@@ -491,7 +493,9 @@ public class RMTxStore implements RMStor
             
             updateSourceSequence(seq);
             
-            storeMessage(seq.getIdentifier(), msg, true);
+            if (msg.getCachedOutputStream() != null) {
+                storeMessage(seq.getIdentifier(), msg, true);
+            }
             
             commit();