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 <[email protected]> Authored: Fri May 10 19:34:08 2013 +0530 Committer: sathwik <[email protected]> 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);
