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;