You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@servicemix.apache.org by gn...@apache.org on 2006/02/16 17:57:13 UTC

svn commit: r378297 - /incubator/servicemix/trunk/servicemix-core/src/main/java/org/apache/servicemix/jbi/messaging/NormalizedMessageImpl.java

Author: gnodet
Date: Thu Feb 16 08:56:55 2006
New Revision: 378297

URL: http://svn.apache.org/viewcvs?rev=378297&view=rev
Log:
Fix problems with non re-readable trax source when serializing the exchange (from the JdbcAuditor for ex)s

Modified:
    incubator/servicemix/trunk/servicemix-core/src/main/java/org/apache/servicemix/jbi/messaging/NormalizedMessageImpl.java

Modified: incubator/servicemix/trunk/servicemix-core/src/main/java/org/apache/servicemix/jbi/messaging/NormalizedMessageImpl.java
URL: http://svn.apache.org/viewcvs/incubator/servicemix/trunk/servicemix-core/src/main/java/org/apache/servicemix/jbi/messaging/NormalizedMessageImpl.java?rev=378297&r1=378296&r2=378297&view=diff
==============================================================================
--- incubator/servicemix/trunk/servicemix-core/src/main/java/org/apache/servicemix/jbi/messaging/NormalizedMessageImpl.java (original)
+++ incubator/servicemix/trunk/servicemix-core/src/main/java/org/apache/servicemix/jbi/messaging/NormalizedMessageImpl.java Thu Feb 16 08:56:55 2006
@@ -15,6 +15,8 @@
  */
 package org.apache.servicemix.jbi.messaging;
 
+import org.apache.servicemix.jbi.jaxp.BytesSource;
+import org.apache.servicemix.jbi.jaxp.ResourceSource;
 import org.apache.servicemix.jbi.jaxp.SourceTransformer;
 import org.apache.servicemix.jbi.jaxp.StringSource;
 
@@ -24,6 +26,8 @@
 import javax.security.auth.Subject;
 import javax.xml.transform.Source;
 import javax.xml.transform.TransformerException;
+import javax.xml.transform.sax.SAXSource;
+import javax.xml.transform.stream.StreamSource;
 
 import java.io.Externalizable;
 import java.io.IOException;
@@ -270,6 +274,15 @@
             out.writeObject(properties);
             String src = transformer.toString(content);
             out.writeObject(src);
+            // We have read the source
+            // so now, ensure that it can be re-read
+            if ((content instanceof StreamSource ||
+                    content instanceof SAXSource) &&
+                    !(content instanceof StringSource) &&
+                    !(content instanceof BytesSource) &&
+                    !(content instanceof ResourceSource)) {
+                content = new StringSource(src); 
+            }
         } catch (TransformerException e) {
             throw (IOException) new IOException("Could not transform content to string").initCause(e);
         }