Modified: 
ode/branches/APACHE_ODE_1.1/bpel-dao/src/main/java/org/apache/ode/bpel/dao/MessageDAO.java
URL: 
http://svn.apache.org/viewvc/ode/branches/APACHE_ODE_1.1/bpel-dao/src/main/java/org/apache/ode/bpel/dao/MessageDAO.java?rev=642026&r1=642025&r2=642026&view=diff
==============================================================================
--- 
ode/branches/APACHE_ODE_1.1/bpel-dao/src/main/java/org/apache/ode/bpel/dao/MessageDAO.java
 (original)
+++ 
ode/branches/APACHE_ODE_1.1/bpel-dao/src/main/java/org/apache/ode/bpel/dao/MessageDAO.java
 Thu Mar 27 16:40:14 2008
@@ -27,12 +27,13 @@
 public interface MessageDAO {
 
   void setType(QName type);
-  
   QName getType();
-  
-  void setData(Element value);
-  
+
+  void setData(Element value);  
   Element getData();
+
+  void setHeader(Element value);
+  Element getHeader();
 
   MessageExchangeDAO getMessageExchange();
 }

Modified: 
ode/branches/APACHE_ODE_1.1/bpel-obj/src/main/java/org/apache/ode/bpel/o/OAssign.java
URL: 
http://svn.apache.org/viewvc/ode/branches/APACHE_ODE_1.1/bpel-obj/src/main/java/org/apache/ode/bpel/o/OAssign.java?rev=642026&r1=642025&r2=642026&view=diff
==============================================================================
--- 
ode/branches/APACHE_ODE_1.1/bpel-obj/src/main/java/org/apache/ode/bpel/o/OAssign.java
 (original)
+++ 
ode/branches/APACHE_ODE_1.1/bpel-obj/src/main/java/org/apache/ode/bpel/o/OAssign.java
 Thu Mar 27 16:40:14 2008
@@ -174,6 +174,7 @@
         private static final long serialVersionUID = 1L;
         public OScope.Variable variable;
         public OMessageVarType.Part part;
+        public OMessageVarType.Part headerPart;
         public OExpression location;
 
         public VariableRef(OProcess owner) {
@@ -189,8 +190,7 @@
          * @return <code>true</code> if whole-message reference
          */
         public boolean isMessageRef() { 
-            return variable.type instanceof OMessageVarType && 
-            part == null && location == null;
+            return variable.type instanceof OMessageVarType && part == null && 
headerPart == null && location == null;
         }
         
         /**
@@ -198,10 +198,13 @@
          * @return <code>true</code> if reference to a message part
          */
         public boolean isPartRef() {
-            return variable.type instanceof OMessageVarType && 
-            part != null && location == null;
+            return variable.type instanceof OMessageVarType && part != null && 
location == null;
         }
         
+        public boolean isHeaderRef() {
+            return variable.type instanceof OMessageVarType && headerPart != 
null && location == null;
+        }
+
         public String toString() {
             return "{VarRef " + variable  +
                     (part==null ? "" : "." + part.name) +

Modified: 
ode/branches/APACHE_ODE_1.1/bpel-runtime/src/main/java/org/apache/ode/bpel/engine/BpelRuntimeContextImpl.java
URL: 
http://svn.apache.org/viewvc/ode/branches/APACHE_ODE_1.1/bpel-runtime/src/main/java/org/apache/ode/bpel/engine/BpelRuntimeContextImpl.java?rev=642026&r1=642025&r2=642026&view=diff
==============================================================================
--- 
ode/branches/APACHE_ODE_1.1/bpel-runtime/src/main/java/org/apache/ode/bpel/engine/BpelRuntimeContextImpl.java
 (original)
+++ 
ode/branches/APACHE_ODE_1.1/bpel-runtime/src/main/java/org/apache/ode/bpel/engine/BpelRuntimeContextImpl.java
 Thu Mar 27 16:40:14 2008
@@ -90,6 +90,8 @@
 import org.apche.ode.bpel.evar.ExternalVariableModule.Value;
 import org.w3c.dom.Element;
 import org.w3c.dom.Node;
+import org.w3c.dom.NodeList;
+import org.w3c.dom.Document;
 
 class BpelRuntimeContextImpl implements BpelRuntimeContext {
 
@@ -512,7 +514,7 @@
 
         MessageDAO message = 
mex.createMessage(plinkInstnace.partnerLink.getMyRoleOperation(opName).getOutput()
                 .getMessage().getQName());
-        message.setData(msg);
+        buildInvokeMessage(message, msg);
 
         MyRoleMessageExchangeImpl m = new 
MyRoleMessageExchangeImpl(_bpelProcess._engine, mex);
         _bpelProcess.initMyRoleMex(m);
@@ -719,8 +721,8 @@
 
         MessageDAO message = 
mexDao.createMessage(operation.getInput().getMessage().getQName());
         mexDao.setRequest(message);
-        message.setData(outgoingMessage);
         message.setType(operation.getInput().getMessage().getQName());
+        buildInvokeMessage(message, outgoingMessage);
 
         // Get he my-role EPR (if myrole exists) for optional use by partner
         // (for callback mechanism).
@@ -747,6 +749,7 @@
 
             Message odeRequest = 
myRoleMex.createMessage(operation.getInput().getMessage().getQName());
             odeRequest.setMessage(outgoingMessage);
+            ((MessageImpl)odeRequest)._dao.setHeader(message.getHeader());
 
             if (BpelProcess.__log.isDebugEnabled()) {
                 __log.debug("Setting myRoleMex session ids for p2p 
interaction, mySession "
@@ -803,7 +806,21 @@
         }
 
         return mexDao.getMessageExchangeId();
+    }
 
+    private void buildInvokeMessage(MessageDAO message, Element outgoingElmt) {
+        Document doc = DOMUtils.newDocument();
+        Element header = doc.createElement("header");
+        NodeList parts = outgoingElmt.getChildNodes();
+        for (int m = 0; m < parts.getLength(); m++) {
+            Element part = (Element) parts.item(m);
+            if (part.getAttribute("headerPart") != null && 
part.getAttribute("headerPart").length() > 0) {
+                header.appendChild(doc.importNode(part, true));
+                outgoingElmt.removeChild(part);
+            }
+        }
+        message.setData(outgoingElmt);
+        message.setHeader(header);
     }
 
     void execute() {
@@ -1089,7 +1106,7 @@
     }
 
     public Element getPartnerResponse(String mexId) {
-        return _getPartnerResponse(mexId).getData();
+        return mergeHeaders(_getPartnerResponse(mexId));
     }
 
     public Element getMyRequest(String mexId) {
@@ -1119,9 +1136,7 @@
                     __log.fatal(msg);
                     throw new BpelEngineException(msg);
                 }
-
-                return request.getData();
-
+                return mergeHeaders(request);
             default:
                 // We should not be in any other state when requesting this.
                 String msg = "Engine requested response while the message 
exchange " + mexId + " was in the state "
@@ -1129,7 +1144,22 @@
                 __log.fatal(msg);
                 throw new BpelEngineException(msg);
         }
+    }
 
+    private Element mergeHeaders(MessageDAO msg) {
+        // Merging header data, it's all stored in the same variable
+        Element data = msg.getData();
+        if (msg.getHeader() != null) {
+            NodeList headerParts = msg.getHeader().getChildNodes();
+            for (int m = 0; m < headerParts.getLength(); m++) {
+                if (headerParts.item(m).getNodeType() == Node.ELEMENT_NODE) {
+                    Element headerPart = (Element) headerParts.item(m);
+                    headerPart.setAttribute("headerPart", "true");
+                    
data.appendChild(data.getOwnerDocument().importNode(headerPart, true));
+                }
+            }
+        }
+        return data;
     }
 
     public QName getPartnerFault(String mexId) {

Modified: 
ode/branches/APACHE_ODE_1.1/bpel-runtime/src/main/java/org/apache/ode/bpel/engine/MessageImpl.java
URL: 
http://svn.apache.org/viewvc/ode/branches/APACHE_ODE_1.1/bpel-runtime/src/main/java/org/apache/ode/bpel/engine/MessageImpl.java?rev=642026&r1=642025&r2=642026&view=diff
==============================================================================
--- 
ode/branches/APACHE_ODE_1.1/bpel-runtime/src/main/java/org/apache/ode/bpel/engine/MessageImpl.java
 (original)
+++ 
ode/branches/APACHE_ODE_1.1/bpel-runtime/src/main/java/org/apache/ode/bpel/engine/MessageImpl.java
 Thu Mar 27 16:40:14 2008
@@ -21,61 +21,105 @@
 
 import java.util.List;
 import java.util.ArrayList;
+import java.util.Map;
+import java.util.HashMap;
 
 import javax.xml.namespace.QName;
 
 import org.w3c.dom.Element;
 import org.w3c.dom.NodeList;
 import org.w3c.dom.Node;
+import org.w3c.dom.Document;
 
 import org.apache.ode.bpel.dao.MessageDAO;
 import org.apache.ode.bpel.iapi.Message;
+import org.apache.ode.utils.DOMUtils;
 
 public class MessageImpl implements Message {
 
-  MessageDAO _dao;
+    MessageDAO _dao;
 
-  public MessageImpl(MessageDAO message) {
-    if (message == null)
-      throw new NullPointerException("null message!");
-    _dao = message;
-  }
-
-  public Element getPart(String partName) {
-    Element message = getMessage();
-    NodeList eltList = message.getElementsByTagName(partName);
-    if (eltList.getLength() == 0) return null;
-    else return (Element) eltList.item(0);
-  }
-
-  public void setMessagePart(String partName, Element content) {
-    Element message = getMessage();
-    message.appendChild(message.getOwnerDocument().importNode(content, true));
-    setMessage(message);
-  }
-
-  public void setMessage(Element msg) {
-    _dao.setData(msg);
-  }
-
-  public Element getMessage() {
-    return _dao.getData();
-  }
-
-  public QName getType() {
-    return _dao.getType();
-  }
-
-  public List<String> getParts() {
-    ArrayList<String> parts = new ArrayList<String>();
-    Element message = getMessage();
-    NodeList nodeList = message.getChildNodes();
-    for (int m = 0; m < nodeList.getLength(); m++) {
-      Node node = nodeList.item(m);
-      if (node.getNodeType() == Node.ELEMENT_NODE)
-        parts.add(node.getLocalName());
+    public MessageImpl(MessageDAO message) {
+        if (message == null) throw new NullPointerException("null message!");
+        _dao = message;
     }
-    return parts;
-  }
 
+    public Element getPart(String partName) {
+        Element message = getMessage();
+        NodeList eltList = message.getElementsByTagName(partName);
+        if (eltList.getLength() == 0) return null;
+        else return (Element) eltList.item(0);
+    }
+
+    public void setPart(String partName, Element content) {
+        Element message = getMessage();
+        if (message == null) {
+            Document doc = DOMUtils.newDocument();
+            message = doc.createElement("message");
+            doc.appendChild(message);
+        }
+        message.appendChild(message.getOwnerDocument().importNode(content, 
true));
+        setMessage(message);
+    }
+
+    public Element getHeaderPart(String partName) {
+        Element header = _dao.getHeader();
+        if (header == null) return null;
+
+        NodeList eltList = header.getElementsByTagName(partName);
+        if (eltList.getLength() == 0) return null;
+        else return (Element) eltList.item(0);
+    }
+
+    public void setHeaderPart(String name, Element content) {
+        Element header =  _dao.getHeader();
+        if (header == null) {
+            Document doc = DOMUtils.newDocument();
+            header = doc.createElement("header");
+            doc.appendChild(header);
+        }
+        Element part = header.getOwnerDocument().createElement(name);
+        header.appendChild(part);
+        part.appendChild(header.getOwnerDocument().importNode(content, true));
+        _dao.setHeader(header);
+    }
+
+    public void setMessage(Element msg) {
+        _dao.setData(msg);
+    }
+
+    public Element getMessage() {
+        return _dao.getData();
+    }
+
+    public QName getType() {
+        return _dao.getType();
+    }
+
+    public List<String> getParts() {
+        ArrayList<String> parts = new ArrayList<String>();
+        Element message = getMessage();
+        NodeList nodeList = message.getChildNodes();
+        for (int m = 0; m < nodeList.getLength(); m++) {
+            Node node = nodeList.item(m);
+            if (node.getNodeType() == Node.ELEMENT_NODE)
+                parts.add(node.getLocalName());
+        }
+        return parts;
+    }
+
+    public Map<String, Element> getHeaderParts() {
+        HashMap<String,Element> l = new HashMap<String,Element>();
+        Element header =  _dao.getHeader();
+        if (header != null) {
+            NodeList children = header.getChildNodes();
+            for (int m = 0; m < children.getLength(); m++)
+                if (children.item(m).getNodeType() == Node.ELEMENT_NODE) {
+                    Element part = (Element) children.item(m);
+                    l.put(part.getLocalName(), 
DOMUtils.getFirstChildElement(part));
+                }
+        }
+        return l;
+    }
+    
 }

Modified: 
ode/branches/APACHE_ODE_1.1/bpel-runtime/src/main/java/org/apache/ode/bpel/engine/ProcessAndInstanceManagementImpl.java
URL: 
http://svn.apache.org/viewvc/ode/branches/APACHE_ODE_1.1/bpel-runtime/src/main/java/org/apache/ode/bpel/engine/ProcessAndInstanceManagementImpl.java?rev=642026&r1=642025&r2=642026&view=diff
==============================================================================
--- 
ode/branches/APACHE_ODE_1.1/bpel-runtime/src/main/java/org/apache/ode/bpel/engine/ProcessAndInstanceManagementImpl.java
 (original)
+++ 
ode/branches/APACHE_ODE_1.1/bpel-runtime/src/main/java/org/apache/ode/bpel/engine/ProcessAndInstanceManagementImpl.java
 Thu Mar 27 16:40:14 2008
@@ -1134,7 +1134,7 @@
 
         // Name filter can be implemented using only the PIDs.
         if (filter != null && filter.getNameFilter() != null) {
-            final Pattern pattern = 
Pattern.compile(filter.getNameFilter().replace("*",".*"));
+            final Pattern pattern = 
Pattern.compile(filter.getNameFilter().replace("*",".*") + "(-\\d*)?");
             CollectionsX.remove_if(pids, new MemberOfFunction<QName>() {
                 @Override
                 public boolean isMember(QName o) {

Modified: 
ode/branches/APACHE_ODE_1.1/bpel-runtime/src/main/java/org/apache/ode/bpel/memdao/MessageDAOImpl.java
URL: 
http://svn.apache.org/viewvc/ode/branches/APACHE_ODE_1.1/bpel-runtime/src/main/java/org/apache/ode/bpel/memdao/MessageDAOImpl.java?rev=642026&r1=642025&r2=642026&view=diff
==============================================================================
--- 
ode/branches/APACHE_ODE_1.1/bpel-runtime/src/main/java/org/apache/ode/bpel/memdao/MessageDAOImpl.java
 (original)
+++ 
ode/branches/APACHE_ODE_1.1/bpel-runtime/src/main/java/org/apache/ode/bpel/memdao/MessageDAOImpl.java
 Thu Mar 27 16:40:14 2008
@@ -29,6 +29,7 @@
 public class MessageDAOImpl extends DaoBaseImpl implements MessageDAO {
        private QName type;
        private Element data;
+       private Element header;
        private MessageExchangeDAO messageExchange;
        
        public MessageDAOImpl(MessageExchangeDAO messageExchange) {
@@ -48,10 +49,17 @@
        }
 
        public Element getData() {
-               if ( data == null ) {
-                       data = DOMUtils.newDocument().getDocumentElement();
-               }
+               if (data == null) data = 
DOMUtils.newDocument().getDocumentElement();
                return data;
+       }
+
+       public void setHeader(Element value) {
+               this.header = value;
+       }
+
+       public Element getHeader() {
+               if ( header == null ) header = 
DOMUtils.newDocument().getDocumentElement();
+               return header;
        }
 
        public MessageExchangeDAO getMessageExchange() {

Modified: 
ode/branches/APACHE_ODE_1.1/bpel-runtime/src/main/java/org/apache/ode/bpel/runtime/ASSIGN.java
URL: 
http://svn.apache.org/viewvc/ode/branches/APACHE_ODE_1.1/bpel-runtime/src/main/java/org/apache/ode/bpel/runtime/ASSIGN.java?rev=642026&r1=642025&r2=642026&view=diff
==============================================================================
--- 
ode/branches/APACHE_ODE_1.1/bpel-runtime/src/main/java/org/apache/ode/bpel/runtime/ASSIGN.java
 (original)
+++ 
ode/branches/APACHE_ODE_1.1/bpel-runtime/src/main/java/org/apache/ode/bpel/runtime/ASSIGN.java
 Thu Mar 27 16:40:14 2008
@@ -120,8 +120,7 @@
                     doc.appendChild(tempwrapper);
                     tempwrapper.appendChild(val);
                     val = tempwrapper;
-                } else
-                    doc.appendChild(val);
+                } else doc.appendChild(val);
                 lval = initializeVariable(lvar, val);
             } else
                 lval = fetchVariableData(lvar, true);
@@ -170,60 +169,42 @@
             OAssign.VariableRef varRef = (OAssign.VariableRef) from;
             sendVariableReadEvent(_scopeFrame.resolve(varRef.variable));
             Node data = 
fetchVariableData(_scopeFrame.resolve(varRef.variable), false);
-            retVal = evalQuery(data, varRef.part, varRef.location,
-                    getEvaluationContext());
+            retVal = evalQuery(data, varRef.part != null ? varRef.part : 
varRef.headerPart, varRef.location, getEvaluationContext());
         } else if (from instanceof OAssign.PropertyRef) {
             OAssign.PropertyRef propRef = (OAssign.PropertyRef) from;
             sendVariableReadEvent(_scopeFrame.resolve(propRef.variable));
             Node data = 
fetchVariableData(_scopeFrame.resolve(propRef.variable), false);
-
             retVal = evalQuery(data, propRef.propertyAlias.part,
                     propRef.propertyAlias.location, getEvaluationContext());
-
         } else if (from instanceof OAssign.PartnerLinkRef) {
             OAssign.PartnerLinkRef pLinkRef = (OAssign.PartnerLinkRef) from;
-            PartnerLinkInstance pLink = _scopeFrame
-                    .resolve(pLinkRef.partnerLink);
+            PartnerLinkInstance pLink = 
_scopeFrame.resolve(pLinkRef.partnerLink);
             Node tempVal =pLinkRef.isMyEndpointReference ?
                     
getBpelRuntimeContext().fetchMyRoleEndpointReferenceData(pLink)
                     : 
getBpelRuntimeContext().fetchPartnerRoleEndpointReferenceData(pLink);
             if (__log.isDebugEnabled())
                 __log.debug("RValue is a partner link, corresponding endpoint "
-                        + tempVal.getClass().getName() + " has value "
-                        + DOMUtils.domToString(tempVal));
+                        + tempVal.getClass().getName() + " has value " + 
DOMUtils.domToString(tempVal));
             retVal = tempVal;
         } else if (from instanceof OAssign.Expression) {
             List<Node> l;
             OExpression expr = ((OAssign.Expression) from).expression;
             try {
-                l = getBpelRuntimeContext().getExpLangRuntime().evaluate(expr,
-                        getEvaluationContext());
+                l = getBpelRuntimeContext().getExpLangRuntime().evaluate(expr, 
getEvaluationContext());
             } catch (EvaluationException e) {
-                String msg = __msgs.msgEvalException(from.toString(), e
-                        .getMessage());
-                if (__log.isDebugEnabled())
-                    __log.debug(from + ": " + msg);
+                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);
+                throw new 
FaultException(getOAsssign().getOwner().constants.qnSelectionFailure, msg);
             }
             if (l.size() == 0) {
                 String msg = __msgs.msgRValueNoNodesSelected(expr.toString());
-                if (__log.isDebugEnabled())
-                    __log.debug(from + ": " + msg);
-                throw new FaultException(
-                        getOAsssign().getOwner().constants.qnSelectionFailure,
-                        msg);
-
+                if (__log.isDebugEnabled()) __log.debug(from + ": " + msg);
+                throw new 
FaultException(getOAsssign().getOwner().constants.qnSelectionFailure, msg);
             } else if (l.size() > 1) {
-                String msg = __msgs.msgRValueMultipleNodesSelected(expr
-                        .toString());
-                if (__log.isDebugEnabled())
-                    __log.debug(from + ": " + msg);
-                throw new FaultException(
-                        getOAsssign().getOwner().constants.qnSelectionFailure,
-                        msg);
+                String msg = 
__msgs.msgRValueMultipleNodesSelected(expr.toString());
+                if (__log.isDebugEnabled()) __log.debug(from + ": " + msg);
+                throw new 
FaultException(getOAsssign().getOwner().constants.qnSelectionFailure, msg);
             }
             retVal = (Node) l.get(0);
         } else if (from instanceof OAssign.Literal) {
@@ -370,7 +351,7 @@
 
             // Get a pointer within the lvalue.
             Node lvaluePtr = lvalue;
-
+            boolean headerAssign = false;
             if (ocopy.to instanceof OAssign.DirectRef) {
                 DirectRef dref = ((DirectRef) ocopy.to);
                 Element el = DOMUtils.findChildByName((Element)lvalue, 
dref.elName);
@@ -381,10 +362,8 @@
                 lvaluePtr = el;
             } else if (ocopy.to instanceof OAssign.VariableRef) {
                 VariableRef varRef = ((VariableRef) ocopy.to);
-                lvaluePtr = evalQuery(
-                        lvalue,
-                        varRef.part,
-                        varRef.location,
+                if (varRef.headerPart != null) headerAssign = true;
+                lvaluePtr = evalQuery(lvalue, varRef.part != null ? 
varRef.part : varRef.headerPart, varRef.location,
                         new EvaluationContextProxy(varRef.getVariable(), 
lvalue));
             } else if (ocopy.to instanceof OAssign.PropertyRef) {
                 PropertyRef propRef = ((PropertyRef) ocopy.to);
@@ -415,8 +394,9 @@
                         rvalue = ((Document)rvalue).getDocumentElement();
                 }
 
-                if (rvalue.getNodeType() == Node.ELEMENT_NODE
-                        && lvaluePtr.getNodeType() == Node.ELEMENT_NODE) {
+                if (headerAssign && 
lvaluePtr.getParentNode().getNodeName().equals("message")) {
+                    lvalue = copyInto((Element)lvalue, (Element) lvaluePtr, 
(Element) rvalue);
+                } else if (rvalue.getNodeType() == Node.ELEMENT_NODE && 
lvaluePtr.getNodeType() == Node.ELEMENT_NODE) {
                     lvalue = replaceElement((Element)lvalue, (Element) 
lvaluePtr, (Element) rvalue,
                             ocopy.keepSrcElementName);
                 } else {
@@ -480,6 +460,11 @@
         return (lval == ptr) ? replacement :  lval;
     }
 
+    private Element copyInto(Element lval, Element ptr, Element src) {
+        ptr.appendChild(ptr.getOwnerDocument().importNode(src, true));
+        return lval;
+    }
+
     /**
      * isInsert flag desginates this as an 'element' type insertion, which
      * requires insert the actual element value, rather than it's children
@@ -555,27 +540,37 @@
         return lvalue;
     }
 
-    private Node evalQuery(Node lvalue, OMessageVarType.Part part,
+    private Node evalQuery(Node data, OMessageVarType.Part part,
                            OExpression expression, EvaluationContext ec) 
throws FaultException {
-        assert lvalue != null;
+        assert data != null;
 
         if (part != null) {
             QName partName = new QName(null, part.name);
-            Node qualLVal = DOMUtils
-                    .findChildByName((Element) lvalue, partName);
+            Node qualLVal = DOMUtils.findChildByName((Element) data, partName);
             if (part.type instanceof OElementVarType) {
                 QName elName = ((OElementVarType) part.type).elementType;
                 qualLVal = DOMUtils.findChildByName((Element) qualLVal, 
elName);
+            } else if (part.type == null) {
+                // Special case of header parts never referenced in the WSDL 
def
+                if (qualLVal != null && qualLVal.getNodeType() == 
Node.ELEMENT_NODE
+                        && ((Element)qualLVal).getAttribute("headerPart") != 
null)
+                    qualLVal = DOMUtils.getFirstChildElement((Element) 
qualLVal);
+                // The needed part isn't there, dynamically creating it
+                if (qualLVal == null) {
+                    qualLVal = data.getOwnerDocument().createElementNS(null, 
part.name);
+                    ((Element)qualLVal).setAttribute("headerPart", "true");
+                    data.appendChild(qualLVal);
+                }
             }
-            lvalue = qualLVal;
+            data = qualLVal;
         }
 
         if (expression != null) {
             // Neat little trick....
-            lvalue = ec.evaluateQuery(lvalue, expression);
+            data = ec.evaluateQuery(data, expression);
         }
 
-        return lvalue;
+        return data;
     }
 
     private class EvaluationContextProxy implements EvaluationContext {

Modified: 
ode/branches/APACHE_ODE_1.1/bpel-runtime/src/main/java/org/apache/ode/bpel/runtime/PICK.java
URL: 
http://svn.apache.org/viewvc/ode/branches/APACHE_ODE_1.1/bpel-runtime/src/main/java/org/apache/ode/bpel/runtime/PICK.java?rev=642026&r1=642025&r2=642026&view=diff
==============================================================================
--- 
ode/branches/APACHE_ODE_1.1/bpel-runtime/src/main/java/org/apache/ode/bpel/runtime/PICK.java
 (original)
+++ 
ode/branches/APACHE_ODE_1.1/bpel-runtime/src/main/java/org/apache/ode/bpel/runtime/PICK.java
 Thu Mar 27 16:40:14 2008
@@ -141,7 +141,7 @@
 
     /**
      * Calculate a duration offset from right now.
-     * 
+     *
      * @param duration
      *            the offset
      * @return the resulting date.
@@ -155,13 +155,11 @@
     @SuppressWarnings("unchecked")
     private void initVariable(String mexId, OPickReceive.OnMessage onMessage) {
         // This is allowed, if there is no parts in the message for example.
-        if (onMessage.variable == null)
-            return;
+        if (onMessage.variable == null) return;
 
         Element msgEl = getBpelRuntimeContext().getMyRequest(mexId);
-        Collection<String> partNames = (Collection<String>) 
onMessage.operation.getInput().getMessage().getParts()
-                .keySet();
-        
+        Collection<String> partNames = (Collection<String>) 
onMessage.operation.getInput().getMessage().getParts().keySet();
+
         // Let's do some sanity checks here so that we don't get weird errors 
in assignment later.
         // The engine should have checked to make sure that the messages that 
are  delivered conform 
         // to the correct format; but you know what they say, don't trust 
anyone.  
@@ -170,7 +168,7 @@
             __log.fatal(errmsg);
             throw new InvalidProcessException(errmsg);
         }
-        
+
         OMessageVarType vartype = (OMessageVarType) onMessage.variable.type;
 
         // Check that each part contains what we expect. 
@@ -187,38 +185,38 @@
                 String errmsg = "Message missing part: " + pName;
                 __log.fatal(errmsg);
                 throw new InvalidContextException(errmsg);
-            }           
-            
+            }
+
             if (part.type instanceof OElementVarType) {
-                OElementVarType ptype = (OElementVarType) part.type; 
+                OElementVarType ptype = (OElementVarType) part.type;
                 Element e  = DOMUtils.getFirstChildElement(msgPart);
                 if (e == null) {
                     String errmsg = "Message (element) part " + pName + " did 
not contain child element.";
                     __log.fatal(errmsg);
                     throw new InvalidContextException(errmsg);
                 }
-                
+
                 QName qn = new QName(e.getNamespaceURI(), e.getLocalName());
                 if(!qn.equals(ptype.elementType)) {
-                    String errmsg = "Message (element) part " + pName + " did 
not contain correct child element: expected " 
-                    + ptype.elementType + " but got " + qn;
+                    String errmsg = "Message (element) part " + pName + " did 
not contain correct child element: expected "
+                            + ptype.elementType + " but got " + qn;
                     __log.fatal(errmsg);
                     throw new InvalidContextException(errmsg);
                 }
             }
-            
+
         }
 
         VariableInstance vinst = _scopeFrame.resolve(onMessage.variable);
-        
+
         try {
-        initializeVariable(vinst, msgEl);
+            initializeVariable(vinst, msgEl);
         } catch (ExternalVariableModuleException e) {
-               __log.error("Exception while initializing external variable", 
e);
+            __log.error("Exception while initializing external variable", e);
             _self.parent.failure(e.toString(), null);
             return;
         }
-               
+
         // Generating event
         VariableModificationEvent se = new 
VariableModificationEvent(vinst.declaration.name);
         se.setNewValue(msgEl);

Modified: 
ode/branches/APACHE_ODE_1.1/bpel-runtime/src/test/java/org/apache/ode/bpel/elang/xpath20/runtime/MockCompilerContext.java
URL: 
http://svn.apache.org/viewvc/ode/branches/APACHE_ODE_1.1/bpel-runtime/src/test/java/org/apache/ode/bpel/elang/xpath20/runtime/MockCompilerContext.java?rev=642026&r1=642025&r2=642026&view=diff
==============================================================================
--- 
ode/branches/APACHE_ODE_1.1/bpel-runtime/src/test/java/org/apache/ode/bpel/elang/xpath20/runtime/MockCompilerContext.java
 (original)
+++ 
ode/branches/APACHE_ODE_1.1/bpel-runtime/src/test/java/org/apache/ode/bpel/elang/xpath20/runtime/MockCompilerContext.java
 Thu Mar 27 16:40:14 2008
@@ -204,4 +204,7 @@
 
     public void recoveredFromError(SourceLocation location, 
CompilationException error) {
     }
+    public Part resolveHeaderPart(Variable variable, String partname) throws 
CompilationException {
+        return null;
+    }
 }

Modified: 
ode/branches/APACHE_ODE_1.1/bpel-test/src/main/java/org/apache/ode/test/MessageExchangeContextImpl.java
URL: 
http://svn.apache.org/viewvc/ode/branches/APACHE_ODE_1.1/bpel-test/src/main/java/org/apache/ode/test/MessageExchangeContextImpl.java?rev=642026&r1=642025&r2=642026&view=diff
==============================================================================
--- 
ode/branches/APACHE_ODE_1.1/bpel-test/src/main/java/org/apache/ode/test/MessageExchangeContextImpl.java
 (original)
+++ 
ode/branches/APACHE_ODE_1.1/bpel-test/src/main/java/org/apache/ode/test/MessageExchangeContextImpl.java
 Thu Mar 27 16:40:14 2008
@@ -101,7 +101,7 @@
                if ( elm1 != null && elm2 != null ) {
                        String cat = elm2.getTextContent()+" -> 
"+elm1.getTextContent();
                        elm2.setTextContent(cat);
-                       msg.setMessagePart("probeData", elm2);
+                       msg.setPart("probeData", elm2);
             final Message response = 
prmx.createMessage(prmx.getOperation().getOutput().getMessage().getQName());
 
             response.setMessage(msg.getMessage());

Modified: 
ode/branches/APACHE_ODE_1.1/dao-hibernate/src/main/java/org/apache/ode/daohib/bpel/MessageDaoImpl.java
URL: 
http://svn.apache.org/viewvc/ode/branches/APACHE_ODE_1.1/dao-hibernate/src/main/java/org/apache/ode/daohib/bpel/MessageDaoImpl.java?rev=642026&r1=642025&r2=642026&view=diff
==============================================================================
--- 
ode/branches/APACHE_ODE_1.1/dao-hibernate/src/main/java/org/apache/ode/daohib/bpel/MessageDaoImpl.java
 (original)
+++ 
ode/branches/APACHE_ODE_1.1/dao-hibernate/src/main/java/org/apache/ode/daohib/bpel/MessageDaoImpl.java
 Thu Mar 27 16:40:14 2008
@@ -68,7 +68,25 @@
         } catch (Exception e) {
             throw new RuntimeException(e);
         }
+    }
 
+    public void setHeader(Element value) {
+        if (value == null) return;
+        if (_hself.getHeader() != null)
+            _session.delete(_hself.getHeader());
+        HLargeData newdata = new HLargeData(DOMUtils.domToString(value));
+        _session.save(newdata);
+        _hself.setHeader(newdata);
+        update();
+    }
+
+    public Element getHeader() {
+        if (_hself.getHeader() == null) return null;
+        try {
+            return DOMUtils.stringToDOM(_hself.getHeader().getText());
+        } catch (Exception e) {
+            throw new RuntimeException(e);
+        }
     }
 
     public MessageExchangeDAO getMessageExchange() {

Modified: 
ode/branches/APACHE_ODE_1.1/dao-hibernate/src/main/java/org/apache/ode/daohib/bpel/hobj/HMessage.java
URL: 
http://svn.apache.org/viewvc/ode/branches/APACHE_ODE_1.1/dao-hibernate/src/main/java/org/apache/ode/daohib/bpel/hobj/HMessage.java?rev=642026&r1=642025&r2=642026&view=diff
==============================================================================
--- 
ode/branches/APACHE_ODE_1.1/dao-hibernate/src/main/java/org/apache/ode/daohib/bpel/hobj/HMessage.java
 (original)
+++ 
ode/branches/APACHE_ODE_1.1/dao-hibernate/src/main/java/org/apache/ode/daohib/bpel/hobj/HMessage.java
 Thu Mar 27 16:40:14 2008
@@ -30,7 +30,7 @@
   private HMessageExchange _mex;
   private String _type;
   private HLargeData _data;
-  
+  private HLargeData _header;
   
   public void setMessageExchange(HMessageExchange mex) {
     _mex = mex;
@@ -57,6 +57,15 @@
 
   public void setMessageData(HLargeData data) {
     _data = data;
+  }
+
+  /** @hibernate.many-to-one column="HEADER" */
+  public HLargeData getHeader() {
+    return _header;
+  }
+
+  public void setHeader(HLargeData header) {
+    _header = header;
   }
 
 }

Modified: 
ode/branches/APACHE_ODE_1.1/dao-jpa/src/main/java/org/apache/ode/dao/jpa/MessageDAOImpl.java
URL: 
http://svn.apache.org/viewvc/ode/branches/APACHE_ODE_1.1/dao-jpa/src/main/java/org/apache/ode/dao/jpa/MessageDAOImpl.java?rev=642026&r1=642025&r2=642026&view=diff
==============================================================================
--- 
ode/branches/APACHE_ODE_1.1/dao-jpa/src/main/java/org/apache/ode/dao/jpa/MessageDAOImpl.java
 (original)
+++ 
ode/branches/APACHE_ODE_1.1/dao-jpa/src/main/java/org/apache/ode/dao/jpa/MessageDAOImpl.java
 Thu Mar 27 16:40:14 2008
@@ -51,8 +51,12 @@
     private String _type;
        @Lob @Column(name="DATA")
     private String _data;
+       @Lob @Column(name="HEADER")
+    private String _header;
        @Transient
     private Element _element;
+       @Transient
+    private Element _headerElement;
        @ManyToOne(fetch=FetchType.LAZY,cascade={CascadeType.ALL}) 
@Column(name="MESSAGE_EXCHANGE_ID")
        private MessageExchangeDAOImpl _messageExchange;
 
@@ -72,23 +76,39 @@
                                throw new RuntimeException(e);
                        }
                }
-               
                return _element;
        }
 
-       public MessageExchangeDAO getMessageExchange() {
-               return _messageExchange;
+       public void setData(Element value) {
+        if (value == null) return;
+        _data = DOMUtils.domToString(value);
+               _element = value;
        }
 
-       public QName getType() {
-               return _type == null ? null : QName.valueOf(_type);
+       public Element getHeader() {
+               if ( _headerElement == null && _header != null ) {
+                       try {
+                               _headerElement = DOMUtils.stringToDOM(_header);
+                       } catch (Exception e) {
+                               throw new RuntimeException(e);
+                       }
+               }
+               return _headerElement;
        }
 
-       public void setData(Element value) {
+       public void setHeader(Element value) {
         if (value == null) return;
-        _data = DOMUtils.domToString(value);
-               _element = value;
+        _header = DOMUtils.domToString(value);
+               _headerElement = value;
        }
+
+    public MessageExchangeDAO getMessageExchange() {
+        return _messageExchange;
+    }
+
+    public QName getType() {
+        return _type == null ? null : QName.valueOf(_type);
+    }
 
        public void setType(QName type) {
                _type = type.toString();

Modified: 
ode/branches/APACHE_ODE_1.1/distro/src/examples-jbi/HelloWorld2/HelloWorld2-process/HelloWorld2.bpel
URL: 
http://svn.apache.org/viewvc/ode/branches/APACHE_ODE_1.1/distro/src/examples-jbi/HelloWorld2/HelloWorld2-process/HelloWorld2.bpel?rev=642026&r1=642025&r2=642026&view=diff
==============================================================================
--- 
ode/branches/APACHE_ODE_1.1/distro/src/examples-jbi/HelloWorld2/HelloWorld2-process/HelloWorld2.bpel
 (original)
+++ 
ode/branches/APACHE_ODE_1.1/distro/src/examples-jbi/HelloWorld2/HelloWorld2-process/HelloWorld2.bpel
 Thu Mar 27 16:40:14 2008
@@ -18,9 +18,9 @@
   ~ under the License.
   -->
 <process name="HelloWorld2"
-         targetNamespace="urn:/HelloWorld2.bpel"
+         targetNamespace="urn:/HeaderTest.bpel"
          xmlns="http://docs.oasis-open.org/wsbpel/2.0/process/executable";
-         xmlns:tns="urn:/HelloWorld2.bpel"
+         xmlns:tns="urn:/HeaderTest.bpel"
          xmlns:hello="urn:/HelloWorld2.wsdl"
          xmlns:xsd="http://www.w3.org/2001/XMLSchema";>
 

Modified: 
ode/branches/APACHE_ODE_1.1/distro/src/examples-jbi/HelloWorld2/HelloWorld2-process/deploy.xml
URL: 
http://svn.apache.org/viewvc/ode/branches/APACHE_ODE_1.1/distro/src/examples-jbi/HelloWorld2/HelloWorld2-process/deploy.xml?rev=642026&r1=642025&r2=642026&view=diff
==============================================================================
--- 
ode/branches/APACHE_ODE_1.1/distro/src/examples-jbi/HelloWorld2/HelloWorld2-process/deploy.xml
 (original)
+++ 
ode/branches/APACHE_ODE_1.1/distro/src/examples-jbi/HelloWorld2/HelloWorld2-process/deploy.xml
 Thu Mar 27 16:40:14 2008
@@ -17,7 +17,7 @@
   ~ under the License.
   -->
 <deploy xmlns="http://www.apache.org/ode/schemas/dd/2007/03";
-        xmlns:pns="urn:/HelloWorld2.bpel"
+        xmlns:pns="urn:/HeaderTest.bpel"
         xmlns:sns="urn:/HelloWorld2.wsdl" >
 
 


Reply via email to