You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@oodt.apache.org by ma...@apache.org on 2011/10/12 06:10:48 UTC
svn commit: r1182193 - in /oodt/trunk: ./
workflow/src/main/java/org/apache/oodt/cas/workflow/system/
workflow/src/test/org/apache/oodt/cas/workflow/system/
Author: mattmann
Date: Wed Oct 12 04:10:46 2011
New Revision: 1182193
URL: http://svn.apache.org/viewvc?rev=1182193&view=rev
Log:
- fix for OODT-323: Add new command line option in Workflow manager client to get Workflow Instance Metadata contributed by Sheryl John
Added:
oodt/trunk/workflow/src/test/org/apache/oodt/cas/workflow/system/
oodt/trunk/workflow/src/test/org/apache/oodt/cas/workflow/system/TestXmlRpcWorkflowManagerClient.java
Modified:
oodt/trunk/CHANGES.txt
oodt/trunk/workflow/src/main/java/org/apache/oodt/cas/workflow/system/XmlRpcWorkflowManagerClient.java
Modified: oodt/trunk/CHANGES.txt
URL: http://svn.apache.org/viewvc/oodt/trunk/CHANGES.txt?rev=1182193&r1=1182192&r2=1182193&view=diff
==============================================================================
--- oodt/trunk/CHANGES.txt (original)
+++ oodt/trunk/CHANGES.txt Wed Oct 12 04:10:46 2011
@@ -4,6 +4,9 @@ Apache OODT Change Log
Release 0.4: Current Development
--------------------------------------------
+* OODT-323 Add new command line option in Workflow manager
+ client to get Workflow Instance Metadata (Sheryl John via mattmann)
+
* OODT-52 Update the CAS File Manager User Guide (thomas, goodale)
* OODT-322 LDAPAuthenticationProvider class requires
Modified: oodt/trunk/workflow/src/main/java/org/apache/oodt/cas/workflow/system/XmlRpcWorkflowManagerClient.java
URL: http://svn.apache.org/viewvc/oodt/trunk/workflow/src/main/java/org/apache/oodt/cas/workflow/system/XmlRpcWorkflowManagerClient.java?rev=1182193&r1=1182192&r2=1182193&view=diff
==============================================================================
--- oodt/trunk/workflow/src/main/java/org/apache/oodt/cas/workflow/system/XmlRpcWorkflowManagerClient.java (original)
+++ oodt/trunk/workflow/src/main/java/org/apache/oodt/cas/workflow/system/XmlRpcWorkflowManagerClient.java Wed Oct 12 04:10:46 2011
@@ -257,11 +257,9 @@ public class XmlRpcWorkflowManagerClient
}
}
- public Metadata getWorkflowInstanceMetadata(String wInstId)
- throws Exception {
+ public Metadata getWorkflowInstanceMetadata(String wInstId) throws Exception {
Vector argList = new Vector();
argList.add(wInstId);
-
Metadata met = null;
try {
@@ -699,6 +697,7 @@ public class XmlRpcWorkflowManagerClient
String getNextPageOperation = "--getNextPage --pageNum <num> [--status <status>]\n";
String getPrevPageOperation = "--getPrevPage --pageNum <num> [--status <status>]\n";
String getLastPageOperation = "--getLastPage [--status <status>]\n";
+ String getWorkflowInstMetOperation = "--getWorkflowInstMet --id <workflowInstId>\n";
String usage = "wmgr-client --url <url to xml rpc service> --operation [<operation> [params]]\n"
+ "operations:\n"
@@ -720,7 +719,8 @@ public class XmlRpcWorkflowManagerClient
+ getFirstPageOperation
+ getNextPageOperation
+ getPrevPageOperation
- + getLastPageOperation;
+ + getLastPageOperation
+ + getWorkflowInstMetOperation;
String operation = null, url = null;
@@ -1436,8 +1436,64 @@ public class XmlRpcWorkflowManagerClient
throw new RuntimeException(e);
}
- } else
- throw new IllegalArgumentException("Unknown operation: "
+ } else if (operation.equals("--getWorkflowInstMet")){
+
+ String wInstId = null;
+ List keys = null;
+ List values = null;
+
+ for (int i = 4; i < args.length; i++) {
+ if (args[i].equals("--id")) {
+ wInstId = args[++i];
+ }
+ }
+
+ if (wInstId == null) {
+ System.err.println(getWorkflowInstMetOperation);
+ System.exit(1);
+ }
+ //create client
+ XmlRpcWorkflowManagerClient client = new XmlRpcWorkflowManagerClient(
+ new URL(url));
+ Metadata met = null;
+ //get workflowInstanceMetadata
+ try {
+
+ met = client.getWorkflowInstanceMetadata(wInstId);
+ System.out.println("[id=" + wInstId + ", met={");
+
+ //get all keys for the wInstId
+ keys = met.getKeys();
+ if(keys != null){
+ for (Iterator i = keys.iterator(); i.hasNext();) {
+ String key = (String) i.next();
+ System.out.print(key + ":[");
+
+ //get all values for the key
+ values = met.getAllMetadata(key);
+ if(values != null){
+ for(Iterator j = values.iterator(); j.hasNext();){
+ String value = (String) j.next();
+ System.out.print(value);
+ if (j.hasNext())
+ System.out.print(", ");
+ }
+ }
+ System.out.print("]");
+ if(i.hasNext())
+ System.out.print(", ");
+ }
+ System.out.print("}]");
+ }
+
+
+ } catch (Exception e) {
+ e.printStackTrace();
+ throw new RuntimeException(e);
+ }
+
+
+ } else throw new IllegalArgumentException("Unknown operation: "
+ operation);
}
Added: oodt/trunk/workflow/src/test/org/apache/oodt/cas/workflow/system/TestXmlRpcWorkflowManagerClient.java
URL: http://svn.apache.org/viewvc/oodt/trunk/workflow/src/test/org/apache/oodt/cas/workflow/system/TestXmlRpcWorkflowManagerClient.java?rev=1182193&view=auto
==============================================================================
--- oodt/trunk/workflow/src/test/org/apache/oodt/cas/workflow/system/TestXmlRpcWorkflowManagerClient.java (added)
+++ oodt/trunk/workflow/src/test/org/apache/oodt/cas/workflow/system/TestXmlRpcWorkflowManagerClient.java Wed Oct 12 04:10:46 2011
@@ -0,0 +1,158 @@
+package org.apache.oodt.cas.workflow.system;
+
+//OODT imports
+import org.apache.commons.io.FileUtils;
+import org.apache.oodt.cas.metadata.Metadata;
+import org.apache.oodt.cas.workflow.instrepo.LuceneWorkflowInstanceRepository;
+import org.apache.oodt.cas.workflow.structs.Workflow;
+import org.apache.oodt.cas.workflow.structs.WorkflowCondition;
+import org.apache.oodt.cas.workflow.structs.WorkflowInstance;
+import org.apache.oodt.cas.workflow.structs.WorkflowTask;
+import org.apache.oodt.cas.workflow.structs.WorkflowTaskConfiguration;
+import org.apache.oodt.cas.workflow.structs.exceptions.InstanceRepositoryException;
+
+//JDK imports
+import java.io.File;
+import java.io.IOException;
+import java.util.Iterator;
+import java.util.List;
+import java.util.Vector;
+
+//Junit imports
+import junit.framework.TestCase;
+
+
+
+public class TestXmlRpcWorkflowManagerClient extends TestCase {
+
+ private static final String catalogPath = new File(
+ "./target/instTestMetCat").getAbsolutePath();
+
+ private LuceneWorkflowInstanceRepository repo = null;
+ private WorkflowInstance testWrkInst = null;
+ private Workflow testWrkFlw;
+ private WorkflowTask testTask;
+ private WorkflowCondition testCond;
+
+
+ private static final int stdPgSz = 20;
+
+ public TestXmlRpcWorkflowManagerClient() {
+
+ testWrkInst = new WorkflowInstance();
+ testWrkFlw = new Workflow();
+ testTask = new WorkflowTask();
+ testCond = new WorkflowCondition();
+ Metadata sharedContext = new Metadata();
+
+ //to check if the path already exists and to delete if it does exist
+ if (new File(catalogPath).exists()) {
+ try {
+ FileUtils.deleteDirectory(new File(catalogPath));
+ } catch (IOException e) {
+ fail(e.getMessage());
+ }
+ }
+ repo = new LuceneWorkflowInstanceRepository(catalogPath, stdPgSz);
+
+ testWrkFlw.setName("test.getMetadataWorkflow");
+ testWrkFlw.setId("test.id");
+ List tasks = new Vector();
+ List conds = new Vector();
+
+ testCond.setConditionId("test.cond.id");
+ testCond.setConditionInstanceClassName("test.class");
+ testCond.setConditionName("test.cond.name");
+ testCond.setOrder(1);
+ conds.add(testCond);
+
+ testTask.setTaskConfig(new WorkflowTaskConfiguration());
+ testTask.setTaskId("test.task.id");
+ testTask.setConditions(conds);
+ testTask.setOrder(1);
+ testTask.setTaskInstanceClassName("test.class");
+ testTask.setTaskName("test.task.name");
+ tasks.add(testTask);
+ testWrkFlw.setTasks(tasks);
+
+ testWrkInst.setCurrentTaskId("test.task");
+ testWrkInst.setStatus("STARTED");
+ testWrkInst.setWorkflow(testWrkFlw);
+
+ sharedContext.addMetadata("key1", "val1");
+ sharedContext.addMetadata("key1", "val2");
+ sharedContext.addMetadata("key1", "val3");
+ sharedContext.addMetadata("key2", "val4");
+ sharedContext.addMetadata("key2", "val5");
+ testWrkInst.setSharedContext(sharedContext);
+
+
+ }
+
+ public void testGetWorkflowInstanceMetadata()
+ {
+
+ try {
+ repo.addWorkflowInstance(testWrkInst);
+ } catch (InstanceRepositoryException e) {
+ fail(e.getMessage());
+ }
+ String testWrkInstId = testWrkInst.getId();
+ assertNotNull(testWrkInstId);
+
+ //get workflow instance from instance id
+ WorkflowInstance WInst = null;
+ try{
+ WInst = repo.getWorkflowInstanceById(testWrkInstId);
+ } catch (InstanceRepositoryException e) {
+ fail(e.getMessage());
+ }
+
+ assertNotNull(WInst);
+
+ //get Metadata for the workflow instance
+ Metadata met = null;
+ met = WInst.getSharedContext();
+ assertNotNull(met);
+
+ assertNotNull(met.getHashtable());
+ assertEquals(2, met.getHashtable().keySet().size());
+ assertNotNull(met.getAllMetadata("key1"));
+ assertEquals(3, met.getAllMetadata("key1").size());
+ assertNotNull(met.getAllMetadata("key2"));
+ assertEquals(2, met.getAllMetadata("key2").size());
+
+ //check key-values for key1
+ boolean checkVal1 = false, checkVal2 = false, checkVal3 = false;
+
+ for (Iterator i = met.getAllMetadata("key1").iterator(); i.hasNext();) {
+ String val = (String) i.next();
+ if (val.equals("val1")) {
+ checkVal1 = true;
+ } else if (val.equals("val2")) {
+ checkVal2 = true;
+ }else if (val.equals("val3")){
+ checkVal3 = true;
+ }
+ }
+
+ assert (checkVal1 && checkVal2 && checkVal3);
+
+ //check key-values for key2
+ boolean checkVal4 = false, checkVal5 = false;
+
+ for (Iterator i = met.getAllMetadata("key2").iterator(); i.hasNext();) {
+ String val = (String) i.next();
+ if (val.equals("val1")) {
+ checkVal4 = true;
+ } else if (val.equals("val2")) {
+ checkVal5 = true;
+ }
+ }
+
+ assert (checkVal4 && checkVal5);
+
+
+ }
+
+}