You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@ode.apache.org by mr...@apache.org on 2008/08/04 20:44:21 UTC
svn commit: r682457 [2/2] - in /ode/branches/rtver: ./
bpel-api/src/main/java/org/apache/ode/bpel/rapi/
bpel-compiler/src/main/java/org/apache/ode/bpel/compiler/
bpel-compiler/src/main/java/org/apache/ode/bpel/compiler/api/
bpel-compiler/src/main/java/...
Added: ode/branches/rtver/runtime-repo/src/main/java/org/apache/ode/bpel/rtrep/v2/RuntimeImpl.java
URL: http://svn.apache.org/viewvc/ode/branches/rtver/runtime-repo/src/main/java/org/apache/ode/bpel/rtrep/v2/RuntimeImpl.java?rev=682457&view=auto
==============================================================================
--- ode/branches/rtver/runtime-repo/src/main/java/org/apache/ode/bpel/rtrep/v2/RuntimeImpl.java (added)
+++ ode/branches/rtver/runtime-repo/src/main/java/org/apache/ode/bpel/rtrep/v2/RuntimeImpl.java Mon Aug 4 11:44:19 2008
@@ -0,0 +1,174 @@
+package org.apache.ode.bpel.rtrep.v2;
+
+import java.io.IOException;
+import java.io.InputStream;
+import java.util.HashSet;
+import java.util.Map;
+import java.util.Set;
+
+import org.apache.commons.logging.Log;
+import org.apache.commons.logging.LogFactory;
+import org.apache.ode.bpel.iapi.BpelEngineException;
+import org.apache.ode.bpel.iapi.ProcessConf;
+import org.apache.ode.bpel.common.FaultException;
+import org.apache.ode.bpel.rtrep.common.extension.AbstractExtensionBundle;
+import org.apache.ode.bpel.rapi.OdeRuntime;
+import org.apache.ode.bpel.rapi.ProcessModel;
+import org.apache.ode.bpel.rapi.OdeRTInstance;
+import org.apache.ode.bpel.rapi.PropertyAliasModel;
+import org.apache.ode.bpel.rtrep.common.ConfigurationException;
+import org.apache.ode.jacob.soup.ReplacementMap;
+import org.apache.ode.jacob.vpu.ExecutionQueueImpl;
+import org.apache.ode.utils.msg.MessageBundle;
+import org.w3c.dom.Element;
+import org.w3c.dom.Node;
+import org.w3c.dom.NodeList;
+import org.w3c.dom.Text;
+
+import javax.xml.namespace.QName;
+
+public class RuntimeImpl implements OdeRuntime {
+ private static final Log __log = LogFactory.getLog(RuntimeImpl.class);
+
+ private static final Messages __msgs = MessageBundle.getMessages(Messages.class);
+
+ ProcessConf _pconf;
+ OProcess _oprocess;
+ Set<String> _mustUnderstandExtensions;
+ ReplacementMap _replacementMap;
+ ExpressionLanguageRuntimeRegistry _expLangRuntimeRegistry;
+ Map<String, AbstractExtensionBundle> _extensionRegistry;
+
+ /**
+ * Initialize according to process configuration.
+ */
+ public void init(ProcessConf pconf) {
+ _pconf = pconf;
+ try {
+ _oprocess = deserializeCompiledProcess(_pconf.getCBPInputStream());
+ } catch (Exception e) {
+ String errmsg = "Error reloading compiled process " + _pconf.getProcessId() + "; the file appears to be corrupted.";
+ __log.error(errmsg);
+ throw new BpelEngineException(errmsg, e);
+ }
+
+ _replacementMap = new ReplacementMapImpl(_oprocess);
+
+ // Create an expression language registry for this process
+ ExpressionLanguageRuntimeRegistry elangRegistry = new ExpressionLanguageRuntimeRegistry();
+ for (OExpressionLanguage elang : _oprocess.expressionLanguages) {
+ try {
+ elangRegistry.registerRuntime(elang);
+ } catch (ConfigurationException e) {
+ String msg = __msgs.msgExpLangRegistrationError(elang.expressionLanguageUri, elang.properties);
+ __log.error(msg, e);
+ throw new BpelEngineException(msg, e);
+ }
+ }
+ _expLangRuntimeRegistry = elangRegistry;
+
+ // Checking for registered extension bundles, throw an exception when
+ // a "mustUnderstand" extension is not available
+ _mustUnderstandExtensions = new HashSet<String>();
+ for (OProcess.OExtension extension : _oprocess.declaredExtensions) {
+ if (extension.mustUnderstand) {
+ if (_extensionRegistry.get(extension.namespaceURI) == null) {
+ String msg = __msgs.msgExtensionMustUnderstandError(_pconf.getProcessId(), extension.namespaceURI);
+ __log.error(msg);
+ throw new BpelEngineException(msg);
+ } else {
+ _mustUnderstandExtensions.add(extension.namespaceURI);
+ }
+ } else {
+ __log.warn("The process declares the extension namespace " + extension.namespaceURI
+ + " that is unkown to the engine");
+ }
+ }
+
+ }
+
+ /*
+ * (non-Javadoc)
+ *
+ * @see org.apache.ode.bpel.engine.rapi.OdeRuntime#createInstance(org.apache.ode.bpel.engine.rapi.OdeRTInstanceContext)
+ */
+ public OdeRTInstance newInstance(Object state) {
+ return new RuntimeInstanceImpl(this, (ExecutionQueueImpl) state);
+ }
+
+ public ReplacementMap getReplacementMap(QName processName) {
+ if (_pconf.getProcessId().equals(processName))
+ return new ReplacementMapImpl(_oprocess);
+ else throw new UnsupportedOperationException("Implement the creation of replacement map for other version.");
+ }
+
+ public ProcessModel getModel() {
+ return _oprocess;
+ }
+
+ /**
+ * Extract the value of a BPEL property from a BPEL messsage variable.
+ *
+ * @param msgData message variable data
+ * @param aliasModel alias to apply
+ * @param target description of the data (for error logging only)
+ * @return value of the property
+ * @throws org.apache.ode.bpel.common.FaultException
+ */
+ public String extractProperty(Element msgData, PropertyAliasModel aliasModel, String target) throws FaultException {
+ OProcess.OPropertyAlias alias = (OProcess.OPropertyAlias) aliasModel;
+ PropertyAliasEvaluationContext ectx = new PropertyAliasEvaluationContext(msgData, alias);
+ Node lValue = ectx.getRootNode();
+
+ if (alias.location != null)
+ lValue = _expLangRuntimeRegistry.evaluateNode(alias.location, ectx);
+
+ if (lValue == null) {
+ String errmsg = __msgs.msgPropertyAliasReturnedNullSet(alias.getDescription(), target);
+ if (__log.isErrorEnabled()) __log.error(errmsg);
+ throw new FaultException(_oprocess.constants.qnSelectionFailure, errmsg);
+ }
+
+ if (lValue.getNodeType() == Node.ELEMENT_NODE) {
+ // This is a bit hokey, we concatenate all the children's values; we really should be
+ // checking to make sure that we are only dealing with text and attribute nodes.
+ StringBuffer val = new StringBuffer();
+ NodeList nl = lValue.getChildNodes();
+ for (int i = 0; i < nl.getLength(); ++i) {
+ Node n = nl.item(i);
+ val.append(n.getNodeValue());
+ }
+ return val.toString();
+ } else if (lValue.getNodeType() == Node.TEXT_NODE) {
+ return ((Text) lValue).getWholeText();
+ } else
+ return null;
+ }
+
+ public void clear() {
+ _pconf = null;
+ _oprocess = null;
+ _mustUnderstandExtensions = null;
+ _replacementMap = null;
+ _expLangRuntimeRegistry = null;
+ _extensionRegistry = null;
+ }
+
+ /**
+ * Read an {@link OProcess} representation from a stream.
+ *
+ * @param is
+ * input stream
+ * @return deserialized process representation
+ * @throws IOException
+ * @throws ClassNotFoundException
+ */
+ private OProcess deserializeCompiledProcess(InputStream is) throws IOException, ClassNotFoundException {
+ OProcess compiledProcess;
+ Serializer ofh = new Serializer(is);
+ compiledProcess = ofh.readOProcess();
+ return compiledProcess;
+ }
+
+
+}
Modified: ode/branches/rtver/runtime-repo/src/main/java/org/apache/ode/bpel/rtrep/v2/RuntimeInstanceImpl.java
URL: http://svn.apache.org/viewvc/ode/branches/rtver/runtime-repo/src/main/java/org/apache/ode/bpel/rtrep/v2/RuntimeInstanceImpl.java?rev=682457&r1=682456&r2=682457&view=diff
==============================================================================
--- ode/branches/rtver/runtime-repo/src/main/java/org/apache/ode/bpel/rtrep/v2/RuntimeInstanceImpl.java (original)
+++ ode/branches/rtver/runtime-repo/src/main/java/org/apache/ode/bpel/rtrep/v2/RuntimeInstanceImpl.java Mon Aug 4 11:44:19 2008
@@ -15,11 +15,10 @@
import org.apache.ode.bpel.common.FaultException;
import org.apache.ode.bpel.evt.ProcessInstanceStartedEvent;
import org.apache.ode.bpel.evt.ScopeEvent;
-import org.apache.ode.bpel.rtrep.rapi.*;
+import org.apache.ode.bpel.rapi.*;
import org.apache.ode.bpel.rtrep.v2.channels.*;
import org.apache.ode.bpel.rtrep.common.extension.ExtensionOperation;
import org.apache.ode.bpel.rtrep.common.extension.AbstractExtensionBundle;
-import org.apache.ode.bpel.rtrep.common.extension.ExtensionContext;
import org.apache.ode.bpel.evar.ExternalVariableModuleException;
import org.apache.ode.bpel.evar.IncompleteKeyException;
import org.apache.ode.bpel.iapi.BpelEngineException;
Modified: ode/branches/rtver/runtime-repo/src/main/java/org/apache/ode/bpel/rtrep/v2/SCOPE.java
URL: http://svn.apache.org/viewvc/ode/branches/rtver/runtime-repo/src/main/java/org/apache/ode/bpel/rtrep/v2/SCOPE.java?rev=682457&r1=682456&r2=682457&view=diff
==============================================================================
--- ode/branches/rtver/runtime-repo/src/main/java/org/apache/ode/bpel/rtrep/v2/SCOPE.java (original)
+++ ode/branches/rtver/runtime-repo/src/main/java/org/apache/ode/bpel/rtrep/v2/SCOPE.java Mon Aug 4 11:44:19 2008
@@ -40,7 +40,7 @@
import org.apache.ode.bpel.rtrep.v2.channels.ParentScopeChannelListener;
import org.apache.ode.bpel.rtrep.v2.channels.TerminationChannel;
import org.apache.ode.bpel.rtrep.v2.channels.TerminationChannelListener;
-import org.apache.ode.bpel.rtrep.rapi.InvalidProcessException;
+import org.apache.ode.bpel.rapi.InvalidProcessException;
import org.apache.ode.jacob.ChannelListener;
import org.apache.ode.jacob.SynchChannel;
import org.w3c.dom.Element;
Modified: ode/branches/rtver/runtime-repo/src/main/java/org/apache/ode/bpel/rtrep/v2/Selector.java
URL: http://svn.apache.org/viewvc/ode/branches/rtver/runtime-repo/src/main/java/org/apache/ode/bpel/rtrep/v2/Selector.java?rev=682457&r1=682456&r2=682457&view=diff
==============================================================================
--- ode/branches/rtver/runtime-repo/src/main/java/org/apache/ode/bpel/rtrep/v2/Selector.java (original)
+++ ode/branches/rtver/runtime-repo/src/main/java/org/apache/ode/bpel/rtrep/v2/Selector.java Mon Aug 4 11:44:19 2008
@@ -19,12 +19,12 @@
package org.apache.ode.bpel.rtrep.v2;
import org.apache.ode.bpel.common.CorrelationKey;
-import org.apache.ode.bpel.rtrep.rapi.PartnerLink;
+import org.apache.ode.bpel.rapi.PartnerLink;
import org.apache.ode.utils.ObjectPrinter;
import java.io.Serializable;
-public class Selector implements Serializable, org.apache.ode.bpel.rtrep.rapi.Selector {
+public class Selector implements Serializable, org.apache.ode.bpel.rapi.Selector {
private static final long serialVersionUID = 1L;
public final PartnerLinkInstance plinkInstance;
Modified: ode/branches/rtver/runtime-repo/src/main/java/org/apache/ode/bpel/rtrep/v2/VariableInstance.java
URL: http://svn.apache.org/viewvc/ode/branches/rtver/runtime-repo/src/main/java/org/apache/ode/bpel/rtrep/v2/VariableInstance.java?rev=682457&r1=682456&r2=682457&view=diff
==============================================================================
--- ode/branches/rtver/runtime-repo/src/main/java/org/apache/ode/bpel/rtrep/v2/VariableInstance.java (original)
+++ ode/branches/rtver/runtime-repo/src/main/java/org/apache/ode/bpel/rtrep/v2/VariableInstance.java Mon Aug 4 11:44:19 2008
@@ -18,7 +18,7 @@
*/
package org.apache.ode.bpel.rtrep.v2;
-import org.apache.ode.bpel.rtrep.rapi.Variable;
+import org.apache.ode.bpel.rapi.Variable;
import java.io.Serializable;
Modified: ode/branches/rtver/runtime-repo/src/main/java/org/apache/ode/bpel/rtrep/v2/channels/FaultData.java
URL: http://svn.apache.org/viewvc/ode/branches/rtver/runtime-repo/src/main/java/org/apache/ode/bpel/rtrep/v2/channels/FaultData.java?rev=682457&r1=682456&r2=682457&view=diff
==============================================================================
--- ode/branches/rtver/runtime-repo/src/main/java/org/apache/ode/bpel/rtrep/v2/channels/FaultData.java (original)
+++ ode/branches/rtver/runtime-repo/src/main/java/org/apache/ode/bpel/rtrep/v2/channels/FaultData.java Mon Aug 4 11:44:19 2008
@@ -23,7 +23,7 @@
import org.apache.ode.bpel.rtrep.v2.OVarType;
import org.apache.ode.bpel.rtrep.v2.OElementVarType;
import org.apache.ode.bpel.rtrep.v2.OMessageVarType;
-import org.apache.ode.bpel.rtrep.rapi.FaultInfo;
+import org.apache.ode.bpel.rapi.FaultInfo;
import org.w3c.dom.Element;
import javax.xml.namespace.QName;