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/30 01:30:16 UTC
svn commit: r690420 [3/4] - in /ode/trunk: ./ axis2-war/lib/
axis2-war/src/test/java/org/apache/ode/axis2/
axis2/src/main/java/org/apache/ode/axis2/
bpel-api/src/main/java/org/apache/ode/bpel/capi/
bpel-api/src/main/java/org/apache/ode/bpel/common/ bpe...
Modified: ode/trunk/bpel-runtime/src/main/java/org/apache/ode/bpel/engine/BpelServerImpl.java
URL: http://svn.apache.org/viewvc/ode/trunk/bpel-runtime/src/main/java/org/apache/ode/bpel/engine/BpelServerImpl.java?rev=690420&r1=690419&r2=690420&view=diff
==============================================================================
--- ode/trunk/bpel-runtime/src/main/java/org/apache/ode/bpel/engine/BpelServerImpl.java (original)
+++ ode/trunk/bpel-runtime/src/main/java/org/apache/ode/bpel/engine/BpelServerImpl.java Fri Aug 29 16:30:05 2008
@@ -63,13 +63,13 @@
import org.apache.ode.bpel.iapi.Scheduler.JobInfo;
import org.apache.ode.bpel.iapi.Scheduler.JobProcessorException;
import org.apache.ode.bpel.intercept.MessageExchangeInterceptor;
-import org.apache.ode.bpel.o.OPartnerLink;
-import org.apache.ode.bpel.o.OProcess;
-import org.apache.ode.bpel.runtime.extension.AbstractExtensionBundle;
import org.apache.ode.utils.GUID;
import org.apache.ode.utils.msg.MessageBundle;
import org.apache.ode.utils.stl.CollectionsX;
import org.apache.ode.utils.stl.MemberOfFunction;
+import org.apache.ode.bpel.rapi.ProcessModel;
+import org.apache.ode.bpel.rapi.OdeRuntime;
+import org.apache.ode.bpel.extension.ExtensionBundleRuntime;
/**
* <p>
@@ -104,10 +104,13 @@
* Set of processes that are registered with the server. Includes hydrated and dehydrated processes. Guarded by
* _mngmtLock.writeLock().
*/
- private final HashMap<QName, BpelProcess> _registeredProcesses = new HashMap<QName, BpelProcess>();
+ private final HashMap<QName, ODEProcess> _registeredProcesses = new HashMap<QName, ODEProcess>();
- /** Mapping from myrole service name to list of active processes */
- private final HashMap<QName, List<BpelProcess>> _serviceMap = new HashMap<QName, List<BpelProcess>>();
+ /** Mapping from myrole service name to active process. */
+ private final HashMap<QName, List<ODEProcess>> _serviceMap = new HashMap<QName, List<ODEProcess>>();
+
+ /** Weak-reference cache of all the my-role message exchange objects. */
+ private final MyRoleMessageExchangeCache _myRoleMexCache = new MyRoleMessageExchangeCache();
private State _state = State.SHUTDOWN;
@@ -193,7 +196,6 @@
__log.debug("BPEL SERVER starting.");
-
if (_exec == null) {
ThreadFactory threadFactory = new ThreadFactory() {
int threadNumber = 0;
@@ -269,7 +271,7 @@
}
}
- public void registerExtensionBundle(AbstractExtensionBundle bundle) {
+ public void registerExtensionBundle(ExtensionBundleRuntime bundle) {
_contexts.extensionRegistry.put(bundle.getNamespaceURI(), bundle);
bundle.registerExtensionActivities();
}
@@ -353,19 +355,19 @@
__log.debug("Registering process " + conf.getProcessId() + " with server.");
- BpelProcess process = new BpelProcess(this, conf, null);
+ ODEProcess process = new ODEProcess(this, conf, null, buildRuntime(conf), _myRoleMexCache);
for (Endpoint e : process.getServiceNames()) {
__log.debug("Register process: serviceId=" + e + ", process=" + process);
// Get the list of processes associated with the given service
- List<BpelProcess> processes = _serviceMap.get(e.serviceName);
+ List<ODEProcess> processes = _serviceMap.get(e.serviceName);
if (processes == null) {
// Create an empty list, if no processes were associated
- _serviceMap.put(e.serviceName, processes = new ArrayList<BpelProcess>());
+ _serviceMap.put(e.serviceName, processes = new ArrayList<ODEProcess>());
}
// Remove any older version of the process from the list
for (int i = 0; i < processes.size(); i++) {
- BpelProcess cachedVersion = processes.get(i);
+ ODEProcess cachedVersion = processes.get(i);
__log.debug("cached version " + cachedVersion.getPID() + " vs registering version " + process.getPID());
if (cachedVersion.getProcessType().equals(process.getProcessType())) {
processes.remove(cachedVersion);
@@ -378,7 +380,7 @@
process.activate(_contexts);
_registeredProcesses.put(process.getPID(), process);
- process.hydrate();
+ if (_dehydrationPolicy == null) process.hydrate();
__log.info(__msgs.msgProcessRegistered(conf.getProcessId()));
} finally {
@@ -386,6 +388,19 @@
}
}
+ private OdeRuntime buildRuntime(ProcessConf conf) {
+ // Relying on package naming conventions to find our runtime
+ String qualifiedName = "org.apache.ode.bpel.rtrep.v" + conf.getRuntimeVersion() + ".RuntimeImpl";
+ try {
+ OdeRuntime runtime = (OdeRuntime) Class.forName(qualifiedName).newInstance();
+ runtime.setExtensionRegistry(_contexts.extensionRegistry);
+ return runtime;
+ } catch (Exception e) {
+ throw new RuntimeException("Couldn't instantiate ODE runtime version " + conf.getRuntimeVersion() +
+ ", either your process definition version is outdated or we have a bug.");
+ }
+ }
+
public void unregister(QName pid) throws BpelEngineException {
if (__log.isTraceEnabled())
__log.trace("unregister: " + pid);
@@ -398,7 +413,7 @@
}
try {
- BpelProcess p = _registeredProcesses.remove(pid);
+ ODEProcess p = _registeredProcesses.remove(pid);
if (p == null)
return;
@@ -408,7 +423,7 @@
// Remove the process from any services that might reference it.
// However, don't remove the service itself from the map.
- for (List<BpelProcess> processes : _serviceMap.values()) {
+ for (List<ODEProcess> processes : _serviceMap.values()) {
__log.debug("removing process " + pid + "; handle " + p + "; exists " + processes.contains(p));
processes.remove(p);
}
@@ -437,8 +452,7 @@
/**
* Unregister a global message exchange interceptor.
*
- * @param interceptor
- * message-exchange interceptor
+ * @param interceptor message-exchange interceptor
*/
public void unregisterMessageExchangeInterceptor(MessageExchangeInterceptor interceptor) {
// NOTE: do not synchronize, globalInterceptors is copy-on-write.
@@ -449,16 +463,13 @@
* Route to a process using the service id. Note, that we do not need the endpoint name here, we are assuming that two processes
* would not be registered under the same service qname but different endpoint.
*
- * @param service
- * target service id
- * @param request
- * request message
+ * @param service target service id
+ * @param request request message
* @return process corresponding to the targetted service, or <code>null</code> if service identifier is not recognized.
*/
- List<BpelProcess> route(QName service, Message request) {
+ List<ODEProcess> route(QName service, Message request) {
// TODO: use the message to route to the correct service if more than
// one service is listening on the same endpoint.
-
_mngmtLock.readLock().lock();
try {
return _serviceMap.get(service);
@@ -476,7 +487,6 @@
if (_state == j)
return false;
return false;
-// throw new IllegalStateException("Unexpected state: " + i);
}
/* TODO: We need to have a method of cleaning up old deployment data. */
@@ -504,7 +514,7 @@
_mngmtLock.readLock().lock();
try {
final WorkEvent we = new WorkEvent(jobInfo.jobDetail);
- BpelProcess process = _registeredProcesses.get(we.getProcessId());
+ ODEProcess process = _registeredProcesses.get(we.getProcessId());
if (process == null) {
// If the process is not active, it means that we should not be
// doing any work on its behalf, therefore we will reschedule the
@@ -522,7 +532,6 @@
});
return;
}
-
process.handleWorkEvent(jobInfo);
} catch (Exception ex) {
throw new JobProcessorException(ex, jobInfo.jobDetail.get("inmem") == null);
@@ -579,20 +588,20 @@
_mngmtLock.readLock().lock();
try {
// Obtain the list of processes that this service is potentially targeted at
- final List<BpelProcess> targets = route(targetService, null);
+ final List<ODEProcess> targets = route(targetService, null);
if (targets == null || targets.size() == 0)
throw new BpelEngineException("NoSuchService: " + targetService);
if (targets.size() == 1) {
// If the number of targets is one, create and return a simple MEX
- BpelProcess target = targets.get(0);
+ ODEProcess target = targets.get(0);
return createNewMyRoleMex(target, istyle, targetService, operation, clientKey);
} else {
// If the number of targets is greater than one, create and return
// a brokered MEX that embeds the simple MEXs for each of the targets
ArrayList<MyRoleMessageExchange> meps = new ArrayList<MyRoleMessageExchange>();
- for (BpelProcess target : targets) {
+ for (ODEProcess target : targets) {
meps.add(createNewMyRoleMex(target, istyle, targetService, operation, clientKey));
}
return createNewMyRoleMex(targets.get(0), meps, istyle);
@@ -611,14 +620,14 @@
* @param clientKey
* @return
*/
- private MyRoleMessageExchange createNewMyRoleMex(BpelProcess process, final InvocationStyle istyle, final QName targetService,
+ private MyRoleMessageExchange createNewMyRoleMex(ODEProcess process, final InvocationStyle istyle, final QName targetService,
final String operation, final String clientKey) {
if (istyle == InvocationStyle.RELIABLE || istyle == InvocationStyle.TRANSACTED)
assertTransaction();
else
assertNoTransaction();
- return process.createNewMyRoleMex(istyle, targetService, operation, clientKey);
+ return process.createNewMyRoleMex(istyle, targetService, operation);
}
/**
@@ -631,18 +640,17 @@
* @return
* @throws BpelEngineException
*/
- private MyRoleMessageExchange createNewMyRoleMex(BpelProcess target, List<MyRoleMessageExchange> meps, InvocationStyle istyle)
+ private MyRoleMessageExchange createNewMyRoleMex(ODEProcess target, List<MyRoleMessageExchange> meps, InvocationStyle istyle)
throws BpelEngineException {
String mexId = new GUID().toString();
- OPartnerLink oplink = new OPartnerLink(null);
MyRoleMessageExchange template = meps.get(0);
switch (istyle) {
case RELIABLE:
- return new BrokeredReliableMyRoleMessageExchangeImpl(target, meps, mexId, oplink, template);
+ return new BrokeredReliableMyRoleMessageExchangeImpl(target, meps, mexId, template);
case TRANSACTED:
- return new BrokeredTransactedMyRoleMessageExchangeImpl(target, meps, mexId, oplink, template);
+ return new BrokeredTransactedMyRoleMessageExchangeImpl(target, meps, mexId, template);
case UNRELIABLE:
- return new BrokeredUnreliableMyRoleMessageExchangeImpl(target, meps, mexId, oplink, template);
+ return new BrokeredUnreliableMyRoleMessageExchangeImpl(target, meps, mexId, template);
case P2P:
default:
throw new BpelEngineException("Unsupported Invocation Style: " + istyle);
@@ -658,13 +666,12 @@
Callable<MessageExchange> loadMex = new Callable<MessageExchange>() {
public MessageExchange call() {
- MessageExchangeDAO mexdao = (inmemdao == null) ? mexdao = _contexts.dao.getConnection().getMessageExchange(
- mexId) : inmemdao;
- if (mexdao == null)
- return null;
+ MessageExchangeDAO mexdao = (inmemdao == null) ?
+ mexdao = _contexts.dao.getConnection().getMessageExchange(mexId) : inmemdao;
+ if (mexdao == null) return null;
ProcessDAO pdao = mexdao.getProcess();
- BpelProcess process = pdao == null ? null : _registeredProcesses.get(pdao.getProcessId());
+ ODEProcess process = pdao == null ? null : _registeredProcesses.get(pdao.getProcessId());
if (process == null) {
String errmsg = __msgs.msgProcessNotActive(pdao.getProcessId());
@@ -724,12 +731,13 @@
_mngmtLock.readLock().lock();
try {
- List<BpelProcess> processes = route(serviceId, null);
+ List<ODEProcess> processes = route(serviceId, null);
if (processes == null || processes.size() == 0)
throw new BpelEngineException("No such service: " + serviceId);
+
// Compute the intersection of the styles of all providing processes
Set<InvocationStyle> istyles = new HashSet<InvocationStyle>();
- for (BpelProcess process : processes) {
+ for (ODEProcess process : processes) {
Set<InvocationStyle> pistyles = process.getSupportedInvocationStyle(serviceId);
if (istyles.isEmpty()) {
istyles.addAll(pistyles);
@@ -750,7 +758,7 @@
MessageExchangeDAO getInMemMexDAO(String mexId) {
_mngmtLock.readLock().lock();
try {
- for (BpelProcess p : _registeredProcesses.values()) {
+ for (ODEProcess p : _registeredProcesses.values()) {
MessageExchangeDAO mexDao = p.getInMemMexDAO(mexId);
if (mexDao != null)
return mexDao;
@@ -762,14 +770,14 @@
return null;
}
- OProcess getOProcess(QName processId) {
+ ProcessModel getProcessModel(QName processId) {
_mngmtLock.readLock().lock();
try {
- BpelProcess process = _registeredProcesses.get(processId);
+ ODEProcess process = _registeredProcesses.get(processId);
if (process == null) return null;
- return process.getOProcess();
+ return process.getProcessModel();
} finally {
_mngmtLock.readLock().unlock();
@@ -841,8 +849,7 @@
private long randomExp(double mean) {
double u = _random.nextDouble(); // Uniform
- long delay = (long) (-Math.log(u) * mean); // Exponential
- return delay;
+ return (long) (-Math.log(u) * mean);
}
private class ProcessDefReaper implements Runnable {
@@ -854,21 +861,19 @@
Thread.sleep(pollingTime);
_mngmtLock.writeLock().lockInterruptibly();
try {
- __log.debug("Kicking reaper, OProcess instances: " + OProcess.instanceCount);
// Copying the runnning process list to avoid synchronizatMessageExchangeInterion
// problems and a potential mess if a policy modifies the list
- List<BpelProcess> candidates = new ArrayList<BpelProcess>(_registeredProcesses.values());
- CollectionsX.remove_if(candidates, new MemberOfFunction<BpelProcess>() {
- public boolean isMember(BpelProcess o) {
+ List<ODEProcess> candidates = new ArrayList<ODEProcess>(_registeredProcesses.values());
+ CollectionsX.remove_if(candidates, new MemberOfFunction<ODEProcess>() {
+ public boolean isMember(ODEProcess o) {
return !o.hintIsHydrated();
}
-
});
// And the happy winners are...
- List<BpelProcess> ripped = _dehydrationPolicy.markForDehydration(candidates);
+ List<ODEProcess> ripped = _dehydrationPolicy.markForDehydration(candidates);
// Bye bye
- for (BpelProcess process : ripped) {
+ for (ODEProcess process : ripped) {
__log.debug("Dehydrating process " + process.getPID());
process.dehydrate();
}
@@ -882,7 +887,7 @@
}
}
- public BpelProcess getBpelProcess(QName processId) {
+ public ODEProcess getBpelProcess(QName processId) {
_mngmtLock.readLock().lock();
try {
return _registeredProcesses.get(processId);
@@ -943,8 +948,6 @@
ticktock();
}
}
-
-
}
class TransactedCallable<T> implements Callable<T> {
Modified: ode/trunk/bpel-runtime/src/main/java/org/apache/ode/bpel/engine/BrokeredReliableMyRoleMessageExchangeImpl.java
URL: http://svn.apache.org/viewvc/ode/trunk/bpel-runtime/src/main/java/org/apache/ode/bpel/engine/BrokeredReliableMyRoleMessageExchangeImpl.java?rev=690420&r1=690419&r2=690420&view=diff
==============================================================================
--- ode/trunk/bpel-runtime/src/main/java/org/apache/ode/bpel/engine/BrokeredReliableMyRoleMessageExchangeImpl.java (original)
+++ ode/trunk/bpel-runtime/src/main/java/org/apache/ode/bpel/engine/BrokeredReliableMyRoleMessageExchangeImpl.java Fri Aug 29 16:30:05 2008
@@ -6,8 +6,6 @@
import org.apache.ode.bpel.iapi.EndpointReference;
import org.apache.ode.bpel.iapi.Message;
import org.apache.ode.bpel.iapi.MyRoleMessageExchange;
-import org.apache.ode.bpel.o.OPartnerLink;
-
/**
* A reliable MEP that delegates messages to a list of subscribers
@@ -29,11 +27,9 @@
* @param oplink
* @param template
*/
- public BrokeredReliableMyRoleMessageExchangeImpl(BpelProcess process,
- List<MyRoleMessageExchange> subscribers, String mexId,
- OPartnerLink oplink, MyRoleMessageExchange template) {
- super(process, mexId, oplink, template.getOperation(),
- template.getServiceName());
+ public BrokeredReliableMyRoleMessageExchangeImpl(ODEProcess process,
+ List<MyRoleMessageExchange> subscribers, String mexId, MyRoleMessageExchange template) {
+ super(process, mexId, null, template.getOperation(), template.getServiceName());
this.subscribers = subscribers;
this.template = template;
}
Modified: ode/trunk/bpel-runtime/src/main/java/org/apache/ode/bpel/engine/BrokeredTransactedMyRoleMessageExchangeImpl.java
URL: http://svn.apache.org/viewvc/ode/trunk/bpel-runtime/src/main/java/org/apache/ode/bpel/engine/BrokeredTransactedMyRoleMessageExchangeImpl.java?rev=690420&r1=690419&r2=690420&view=diff
==============================================================================
--- ode/trunk/bpel-runtime/src/main/java/org/apache/ode/bpel/engine/BrokeredTransactedMyRoleMessageExchangeImpl.java (original)
+++ ode/trunk/bpel-runtime/src/main/java/org/apache/ode/bpel/engine/BrokeredTransactedMyRoleMessageExchangeImpl.java Fri Aug 29 16:30:05 2008
@@ -6,8 +6,6 @@
import org.apache.ode.bpel.iapi.EndpointReference;
import org.apache.ode.bpel.iapi.Message;
import org.apache.ode.bpel.iapi.MyRoleMessageExchange;
-import org.apache.ode.bpel.o.OPartnerLink;
-
/**
* A transacted MEP that delegates messages to a list of subscribers
@@ -29,10 +27,9 @@
* @param oplink
* @param template
*/
- public BrokeredTransactedMyRoleMessageExchangeImpl(BpelProcess process,
- List<MyRoleMessageExchange> subscribers, String mexId,
- OPartnerLink oplink, MyRoleMessageExchange template) {
- super(process, mexId, oplink, template.getOperation(),
+ public BrokeredTransactedMyRoleMessageExchangeImpl(ODEProcess process,
+ List<MyRoleMessageExchange> subscribers, String mexId, MyRoleMessageExchange template) {
+ super(process, mexId, null, template.getOperation(),
template.getServiceName());
this.subscribers = subscribers;
this.template = template;
Modified: ode/trunk/bpel-runtime/src/main/java/org/apache/ode/bpel/engine/BrokeredUnreliableMyRoleMessageExchangeImpl.java
URL: http://svn.apache.org/viewvc/ode/trunk/bpel-runtime/src/main/java/org/apache/ode/bpel/engine/BrokeredUnreliableMyRoleMessageExchangeImpl.java?rev=690420&r1=690419&r2=690420&view=diff
==============================================================================
--- ode/trunk/bpel-runtime/src/main/java/org/apache/ode/bpel/engine/BrokeredUnreliableMyRoleMessageExchangeImpl.java (original)
+++ ode/trunk/bpel-runtime/src/main/java/org/apache/ode/bpel/engine/BrokeredUnreliableMyRoleMessageExchangeImpl.java Fri Aug 29 16:30:05 2008
@@ -10,8 +10,6 @@
import org.apache.ode.bpel.iapi.EndpointReference;
import org.apache.ode.bpel.iapi.Message;
import org.apache.ode.bpel.iapi.MyRoleMessageExchange;
-import org.apache.ode.bpel.o.OPartnerLink;
-
/**
* An unreliable MEP that delegates messages to a list of subscribers
@@ -30,14 +28,11 @@
* @param process
* @param subscribers
* @param mexId
- * @param oplink
- * @param template
+ * @param template
*/
- public BrokeredUnreliableMyRoleMessageExchangeImpl(BpelProcess process,
- List<MyRoleMessageExchange> subscribers, String mexId,
- OPartnerLink oplink, MyRoleMessageExchange template) {
- super(process, mexId, oplink, template.getOperation(),
- template.getServiceName());
+ public BrokeredUnreliableMyRoleMessageExchangeImpl(ODEProcess process,
+ List<MyRoleMessageExchange> subscribers, String mexId, MyRoleMessageExchange template) {
+ super(process, mexId, null, template.getOperation(), template.getServiceName());
this.subscribers = subscribers;
this.template = template;
}
@@ -51,7 +46,6 @@
for (MyRoleMessageExchange subscriber : subscribers) {
subscriber.invokeAsync();
}
-
return new CompletedFuture();
}
@@ -67,7 +61,6 @@
for (MyRoleMessageExchange subscriber : subscribers) {
subscriber.invokeBlocking();
}
-
return Status.COMPLETED;
}
Modified: ode/trunk/bpel-runtime/src/main/java/org/apache/ode/bpel/engine/Contexts.java
URL: http://svn.apache.org/viewvc/ode/trunk/bpel-runtime/src/main/java/org/apache/ode/bpel/engine/Contexts.java?rev=690420&r1=690419&r2=690420&view=diff
==============================================================================
--- ode/trunk/bpel-runtime/src/main/java/org/apache/ode/bpel/engine/Contexts.java (original)
+++ ode/trunk/bpel-runtime/src/main/java/org/apache/ode/bpel/engine/Contexts.java Fri Aug 29 16:30:05 2008
@@ -42,9 +42,8 @@
import org.apache.ode.bpel.iapi.MessageExchangeContext;
import org.apache.ode.bpel.iapi.Scheduler;
import org.apache.ode.bpel.intercept.MessageExchangeInterceptor;
-import org.apache.ode.bpel.runtime.extension.AbstractExtensionBundle;
import org.apache.ode.bpel.evar.ExternalVariableModule;
-
+import org.apache.ode.bpel.extension.ExtensionBundleRuntime;
/**
* Aggregation of all the contexts provided to the BPEL engine by the integration layer.
@@ -53,15 +52,10 @@
private static final Log __log = LogFactory.getLog(Contexts.class);
TransactionManager txManager;
-
MessageExchangeContext mexContext;
-
Scheduler scheduler;
-
EndpointReferenceContext eprContext;
-
BindingContext bindingContext;
-
BpelDAOConnectionFactory dao;
/** Global Message-Exchange interceptors. Must be copy-on-write!!! */
@@ -71,7 +65,7 @@
final List<BpelEventListener> eventListeners = new CopyOnWriteArrayList<BpelEventListener>();
/** Global extension bundle registry **/
- final Map<String, AbstractExtensionBundle> extensionRegistry = new ConcurrentHashMap<String, AbstractExtensionBundle>();
+ final Map<String, ExtensionBundleRuntime> extensionRegistry = new ConcurrentHashMap<String, ExtensionBundleRuntime>();
/** Mapping from external variable engine identifier to the engine implementation. */
final HashMap<QName, ExternalVariableModule> externalVariableEngines = new HashMap<QName, ExternalVariableModule>();
Modified: ode/trunk/bpel-runtime/src/main/java/org/apache/ode/bpel/engine/CountLRUDehydrationPolicy.java
URL: http://svn.apache.org/viewvc/ode/trunk/bpel-runtime/src/main/java/org/apache/ode/bpel/engine/CountLRUDehydrationPolicy.java?rev=690420&r1=690419&r2=690420&view=diff
==============================================================================
--- ode/trunk/bpel-runtime/src/main/java/org/apache/ode/bpel/engine/CountLRUDehydrationPolicy.java (original)
+++ ode/trunk/bpel-runtime/src/main/java/org/apache/ode/bpel/engine/CountLRUDehydrationPolicy.java Fri Aug 29 16:30:05 2008
@@ -33,13 +33,13 @@
/** Maximum process count before oldest ones get quiesced */
private int _processMaxCount = 1000;
- public List<BpelProcess> markForDehydration(List<BpelProcess> runningProcesses) {
- ArrayList<BpelProcess> ripped = new ArrayList<BpelProcess>();
+ public List<ODEProcess> markForDehydration(List<ODEProcess> runningProcesses) {
+ ArrayList<ODEProcess> ripped = new ArrayList<ODEProcess>();
if (_processMaxAge > 0) {
// The oldies have to go first
long now = System.currentTimeMillis();
- for (BpelProcess process : runningProcesses) {
+ for (ODEProcess process : runningProcesses) {
if (now - process.getLastUsed() > _processMaxAge) {
ripped.add(process);
}
@@ -49,8 +49,8 @@
// If it's not enough, other ones must be put to the axe
if (runningProcesses.size() - ripped.size() > _processMaxCount) {
runningProcesses.removeAll(ripped);
- Collections.sort(runningProcesses, new Comparator<BpelProcess>() {
- public int compare(BpelProcess p1, BpelProcess p2) {
+ Collections.sort(runningProcesses, new Comparator<ODEProcess>() {
+ public int compare(ODEProcess p1, ODEProcess p2) {
if (p1.getLastUsed() > p2.getLastUsed()) return -1;
if (p1.getLastUsed() < p2.getLastUsed()) return 1;
return 0;
Modified: ode/trunk/bpel-runtime/src/main/java/org/apache/ode/bpel/engine/DebuggerSupport.java
URL: http://svn.apache.org/viewvc/ode/trunk/bpel-runtime/src/main/java/org/apache/ode/bpel/engine/DebuggerSupport.java?rev=690420&r1=690419&r2=690420&view=diff
==============================================================================
--- ode/trunk/bpel-runtime/src/main/java/org/apache/ode/bpel/engine/DebuggerSupport.java (original)
+++ ode/trunk/bpel-runtime/src/main/java/org/apache/ode/bpel/engine/DebuggerSupport.java Fri Aug 29 16:30:05 2008
@@ -74,7 +74,7 @@
private BpelProcessDatabase _db;
/** BPEL process. */
- private BpelProcess _process;
+ private ODEProcess _process;
/**
* Constructor.
@@ -82,7 +82,7 @@
* @param db
* BPEL process database
*/
- DebuggerSupport(BpelProcess process) {
+ DebuggerSupport(ODEProcess process) {
_process = process;
_db = new BpelProcessDatabase(_process._contexts, _process._pid);
Modified: ode/trunk/bpel-runtime/src/main/java/org/apache/ode/bpel/engine/DehydrationPolicy.java
URL: http://svn.apache.org/viewvc/ode/trunk/bpel-runtime/src/main/java/org/apache/ode/bpel/engine/DehydrationPolicy.java?rev=690420&r1=690419&r2=690420&view=diff
==============================================================================
--- ode/trunk/bpel-runtime/src/main/java/org/apache/ode/bpel/engine/DehydrationPolicy.java (original)
+++ ode/trunk/bpel-runtime/src/main/java/org/apache/ode/bpel/engine/DehydrationPolicy.java Fri Aug 29 16:30:05 2008
@@ -34,5 +34,5 @@
* @param runningProcesses all running (currently hydrated) processes
* @return processes elected for dehydration
*/
- List<BpelProcess> markForDehydration(List<BpelProcess> runningProcesses);
+ List<ODEProcess> markForDehydration(List<ODEProcess> runningProcesses);
}
Modified: ode/trunk/bpel-runtime/src/main/java/org/apache/ode/bpel/engine/MessageExchangeImpl.java
URL: http://svn.apache.org/viewvc/ode/trunk/bpel-runtime/src/main/java/org/apache/ode/bpel/engine/MessageExchangeImpl.java?rev=690420&r1=690419&r2=690420&view=diff
==============================================================================
--- ode/trunk/bpel-runtime/src/main/java/org/apache/ode/bpel/engine/MessageExchangeImpl.java (original)
+++ ode/trunk/bpel-runtime/src/main/java/org/apache/ode/bpel/engine/MessageExchangeImpl.java Fri Aug 29 16:30:05 2008
@@ -37,7 +37,7 @@
import org.apache.ode.bpel.iapi.InvocationStyle;
import org.apache.ode.bpel.iapi.Message;
import org.apache.ode.bpel.iapi.MessageExchange;
-import org.apache.ode.bpel.o.OPartnerLink;
+import org.apache.ode.bpel.rapi.PartnerLinkModel;
import org.apache.ode.utils.msg.MessageBundle;
import org.w3c.dom.Element;
@@ -71,23 +71,16 @@
//
final Contexts _contexts;
-
- final BpelProcess _process;
-
- final OPartnerLink _oplink;
-
+ final ODEProcess _process;
+ final PartnerLinkModel _oplink;
/** Message-exchange id. */
final String _mexId;
-
final PortType _portType;
-
final Operation _operation;
/** Instance identifier. */
Long _iid;
-
EndpointReference _epr;
-
MessageImpl _request;
/** The point at which this message-exchange will time out. */
@@ -97,11 +90,8 @@
// The following fields need to be volatile, since a random IL thread may set them.
//
private volatile Status _status = Status.NEW;
-
volatile QName _fault;
-
volatile String _explanation;
-
volatile MessageImpl _response;
/**
@@ -131,13 +121,11 @@
private AckType _ackType;
-
-
public MessageExchangeImpl(
- BpelProcess process,
+ ODEProcess process,
Long iid,
String mexId,
- OPartnerLink oplink,
+ PartnerLinkModel oplink,
PortType ptype, Operation operation) {
_process = process;
_contexts = process._contexts;
@@ -178,7 +166,7 @@
dao.setAckType(_ackType);
if (_changes.contains(Change.EPR)) {
- _changes.remove(_epr);
+ _changes.remove(Change.EPR);
if (_epr != null) dao.setEPR(_epr.toXML().getDocumentElement());
else dao.setEPR(null);
}
@@ -204,7 +192,7 @@
if (val == null)
return false;
try {
- return new Boolean(val.toString());
+ return Boolean.valueOf(val.toString());
} catch (Exception ex) {
return false;
}
Modified: ode/trunk/bpel-runtime/src/main/java/org/apache/ode/bpel/engine/MyRoleMessageExchangeCache.java
URL: http://svn.apache.org/viewvc/ode/trunk/bpel-runtime/src/main/java/org/apache/ode/bpel/engine/MyRoleMessageExchangeCache.java?rev=690420&r1=690419&r2=690420&view=diff
==============================================================================
--- ode/trunk/bpel-runtime/src/main/java/org/apache/ode/bpel/engine/MyRoleMessageExchangeCache.java (original)
+++ ode/trunk/bpel-runtime/src/main/java/org/apache/ode/bpel/engine/MyRoleMessageExchangeCache.java Fri Aug 29 16:30:05 2008
@@ -3,13 +3,10 @@
import java.lang.ref.WeakReference;
import java.util.HashMap;
import java.util.Iterator;
-
-import javax.wsdl.Operation;
+import java.util.Map;
+import java.util.concurrent.ConcurrentHashMap;
import org.apache.ode.bpel.dao.MessageExchangeDAO;
-import org.apache.ode.bpel.iapi.BpelEngineException;
-import org.apache.ode.bpel.iapi.InvocationStyle;
-import org.apache.ode.bpel.o.OPartnerLink;
/**
* Manage {@link MyRoleMessageExchangeImpl} object references.
@@ -21,29 +18,19 @@
private static final int CLEANUP_PERIOD = 20;
- private HashMap<String, WeakReference<MyRoleMessageExchangeImpl>> _cache = new HashMap<String, WeakReference<MyRoleMessageExchangeImpl>>();
+ private Map<String, WeakReference<MyRoleMessageExchangeImpl>> _cache = new ConcurrentHashMap<String, WeakReference<MyRoleMessageExchangeImpl>>();
private int _inserts = 0;
- private BpelProcess _process;
-
- MyRoleMessageExchangeCache(BpelProcess process) {
- _process = process;
- }
-
void put(MyRoleMessageExchangeImpl mex) {
- synchronized (this) {
- ++_inserts;
- if (_inserts > CLEANUP_PERIOD) {
- cleanup();
- }
-
- WeakReference<MyRoleMessageExchangeImpl> ref = _cache.get(mex.getMessageExchangeId());
- if (ref != null && ref.get() != null)
- throw new IllegalStateException("InternalError: duplicate myrolemex registration!");
+ ++_inserts;
+ if (_inserts > CLEANUP_PERIOD) cleanup();
- _cache.put(mex.getMessageExchangeId(), new WeakReference<MyRoleMessageExchangeImpl>(mex));
- }
+ WeakReference<MyRoleMessageExchangeImpl> ref = _cache.get(mex.getMessageExchangeId());
+ if (ref != null && ref.get() != null)
+ throw new IllegalStateException("InternalError: duplicate myrolemex registration!");
+
+ _cache.put(mex.getMessageExchangeId(), new WeakReference<MyRoleMessageExchangeImpl>(mex));
}
/**
@@ -52,20 +39,15 @@
* @param mexdao
* @return
*/
- MyRoleMessageExchangeImpl get(MessageExchangeDAO mexdao) {
- synchronized (this) {
- WeakReference<MyRoleMessageExchangeImpl> ref = _cache.get(mexdao.getMessageExchangeId());
- MyRoleMessageExchangeImpl mex = ref == null ? null : ref.get();
-
- if (mex == null) {
- mex = _process.recreateMyRoleMex(mexdao);
- _cache.put(mexdao.getMessageExchangeId(), new WeakReference<MyRoleMessageExchangeImpl>(mex));
- }
-
- return mex;
-
+ MyRoleMessageExchangeImpl get(MessageExchangeDAO mexdao, ODEProcess process) {
+ WeakReference<MyRoleMessageExchangeImpl> ref = _cache.get(mexdao.getMessageExchangeId());
+ MyRoleMessageExchangeImpl mex = ref == null ? null : ref.get();
+
+ if (mex == null) {
+ mex = process.recreateMyRoleMex(mexdao);
+ _cache.put(mexdao.getMessageExchangeId(), new WeakReference<MyRoleMessageExchangeImpl>(mex));
}
-
+ return mex;
}
/**
@@ -75,10 +57,8 @@
private void cleanup() {
for (Iterator<WeakReference<MyRoleMessageExchangeImpl>> i = _cache.values().iterator(); i.hasNext();) {
WeakReference<MyRoleMessageExchangeImpl> ref = i.next();
- if (ref.get() == null)
- i.remove();
+ if (ref.get() == null) i.remove();
}
-
_inserts = 0;
}
}
Modified: ode/trunk/bpel-runtime/src/main/java/org/apache/ode/bpel/engine/MyRoleMessageExchangeImpl.java
URL: http://svn.apache.org/viewvc/ode/trunk/bpel-runtime/src/main/java/org/apache/ode/bpel/engine/MyRoleMessageExchangeImpl.java?rev=690420&r1=690419&r2=690420&view=diff
==============================================================================
--- ode/trunk/bpel-runtime/src/main/java/org/apache/ode/bpel/engine/MyRoleMessageExchangeImpl.java (original)
+++ ode/trunk/bpel-runtime/src/main/java/org/apache/ode/bpel/engine/MyRoleMessageExchangeImpl.java Fri Aug 29 16:30:05 2008
@@ -14,13 +14,7 @@
import org.apache.ode.bpel.iapi.BpelEngineException;
import org.apache.ode.bpel.iapi.Message;
import org.apache.ode.bpel.iapi.MyRoleMessageExchange;
-import org.apache.ode.bpel.iapi.MessageExchange.Status;
-import org.apache.ode.bpel.intercept.AbortMessageExchangeException;
-import org.apache.ode.bpel.intercept.FaultMessageExchangeException;
-import org.apache.ode.bpel.intercept.InterceptorInvoker;
-import org.apache.ode.bpel.intercept.MessageExchangeInterceptor;
-import org.apache.ode.bpel.intercept.MessageExchangeInterceptor.InterceptorEvent;
-import org.apache.ode.bpel.o.OPartnerLink;
+import org.apache.ode.bpel.rapi.PartnerLinkModel;
import org.w3c.dom.Element;
import org.w3c.dom.Node;
@@ -29,13 +23,12 @@
private static final Log __log = LogFactory.getLog(MyRoleMessageExchangeImpl.class);
protected final QName _callee;
-
protected CorrelationStatus _cstatus;
-
protected String _clientId;
- public MyRoleMessageExchangeImpl(BpelProcess process, String mexId, OPartnerLink oplink, Operation operation, QName callee) {
- super(process, null, mexId, oplink, oplink.myRolePortType, operation);
+ public MyRoleMessageExchangeImpl(ODEProcess process, String mexId, PartnerLinkModel oplink,
+ Operation operation, QName callee) {
+ super(process, null, mexId, oplink, oplink != null ? oplink.getMyRolePortType() : null, operation);
_callee = callee;
}
Copied: ode/trunk/bpel-runtime/src/main/java/org/apache/ode/bpel/engine/ODEProcess.java (from r690063, ode/branches/rtver/bpel-runtime/src/main/java/org/apache/ode/bpel/engine/ODEProcess.java)
URL: http://svn.apache.org/viewvc/ode/trunk/bpel-runtime/src/main/java/org/apache/ode/bpel/engine/ODEProcess.java?p2=ode/trunk/bpel-runtime/src/main/java/org/apache/ode/bpel/engine/ODEProcess.java&p1=ode/branches/rtver/bpel-runtime/src/main/java/org/apache/ode/bpel/engine/ODEProcess.java&r1=690063&r2=690420&rev=690420&view=diff
==============================================================================
--- ode/branches/rtver/bpel-runtime/src/main/java/org/apache/ode/bpel/engine/ODEProcess.java (original)
+++ ode/trunk/bpel-runtime/src/main/java/org/apache/ode/bpel/engine/ODEProcess.java Fri Aug 29 16:30:05 2008
@@ -27,7 +27,6 @@
import java.util.HashSet;
import java.util.List;
import java.util.Map;
-import java.util.Random;
import java.util.Set;
import java.util.concurrent.Callable;
import java.util.concurrent.Future;
@@ -103,6 +102,9 @@
private Map<Endpoint, PartnerRoleChannel> _partnerChannels = new HashMap<Endpoint, PartnerRoleChannel>();
+ /** Mapping from a potentially shared endpoint to its EPR */
+ private SharedEndpoints _sharedEps;
+
final QName _pid;
private volatile ProcessModel _processModel;
@@ -133,8 +135,6 @@
private final BpelDAOConnectionFactoryImpl _inMemDao;
- private Random _random = new Random();
-
final BpelServerImpl _server;
private MyRoleMessageExchangeCache _myRoleMexCache;
@@ -659,9 +659,25 @@
__log.debug("Activating " + _pid);
// Activate all the my-role endpoints.
for (Map.Entry<String, Endpoint> entry : _pconf.getProvideEndpoints().entrySet()) {
- EndpointReference initialEPR = _contexts.bindingContext.activateMyRoleEndpoint(_pid, entry.getValue());
- __log.debug("Activated " + _pid + " myrole " + entry.getKey() + ": EPR is " + initialEPR);
- _myEprs.put(entry.getValue(), initialEPR);
+ Endpoint endpoint = entry.getValue();
+ EndpointReference initialEPR = null;
+ if (isShareable(endpoint)) {
+ // Check if the EPR already exists for the given endpoint
+ initialEPR = _sharedEps.getEndpointReference(endpoint);
+ if (initialEPR == null) {
+ // Create an EPR by physically activating the endpoint
+ initialEPR = _contexts.bindingContext.activateMyRoleEndpoint(_pid, entry.getValue());
+ _sharedEps.addEndpoint(endpoint, initialEPR);
+ __log.debug("Activated " + _pid + " myrole " + entry.getKey() + ": EPR is " + initialEPR);
+ }
+ // Increment the reference count on the endpoint
+ _sharedEps.incrementReferenceCount(endpoint);
+ } else {
+ // Create an EPR by physically activating the endpoint
+ initialEPR = _contexts.bindingContext.activateMyRoleEndpoint(_pid, entry.getValue());
+ __log.debug("Activated " + _pid + " myrole " + entry.getKey() + ": EPR is " + initialEPR);
+ }
+ _myEprs.put(endpoint, initialEPR);
}
__log.debug("Activated " + _pid);
@@ -670,12 +686,31 @@
void deactivate() {
// Deactivate all the my-role endpoints.
- for (Endpoint endpoint : _myEprs.keySet())
- _contexts.bindingContext.deactivateMyRoleEndpoint(endpoint);
-
+ for (Endpoint endpoint : _myEprs.keySet()) {
+ // Deactivate the EPR only if there are no more references
+ // to this endpoint from any (active) BPEL process.
+ if (isShareable(endpoint)) {
+ __log.debug("deactivating shared endpoint " + endpoint);
+ if (!_sharedEps.decrementReferenceCount(endpoint)) {
+ _contexts.bindingContext.deactivateMyRoleEndpoint(endpoint);
+ _sharedEps.removeEndpoint(endpoint);
+ }
+ } else {
+ __log.debug("deactivating non-shared endpoint " + endpoint);
+ _contexts.bindingContext.deactivateMyRoleEndpoint(endpoint);
+ }
+ }
// TODO Deactivate all the partner-role channels
}
+ private boolean isShareable(Endpoint endpoint) {
+ if (!_pconf.isSharedService(endpoint.serviceName)) return false;
+
+// PartnerLinkMyRoleImpl partnerLink = _endpointToMyRoleMap.get(endpoint);
+// return partnerLink != null && partnerLink.isOneWayOnly();
+ return false;
+ }
+
EndpointReference getInitialPartnerRoleEPR(PartnerLinkModel link) {
_hydrationLatch.latch(1);
try {
@@ -715,6 +750,10 @@
return _pid;
}
+ QName getProcessType() {
+ return _pconf.getType();
+ }
+
PartnerRoleChannel getPartnerRoleChannel(PartnerLinkModel partnerLink) {
_hydrationLatch.latch(1);
try {
@@ -744,19 +783,16 @@
*/
void dehydrate() {
_hydrationLatch.latch(0);
-
try {
// We don't actually need to do anything, the latch will run the doDehydrate method
// when necessary..
} finally {
_hydrationLatch.release(0);
}
-
}
void hydrate() {
_hydrationLatch.latch(1);
-
try {
// We don't actually need to do anything, the latch will run the doHydrate method
// when necessary..
@@ -1164,12 +1200,12 @@
}
void invokePartner(MessageExchangeDAO mexdao) {
- PartnerLinkModel oplink = (PartnerLinkModel) _processModel.getPartnerLink(mexdao.getPartnerLinkModelId());
+ PartnerLinkModel oplink = _processModel.getPartnerLink(mexdao.getPartnerLinkModelId());
PartnerLinkPartnerRoleImpl partnerRole = _partnerRoles.get(oplink);
Endpoint partnerEndpoint = getInitialPartnerRoleEndpoint(oplink);
- ODEProcess p2pProcess = null;
+ List<ODEProcess> p2pProcesses = null;
if (partnerEndpoint != null)
- p2pProcess = _server.route(partnerEndpoint.serviceName, new DbBackedMessageImpl(mexdao.getRequest()));
+ p2pProcesses = _server.route(partnerEndpoint.serviceName, new DbBackedMessageImpl(mexdao.getRequest()));
Operation operation = oplink.getPartnerRoleOperation(mexdao.getOperation());
@@ -1180,9 +1216,21 @@
mexdao.setStatus(Status.REQ);
try {
- if (p2pProcess != null) {
+ if (p2pProcesses != null && p2pProcesses.size() != 0) {
/* P2P (process-to-process) invocation, special logic */
- invokeP2P(p2pProcess, partnerEndpoint.serviceName, operation, mexdao);
+ // First, make a copy of the original request message
+ MessageDAO request = mexdao.getRequest();
+ // Then, iterate over each subscribing process
+ for (ODEProcess p2pProcess : p2pProcesses) {
+ // Clone the request message for this subscriber
+ MessageDAO clone = mexdao.createMessage(request.getType());
+ clone.setData((Element) request.getData().cloneNode(true));
+ clone.setHeader((Element) request.getHeader().cloneNode(true));
+ // Set the request on the MEX to the clone
+ mexdao.setRequest(clone);
+ // Send the cloned message to the subscribing process
+ invokeP2P(p2pProcess, partnerEndpoint.serviceName, operation, mexdao);
+ }
} else {
partnerRole.invokeIL(mexdao);
}
Modified: ode/trunk/bpel-runtime/src/main/java/org/apache/ode/bpel/engine/PartnerLinkMyRoleImpl.java
URL: http://svn.apache.org/viewvc/ode/trunk/bpel-runtime/src/main/java/org/apache/ode/bpel/engine/PartnerLinkMyRoleImpl.java?rev=690420&r1=690419&r2=690420&view=diff
==============================================================================
--- ode/trunk/bpel-runtime/src/main/java/org/apache/ode/bpel/engine/PartnerLinkMyRoleImpl.java (original)
+++ ode/trunk/bpel-runtime/src/main/java/org/apache/ode/bpel/engine/PartnerLinkMyRoleImpl.java Fri Aug 29 16:30:05 2008
@@ -18,11 +18,7 @@
*/
package org.apache.ode.bpel.engine;
-import java.util.ArrayList;
-import java.util.HashSet;
-import java.util.Iterator;
-import java.util.List;
-import java.util.Set;
+import java.util.*;
import javax.wsdl.Operation;
import javax.wsdl.PortType;
@@ -47,11 +43,11 @@
import org.apache.ode.bpel.iapi.ProcessState;
import org.apache.ode.bpel.iapi.MessageExchange.FailureType;
import org.apache.ode.bpel.iapi.MyRoleMessageExchange.CorrelationStatus;
-import org.apache.ode.bpel.o.OMessageVarType;
-import org.apache.ode.bpel.o.OPartnerLink;
-import org.apache.ode.bpel.o.OProcess;
-import org.apache.ode.bpel.o.OScope;
import org.apache.ode.bpel.runtime.InvalidProcessException;
+import org.apache.ode.bpel.engine.Messages;
+import org.apache.ode.bpel.rapi.PartnerLinkModel;
+import org.apache.ode.bpel.rapi.CorrelationSetModel;
+import org.apache.ode.bpel.rapi.PropertyAliasModel;
import org.apache.ode.utils.CollectionUtils;
import org.apache.ode.utils.ObjectPrinter;
import org.apache.ode.utils.msg.MessageBundle;
@@ -61,23 +57,23 @@
* @author Matthieu Riou <mriou at apache dot org>
*/
class PartnerLinkMyRoleImpl extends PartnerLinkRoleImpl {
- private static final Log __log = LogFactory.getLog(BpelProcess.class);
+ private static final Log __log = LogFactory.getLog(ODEProcess.class);
private static final Messages __msgs = MessageBundle.getMessages(Messages.class);
/** The local endpoint for this "myrole". */
public Endpoint _endpoint;
- PartnerLinkMyRoleImpl(BpelProcess process, OPartnerLink plink, Endpoint endpoint) {
+ PartnerLinkMyRoleImpl(ODEProcess process, PartnerLinkModel plink, Endpoint endpoint) {
super(process, plink);
_endpoint = endpoint;
}
public String toString() {
StringBuffer buf = new StringBuffer("{PartnerLinkRole-");
- buf.append(_plinkDef.name);
+ buf.append(_plinkDef.getName());
buf.append('.');
- buf.append(_plinkDef.myRoleName);
+ buf.append(_plinkDef.getMyRoleName());
buf.append(" on ");
buf.append(_endpoint);
buf.append('}');
@@ -98,14 +94,14 @@
Operation operation = getMyRoleOperation(mex.getOperation());
if (operation == null) {
- __log.error(__msgs.msgUnknownOperation(mex.getOperation(), _plinkDef.myRolePortType.getQName()));
+ __log.error(__msgs.msgUnknownOperation(mex.getOperation(), _plinkDef.getMyRolePortType().getQName()));
MexDaoUtil.setFailed(mex, FailureType.UNKNOWN_OPERATION, mex.getOperation());
return null;
}
// Is this a /possible/ createInstance Operation?
boolean isCreateInstnace = _plinkDef.isCreateInstanceOperation(operation);
- String correlatorId = BpelProcess.genCorrelatorId(_plinkDef, operation.getName());
+ String correlatorId = ODEProcess.genCorrelatorId(_plinkDef, operation.getName());
CorrelatorDAO correlator = _process.getProcessDAO().getCorrelator(correlatorId);
// Special logic for in-mem processes, only createInstance is allowed, so we can skip the
@@ -158,7 +154,6 @@
if (messageRoute != null) {
if (__log.isDebugEnabled()) {
__log.debug("INPUTMSG: " + correlatorId + ": ckey " + key + " ROUTED TO (grp,index,iid) = (" + messageRoute.getGroupId() + "," + messageRoute.getIndex() + ", " + messageRoute.getTargetInstance().getInstanceId() + ")");
-
}
matchedKey = key;
break;
@@ -187,8 +182,8 @@
correlator.removeRoutes(messageRoute.getGroupId(), instanceDao);
// send process instance event
- CorrelationMatchEvent evt = new CorrelationMatchEvent(new QName(_process.getOProcess().targetNamespace, _process
- .getOProcess().getName()), _process.getProcessDAO().getProcessId(), instanceDao.getInstanceId(), matchedKey);
+ CorrelationMatchEvent evt = new CorrelationMatchEvent(_process.getProcessModel().getQName(),
+ _process.getProcessDAO().getProcessId(), instanceDao.getInstanceId(), matchedKey);
evt.setPortType(mex.getPortType());
evt.setOperation(operation.getName());
evt.setMexId(mex.getMessageExchangeId());
@@ -217,7 +212,7 @@
.getMessageExchangeId(), keys);
evt.setProcessId(_process.getProcessDAO().getProcessId());
- evt.setProcessName(new QName(_process.getOProcess().targetNamespace, _process.getOProcess().getName()));
+ evt.setProcessName(_process.getProcessModel().getQName());
_process._debugger.onEvent(evt);
mex.setCorrelationStatus(MyRoleMessageExchange.CorrelationStatus.QUEUED.toString());
@@ -248,8 +243,8 @@
ProcessInstanceDAO newInstance = processDAO.createInstance(correlator);
// send process instance event
- NewProcessInstanceEvent evt = new NewProcessInstanceEvent(new QName(_process.getOProcess().targetNamespace, _process
- .getOProcess().getName()), processDAO.getProcessId(), newInstance.getInstanceId());
+ NewProcessInstanceEvent evt = new NewProcessInstanceEvent(_process.getProcessModel().getQName(),
+ processDAO.getProcessId(), newInstance.getInstanceId());
evt.setPortType(mex.getPortType());
evt.setOperation(operation.getName());
evt.setMexId(mex.getMessageExchangeId());
@@ -262,8 +257,7 @@
@SuppressWarnings("unchecked")
private Operation getMyRoleOperation(String operationName) {
- Operation op = _plinkDef.getMyRoleOperation(operationName);
- return op;
+ return _plinkDef.getMyRoleOperation(operationName);
}
private CorrelationKey[] computeCorrelationKeys(MessageExchangeDAO mex, Operation operation) {
@@ -271,11 +265,10 @@
javax.wsdl.Message msgDescription = operation.getInput().getMessage();
List<CorrelationKey> keys = new ArrayList<CorrelationKey>();
- Set<OScope.CorrelationSet> csets = _plinkDef.getCorrelationSetsForOperation(operation);
+ Set<CorrelationSetModel> csets = _plinkDef.getCorrelationSetsForOperation(operation);
- for (OScope.CorrelationSet cset : csets) {
- CorrelationKey key = computeCorrelationKey(cset, _process.getOProcess().messageTypes.get(msgDescription.getQName()),
- msg);
+ for (CorrelationSetModel cset : csets) {
+ CorrelationKey key = computeCorrelationKey(cset, msgDescription.getQName(), msg);
keys.add(key);
}
@@ -287,38 +280,27 @@
return keys.toArray(new CorrelationKey[keys.size()]);
}
- private CorrelationKey computeCorrelationKey(OScope.CorrelationSet cset, OMessageVarType messagetype, Element msg) {
- String[] values = new String[cset.properties.size()];
-
+ private CorrelationKey computeCorrelationKey(CorrelationSetModel cset, QName messageName, Element msg) {
+ List<PropertyAliasModel> aliases = cset.getAliases(messageName);
+ String[] values = new String[aliases.size()];
int jIdx = 0;
- for (Iterator j = cset.properties.iterator(); j.hasNext(); ++jIdx) {
- OProcess.OProperty property = (OProcess.OProperty) j.next();
- OProcess.OPropertyAlias alias = property.getAlias(messagetype);
-
- if (alias == null) {
- // TODO: Throw a real exception! And catch this at compile
- // time.
- throw new IllegalArgumentException("No alias matching property '" + property.name + "' with message type '"
- + messagetype + "'");
- }
-
+ for (PropertyAliasModel alias : aliases) {
String value;
try {
- value = _process.extractProperty(msg, alias, msg.toString());
+ value = _process._runtime.extractProperty(msg, alias, msg.toString());
} catch (FaultException fe) {
String emsg = __msgs.msgPropertyAliasDerefFailedOnMessage(alias.getDescription(), fe.getMessage());
__log.error(emsg, fe);
throw new InvalidMessageException(emsg, fe);
}
- values[jIdx] = value;
+ values[jIdx++] = value;
}
- CorrelationKey key = new CorrelationKey(cset.getId(), values);
- return key;
+ return new CorrelationKey(cset.getId(), values);
}
public boolean isOneWayOnly() {
- PortType portType = _plinkDef.myRolePortType;
+ PortType portType = _plinkDef.getMyRolePortType();
if (portType == null) {
return false;
}
Modified: ode/trunk/bpel-runtime/src/main/java/org/apache/ode/bpel/engine/PartnerLinkPartnerRoleImpl.java
URL: http://svn.apache.org/viewvc/ode/trunk/bpel-runtime/src/main/java/org/apache/ode/bpel/engine/PartnerLinkPartnerRoleImpl.java?rev=690420&r1=690419&r2=690420&view=diff
==============================================================================
--- ode/trunk/bpel-runtime/src/main/java/org/apache/ode/bpel/engine/PartnerLinkPartnerRoleImpl.java (original)
+++ ode/trunk/bpel-runtime/src/main/java/org/apache/ode/bpel/engine/PartnerLinkPartnerRoleImpl.java Fri Aug 29 16:30:05 2008
@@ -36,7 +36,7 @@
import org.apache.ode.bpel.iapi.MessageExchange.FailureType;
import org.apache.ode.bpel.iapi.MessageExchange.MessageExchangePattern;
import org.apache.ode.bpel.iapi.MessageExchange.Status;
-import org.apache.ode.bpel.o.OPartnerLink;
+import org.apache.ode.bpel.rapi.PartnerLinkModel;
import org.w3c.dom.Element;
/**
@@ -53,7 +53,7 @@
public PartnerRoleChannel _channel;
- PartnerLinkPartnerRoleImpl(BpelProcess process, OPartnerLink plink, Endpoint initialPartner) {
+ PartnerLinkPartnerRoleImpl(ODEProcess process, PartnerLinkModel plink, Endpoint initialPartner) {
super(process, plink);
_initialPartner = initialPartner;
}
@@ -105,7 +105,7 @@
if (_contexts.eprContext != null)
partnerEpr = _contexts.eprContext.resolveEndpointReference(partnerEprXml);
else
- __log.warn("Partner EPR will not be resolved, no EPR context specified!" );
+ __log.debug("Partner EPR will not be resolved, no EPR context specified!" );
}
EndpointReference myRoleEpr = null;
Modified: ode/trunk/bpel-runtime/src/main/java/org/apache/ode/bpel/engine/PartnerLinkRoleImpl.java
URL: http://svn.apache.org/viewvc/ode/trunk/bpel-runtime/src/main/java/org/apache/ode/bpel/engine/PartnerLinkRoleImpl.java?rev=690420&r1=690419&r2=690420&view=diff
==============================================================================
--- ode/trunk/bpel-runtime/src/main/java/org/apache/ode/bpel/engine/PartnerLinkRoleImpl.java (original)
+++ ode/trunk/bpel-runtime/src/main/java/org/apache/ode/bpel/engine/PartnerLinkRoleImpl.java Fri Aug 29 16:30:05 2008
@@ -19,24 +19,21 @@
package org.apache.ode.bpel.engine;
import org.apache.ode.bpel.iapi.EndpointReference;
-import org.apache.ode.bpel.o.OPartnerLink;
+import org.apache.ode.bpel.rapi.PartnerLinkModel;
-/**
- * @author Matthieu Riou <mriou at apache dot org>
- */
abstract class PartnerLinkRoleImpl {
- protected OPartnerLink _plinkDef;
+ protected PartnerLinkModel _plinkDef;
protected EndpointReference _initialEPR;
- protected BpelProcess _process;
+ protected ODEProcess _process;
protected Contexts _contexts;
- PartnerLinkRoleImpl(BpelProcess process, OPartnerLink plink) {
+ PartnerLinkRoleImpl(ODEProcess process, PartnerLinkModel plink) {
_plinkDef = plink;
_process = process;
_contexts = _process._contexts;
}
String getPartnerLinkName() {
- return _plinkDef.name;
+ return _plinkDef.getName();
}
/**
* Get the initial value of this role's EPR. This value is obtained from
Modified: ode/trunk/bpel-runtime/src/main/java/org/apache/ode/bpel/engine/PartnerRoleMessageExchangeImpl.java
URL: http://svn.apache.org/viewvc/ode/trunk/bpel-runtime/src/main/java/org/apache/ode/bpel/engine/PartnerRoleMessageExchangeImpl.java?rev=690420&r1=690419&r2=690420&view=diff
==============================================================================
--- ode/trunk/bpel-runtime/src/main/java/org/apache/ode/bpel/engine/PartnerRoleMessageExchangeImpl.java (original)
+++ ode/trunk/bpel-runtime/src/main/java/org/apache/ode/bpel/engine/PartnerRoleMessageExchangeImpl.java Fri Aug 29 16:30:05 2008
@@ -38,7 +38,7 @@
import org.apache.ode.bpel.iapi.MessageExchangeContext;
import org.apache.ode.bpel.iapi.PartnerRoleChannel;
import org.apache.ode.bpel.iapi.PartnerRoleMessageExchange;
-import org.apache.ode.bpel.o.OPartnerLink;
+import org.apache.ode.bpel.rapi.PartnerLinkModel;
import org.w3c.dom.Element;
/**
@@ -78,9 +78,9 @@
protected State _state = State.INVOKE_XXX;
- PartnerRoleMessageExchangeImpl(BpelProcess process, Long iid, String mexId, OPartnerLink oplink, Operation operation,
+ PartnerRoleMessageExchangeImpl(ODEProcess process, Long iid, String mexId, PartnerLinkModel oplink, Operation operation,
EndpointReference epr, EndpointReference myRoleEPR, PartnerRoleChannel channel) {
- super(process, iid, mexId, oplink, oplink.partnerRolePortType, operation);
+ super(process, iid, mexId, oplink, oplink.getPartnerRolePortType(), operation);
_myRoleEPR = myRoleEPR;
_partnerRoleChannel = channel;
}
Modified: ode/trunk/bpel-runtime/src/main/java/org/apache/ode/bpel/engine/ProcessAndInstanceManagementImpl.java
URL: http://svn.apache.org/viewvc/ode/trunk/bpel-runtime/src/main/java/org/apache/ode/bpel/engine/ProcessAndInstanceManagementImpl.java?rev=690420&r1=690419&r2=690420&view=diff
==============================================================================
--- ode/trunk/bpel-runtime/src/main/java/org/apache/ode/bpel/engine/ProcessAndInstanceManagementImpl.java (original)
+++ ode/trunk/bpel-runtime/src/main/java/org/apache/ode/bpel/engine/ProcessAndInstanceManagementImpl.java Fri Aug 29 16:30:05 2008
@@ -61,9 +61,6 @@
import org.apache.ode.bpel.iapi.ProcessConf;
import org.apache.ode.bpel.iapi.ProcessState;
import org.apache.ode.bpel.iapi.ProcessStore;
-import org.apache.ode.bpel.o.OBase;
-import org.apache.ode.bpel.o.OPartnerLink;
-import org.apache.ode.bpel.o.OProcess;
import org.apache.ode.bpel.pmapi.ActivityExtInfoListDocument;
import org.apache.ode.bpel.pmapi.ActivityInfoDocument;
import org.apache.ode.bpel.pmapi.EventInfoListDocument;
@@ -106,6 +103,9 @@
import org.apache.ode.bpel.pmapi.TVariableInfo;
import org.apache.ode.bpel.pmapi.TVariableRef;
import org.apache.ode.bpel.pmapi.VariableInfoDocument;
+import org.apache.ode.bpel.rapi.ProcessModel;
+import org.apache.ode.bpel.rapi.PartnerLinkModel;
+import org.apache.ode.bpel.rapi.ActivityModel;
import org.apache.ode.utils.ISO8601DateParser;
import org.apache.ode.utils.msg.MessageBundle;
import org.apache.ode.utils.stl.CollectionsX;
@@ -397,7 +397,7 @@
return null;
for (ActivityRecoveryDAO recovery : instance.getActivityRecoveries()) {
if (recovery.getActivityId() == aid) {
- BpelProcess process = _server.getBpelProcess(instance.getProcess().getProcessId());
+ ODEProcess process = _server.getBpelProcess(instance.getProcess().getProcessId());
if (process != null) {
process.recoverActivity(instance, recovery.getChannel(), aid, action, null);
break;
@@ -481,14 +481,14 @@
public ActivityExtInfoListDocument getExtensibilityElements(QName pid, Integer[] aids) {
ActivityExtInfoListDocument aeild = ActivityExtInfoListDocument.Factory.newInstance();
TActivitytExtInfoList taeil = aeild.addNewActivityExtInfoList();
- OProcess oprocess = _server.getOProcess(pid);
- if (oprocess == null)
+ ProcessModel pmodel = _server.getProcessModel(pid);
+ if (pmodel == null)
throw new ProcessNotFoundException("The process \"" + pid + "\" does not exist.");
for (int aid : aids) {
- OBase obase = oprocess.getChild(aid);
- if (obase != null && obase.debugInfo != null && obase.debugInfo.extensibilityElements != null) {
- for (Map.Entry<QName, Object> entry : obase.debugInfo.extensibilityElements.entrySet()) {
+ ActivityModel amodel = pmodel.getChild(aid);
+ if (amodel != null && amodel.getExtensibilityElements() != null) {
+ for (Map.Entry<QName, Object> entry : amodel.getExtensibilityElements().entrySet()) {
TActivityExtInfo taei = taeil.addNewActivityExtInfo();
taei.setAiid("" + aid);
Object extValue = entry.getValue();
@@ -519,7 +519,7 @@
*/
protected final DebuggerSupport getDebugger(QName procid) throws ManagementException {
- BpelProcess process = _server.getBpelProcess(procid);
+ ODEProcess process = _server.getBpelProcess(procid);
if (process == null)
throw new ProcessNotFoundException("The process \"" + procid + "\" does not exist.");
@@ -753,14 +753,12 @@
}
TEndpointReferences eprs = info.addNewEndpoints();
- OProcess oprocess = _server.getOProcess(pconf.getProcessId());
- if (custom.includeEndpoints() && oprocess != null) {
- for (OPartnerLink oplink : oprocess.getAllPartnerLinks()) {
- if (oplink.hasPartnerRole() && oplink.initializePartnerRole) {
+ ProcessModel pmodel = _server.getProcessModel(pconf.getProcessId());
+ if (custom.includeEndpoints() && pmodel != null) {
+ for (PartnerLinkModel oplink : pmodel.getAllPartnerLinks()) {
+ if (oplink.hasPartnerRole() && oplink.isInitializePartnerRoleSet()) {
// TODO: this is very uncool.
- EndpointReference pepr = _server.getBpelProcess(pconf.getProcessId())
- .getInitialPartnerRoleEPR(oplink);
-
+ EndpointReference pepr = _server.getBpelProcess(pconf.getProcessId()).getInitialPartnerRoleEPR(oplink);
if (pepr != null) {
TEndpointReferences.EndpointRef epr = eprs.addNewEndpointRef();
Document eprNodeDoc = epr.getDomNode().getOwnerDocument();
Modified: ode/trunk/bpel-runtime/src/main/java/org/apache/ode/bpel/engine/ProcessLifecycleCallback.java
URL: http://svn.apache.org/viewvc/ode/trunk/bpel-runtime/src/main/java/org/apache/ode/bpel/engine/ProcessLifecycleCallback.java?rev=690420&r1=690419&r2=690420&view=diff
==============================================================================
--- ode/trunk/bpel-runtime/src/main/java/org/apache/ode/bpel/engine/ProcessLifecycleCallback.java (original)
+++ ode/trunk/bpel-runtime/src/main/java/org/apache/ode/bpel/engine/ProcessLifecycleCallback.java Fri Aug 29 16:30:05 2008
@@ -23,5 +23,5 @@
*/
public interface ProcessLifecycleCallback {
- void hydrated(BpelProcess process);
+ void hydrated(ODEProcess process);
}
Modified: ode/trunk/bpel-runtime/src/main/java/org/apache/ode/bpel/engine/ReliableMyRoleMessageExchangeImpl.java
URL: http://svn.apache.org/viewvc/ode/trunk/bpel-runtime/src/main/java/org/apache/ode/bpel/engine/ReliableMyRoleMessageExchangeImpl.java?rev=690420&r1=690419&r2=690420&view=diff
==============================================================================
--- ode/trunk/bpel-runtime/src/main/java/org/apache/ode/bpel/engine/ReliableMyRoleMessageExchangeImpl.java (original)
+++ ode/trunk/bpel-runtime/src/main/java/org/apache/ode/bpel/engine/ReliableMyRoleMessageExchangeImpl.java Fri Aug 29 16:30:05 2008
@@ -25,11 +25,9 @@
import org.apache.commons.logging.Log;
import org.apache.commons.logging.LogFactory;
import org.apache.ode.bpel.dao.MessageExchangeDAO;
-import org.apache.ode.bpel.iapi.BpelEngineException;
import org.apache.ode.bpel.iapi.InvocationStyle;
import org.apache.ode.bpel.iapi.MyRoleMessageExchange;
-import org.apache.ode.bpel.intercept.InterceptorInvoker;
-import org.apache.ode.bpel.o.OPartnerLink;
+import org.apache.ode.bpel.rapi.PartnerLinkModel;
/**
* Provides an implementation of the {@link MyRoleMessageExchange} inteface for interactions performed in the
@@ -42,7 +40,8 @@
private static final Log __log = LogFactory.getLog(ReliableMyRoleMessageExchangeImpl.class);
- public ReliableMyRoleMessageExchangeImpl(BpelProcess process, String mexId, OPartnerLink oplink, Operation operation, QName callee) {
+ public ReliableMyRoleMessageExchangeImpl(ODEProcess process, String mexId,
+ PartnerLinkModel oplink, Operation operation, QName callee) {
super(process, mexId, oplink, operation, callee);
}
Modified: ode/trunk/bpel-runtime/src/main/java/org/apache/ode/bpel/engine/ReliablePartnerRoleMessageExchangeImpl.java
URL: http://svn.apache.org/viewvc/ode/trunk/bpel-runtime/src/main/java/org/apache/ode/bpel/engine/ReliablePartnerRoleMessageExchangeImpl.java?rev=690420&r1=690419&r2=690420&view=diff
==============================================================================
--- ode/trunk/bpel-runtime/src/main/java/org/apache/ode/bpel/engine/ReliablePartnerRoleMessageExchangeImpl.java (original)
+++ ode/trunk/bpel-runtime/src/main/java/org/apache/ode/bpel/engine/ReliablePartnerRoleMessageExchangeImpl.java Fri Aug 29 16:30:05 2008
@@ -7,11 +7,11 @@
import org.apache.ode.bpel.iapi.EndpointReference;
import org.apache.ode.bpel.iapi.InvocationStyle;
import org.apache.ode.bpel.iapi.PartnerRoleChannel;
-import org.apache.ode.bpel.o.OPartnerLink;
+import org.apache.ode.bpel.rapi.PartnerLinkModel;
public class ReliablePartnerRoleMessageExchangeImpl extends PartnerRoleMessageExchangeImpl {
- public ReliablePartnerRoleMessageExchangeImpl(BpelProcess process, long iid, String mexId, OPartnerLink oplink, Operation op,
+ public ReliablePartnerRoleMessageExchangeImpl(ODEProcess process, long iid, String mexId, PartnerLinkModel oplink, Operation op,
EndpointReference epr, EndpointReference myRoleEPR, PartnerRoleChannel partnerRoleChannel) {
super(process, iid, mexId, oplink, op, epr, myRoleEPR, partnerRoleChannel);
}
Modified: ode/trunk/bpel-runtime/src/main/java/org/apache/ode/bpel/engine/TransactedMyRoleMessageExchangeImpl.java
URL: http://svn.apache.org/viewvc/ode/trunk/bpel-runtime/src/main/java/org/apache/ode/bpel/engine/TransactedMyRoleMessageExchangeImpl.java?rev=690420&r1=690419&r2=690420&view=diff
==============================================================================
--- ode/trunk/bpel-runtime/src/main/java/org/apache/ode/bpel/engine/TransactedMyRoleMessageExchangeImpl.java (original)
+++ ode/trunk/bpel-runtime/src/main/java/org/apache/ode/bpel/engine/TransactedMyRoleMessageExchangeImpl.java Fri Aug 29 16:30:05 2008
@@ -6,7 +6,7 @@
import org.apache.ode.bpel.dao.MessageExchangeDAO;
import org.apache.ode.bpel.iapi.BpelEngineException;
import org.apache.ode.bpel.iapi.InvocationStyle;
-import org.apache.ode.bpel.o.OPartnerLink;
+import org.apache.ode.bpel.rapi.PartnerLinkModel;
/**
* Transacted my-role message exchange.
@@ -17,8 +17,8 @@
*/
public class TransactedMyRoleMessageExchangeImpl extends MyRoleMessageExchangeImpl {
- public TransactedMyRoleMessageExchangeImpl(BpelProcess process, String mexId, OPartnerLink oplink, Operation operation, QName callee) {
- super(process, mexId, oplink, operation, callee);
+ public TransactedMyRoleMessageExchangeImpl(ODEProcess process, String mexId, PartnerLinkModel mplink, Operation operation, QName callee) {
+ super(process, mexId, mplink, operation, callee);
}
@Override
Modified: ode/trunk/bpel-runtime/src/main/java/org/apache/ode/bpel/engine/TransactedPartnerRoleMessageExchangeImpl.java
URL: http://svn.apache.org/viewvc/ode/trunk/bpel-runtime/src/main/java/org/apache/ode/bpel/engine/TransactedPartnerRoleMessageExchangeImpl.java?rev=690420&r1=690419&r2=690420&view=diff
==============================================================================
--- ode/trunk/bpel-runtime/src/main/java/org/apache/ode/bpel/engine/TransactedPartnerRoleMessageExchangeImpl.java (original)
+++ ode/trunk/bpel-runtime/src/main/java/org/apache/ode/bpel/engine/TransactedPartnerRoleMessageExchangeImpl.java Fri Aug 29 16:30:05 2008
@@ -7,7 +7,7 @@
import org.apache.ode.bpel.iapi.InvocationStyle;
import org.apache.ode.bpel.iapi.MessageExchangeContext;
import org.apache.ode.bpel.iapi.PartnerRoleChannel;
-import org.apache.ode.bpel.o.OPartnerLink;
+import org.apache.ode.bpel.rapi.PartnerLinkModel;
/**
@@ -18,7 +18,7 @@
*/
public class TransactedPartnerRoleMessageExchangeImpl extends PartnerRoleMessageExchangeImpl {
- TransactedPartnerRoleMessageExchangeImpl(BpelProcess process, long iid, String mexId, OPartnerLink oplink,Operation operation, EndpointReference epr, EndpointReference myRoleEPR, PartnerRoleChannel channel) {
+ TransactedPartnerRoleMessageExchangeImpl(ODEProcess process, long iid, String mexId, PartnerLinkModel oplink,Operation operation, EndpointReference epr, EndpointReference myRoleEPR, PartnerRoleChannel channel) {
super(process, iid, mexId, oplink, operation, epr, myRoleEPR, channel);
}
Modified: ode/trunk/bpel-runtime/src/main/java/org/apache/ode/bpel/engine/UnreliableMyRoleMessageExchangeImpl.java
URL: http://svn.apache.org/viewvc/ode/trunk/bpel-runtime/src/main/java/org/apache/ode/bpel/engine/UnreliableMyRoleMessageExchangeImpl.java?rev=690420&r1=690419&r2=690420&view=diff
==============================================================================
--- ode/trunk/bpel-runtime/src/main/java/org/apache/ode/bpel/engine/UnreliableMyRoleMessageExchangeImpl.java (original)
+++ ode/trunk/bpel-runtime/src/main/java/org/apache/ode/bpel/engine/UnreliableMyRoleMessageExchangeImpl.java Fri Aug 29 16:30:05 2008
@@ -14,7 +14,7 @@
import org.apache.ode.bpel.dao.MessageExchangeDAO;
import org.apache.ode.bpel.iapi.BpelEngineException;
import org.apache.ode.bpel.iapi.InvocationStyle;
-import org.apache.ode.bpel.o.OPartnerLink;
+import org.apache.ode.bpel.rapi.PartnerLinkModel;
/**
* For invoking the engine using UNRELIABLE style.
@@ -29,14 +29,13 @@
ResponseFuture _future;
- public UnreliableMyRoleMessageExchangeImpl(BpelProcess process, String mexId, OPartnerLink oplink, Operation operation,
- QName callee) {
+ public UnreliableMyRoleMessageExchangeImpl(ODEProcess process, String mexId, PartnerLinkModel oplink,
+ Operation operation, QName callee) {
super(process, mexId, oplink, operation, callee);
}
public Future<Status> invokeAsync() {
if (_future != null) return _future;
-
if (_request == null) throw new IllegalStateException("Must call setRequest(...)!");
_future = new ResponseFuture();
@@ -91,16 +90,13 @@
}
public Status get(long timeout, TimeUnit unit) throws InterruptedException, ExecutionException, TimeoutException {
-
synchronized (this) {
if (_status != null)
return _status;
this.wait(TimeUnit.MILLISECONDS.convert(timeout, unit));
- if (_status == null)
- throw new TimeoutException();
-
+ if (_status == null) throw new TimeoutException();
return _status;
}
}
@@ -138,6 +134,8 @@
response = null;
}
+ final UnreliableMyRoleMessageExchangeImpl self = this;
+ final ResponseFuture f = _future;
// Lets be careful, the TX can still rollback!
_process.scheduleRunnable(new Runnable() {
public void run() {
@@ -145,6 +143,7 @@
_fault = fault;
_failureType = failureType;
_explanation = explanation;
+
ack(ackType);
_future.done(Status.ACK);
Modified: ode/trunk/bpel-runtime/src/main/java/org/apache/ode/bpel/engine/UnreliablePartnerRoleMessageExchangeImpl.java
URL: http://svn.apache.org/viewvc/ode/trunk/bpel-runtime/src/main/java/org/apache/ode/bpel/engine/UnreliablePartnerRoleMessageExchangeImpl.java?rev=690420&r1=690419&r2=690420&view=diff
==============================================================================
--- ode/trunk/bpel-runtime/src/main/java/org/apache/ode/bpel/engine/UnreliablePartnerRoleMessageExchangeImpl.java (original)
+++ ode/trunk/bpel-runtime/src/main/java/org/apache/ode/bpel/engine/UnreliablePartnerRoleMessageExchangeImpl.java Fri Aug 29 16:30:05 2008
@@ -10,7 +10,7 @@
import org.apache.ode.bpel.iapi.InvocationStyle;
import org.apache.ode.bpel.iapi.PartnerRoleChannel;
import org.apache.ode.bpel.iapi.PartnerRoleMessageExchange;
-import org.apache.ode.bpel.o.OPartnerLink;
+import org.apache.ode.bpel.rapi.PartnerLinkModel;
/**
* Implementation of the {@link PartnerRoleMessageExchange} interface that is passed to the IL when the UNRELIABLE invocation style
@@ -24,7 +24,7 @@
private static final Log __log = LogFactory.getLog(UnreliablePartnerRoleMessageExchangeImpl.class);
boolean _asyncReply;
- UnreliablePartnerRoleMessageExchangeImpl(BpelProcess process, long iid, String mexId, OPartnerLink oplink, Operation operation,
+ UnreliablePartnerRoleMessageExchangeImpl(ODEProcess process, long iid, String mexId, PartnerLinkModel oplink, Operation operation,
EndpointReference epr, EndpointReference myRoleEPR, PartnerRoleChannel channel) {
super(process, iid, mexId, oplink, operation, epr, myRoleEPR, channel);
}
Modified: ode/trunk/bpel-runtime/src/main/java/org/apache/ode/bpel/engine/extvar/ExternalVariableManager.java
URL: http://svn.apache.org/viewvc/ode/trunk/bpel-runtime/src/main/java/org/apache/ode/bpel/engine/extvar/ExternalVariableManager.java?rev=690420&r1=690419&r2=690420&view=diff
==============================================================================
--- ode/trunk/bpel-runtime/src/main/java/org/apache/ode/bpel/engine/extvar/ExternalVariableManager.java (original)
+++ ode/trunk/bpel-runtime/src/main/java/org/apache/ode/bpel/engine/extvar/ExternalVariableManager.java Fri Aug 29 16:30:05 2008
@@ -25,25 +25,17 @@
import org.apache.commons.logging.Log;
import org.apache.commons.logging.LogFactory;
-import org.apache.ode.bpel.engine.BpelProcess;
import org.apache.ode.bpel.iapi.BpelEngineException;
-import org.apache.ode.bpel.o.OBase;
-import org.apache.ode.bpel.o.OElementVarType;
-import org.apache.ode.bpel.o.OProcess;
-import org.apache.ode.bpel.o.OScope;
-import org.apache.ode.bpel.o.OScope.Variable;
import org.apache.ode.bpel.evar.ExternalVariableModule;
import org.apache.ode.bpel.evar.ExternalVariableModuleException;
import org.apache.ode.bpel.evar.ExternalVariableModule.Locator;
import org.apache.ode.bpel.evar.ExternalVariableModule.Value;
+import org.apache.ode.bpel.rapi.Variable;
import org.w3c.dom.Element;
import org.w3c.dom.Node;
/**
- * Manager for external variable instances; used by {@link BpelProcess} to manage external variables.
- *
- * @author Maciej Szefler <mszefler at gmail dot com>
- *
+ * Manager for external variable instances; used by {@link org.apache.ode.bpel.engine.ODEProcess} to manage external variables.
*/
public class ExternalVariableManager {
@@ -61,11 +53,8 @@
/** Process ID */
private QName _pid;
- public ExternalVariableManager(QName pid,
- ExternalVariableConf evconf,
- Map<QName, ExternalVariableModule> engines,
- OProcess oprocess)
- throws BpelEngineException {
+ public ExternalVariableManager(QName pid, ExternalVariableConf evconf, Map<QName,
+ ExternalVariableModule> engines) throws BpelEngineException {
_pid = pid;
_extVarConf = evconf;
_engines = engines;
@@ -96,24 +85,24 @@
}
// Walk down the process definition looking for any external variables.
- for (OBase child : oprocess.getChildren()) {
- if (!(child instanceof OScope))
- continue;
- OScope oscope = (OScope) child;
- for (OScope.Variable var : oscope.variables.values()) {
- if (var.extVar == null)
- continue;
-
- EVar evar = _externalVariables.get(var.extVar.externalVariableId);
- if (evar == null) {
- __log.error("The \"" + oscope.name + "\" scope declared an unknown external variable \""
- + var.extVar.externalVariableId + "\"; check the deployment descriptor.");
- fatal = true;
- continue;
- }
-
- }
- }
+ // TODO move this to deployment
+// for (OBase child : oprocess.getChildren()) {
+// if (!(child instanceof OScope))
+// continue;
+// OScope oscope = (OScope) child;
+// for (OScope.Variable var : oscope.variables.values()) {
+// if (var.extVar == null)
+// continue;
+//
+// EVar evar = _externalVariables.get(var.extVar.externalVariableId);
+// if (evar == null) {
+// __log.error("The \"" + oscope.name + "\" scope declared an unknown external variable \""
+// + var.extVar.externalVariableId + "\"; check the deployment descriptor.");
+// fatal = true;
+// continue;
+// }
+// }
+// }
if (fatal) {
String errmsg = "Error initializing external variables. See log for details.";
@@ -128,15 +117,15 @@
* Read an external variable.
*/
public Value read(Variable variable, Node reference, Long iid) throws ExternalVariableModuleException{
- EVar evar = _externalVariables.get(variable.extVar.externalVariableId);
+ EVar evar = _externalVariables.get(variable.getExternalId());
if (evar == null) {
// Should not happen if constructor is working.
- throw new BpelEngineException("InternalError: reference to unknown external variable " + variable.extVar.externalVariableId);
+ throw new BpelEngineException("InternalError: reference to unknown external variable " + variable.getExternalId());
}
- Locator locator = new Locator(variable.extVar.externalVariableId, _pid,iid, reference);
+ Locator locator = new Locator(variable.getExternalId(), _pid,iid, reference);
Value newval;
- newval = evar._engine.readValue(((OElementVarType) variable.type).elementType, locator );
+ newval = evar._engine.readValue(variable.getElementType(), locator );
if (newval == null)
return null;
return newval;
@@ -144,15 +133,15 @@
public Value write(Variable variable, Node reference, Node val, Long iid) throws ExternalVariableModuleException {
- EVar evar = _externalVariables.get(variable.extVar.externalVariableId);
+ EVar evar = _externalVariables.get(variable.getExternalId());
if (evar == null) {
// Should not happen if constructor is working.
- throw new BpelEngineException("InternalError: reference to unknown external variable " + variable.extVar.externalVariableId);
+ throw new BpelEngineException("InternalError: reference to unknown external variable " + variable.getExternalId());
}
- Locator locator = new Locator(variable.extVar.externalVariableId,_pid,iid,reference);
+ Locator locator = new Locator(variable.getExternalId(),_pid,iid,reference);
Value newval = new Value(locator,val,null);
- newval = evar._engine.writeValue(((OElementVarType) variable.type).elementType, newval);
+ newval = evar._engine.writeValue(variable.getElementType(), newval);
return newval;
}
@@ -160,9 +149,7 @@
static final class EVar {
final ExternalVariableModule _engine;
-
final Element _config;
-
final String _extVarId;
EVar(String id, ExternalVariableModule engine, Element config) {
@@ -172,5 +159,4 @@
}
}
-
}
Modified: ode/trunk/bpel-runtime/src/test/java/org/apache/ode/bpel/elang/xpath20/runtime/CombineUrlTest.java
URL: http://svn.apache.org/viewvc/ode/trunk/bpel-runtime/src/test/java/org/apache/ode/bpel/elang/xpath20/runtime/CombineUrlTest.java?rev=690420&r1=690419&r2=690420&view=diff
==============================================================================
--- ode/trunk/bpel-runtime/src/test/java/org/apache/ode/bpel/elang/xpath20/runtime/CombineUrlTest.java (original)
+++ ode/trunk/bpel-runtime/src/test/java/org/apache/ode/bpel/elang/xpath20/runtime/CombineUrlTest.java Fri Aug 29 16:30:05 2008
@@ -27,6 +27,8 @@
import java.util.Map;
import java.util.TreeMap;
+import org.apache.ode.bpel.rtrep.v2.xpath20.JaxpFunctionResolver;
+
/**
* @author <a href="mailto:midon@intalio.com">Alexis Midon</a>
*/
@@ -36,7 +38,7 @@
final String baseURL = "http://WebReference.com/html/";
// key: the relative URL, value: the expected result
- Map m = new TreeMap();
+ Map<String,String> m = new TreeMap<String,String>();
// relative-path references
m.put("about.html", "http://WebReference.com/html/about.html");
Modified: ode/trunk/bpel-runtime/src/test/java/org/apache/ode/bpel/elang/xpath20/runtime/FunctionHelperTest.java
URL: http://svn.apache.org/viewvc/ode/trunk/bpel-runtime/src/test/java/org/apache/ode/bpel/elang/xpath20/runtime/FunctionHelperTest.java?rev=690420&r1=690419&r2=690420&view=diff
==============================================================================
--- ode/trunk/bpel-runtime/src/test/java/org/apache/ode/bpel/elang/xpath20/runtime/FunctionHelperTest.java (original)
+++ ode/trunk/bpel-runtime/src/test/java/org/apache/ode/bpel/elang/xpath20/runtime/FunctionHelperTest.java Fri Aug 29 16:30:05 2008
@@ -24,6 +24,7 @@
import net.sf.saxon.dom.DocumentWrapper;
import net.sf.saxon.dom.NodeWrapper;
import org.apache.ode.utils.DOMUtils;
+import org.apache.ode.bpel.rtrep.v2.xpath20.JaxpFunctionResolver;
import org.w3c.dom.Document;
import org.w3c.dom.Text;