You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@ode.apache.org by sa...@apache.org on 2013/05/10 16:05:25 UTC
git commit: ODE-958: Avoided the activation of a retired process when
there is already an active version of the process.
Updated Branches:
refs/heads/ode-1.3.6.x 2f2c7b562 -> f7fb73131
ODE-958: Avoided the activation of a retired process when there is already an active version of the process.
Project: http://git-wip-us.apache.org/repos/asf/ode/repo
Commit: http://git-wip-us.apache.org/repos/asf/ode/commit/f7fb7313
Tree: http://git-wip-us.apache.org/repos/asf/ode/tree/f7fb7313
Diff: http://git-wip-us.apache.org/repos/asf/ode/diff/f7fb7313
Branch: refs/heads/ode-1.3.6.x
Commit: f7fb7313151d29e96cd3a639e148e2cf18c64036
Parents: 2f2c7b5
Author: sathwik <sa...@apache.org>
Authored: Fri May 10 19:34:08 2013 +0530
Committer: sathwik <sa...@apache.org>
Committed: Fri May 10 19:34:08 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/f7fb7313/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/f7fb7313/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 fd04fc5..795037e 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);