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 2007/02/12 19:49:40 UTC

svn commit: r506574 - in /incubator/ode/trunk: bpel-api/src/main/java/org/apache/ode/bpel/iapi/ bpel-api/src/main/java/org/apache/ode/bpel/pmapi/ bpel-runtime/src/main/java/org/apache/ode/bpel/engine/ bpel-store/src/main/java/org/apache/ode/store/ bpel...

Author: mriou
Date: Mon Feb 12 10:49:39 2007
New Revision: 506574

URL: http://svn.apache.org/viewvc?view=rev&rev=506574
Log:
Fixing retirement on new versions deployment.

Modified:
    incubator/ode/trunk/bpel-api/src/main/java/org/apache/ode/bpel/iapi/ProcessStore.java
    incubator/ode/trunk/bpel-api/src/main/java/org/apache/ode/bpel/pmapi/ProcessManagement.java
    incubator/ode/trunk/bpel-runtime/src/main/java/org/apache/ode/bpel/engine/ProcessAndInstanceManagementImpl.java
    incubator/ode/trunk/bpel-store/src/main/java/org/apache/ode/store/ProcessStoreImpl.java
    incubator/ode/trunk/bpel-test/src/test/java/org/apache/ode/test/BPELTest.java

Modified: incubator/ode/trunk/bpel-api/src/main/java/org/apache/ode/bpel/iapi/ProcessStore.java
URL: http://svn.apache.org/viewvc/incubator/ode/trunk/bpel-api/src/main/java/org/apache/ode/bpel/iapi/ProcessStore.java?view=diff&rev=506574&r1=506573&r2=506574
==============================================================================
--- incubator/ode/trunk/bpel-api/src/main/java/org/apache/ode/bpel/iapi/ProcessStore.java (original)
+++ incubator/ode/trunk/bpel-api/src/main/java/org/apache/ode/bpel/iapi/ProcessStore.java Mon Feb 12 10:49:39 2007
@@ -87,7 +87,7 @@
 
     /**
      * Set a process property.
-     * @param processId
+     * @param pid
      * @param propName 
      * @param value
      */
@@ -97,10 +97,18 @@
     
     /**
      * Marks a process as active / retired or disabled
-     * @param processId
-     * @param status true for active, false for inactive
+     * @param pid
+     * @param state true for active, false for inactive
+     * @deprecated
      */
     void setState(QName pid, ProcessState state);
+
+    /**
+     * Retires all processes in a given package.
+     * @param packageName
+     * @param retired
+     */
+    void setRetiredPackage(String packageName, boolean retired);
 
     /**
      * Gets the version used by the store for the last deployment.

Modified: incubator/ode/trunk/bpel-api/src/main/java/org/apache/ode/bpel/pmapi/ProcessManagement.java
URL: http://svn.apache.org/viewvc/incubator/ode/trunk/bpel-api/src/main/java/org/apache/ode/bpel/pmapi/ProcessManagement.java?view=diff&rev=506574&r1=506573&r2=506574
==============================================================================
--- incubator/ode/trunk/bpel-api/src/main/java/org/apache/ode/bpel/pmapi/ProcessManagement.java (original)
+++ incubator/ode/trunk/bpel-api/src/main/java/org/apache/ode/bpel/pmapi/ProcessManagement.java Mon Feb 12 10:49:39 2007
@@ -112,4 +112,10 @@
   ProcessInfoDocument setRetired(QName pid, boolean retired)
           throws ManagementException;
 
+    /**
+     * Retires all the processes contained in a package.
+     * @param packageName
+     * @param retired
+     */
+    void setPackageRetired(final String packageName, final boolean retired);
 }

Modified: incubator/ode/trunk/bpel-runtime/src/main/java/org/apache/ode/bpel/engine/ProcessAndInstanceManagementImpl.java
URL: http://svn.apache.org/viewvc/incubator/ode/trunk/bpel-runtime/src/main/java/org/apache/ode/bpel/engine/ProcessAndInstanceManagementImpl.java?view=diff&rev=506574&r1=506573&r2=506574
==============================================================================
--- incubator/ode/trunk/bpel-runtime/src/main/java/org/apache/ode/bpel/engine/ProcessAndInstanceManagementImpl.java (original)
+++ incubator/ode/trunk/bpel-runtime/src/main/java/org/apache/ode/bpel/engine/ProcessAndInstanceManagementImpl.java Mon Feb 12 10:49:39 2007
@@ -133,6 +133,16 @@
         return genProcessInfoDocument(pid, ProcessInfoCustomizer.NONE);
     }
 
+    public void setPackageRetired(final String packageName, final boolean retired)
+            throws ManagementException {
+        try {
+            _store.setRetiredPackage(packageName, retired);
+        } catch (BpelEngineException e) {
+            __log.error("Exception while setting process as retired", e);
+            throw new ProcessNotFoundException("PackageNotFound:" + packageName);
+        }
+    }
+
     public ProcessInfoDocument setProcessPropertyNode(final QName pid, final QName propertyName, final Node value)
             throws ManagementException {
         ProcessInfoDocument ret = ProcessInfoDocument.Factory.newInstance();

Modified: incubator/ode/trunk/bpel-store/src/main/java/org/apache/ode/store/ProcessStoreImpl.java
URL: http://svn.apache.org/viewvc/incubator/ode/trunk/bpel-store/src/main/java/org/apache/ode/store/ProcessStoreImpl.java?view=diff&rev=506574&r1=506573&r2=506574
==============================================================================
--- incubator/ode/trunk/bpel-store/src/main/java/org/apache/ode/store/ProcessStoreImpl.java (original)
+++ incubator/ode/trunk/bpel-store/src/main/java/org/apache/ode/store/ProcessStoreImpl.java Mon Feb 12 10:49:39 2007
@@ -154,7 +154,7 @@
         Collection<QName> deployed;
 
         _rw.writeLock().lock();
-        // Process and DU use a monotically increased single version number.
+        // Process and DU use a monotonically increased single version number.
         long version = exec(new Callable<Long>() {
             public Long call(ConfStoreConnection conn) {
                 return conn.getNextVersion();
@@ -172,12 +172,10 @@
 
             for (TDeployment.Process processDD : dd.getDeploy().getProcessList()) {
                 QName pid = toPid(processDD.getName(), version);
-                // Retires older version
-                try {
-                    if (version > 1) setState(toPid(processDD.getName(), version - 1), ProcessState.RETIRED);
-                } catch (ContextException ce) {
-                    __log.debug("No previous version to retire on deployment of version " + version);
-                }
+                
+                // Retires older version if we can find one
+                DeploymentUnitDir oldDU = findOldDU(du.getName());
+                if (oldDU != null) setRetiredPackage(oldDU.getName(), true);
 
                 if (_processes.containsKey(pid)) {
                     String errmsg = __msgs.msgDeployFailDuplicatePID(processDD.getName(), du.getName());
@@ -383,6 +381,14 @@
             fireStateChange(pid, state, pconf.getDeploymentUnit().getName());
     }
 
+    public void setRetiredPackage(String packageName, boolean retired) {
+        DeploymentUnitDir duDir = _deploymentUnits.get(packageName);
+        if (duDir == null) throw new ContextException("Could not find package " + packageName);
+        for (QName processName : duDir.getProcessNames()) {
+            setState(toPid(processName, duDir.getVersion()), retired ? ProcessState.RETIRED : ProcessState.ACTIVE);
+        }
+    }
+
     public ProcessConf getProcessConfiguration(final QName processId) {
         _rw.readLock().lock();
         try {
@@ -718,4 +724,19 @@
         return new QName(processType.getNamespaceURI(), processType.getLocalPart() + "-" + version);
     }
 
+    private DeploymentUnitDir findOldDU(String newName) {
+        DeploymentUnitDir old = null;
+        int dashIdx = newName.lastIndexOf("-");
+        if (dashIdx > 0 && dashIdx + 1 < newName.length()) {
+            String radical = newName.substring(0, dashIdx);
+            int newVersion = -1;
+            try {
+                newVersion = Integer.parseInt(newName.substring(newName.lastIndexOf("-") + 1));
+            } catch (NumberFormatException e) {
+                // Swallowing, if we can't parse then we just can't find an old version
+            }
+            while (old == null && newVersion >= 0) old = _deploymentUnits.get(radical + "-" + (newVersion--));
+        }
+        return old;
+    }
 }

Modified: incubator/ode/trunk/bpel-test/src/test/java/org/apache/ode/test/BPELTest.java
URL: http://svn.apache.org/viewvc/incubator/ode/trunk/bpel-test/src/test/java/org/apache/ode/test/BPELTest.java?view=diff&rev=506574&r1=506573&r2=506574
==============================================================================
--- incubator/ode/trunk/bpel-test/src/test/java/org/apache/ode/test/BPELTest.java (original)
+++ incubator/ode/trunk/bpel-test/src/test/java/org/apache/ode/test/BPELTest.java Mon Feb 12 10:49:39 2007
@@ -87,7 +87,7 @@
         server.setScheduler(scheduler);
 		server.setBindingContext(new BindingContextImpl());
 		server.setMessageExchangeContext(mexContext);
-        store = new ProcessStoreImpl();
+        store = new ProcessStoreImpl(null, true);
         store.registerListener(new ProcessStoreListener() {
             public void onProcessStoreEvent(ProcessStoreEvent event) {
                 // bounce the process