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()));                        
+                }
             }
         }
     }


Reply via email to