You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@ode.apache.org by ka...@apache.org on 2009/04/15 01:38:28 UTC

svn commit: r765007 - in /ode/branches/APACHE_ODE_1.X: bpel-obj/src/main/java/org/apache/ode/bpel/o/OAssign.java bpel-runtime/src/main/java/org/apache/ode/bpel/runtime/ASSIGN.java

Author: karthick
Date: Tue Apr 14 23:38:28 2009
New Revision: 765007

URL: http://svn.apache.org/viewvc?rev=765007&view=rev
Log:
ODE-575 oAssign$Literal seems to consume an excessive volume of memory

Modified:
    ode/branches/APACHE_ODE_1.X/bpel-obj/src/main/java/org/apache/ode/bpel/o/OAssign.java
    ode/branches/APACHE_ODE_1.X/bpel-runtime/src/main/java/org/apache/ode/bpel/runtime/ASSIGN.java

Modified: ode/branches/APACHE_ODE_1.X/bpel-obj/src/main/java/org/apache/ode/bpel/o/OAssign.java
URL: http://svn.apache.org/viewvc/ode/branches/APACHE_ODE_1.X/bpel-obj/src/main/java/org/apache/ode/bpel/o/OAssign.java?rev=765007&r1=765006&r2=765007&view=diff
==============================================================================
--- ode/branches/APACHE_ODE_1.X/bpel-obj/src/main/java/org/apache/ode/bpel/o/OAssign.java (original)
+++ ode/branches/APACHE_ODE_1.X/bpel-obj/src/main/java/org/apache/ode/bpel/o/OAssign.java Tue Apr 14 23:38:28 2009
@@ -23,6 +23,7 @@
 import org.w3c.dom.Document;
 import org.w3c.dom.Element;
 import org.w3c.dom.Node;
+import org.xml.sax.SAXException;
 
 import javax.xml.namespace.QName;
 import java.io.IOException;
@@ -79,47 +80,37 @@
 
     public static class Literal extends OBase implements RValue {
         private static final long serialVersionUID = 1L;
-        public transient Document xmlLiteral;
+        public transient String stringLiteral;
 
         public Literal(OProcess owner, Document xmlLiteral) {
             super(owner);
             if (xmlLiteral == null)
                 throw new IllegalArgumentException("null xmlLiteral!");
-            this.xmlLiteral = xmlLiteral;
+            this.stringLiteral = DOMUtils.domToString(xmlLiteral);
         }
 
         public String toString() {
-            return "{Literal " + DOMUtils.domToString(xmlLiteral) + "}";
+            return "{Literal " + stringLiteral + "}";
         }
 
         private void writeObject(java.io.ObjectOutputStream out)
                 throws IOException
         {
-            out.writeObject(DOMUtils.domToString(xmlLiteral));
+            out.writeObject(stringLiteral);
         }
 
         private void readObject(java.io.ObjectInputStream in)
                 throws IOException
         {
-            String domStr = null;
             try {
-                domStr = (String) in.readObject();
+                stringLiteral = (String) in.readObject();
             } catch (ClassNotFoundException e) {
                 throw (IOException)(new IOException("XML de-serialization error.")).initCause(e);
             }
-            try {
-                xmlLiteral = DOMUtils.stringToDOM(domStr).getOwnerDocument();
-            } catch (Exception ex) {
-                throw (IOException)(new IOException("XML de-serialization error.")).initCause(ex);
-            }
         }
 
-        public Document getXmlLiteral() {
-            Element literalRoot = xmlLiteral.getDocumentElement();
-            Document copyDoc = DOMUtils.newDocument();
-            Node copyElmt = copyDoc.importNode(literalRoot, true);
-            copyDoc.appendChild(copyElmt);
-            return copyDoc;
+        public Document getXmlLiteral() throws SAXException, IOException {
+            return DOMUtils.stringToDOM(stringLiteral).getOwnerDocument();
         }
     }
 

Modified: ode/branches/APACHE_ODE_1.X/bpel-runtime/src/main/java/org/apache/ode/bpel/runtime/ASSIGN.java
URL: http://svn.apache.org/viewvc/ode/branches/APACHE_ODE_1.X/bpel-runtime/src/main/java/org/apache/ode/bpel/runtime/ASSIGN.java?rev=765007&r1=765006&r2=765007&view=diff
==============================================================================
--- ode/branches/APACHE_ODE_1.X/bpel-runtime/src/main/java/org/apache/ode/bpel/runtime/ASSIGN.java (original)
+++ ode/branches/APACHE_ODE_1.X/bpel-runtime/src/main/java/org/apache/ode/bpel/runtime/ASSIGN.java Tue Apr 14 23:38:28 2009
@@ -51,8 +51,11 @@
 import org.w3c.dom.Node;
 import org.w3c.dom.NodeList;
 import org.w3c.dom.Text;
+import org.xml.sax.SAXException;
 
 import javax.xml.namespace.QName;
+
+import java.io.IOException;
 import java.net.URI;
 import java.util.List;
 
@@ -223,7 +226,15 @@
             }
             retVal = (Node) l.get(0);
         } else if (from instanceof OAssign.Literal) {
-            Element literalRoot = ((OAssign.Literal) from).getXmlLiteral().getDocumentElement();
+            Element literalRoot;
+			try {
+				literalRoot = ((OAssign.Literal) from).getXmlLiteral().getDocumentElement();
+			} catch (Exception e) {
+                String msg = __msgs.msgEvalException(from.toString(), e.getMessage());
+                if (__log.isDebugEnabled()) __log.debug(from + ": " + msg);
+                if (e.getCause() instanceof FaultException) throw (FaultException)e.getCause();
+                throw new FaultException(getOAsssign().getOwner().constants.qnSelectionFailure, msg);
+			}
             assert literalRoot.getLocalName().equals("literal");
             // We'd like a single text node...