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...