Author: ningjiang
Date: Tue Jun  7 13:43:53 2011
New Revision: 1133009

URL: http://svn.apache.org/viewvc?rev=1133009&view=rev
Log:
CXF-3572 Add a check of the message content list to avoid the OoM error from 
the HolderOutInterceptor

Modified:
    
cxf/trunk/rt/frontend/jaxws/src/main/java/org/apache/cxf/jaxws/interceptors/HolderOutInterceptor.java
    
cxf/trunk/rt/frontend/jaxws/src/main/java/org/apache/cxf/jaxws/interceptors/Messages.properties

Modified: 
cxf/trunk/rt/frontend/jaxws/src/main/java/org/apache/cxf/jaxws/interceptors/HolderOutInterceptor.java
URL: 
http://svn.apache.org/viewvc/cxf/trunk/rt/frontend/jaxws/src/main/java/org/apache/cxf/jaxws/interceptors/HolderOutInterceptor.java?rev=1133009&r1=1133008&r2=1133009&view=diff
==============================================================================
--- 
cxf/trunk/rt/frontend/jaxws/src/main/java/org/apache/cxf/jaxws/interceptors/HolderOutInterceptor.java
 (original)
+++ 
cxf/trunk/rt/frontend/jaxws/src/main/java/org/apache/cxf/jaxws/interceptors/HolderOutInterceptor.java
 Tue Jun  7 13:43:53 2011
@@ -72,11 +72,15 @@ public class HolderOutInterceptor extend
             List<MessagePartInfo> parts = op.getOutput().getMessageParts();
             MessageContentsList inObjects = 
MessageContentsList.getContentsList(exchange.getInMessage());
             if (inObjects != null) {
-                for (int x = 0; x < inObjects.size(); x++) {
-                    Object o = inObjects.get(x);
-                    if (o instanceof Holder) {
-                        outObjects.set(x + 1, o);
+                if (!inObjects.equals(outObjects)) {
+                    for (int x = 0; x < inObjects.size(); x++) {
+                        Object o = inObjects.get(x);
+                        if (o instanceof Holder) {
+                            outObjects.set(x + 1, o);
+                        }
                     }
+                } else {
+                    LOG.severe("CANNOT_SET_HOLDER_OBJECTS");
                 }
             }
             for (MessagePartInfo part : parts) {

Modified: 
cxf/trunk/rt/frontend/jaxws/src/main/java/org/apache/cxf/jaxws/interceptors/Messages.properties
URL: 
http://svn.apache.org/viewvc/cxf/trunk/rt/frontend/jaxws/src/main/java/org/apache/cxf/jaxws/interceptors/Messages.properties?rev=1133009&r1=1133008&r2=1133009&view=diff
==============================================================================
--- 
cxf/trunk/rt/frontend/jaxws/src/main/java/org/apache/cxf/jaxws/interceptors/Messages.properties
 (original)
+++ 
cxf/trunk/rt/frontend/jaxws/src/main/java/org/apache/cxf/jaxws/interceptors/Messages.properties
 Tue Jun  7 13:43:53 2011
@@ -27,3 +27,4 @@ ATTACHMENT_NOT_SUPPORTED = Attachments o
 DISPATCH_OBJECT_NOT_SUPPORTED_SOAPBINDING = {0} is not valid in {1} mode with 
SOAP/HTTP binding.
 DISPATCH_OBJECT_NOT_SUPPORTED_XMLBINDING = {0} is not valid in {1} mode with 
XML/HTTP binding.
 EXCEPTION_WHILE_WRITING_FAULT = Exception occurred while writing fault.
+CANNOT_SET_HOLDER_OBJECTS = The message content list of the in message and out 
message are same, CXF can't set the holder object into the message content list 
of the out message.
\ No newline at end of file


Reply via email to