Author: mattmann
Date: Tue Jun 10 16:13:36 2014
New Revision: 1601671
URL: http://svn.apache.org/r1601671
Log:
- fix for OODT-593 Dyn workflows in Workflow Manager cause NPEs on restart
Modified:
oodt/trunk/CHANGES.txt
oodt/trunk/workflow/src/main/java/org/apache/oodt/cas/workflow/system/XmlRpcWorkflowManager.java
Modified: oodt/trunk/CHANGES.txt
URL:
http://svn.apache.org/viewvc/oodt/trunk/CHANGES.txt?rev=1601671&r1=1601670&r2=1601671&view=diff
==============================================================================
--- oodt/trunk/CHANGES.txt (original)
+++ oodt/trunk/CHANGES.txt Tue Jun 10 16:13:36 2014
@@ -4,6 +4,8 @@ Apache OODT Change Log
Release 0.7 - Current Development
--------------------------------------------
+* OODT-593 Dyn workflows in Workflow Manager cause NPEs on restart (mattmann)
+
* OODT-705 RADIX one step script (mattmann)
* OODT-703 DataUtil.createProductZipFile throws exception when creating a
zipfile of a hierarchical product (thomas)
Modified:
oodt/trunk/workflow/src/main/java/org/apache/oodt/cas/workflow/system/XmlRpcWorkflowManager.java
URL:
http://svn.apache.org/viewvc/oodt/trunk/workflow/src/main/java/org/apache/oodt/cas/workflow/system/XmlRpcWorkflowManager.java?rev=1601671&r1=1601670&r2=1601671&view=diff
==============================================================================
---
oodt/trunk/workflow/src/main/java/org/apache/oodt/cas/workflow/system/XmlRpcWorkflowManager.java
(original)
+++
oodt/trunk/workflow/src/main/java/org/apache/oodt/cas/workflow/system/XmlRpcWorkflowManager.java
Tue Jun 10 16:13:36 2014
@@ -165,7 +165,7 @@ public class XmlRpcWorkflowManager {
}
public Hashtable getFirstPage() {
- WorkflowInstancePage page = engine.getInstanceRepository()
+ WorkflowInstancePage page = engine.getInstanceRepository()
.getFirstPage();
if (page != null) {
populateWorkflows(page.getPageWorkflows());
@@ -174,7 +174,6 @@ public class XmlRpcWorkflowManager {
return XmlRpcStructFactory
.getXmlRpcWorkflowInstancePage(WorkflowInstancePage
.blankPage());
-
}
public Hashtable getNextPage(Hashtable currentPage) {
@@ -399,6 +398,12 @@ public class XmlRpcWorkflowManager {
// TODO: hack for now, fix this, we shouldn't have to cast
// here, bad
// design
+ if(wDesc == null){
+ //Possible dynamic workflow for instance
+ //reconsitute it from cache
+ wDesc = wInst.getWorkflow();
+
+ }
wInst.setWorkflow(wDesc);
Hashtable workflowInstance = XmlRpcStructFactory
.getXmlRpcWorkflowInstance(wInst);
@@ -441,6 +446,12 @@ public class XmlRpcWorkflowManager {
// pick up the description of the workflow
Workflow wDesc = repo.getWorkflowById(wInst.getWorkflow()
.getId());
+ if(wDesc == null){
+ //possible dynamic workflow
+ //reconsitute it from cached instance
+ wDesc = wInst.getWorkflow();
+
+ }
// TODO: hack for now, fix this, we shouldn't have to cast
// here, bad
// design
@@ -666,8 +677,13 @@ public class XmlRpcWorkflowManager {
if (wInsts != null && wInsts.size() > 0) {
for (Iterator i = wInsts.iterator(); i.hasNext();) {
WorkflowInstance wInst = (WorkflowInstance) i.next();
- wInst.setWorkflow(safeGetWorkflowById(wInst.getWorkflow()
- .getId()));
+ if(wInst.getWorkflow() == null ||
+ (wInst.getWorkflow() != null &&
+ (wInst.getWorkflow().getName() == null ||
+ wInst.getWorkflow().getId() == null))){
+ wInst.setWorkflow(safeGetWorkflowById(wInst.getWorkflow()
+ .getId()));
+ }
}
}
}