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