Updated Branches:
  refs/heads/master 79f121f3b -> 8d7427e7e

ODE-958: Added a check if there is already an active process then do not allow 
to activate the retired process


Project: http://git-wip-us.apache.org/repos/asf/ode/repo
Commit: http://git-wip-us.apache.org/repos/asf/ode/commit/8d7427e7
Tree: http://git-wip-us.apache.org/repos/asf/ode/tree/8d7427e7
Diff: http://git-wip-us.apache.org/repos/asf/ode/diff/8d7427e7

Branch: refs/heads/master
Commit: 8d7427e7e1662dbed9087cf3f9a49297e1bdef6b
Parents: 79f121f
Author: sathwik <[email protected]>
Authored: Fri May 10 19:25:41 2013 +0530
Committer: sathwik <[email protected]>
Committed: Fri May 10 19:25:41 2013 +0530

----------------------------------------------------------------------
 .../management/ActivateRetiredProcessTest.java     |   67 +++++++++++++++
 .../org/apache/ode/store/ProcessStoreImpl.java     |   18 ++++
 2 files changed, 85 insertions(+), 0 deletions(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/ode/blob/8d7427e7/axis2-war/src/test/java/org/apache/ode/axis2/management/ActivateRetiredProcessTest.java
----------------------------------------------------------------------
diff --git 
a/axis2-war/src/test/java/org/apache/ode/axis2/management/ActivateRetiredProcessTest.java
 
b/axis2-war/src/test/java/org/apache/ode/axis2/management/ActivateRetiredProcessTest.java
new file mode 100644
index 0000000..52b275e
--- /dev/null
+++ 
b/axis2-war/src/test/java/org/apache/ode/axis2/management/ActivateRetiredProcessTest.java
@@ -0,0 +1,67 @@
+/* Licensed to the Apache Software Foundation (ASF) under one
+ * or more contributor license agreements.  See the NOTICE file
+ * distributed with this work for additional information
+ * regarding copyright ownership.  The ASF licenses this file
+ * to you under the Apache License, Version 2.0 (the
+ * "License"); you may not use this file except in compliance
+ * with the License.  You may obtain a copy of the License at
+ *
+ *    http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing,
+ * software distributed under the License is distributed on an
+ * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+ * KIND, either express or implied.  See the License for the
+ * specific language governing permissions and limitations
+ * under the License.
+ */
+
+package org.apache.ode.axis2.management;
+
+import org.apache.ode.axis2.Axis2TestBase;
+import org.apache.ode.bpel.iapi.ContextException;
+import org.apache.ode.bpel.iapi.ProcessState;
+import org.apache.ode.bpel.pmapi.ProcessInfoDocument;
+import org.apache.ode.bpel.pmapi.TProcessInfo;
+
+import static org.testng.AssertJUnit.assertTrue;
+import org.testng.annotations.Test;
+
+import javax.xml.namespace.QName;
+
+
+public class ActivateRetiredProcessTest extends Axis2TestBase {
+    /**
+     *  Test case method for ODE-958
+     * @throws Exception
+     */
+    @Test(dataProvider="configs")
+    public void testActivateRetiredProcess() throws Exception {
+        String bundleName = "TestInstanceRetire";
+        System.out.println("=> " + 
server.getODEServer().getProcessStore().getPackages());
+        if (server.isDeployed("1")) server.undeployProcess(bundleName + "/1");
+        if (server.isDeployed("2")) server.undeployProcess(bundleName + "/2");
+
+        QName pid1 = server.deployProcess(bundleName + "/1").iterator().next();
+
+        server.getODEServer().getProcessManagement().setPackageRetired("1", 
true);
+
+        QName pid2 = server.deployProcess(bundleName + "/2").iterator().next();
+
+        try{
+            
server.getODEServer().getProcessManagement().setPackageRetired("1", false);
+        }catch (ContextException e) {
+        }
+
+        TProcessInfo pInfo = getProcessDetails(pid1);
+        
assertTrue(ProcessState.RETIRED.name().equals(pInfo.getStatus().toString()));
+
+        if (server.isDeployed("1")) server.undeployProcess(bundleName + "/1");
+        if (server.isDeployed("2")) server.undeployProcess(bundleName + "/2");
+    }
+
+    public TProcessInfo getProcessDetails(QName pid){
+        ProcessInfoDocument pDoc = 
server.getODEServer().getProcessManagement().getProcessInfo(pid);
+        return pDoc.getProcessInfo();
+    }
+}

http://git-wip-us.apache.org/repos/asf/ode/blob/8d7427e7/bpel-store/src/main/java/org/apache/ode/store/ProcessStoreImpl.java
----------------------------------------------------------------------
diff --git 
a/bpel-store/src/main/java/org/apache/ode/store/ProcessStoreImpl.java 
b/bpel-store/src/main/java/org/apache/ode/store/ProcessStoreImpl.java
index 942ca6b..13884e4 100644
--- a/bpel-store/src/main/java/org/apache/ode/store/ProcessStoreImpl.java
+++ b/bpel-store/src/main/java/org/apache/ode/store/ProcessStoreImpl.java
@@ -448,6 +448,24 @@ public class ProcessStoreImpl implements ProcessStore {
                     throw new ContextException(errmsg);
                 }
 
+                Set processKeys = _processes.keySet();
+                Iterator processConfQNameItr = processKeys.iterator();
+
+                while(processConfQNameItr.hasNext()){
+                    ProcessConf cachedProcessConf = 
_processes.get(processConfQNameItr.next());
+                    if(dao.getType().equals(cachedProcessConf.getType())){
+                        if (ProcessState.ACTIVE == cachedProcessConf.getState()
+                                && ProcessState.RETIRED == dao.getState()
+                                && ProcessState.ACTIVE == state) {
+                            String errorMsg = "Can't activate the process with 
PID: " + dao.getPID() + " with version " + dao.getVersion() +
+                                    ", as another version of the process with 
PID : " + cachedProcessConf.getProcessId() + " with version " +
+                                    cachedProcessConf.getVersion() + " is 
already active.";
+                            __log.error(errorMsg);
+                            throw new ContextException(errorMsg);
+                        }
+                    }
+                }
+
                 ProcessState old = dao.getState();
                 dao.setState(state);
                 pconf.setState(state);

Reply via email to