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