Author: lewismc
Date: Wed Sep 16 03:11:50 2015
New Revision: 1703320
URL: http://svn.apache.org/r1703320
Log:
OODT-866 Integrate Avro RPC with the workflow module
Added:
oodt/branches/avro_rpc/workflow/src/main/avro/
oodt/branches/avro_rpc/workflow/src/main/avro/types/
oodt/branches/avro_rpc/workflow/src/main/avro/types/AvroWorkflow.avsc
oodt/branches/avro_rpc/workflow/src/main/avro/types/AvroWorkflowCondition.avsc
oodt/branches/avro_rpc/workflow/src/main/avro/types/AvroWorkflowInstance.avsc
oodt/branches/avro_rpc/workflow/src/main/avro/types/AvroWorkflowInstancePage.avsc
oodt/branches/avro_rpc/workflow/src/main/avro/types/AvroWorkflowTask.avsc
oodt/branches/avro_rpc/workflow/src/main/avro/types/protocol.avdl
oodt/branches/avro_rpc/workflow/src/main/java/org/apache/oodt/cas/workflow/system/AvroRpcWorkflowManager.java
oodt/branches/avro_rpc/workflow/src/main/java/org/apache/oodt/cas/workflow/system/AvroRpcWorkflowManagerClient.java
oodt/branches/avro_rpc/workflow/src/main/java/org/apache/oodt/cas/workflow/system/WorkflowManager.java
oodt/branches/avro_rpc/workflow/src/main/java/org/apache/oodt/cas/workflow/system/WorkflowManagerClient.java
oodt/branches/avro_rpc/workflow/src/main/java/org/apache/oodt/cas/workflow/system/WorkflowManagerClientStarter.java
oodt/branches/avro_rpc/workflow/src/main/java/org/apache/oodt/cas/workflow/system/WorkflowManagerStarter.java
oodt/branches/avro_rpc/workflow/src/main/java/org/apache/oodt/cas/workflow/system/rpc/
oodt/branches/avro_rpc/workflow/src/main/java/org/apache/oodt/cas/workflow/system/rpc/AvroRpcWorkflowManagerFactory.java
oodt/branches/avro_rpc/workflow/src/main/java/org/apache/oodt/cas/workflow/system/rpc/RpcCommunicationFactory.java
oodt/branches/avro_rpc/workflow/src/main/java/org/apache/oodt/cas/workflow/system/rpc/WorkflowManagerFactory.java
oodt/branches/avro_rpc/workflow/src/main/java/org/apache/oodt/cas/workflow/system/rpc/XmlRpcWorkflowManagerFactory.java
oodt/branches/avro_rpc/workflow/src/main/java/org/apache/oodt/cas/workflow/util/AvroTypeFactory.java
oodt/branches/avro_rpc/workflow/src/test/java/org/apache/oodt/cas/workflow/system/MockWorkflowManagerClient.java
oodt/branches/avro_rpc/workflow/src/test/java/org/apache/oodt/cas/workflow/system/TestAvroRpcWorkflowManager.java
oodt/branches/avro_rpc/workflow/src/test/java/org/apache/oodt/cas/workflow/system/TestWorkflowManagerClient.java
Modified:
oodt/branches/avro_rpc/CHANGES.txt
oodt/branches/avro_rpc/crawler/src/main/java/org/apache/oodt/cas/crawl/action/WorkflowMgrStatusUpdate.java
oodt/branches/avro_rpc/filemgr/src/test/java/org/apache/oodt/cas/filemgr/system/TestXmlRpcFileManager.java
oodt/branches/avro_rpc/mvn/archetypes/radix/src/main/resources/archetype-resources/workflow/src/main/resources/bin/wmgr
oodt/branches/avro_rpc/mvn/archetypes/radix/src/main/resources/archetype-resources/workflow/src/main/resources/bin/wmgr-client
oodt/branches/avro_rpc/pcs/core/src/main/java/org/apache/oodt/pcs/util/WorkflowManagerUtils.java
oodt/branches/avro_rpc/pge/src/main/java/org/apache/oodt/cas/pge/PGETaskInstance.java
oodt/branches/avro_rpc/pge/src/test/java/org/apache/oodt/cas/pge/TestPGETaskInstance.java
oodt/branches/avro_rpc/protocol/imaps/pom.xml
oodt/branches/avro_rpc/protocol/imaps/src/test/java/org/apache/oodt/cas/protocol/imaps/TestImapsProtocol.java
oodt/branches/avro_rpc/webapp/components/src/main/java/org/apache/oodt/cas/webcomponents/workflow/WorkflowMgrConn.java
oodt/branches/avro_rpc/workflow/pom.xml
oodt/branches/avro_rpc/workflow/src/main/bin/wmgr
oodt/branches/avro_rpc/workflow/src/main/bin/wmgr-client
oodt/branches/avro_rpc/workflow/src/main/java/org/apache/oodt/cas/workflow/cli/action/GetFirstPageCliAction.java
oodt/branches/avro_rpc/workflow/src/main/java/org/apache/oodt/cas/workflow/cli/action/GetLastPageCliAction.java
oodt/branches/avro_rpc/workflow/src/main/java/org/apache/oodt/cas/workflow/cli/action/GetNextPageCliAction.java
oodt/branches/avro_rpc/workflow/src/main/java/org/apache/oodt/cas/workflow/cli/action/GetPrevPageCliAction.java
oodt/branches/avro_rpc/workflow/src/main/java/org/apache/oodt/cas/workflow/cli/action/GetWorkflowInstCliAction.java
oodt/branches/avro_rpc/workflow/src/main/java/org/apache/oodt/cas/workflow/cli/action/GetWorkflowInstsCliAction.java
oodt/branches/avro_rpc/workflow/src/main/java/org/apache/oodt/cas/workflow/cli/action/WorkflowCliAction.java
oodt/branches/avro_rpc/workflow/src/main/java/org/apache/oodt/cas/workflow/examples/BranchRedirector.java
oodt/branches/avro_rpc/workflow/src/main/java/org/apache/oodt/cas/workflow/examples/RandomStatusUpdateTask.java
oodt/branches/avro_rpc/workflow/src/main/java/org/apache/oodt/cas/workflow/structs/TaskJob.java
oodt/branches/avro_rpc/workflow/src/main/java/org/apache/oodt/cas/workflow/structs/WorkflowInstancePage.java
oodt/branches/avro_rpc/workflow/src/main/java/org/apache/oodt/cas/workflow/system/XmlRpcWorkflowManager.java
oodt/branches/avro_rpc/workflow/src/main/java/org/apache/oodt/cas/workflow/system/XmlRpcWorkflowManagerClient.java
oodt/branches/avro_rpc/workflow/src/main/java/org/apache/oodt/cas/workflow/tools/InstanceRepoCleaner.java
oodt/branches/avro_rpc/workflow/src/main/resources/workflow.properties
oodt/branches/avro_rpc/workflow/src/test/java/org/apache/oodt/cas/workflow/cli/TestWorkflowCli.java
oodt/branches/avro_rpc/workflow/src/test/java/org/apache/oodt/cas/workflow/cli/UseMockClientCmdLineActionStore.java
Modified: oodt/branches/avro_rpc/CHANGES.txt
URL:
http://svn.apache.org/viewvc/oodt/branches/avro_rpc/CHANGES.txt?rev=1703320&r1=1703319&r2=1703320&view=diff
==============================================================================
--- oodt/branches/avro_rpc/CHANGES.txt (original)
+++ oodt/branches/avro_rpc/CHANGES.txt Wed Sep 16 03:11:50 2015
@@ -3,12 +3,14 @@ Apache OODT Change Log
Current Development
+* OODT-866 Integrate Avro RPC with the workflow module (Radu Manole, mattmann,
lewismc)
+
* OODT-874 Corrected workflow/bin/wmgr and resource/bin/resmgr to make sure
they both delete the cas.xxxx.pid file when stopped using the 'stop'
command. (mallder)
* OODT-858 Integrate Avro RPC with the filemanager module
- OODT-856 Separate XMLRPC from OODT logic in the filemgr module (Radu Manole,
mattmann, lewismc))
+ OODT-856 Separate XMLRPC from OODT logic in the filemgr module (Radu Manole,
mattmann, lewismc)
* OODT-872 Upgrade Jena dependencies to org.apache.jena 3.0.0 (mattmann,
lewismc)
Modified:
oodt/branches/avro_rpc/crawler/src/main/java/org/apache/oodt/cas/crawl/action/WorkflowMgrStatusUpdate.java
URL:
http://svn.apache.org/viewvc/oodt/branches/avro_rpc/crawler/src/main/java/org/apache/oodt/cas/crawl/action/WorkflowMgrStatusUpdate.java?rev=1703320&r1=1703319&r2=1703320&view=diff
==============================================================================
---
oodt/branches/avro_rpc/crawler/src/main/java/org/apache/oodt/cas/crawl/action/WorkflowMgrStatusUpdate.java
(original)
+++
oodt/branches/avro_rpc/crawler/src/main/java/org/apache/oodt/cas/crawl/action/WorkflowMgrStatusUpdate.java
Wed Sep 16 03:11:50 2015
@@ -25,7 +25,8 @@ import org.apache.commons.lang.Validate;
import org.apache.oodt.cas.crawl.structs.exceptions.CrawlerActionException;
import org.apache.oodt.cas.filemgr.metadata.CoreMetKeys;
import org.apache.oodt.cas.metadata.Metadata;
-import org.apache.oodt.cas.workflow.system.XmlRpcWorkflowManagerClient;
+import org.apache.oodt.cas.workflow.system.WorkflowManagerClient;
+import org.apache.oodt.cas.workflow.system.rpc.RpcCommunicationFactory;
//Spring imports
import org.springframework.beans.factory.annotation.Required;
@@ -50,8 +51,7 @@ public class WorkflowMgrStatusUpdate ext
public boolean performAction(File product, Metadata productMetadata)
throws CrawlerActionException {
try {
- XmlRpcWorkflowManagerClient wClient = new XmlRpcWorkflowManagerClient(
- new URL(this.workflowMgrUrl));
+ WorkflowManagerClient wClient =
RpcCommunicationFactory.createClient(new URL(this.workflowMgrUrl));
String ingestSuffix = this.ingestSuffix;
return wClient.sendEvent(productMetadata.getMetadata(PRODUCT_TYPE)
+ ingestSuffix, productMetadata);
Modified:
oodt/branches/avro_rpc/filemgr/src/test/java/org/apache/oodt/cas/filemgr/system/TestXmlRpcFileManager.java
URL:
http://svn.apache.org/viewvc/oodt/branches/avro_rpc/filemgr/src/test/java/org/apache/oodt/cas/filemgr/system/TestXmlRpcFileManager.java?rev=1703320&r1=1703319&r2=1703320&view=diff
==============================================================================
---
oodt/branches/avro_rpc/filemgr/src/test/java/org/apache/oodt/cas/filemgr/system/TestXmlRpcFileManager.java
(original)
+++
oodt/branches/avro_rpc/filemgr/src/test/java/org/apache/oodt/cas/filemgr/system/TestXmlRpcFileManager.java
Wed Sep 16 03:11:50 2015
@@ -51,8 +51,8 @@ public class TestXmlRpcFileManager exten
private String luceneCatLoc;
- private static final String transferServiceFacClass = "org.apache.oodt.cas."
- + "filemgr.datatransfer.LocalDataTransferFactory";
+ private static final String transferServiceFacClass =
+ "org.apache.oodt.cas.filemgr.datatransfer.LocalDataTransferFactory";
private Properties initialProperties = new Properties(
System.getProperties());
@@ -169,7 +169,8 @@ public class TestXmlRpcFileManager exten
*
* @see junit.framework.TestCase#setUp()
*/
- protected void setUp() throws Exception {
+ @Override
+ public void setUp() throws Exception {
startXmlRpcFileManager();
ingestTestFile();
}
@@ -179,7 +180,8 @@ public class TestXmlRpcFileManager exten
*
* @see junit.framework.TestCase#tearDown()
*/
- protected void tearDown() throws Exception {
+ @Override
+ public void tearDown() throws Exception {
fm.shutdown();
fm = null;
Modified:
oodt/branches/avro_rpc/mvn/archetypes/radix/src/main/resources/archetype-resources/workflow/src/main/resources/bin/wmgr
URL:
http://svn.apache.org/viewvc/oodt/branches/avro_rpc/mvn/archetypes/radix/src/main/resources/archetype-resources/workflow/src/main/resources/bin/wmgr?rev=1703320&r1=1703319&r2=1703320&view=diff
==============================================================================
---
oodt/branches/avro_rpc/mvn/archetypes/radix/src/main/resources/archetype-resources/workflow/src/main/resources/bin/wmgr
(original)
+++
oodt/branches/avro_rpc/mvn/archetypes/radix/src/main/resources/archetype-resources/workflow/src/main/resources/bin/wmgr
Wed Sep 16 03:11:50 2015
@@ -86,7 +86,7 @@ if [ "$1" = "start" ]; then
-Djava.io.tmpdir="$OODT_TMPDIR" \
-Dorg.apache.oodt.cas.pge.task.metkeys.legacyMode="true" \
-Dorg.apache.oodt.cas.pge.task.status.legacyMode="true" \
- org.apache.oodt.cas.workflow.system.XmlRpcWorkflowManager \
+ org.apache.oodt.cas.workflow.system.WorkflowManagerStarter \
--portNum "$WORKFLOW_PORT" 2>&1 &
if [ ! -z "$WORKFLOW_PID" ]; then
Modified:
oodt/branches/avro_rpc/mvn/archetypes/radix/src/main/resources/archetype-resources/workflow/src/main/resources/bin/wmgr-client
URL:
http://svn.apache.org/viewvc/oodt/branches/avro_rpc/mvn/archetypes/radix/src/main/resources/archetype-resources/workflow/src/main/resources/bin/wmgr-client?rev=1703320&r1=1703319&r2=1703320&view=diff
==============================================================================
---
oodt/branches/avro_rpc/mvn/archetypes/radix/src/main/resources/archetype-resources/workflow/src/main/resources/bin/wmgr-client
(original)
+++
oodt/branches/avro_rpc/mvn/archetypes/radix/src/main/resources/archetype-resources/workflow/src/main/resources/bin/wmgr-client
Wed Sep 16 03:11:50 2015
@@ -72,4 +72,4 @@ cd "$WORKFLOW_HOME"/bin
-Djava.util.logging.config.file="$WORKFLOW_HOME"/etc/logging.properties \
-Dorg.apache.oodt.cas.cli.action.spring.config=file:"$WORKFLOW_HOME"/policy/cmd-line-actions.xml
\
-Dorg.apache.oodt.cas.cli.option.spring.config=file:"$WORKFLOW_HOME"/policy/cmd-line-options.xml
\
- org.apache.oodt.cas.workflow.system.XmlRpcWorkflowManagerClient "$@"
+ org.apache.oodt.cas.workflow.system.WorkflowManagerClientStarter "$@"
Modified:
oodt/branches/avro_rpc/pcs/core/src/main/java/org/apache/oodt/pcs/util/WorkflowManagerUtils.java
URL:
http://svn.apache.org/viewvc/oodt/branches/avro_rpc/pcs/core/src/main/java/org/apache/oodt/pcs/util/WorkflowManagerUtils.java?rev=1703320&r1=1703319&r2=1703320&view=diff
==============================================================================
---
oodt/branches/avro_rpc/pcs/core/src/main/java/org/apache/oodt/pcs/util/WorkflowManagerUtils.java
(original)
+++
oodt/branches/avro_rpc/pcs/core/src/main/java/org/apache/oodt/pcs/util/WorkflowManagerUtils.java
Wed Sep 16 03:11:50 2015
@@ -28,7 +28,8 @@ import java.util.logging.Logger;
//OODT imports
import org.apache.oodt.cas.workflow.structs.WorkflowInstance;
-import org.apache.oodt.cas.workflow.system.XmlRpcWorkflowManagerClient;
+import org.apache.oodt.cas.workflow.system.WorkflowManagerClient;
+import org.apache.oodt.cas.workflow.system.rpc.RpcCommunicationFactory;
import org.apache.xmlrpc.XmlRpcClient;
/**
@@ -42,7 +43,7 @@ import org.apache.xmlrpc.XmlRpcClient;
public class WorkflowManagerUtils {
/* our workflow manager client */
- private XmlRpcWorkflowManagerClient client;
+ private WorkflowManagerClient client;
/* our log stream */
private static final Logger LOG = Logger.getLogger(WorkflowManagerUtils.class
@@ -55,11 +56,11 @@ public class WorkflowManagerUtils {
}
public WorkflowManagerUtils(URL url) {
- this.client = new XmlRpcWorkflowManagerClient(url);
+ this.client = RpcCommunicationFactory.createClient(url);
this.wmUrl = url;
}
- public WorkflowManagerUtils(XmlRpcWorkflowManagerClient client) {
+ public WorkflowManagerUtils(WorkflowManagerClient client) {
this.client = client;
}
@@ -118,7 +119,7 @@ public class WorkflowManagerUtils {
/**
* @return the client
*/
- public XmlRpcWorkflowManagerClient getClient() {
+ public WorkflowManagerClient getClient() {
return client;
}
@@ -126,7 +127,7 @@ public class WorkflowManagerUtils {
* @param client
* the client to set
*/
- public void setClient(XmlRpcWorkflowManagerClient client) {
+ public void setClient(WorkflowManagerClient client) {
this.client = client;
if (this.client != null) {
this.wmUrl = this.client.getWorkflowManagerUrl();
Modified:
oodt/branches/avro_rpc/pge/src/main/java/org/apache/oodt/cas/pge/PGETaskInstance.java
URL:
http://svn.apache.org/viewvc/oodt/branches/avro_rpc/pge/src/main/java/org/apache/oodt/cas/pge/PGETaskInstance.java?rev=1703320&r1=1703319&r2=1703320&view=diff
==============================================================================
---
oodt/branches/avro_rpc/pge/src/main/java/org/apache/oodt/cas/pge/PGETaskInstance.java
(original)
+++
oodt/branches/avro_rpc/pge/src/main/java/org/apache/oodt/cas/pge/PGETaskInstance.java
Wed Sep 16 03:11:50 2015
@@ -85,7 +85,8 @@ import org.apache.oodt.cas.workflow.meta
import org.apache.oodt.cas.workflow.structs.WorkflowTaskConfiguration;
import org.apache.oodt.cas.workflow.structs.WorkflowTaskInstance;
import
org.apache.oodt.cas.workflow.structs.exceptions.WorkflowTaskInstanceException;
-import org.apache.oodt.cas.workflow.system.XmlRpcWorkflowManagerClient;
+import org.apache.oodt.cas.workflow.system.WorkflowManagerClient;
+import org.apache.oodt.cas.workflow.system.rpc.RpcCommunicationFactory;
import org.apache.oodt.cas.workflow.util.ScriptFile;
import org.apache.oodt.commons.exec.ExecUtils;
@@ -107,7 +108,7 @@ import com.google.common.collect.Lists;
public class PGETaskInstance implements WorkflowTaskInstance {
protected Logger logger = Logger.getLogger(PGETaskInstance.class.getName());
- protected XmlRpcWorkflowManagerClient wm;
+ protected WorkflowManagerClient wm;
protected String workflowInstId;
protected PgeMetadata pgeMetadata;
protected PgeConfig pgeConfig;
@@ -264,12 +265,12 @@ public class PGETaskInstance implements
pgeConfig.getPropertyAdderCustomArgs());
}
- protected XmlRpcWorkflowManagerClient createWorkflowManagerClient()
+ protected WorkflowManagerClient createWorkflowManagerClient()
throws Exception {
String url = pgeMetadata.getMetadata(WORKFLOW_MANAGER_URL);
logger.info("Creating WorkflowManager client for url [" + url + "]");
Validate.notNull(url, "Must specify " + WORKFLOW_MANAGER_URL);
- return new XmlRpcWorkflowManagerClient(new URL(url));
+ return RpcCommunicationFactory.createClient(new URL(url));
}
protected String getWorkflowInstanceId() throws Exception {
Modified:
oodt/branches/avro_rpc/pge/src/test/java/org/apache/oodt/cas/pge/TestPGETaskInstance.java
URL:
http://svn.apache.org/viewvc/oodt/branches/avro_rpc/pge/src/test/java/org/apache/oodt/cas/pge/TestPGETaskInstance.java?rev=1703320&r1=1703319&r2=1703320&view=diff
==============================================================================
---
oodt/branches/avro_rpc/pge/src/test/java/org/apache/oodt/cas/pge/TestPGETaskInstance.java
(original)
+++
oodt/branches/avro_rpc/pge/src/test/java/org/apache/oodt/cas/pge/TestPGETaskInstance.java
Wed Sep 16 03:11:50 2015
@@ -49,12 +49,14 @@ import java.util.HashMap;
import java.util.Map;
import java.util.Properties;
import java.util.UUID;
-import java.net.URL;
import java.util.logging.Handler;
import java.util.logging.Level;
import java.util.logging.Logger;
import javax.xml.parsers.DocumentBuilder;
import javax.xml.parsers.DocumentBuilderFactory;
+
+import org.apache.oodt.cas.workflow.system.WorkflowManagerClient;
+import org.apache.oodt.cas.workflow.system.XmlRpcWorkflowManagerClient;
import org.w3c.dom.Document;
import org.w3c.dom.Element;
import org.w3c.dom.Node;
@@ -85,7 +87,6 @@ import org.apache.oodt.cas.pge.metadata.
import org.apache.oodt.cas.pge.writers.MockDynamicConfigFileWriter;
import org.apache.oodt.cas.workflow.metadata.CoreMetKeys;
import org.apache.oodt.cas.workflow.structs.WorkflowTaskConfiguration;
-import org.apache.oodt.cas.workflow.system.XmlRpcWorkflowManagerClient;
//Google imports
import com.google.common.collect.Lists;
@@ -280,7 +281,7 @@ public class TestPGETaskInstance extends
PGETaskInstance pgeTask = createTestInstance();
pgeTask.pgeMetadata.replaceMetadata(WORKFLOW_MANAGER_URL,
"http://localhost:8888");
- XmlRpcWorkflowManagerClient wmClient =
+ WorkflowManagerClient wmClient =
pgeTask.createWorkflowManagerClient();
assertNotNull(wmClient);
}
@@ -360,7 +361,6 @@ public class TestPGETaskInstance extends
pgeTask.pgeMetadata.replaceMetadata(DUMP_METADATA, "true");
pgeTask.dumpMetadataIfRequested();
assertTrue(dumpMetFile.exists());
- @SuppressWarnings("unchecked")
String expectedMetString = "<?xml version=\"1.0\"
encoding=\"UTF-8\"?>"
+ "<cas:metadata
xmlns:cas=\"http://oodt.jpl.nasa.gov/1.0/cas\">"
+ "<keyval type=\"vector\">"
@@ -465,7 +465,7 @@ public class TestPGETaskInstance extends
pgeTask.pgeMetadata.replaceMetadata(ATTEMPT_INGEST_ALL,
Boolean.toString(true));
pgeTask.workflowInstId = "WorkflowInstanceId";
- pgeTask.wm = createMock(XmlRpcWorkflowManagerClient.class);
+ pgeTask.wm = createMock(WorkflowManagerClient.class);
expect(pgeTask.wm.updateWorkflowInstanceStatus(pgeTask.workflowInstId,
CRAWLING.getWorkflowStatusName())).andReturn(true);
replay(pgeTask.wm);
@@ -482,7 +482,7 @@ public class TestPGETaskInstance extends
verify(pc);
// Case: UpdateStatus Fail
- pgeTask.wm = createMock(XmlRpcWorkflowManagerClient.class);
+ pgeTask.wm = createMock(WorkflowManagerClient.class);
expect(pgeTask.wm.updateWorkflowInstanceStatus(pgeTask.workflowInstId,
CRAWLING.getWorkflowStatusName())).andReturn(false);
replay(pgeTask.wm);
@@ -499,7 +499,7 @@ public class TestPGETaskInstance extends
verify(pc);
// Case: UpdateStatus Success, VerifyIngest Fail
- pgeTask.wm = createMock(XmlRpcWorkflowManagerClient.class);
+ pgeTask.wm = createMock(WorkflowManagerClient.class);
expect(pgeTask.wm.updateWorkflowInstanceStatus(pgeTask.workflowInstId,
CRAWLING.getWorkflowStatusName())).andReturn(true);
replay(pgeTask.wm);
Modified: oodt/branches/avro_rpc/protocol/imaps/pom.xml
URL:
http://svn.apache.org/viewvc/oodt/branches/avro_rpc/protocol/imaps/pom.xml?rev=1703320&r1=1703319&r2=1703320&view=diff
==============================================================================
--- oodt/branches/avro_rpc/protocol/imaps/pom.xml (original)
+++ oodt/branches/avro_rpc/protocol/imaps/pom.xml Wed Sep 16 03:11:50 2015
@@ -83,14 +83,15 @@
<dependency>
<groupId>com.icegreen</groupId>
<artifactId>greenmail</artifactId>
- <version>1.3.1b</version>
+ <version>1.4.1</version>
<scope>test</scope>
</dependency>
- <dependency>
- <groupId>org.slf4j</groupId>
- <artifactId>slf4j-simple</artifactId>
- <version>1.3.1</version>
- </dependency>
+ <!-- Test scope -->
+ <dependency>
+ <groupId>org.slf4j</groupId>
+ <artifactId>slf4j-log4j12</artifactId>
+ <version>1.7.2</version>
+ </dependency>
<dependency>
<groupId>junit</groupId>
<artifactId>junit</artifactId>
Modified:
oodt/branches/avro_rpc/protocol/imaps/src/test/java/org/apache/oodt/cas/protocol/imaps/TestImapsProtocol.java
URL:
http://svn.apache.org/viewvc/oodt/branches/avro_rpc/protocol/imaps/src/test/java/org/apache/oodt/cas/protocol/imaps/TestImapsProtocol.java?rev=1703320&r1=1703319&r2=1703320&view=diff
==============================================================================
---
oodt/branches/avro_rpc/protocol/imaps/src/test/java/org/apache/oodt/cas/protocol/imaps/TestImapsProtocol.java
(original)
+++
oodt/branches/avro_rpc/protocol/imaps/src/test/java/org/apache/oodt/cas/protocol/imaps/TestImapsProtocol.java
Wed Sep 16 03:11:50 2015
@@ -19,6 +19,7 @@ package org.apache.oodt.cas.protocol.ima
//JDK imports
import java.io.File;
import java.io.IOException;
+import java.net.ServerSocket;
import java.util.List;
//Apache imports
@@ -33,6 +34,7 @@ import org.apache.oodt.cas.protocol.exce
import com.icegreen.greenmail.util.DummySSLSocketFactory;
import com.icegreen.greenmail.util.GreenMail;
import com.icegreen.greenmail.util.GreenMailUtil;
+import com.icegreen.greenmail.util.ServerSetupTest;
//JUnit imports
import junit.framework.TestCase;
@@ -51,7 +53,8 @@ public class TestImapsProtocol extends T
public void setUp() {
System.setProperty("mail.imaps.socketFactory.class",
DummySSLSocketFactory.class.getCanonicalName());
System.setProperty("mail.imaps.socketFactory.fallback",
"false");
- gMail = new GreenMail();
+ //gMail = new GreenMail(new ServerSetup(findAvailablePort(3035,
8000), null, "imaps"));
+ gMail = new GreenMail(ServerSetupTest.ALL);
gMail.setUser("[email protected]", "password");
gMail.start();
ImapsProtocol.port = gMail.getImaps().getPort();
@@ -109,4 +112,17 @@ public class TestImapsProtocol extends T
emails = imapsProtocol.ls();
assertEquals(0, emails.size());
}
+
+ private static int findAvailablePort(int min, int max) {
+ for (int port = min; port < max; port++) {
+ try {
+ new ServerSocket(port).close();
+ return port;
+ } catch (IOException e) {
+ // Must already be taken
+ }
+ }
+ throw new IllegalStateException("Could not find available port in range
"
+ + min + " to " + max);
+ }
}
Modified:
oodt/branches/avro_rpc/webapp/components/src/main/java/org/apache/oodt/cas/webcomponents/workflow/WorkflowMgrConn.java
URL:
http://svn.apache.org/viewvc/oodt/branches/avro_rpc/webapp/components/src/main/java/org/apache/oodt/cas/webcomponents/workflow/WorkflowMgrConn.java?rev=1703320&r1=1703319&r2=1703320&view=diff
==============================================================================
---
oodt/branches/avro_rpc/webapp/components/src/main/java/org/apache/oodt/cas/webcomponents/workflow/WorkflowMgrConn.java
(original)
+++
oodt/branches/avro_rpc/webapp/components/src/main/java/org/apache/oodt/cas/webcomponents/workflow/WorkflowMgrConn.java
Wed Sep 16 03:11:50 2015
@@ -30,7 +30,8 @@ import org.apache.oodt.cas.workflow.stru
import org.apache.oodt.cas.workflow.structs.WorkflowInstance;
import org.apache.oodt.cas.workflow.structs.WorkflowInstancePage;
import org.apache.oodt.cas.workflow.structs.WorkflowTask;
-import org.apache.oodt.cas.workflow.system.XmlRpcWorkflowManagerClient;
+import org.apache.oodt.cas.workflow.system.WorkflowManagerClient;
+import org.apache.oodt.cas.workflow.system.rpc.RpcCommunicationFactory;
/**
*
@@ -47,11 +48,11 @@ public class WorkflowMgrConn implements
private static final Logger LOG = Logger.getLogger(WorkflowMgrConn.class
.getName());
- private XmlRpcWorkflowManagerClient wm;
+ private WorkflowManagerClient wm;
public WorkflowMgrConn(String wmUrlStr) {
try {
- this.wm = new XmlRpcWorkflowManagerClient(new URL(wmUrlStr));
+ this.wm = RpcCommunicationFactory.createClient(new URL(wmUrlStr));
} catch (MalformedURLException e) {
LOG.log(Level.SEVERE, "Unable to contact Workflow Manager at URL: ["
+ wmUrlStr + "]: Message: " + e.getMessage());
@@ -184,7 +185,7 @@ public class WorkflowMgrConn implements
}
}
- public XmlRpcWorkflowManagerClient getWM() {
+ public WorkflowManagerClient getWM() {
return this.wm;
}
Modified: oodt/branches/avro_rpc/workflow/pom.xml
URL:
http://svn.apache.org/viewvc/oodt/branches/avro_rpc/workflow/pom.xml?rev=1703320&r1=1703319&r2=1703320&view=diff
==============================================================================
--- oodt/branches/avro_rpc/workflow/pom.xml (original)
+++ oodt/branches/avro_rpc/workflow/pom.xml Wed Sep 16 03:11:50 2015
@@ -74,7 +74,43 @@ the License.
</goals>
</execution>
</executions>
- </plugin>
+ </plugin>
+ <plugin>
+ <groupId>org.apache.avro</groupId>
+ <artifactId>avro-maven-plugin</artifactId>
+ <version>1.7.7</version>
+ <configuration>
+ <stringType>String</stringType>
+ <detail>true</detail>
+ </configuration>
+ <executions>
+ <execution>
+ <id>schemas</id>
+ <configuration>
+ <imports>
+
<import>${basedir}/src/main/avro/types/AvroWorkflowCondition.avsc</import>
+
<import>${basedir}/src/main/avro/types/AvroWorkflowTask.avsc</import>
+
<import>${basedir}/src/main/avro/types/AvroWorkflow.avsc</import>
+
<import>${basedir}/src/main/avro/types/AvroWorkflowInstance.avsc</import>
+
<import>${basedir}/src/main/avro/types/AvroWorkflowInstancePage.avsc</import>
+ </imports>
+ </configuration>
+ <goals>
+ <goal>schema</goal>
+ </goals>
+ </execution>
+ <execution>
+ <id>protocol</id>
+ <configuration><imports>
+ <import>${basedir}/src/main/avro/types</import>
+ </imports>
+ </configuration>
+ <goals>
+ <goal>idl-protocol</goal>
+ </goals>
+ </execution>
+ </executions>
+ </plugin>
</plugins>
</build>
<profiles>
@@ -108,6 +144,16 @@ the License.
</profiles>
<dependencies>
<dependency>
+ <groupId>org.apache.avro</groupId>
+ <artifactId>avro</artifactId>
+ <version>1.7.7</version>
+ </dependency>
+ <dependency>
+ <groupId>org.apache.avro</groupId>
+ <artifactId>avro-ipc</artifactId>
+ <version>1.7.7</version>
+ </dependency>
+ <dependency>
<groupId>org.apache.oodt</groupId>
<artifactId>oodt-commons</artifactId>
<version>${project.parent.version}</version>
Added: oodt/branches/avro_rpc/workflow/src/main/avro/types/AvroWorkflow.avsc
URL:
http://svn.apache.org/viewvc/oodt/branches/avro_rpc/workflow/src/main/avro/types/AvroWorkflow.avsc?rev=1703320&view=auto
==============================================================================
--- oodt/branches/avro_rpc/workflow/src/main/avro/types/AvroWorkflow.avsc
(added)
+++ oodt/branches/avro_rpc/workflow/src/main/avro/types/AvroWorkflow.avsc Wed
Sep 16 03:11:50 2015
@@ -0,0 +1,14 @@
+{
+ "type":"record",
+ "name":"AvroWorkflow",
+ "default":"null",
+ "namespace":"org.apache.oodt.cas.workflow.struct.avrotypes",
+ "imports":["AvroWorkflowTask.avsc","AvroWorkflowCondition.avsc"],
+ "fields":[
+ {"name":"name","type":["null","string"]},
+ {"name":"id","type":["null","string"]},
+ {"name":"tasks","type":{"type":"array","items":"AvroWorkflowTask"}},
+
{"name":"preConditions","type":{"type":"array","items":"AvroWorkflowCondition"}},
+
{"name":"postConditions","type":{"type":"array","items":"AvroWorkflowCondition"}}
+ ]
+}
\ No newline at end of file
Added:
oodt/branches/avro_rpc/workflow/src/main/avro/types/AvroWorkflowCondition.avsc
URL:
http://svn.apache.org/viewvc/oodt/branches/avro_rpc/workflow/src/main/avro/types/AvroWorkflowCondition.avsc?rev=1703320&view=auto
==============================================================================
---
oodt/branches/avro_rpc/workflow/src/main/avro/types/AvroWorkflowCondition.avsc
(added)
+++
oodt/branches/avro_rpc/workflow/src/main/avro/types/AvroWorkflowCondition.avsc
Wed Sep 16 03:11:50 2015
@@ -0,0 +1,15 @@
+{
+ "type":"record",
+ "name":"AvroWorkflowCondition",
+ "default":"null",
+ "namespace":"org.apache.oodt.cas.workflow.struct.avrotypes",
+ "fields":[
+ {"name":"conditionName","type":["null","string"]},
+ {"name":"conditionId","type":["null","string"]},
+ {"name":"conditionInstanceClassName","type":["null","string"]},
+ {"name":"order","type":"int","default":-1},
+ {"name":"condConfig","type":{"type":"map","values":"string"}},
+ {"name":"timeoutSeconds","type":"long"},
+ {"name":"optional","type":"boolean"}
+ ]
+}
\ No newline at end of file
Added:
oodt/branches/avro_rpc/workflow/src/main/avro/types/AvroWorkflowInstance.avsc
URL:
http://svn.apache.org/viewvc/oodt/branches/avro_rpc/workflow/src/main/avro/types/AvroWorkflowInstance.avsc?rev=1703320&view=auto
==============================================================================
---
oodt/branches/avro_rpc/workflow/src/main/avro/types/AvroWorkflowInstance.avsc
(added)
+++
oodt/branches/avro_rpc/workflow/src/main/avro/types/AvroWorkflowInstance.avsc
Wed Sep 16 03:11:50 2015
@@ -0,0 +1,19 @@
+{
+ "type":"record",
+ "name":"AvroWorkflowInstance",
+ "default":"null",
+ "namespace":"org.apache.oodt.cas.workflow.struct.avrotypes",
+ "imports":["AvroWorkflow.avsc"],
+ "fields":[
+ {"name":"workflow","type":"AvroWorkflow"},
+ {"name":"id","type":["null","string"]},
+ {"name":"status","type":["null","string"]},
+ {"name":"currentTaskId","type":["null","string"]},
+ {"name":"startDateTimeIsoStr","type":["null","string"]},
+ {"name":"endDateTimeIsoStr","type":["null","string"]},
+ {"name":"currentTaskStartDateTimeIsoStr","type":["null","string"]},
+ {"name":"currentTaskEndDateTimeIsoStr","type":["null","string"]},
+ {"name":"sharedContext","type":{"type":"map","values":"string"}},
+ {"name":"priority","type":["null","double"]}
+ ]
+}
\ No newline at end of file
Added:
oodt/branches/avro_rpc/workflow/src/main/avro/types/AvroWorkflowInstancePage.avsc
URL:
http://svn.apache.org/viewvc/oodt/branches/avro_rpc/workflow/src/main/avro/types/AvroWorkflowInstancePage.avsc?rev=1703320&view=auto
==============================================================================
---
oodt/branches/avro_rpc/workflow/src/main/avro/types/AvroWorkflowInstancePage.avsc
(added)
+++
oodt/branches/avro_rpc/workflow/src/main/avro/types/AvroWorkflowInstancePage.avsc
Wed Sep 16 03:11:50 2015
@@ -0,0 +1,13 @@
+{
+ "type":"record",
+ "name":"AvroWorkflowInstancePage",
+ "default":"null",
+ "namespace":"org.apache.oodt.cas.workflow.struct.avrotypes",
+ "imports":["AvroWorkflowInstance.avsc"],
+ "fields":[
+ {"name":"pageNum","type":"int","default":-1},
+ {"name":"totalPages","type":"int","default":-1},
+ {"name":"pageSize","type":"int","default":-1},
+
{"name":"pageWorkflows","type":{"type":"array","items":"AvroWorkflowInstance"}}
+ ]
+}
\ No newline at end of file
Added: oodt/branches/avro_rpc/workflow/src/main/avro/types/AvroWorkflowTask.avsc
URL:
http://svn.apache.org/viewvc/oodt/branches/avro_rpc/workflow/src/main/avro/types/AvroWorkflowTask.avsc?rev=1703320&view=auto
==============================================================================
--- oodt/branches/avro_rpc/workflow/src/main/avro/types/AvroWorkflowTask.avsc
(added)
+++ oodt/branches/avro_rpc/workflow/src/main/avro/types/AvroWorkflowTask.avsc
Wed Sep 16 03:11:50 2015
@@ -0,0 +1,20 @@
+{
+ "type":"record",
+ "name":"AvroWorkflowTask",
+ "default":"null",
+ "namespace":"org.apache.oodt.cas.workflow.struct.avrotypes",
+ "imports":"AvroWorkflowCondition.avsc",
+ "fields":[
+ {"name":"taskId","type":["null","string"]},
+ {"name":"taskName","type":["null","string"]},
+ {"name":"taskConfig","type":{"type":"map","values":"string"}},
+
{"name":"preConditions","type":{"type":"array","items":"AvroWorkflowCondition"}},
+
{"name":"postConditions","type":{"type":"array","items":"AvroWorkflowCondition"}},
+ {"name":"taskInstanceClassName","type":["null","string"]},
+ {"name":"order","type":"int","default":-1},
+ {"name":"requiredMetFields","type":{"type":"array","items":"string"}},
+ {"name":"startDate","type":["null","string"]},
+ {"name":"endDate","type":["null","string"]}
+ ]
+
+}
\ No newline at end of file
Added: oodt/branches/avro_rpc/workflow/src/main/avro/types/protocol.avdl
URL:
http://svn.apache.org/viewvc/oodt/branches/avro_rpc/workflow/src/main/avro/types/protocol.avdl?rev=1703320&view=auto
==============================================================================
--- oodt/branches/avro_rpc/workflow/src/main/avro/types/protocol.avdl (added)
+++ oodt/branches/avro_rpc/workflow/src/main/avro/types/protocol.avdl Wed Sep
16 03:11:50 2015
@@ -0,0 +1,75 @@
+@namespace("org.apache.oodt.cas.workflow.struct.avrotypes")
+protocol WorkflowManager {
+import schema "AvroWorkflowCondition.avsc";
+import schema "AvroWorkflowTask.avsc";
+import schema "AvroWorkflow.avsc";
+import schema "AvroWorkflowInstance.avsc";
+import schema "AvroWorkflowInstancePage.avsc";
+
+ boolean refreshRepository();
+
+ string executeDynamicWorkflow(array<string> taskIds, map<string> metadata);
+
+ array<string> getRegisteredEvents();
+
+ AvroWorkflowInstancePage getFirstPage();
+
+ AvroWorkflowInstancePage getNextPage(AvroWorkflowInstancePage currentPage);
+
+ AvroWorkflowInstancePage getPrevPage(AvroWorkflowInstancePage currentPage);
+
+ AvroWorkflowInstancePage getLastPage();
+
+ AvroWorkflowInstancePage paginateWorkflowInstancesOfStatus(int pageNum,
string status);
+
+ AvroWorkflowInstancePage paginateWorkflowInstances(int pageNum);
+
+ array<AvroWorkflow> getWorkflowsByEvent(string eventName);
+
+ map<string> getWorkflowInstanceMetadata(string wInstId);
+
+ boolean handleEvent(string eventName, map<string> metadata);
+
+ AvroWorkflowInstance getWorkflowInstanceById(string wInstId);
+
+ boolean stopWorkflowInstance(string workflowInstId);
+
+ boolean pauseWorkflowInstance(string workflowInstId);
+
+ boolean resumeWorkflowInstance(string workflowInstId);
+
+ double getWorkflowWallClockMinutes(string workflowInstId);
+
+ double getWorkflowCurrentTaskWallClockMinutes(string workflowInstId);
+
+ int getNumWorkflowInstancesByStatus(string status);
+
+ int getNumWorkflowInstances();
+
+ array<AvroWorkflowInstance> getWorkflowInstancesByStatus(string status);
+
+ array<AvroWorkflowInstance> getWorkflowInstances();
+
+ array<AvroWorkflow> getWorkflows();
+
+ AvroWorkflowTask getTaskById(string taskId);
+
+ AvroWorkflowCondition getConditionById(string conditionId);
+
+ AvroWorkflow getWorkflowById(string workflowId);
+
+ boolean updateMetadataForWorkflow(
+ string workflowInstId, map<string> metadata);
+
+ boolean updateWorkflowInstance(AvroWorkflowInstance instance);
+
+ boolean setWorkflowInstanceCurrentTaskStartDateTime(
+ string wInstId, string startDateTimeIsoStr);
+
+ boolean setWorkflowInstanceCurrentTaskEndDateTime(
+ string wInstId, string endDateTimeIsoStr);
+
+ boolean updateWorkflowInstanceStatus(
+ string workflowInstId, string status);
+
+}
\ No newline at end of file
Modified: oodt/branches/avro_rpc/workflow/src/main/bin/wmgr
URL:
http://svn.apache.org/viewvc/oodt/branches/avro_rpc/workflow/src/main/bin/wmgr?rev=1703320&r1=1703319&r2=1703320&view=diff
==============================================================================
--- oodt/branches/avro_rpc/workflow/src/main/bin/wmgr (original)
+++ oodt/branches/avro_rpc/workflow/src/main/bin/wmgr Wed Sep 16 03:11:50 2015
@@ -53,7 +53,7 @@ case "$1" in
-Dorg.apache.oodt.cas.workflow.properties=${CAS_WORKFLOW_PROPS} \
-Dorg.apache.oodt.cas.pge.task.metkeys.legacyMode="true" \
-Dorg.apache.oodt.cas.pge.task.status.legacyMode="true" \
- org.apache.oodt.cas.workflow.system.XmlRpcWorkflowManager --portNum
$SERVER_PORT &
+ org.apache.oodt.cas.workflow.system.WorkflowManagerStarter --portNum
$SERVER_PORT &
echo $! >${RUN_HOME}/cas.workflow.pid
echo "OK"
sleep 5
Modified: oodt/branches/avro_rpc/workflow/src/main/bin/wmgr-client
URL:
http://svn.apache.org/viewvc/oodt/branches/avro_rpc/workflow/src/main/bin/wmgr-client?rev=1703320&r1=1703319&r2=1703320&view=diff
==============================================================================
--- oodt/branches/avro_rpc/workflow/src/main/bin/wmgr-client (original)
+++ oodt/branches/avro_rpc/workflow/src/main/bin/wmgr-client Wed Sep 16
03:11:50 2015
@@ -28,4 +28,4 @@ $JAVA_HOME/bin/java \
-Djava.util.logging.config.file=../etc/logging.properties \
-Dorg.apache.oodt.cas.cli.action.spring.config=../policy/cmd-line-actions.xml \
-Dorg.apache.oodt.cas.cli.option.spring.config=../policy/cmd-line-options.xml \
- org.apache.oodt.cas.workflow.system.XmlRpcWorkflowManagerClient $*
+ org.apache.oodt.cas.workflow.system.WorkflowManagerClientStarter $*
Modified:
oodt/branches/avro_rpc/workflow/src/main/java/org/apache/oodt/cas/workflow/cli/action/GetFirstPageCliAction.java
URL:
http://svn.apache.org/viewvc/oodt/branches/avro_rpc/workflow/src/main/java/org/apache/oodt/cas/workflow/cli/action/GetFirstPageCliAction.java?rev=1703320&r1=1703319&r2=1703320&view=diff
==============================================================================
---
oodt/branches/avro_rpc/workflow/src/main/java/org/apache/oodt/cas/workflow/cli/action/GetFirstPageCliAction.java
(original)
+++
oodt/branches/avro_rpc/workflow/src/main/java/org/apache/oodt/cas/workflow/cli/action/GetFirstPageCliAction.java
Wed Sep 16 03:11:50 2015
@@ -23,7 +23,7 @@ import java.util.List;
import org.apache.oodt.cas.cli.exception.CmdLineActionException;
import org.apache.oodt.cas.workflow.structs.WorkflowInstance;
import org.apache.oodt.cas.workflow.structs.WorkflowInstancePage;
-import org.apache.oodt.cas.workflow.system.XmlRpcWorkflowManagerClient;
+import org.apache.oodt.cas.workflow.system.WorkflowManagerClient;
/**
* Gets the first page of workflow instances.
@@ -39,7 +39,7 @@ public class GetFirstPageCliAction exten
public void execute(ActionMessagePrinter printer)
throws CmdLineActionException {
try {
- XmlRpcWorkflowManagerClient client = getClient();
+ WorkflowManagerClient client = getClient();
WorkflowInstancePage page = null;
if (status != null && !status.equals("")) {
page = client.paginateWorkflowInstances(1, status);
Modified:
oodt/branches/avro_rpc/workflow/src/main/java/org/apache/oodt/cas/workflow/cli/action/GetLastPageCliAction.java
URL:
http://svn.apache.org/viewvc/oodt/branches/avro_rpc/workflow/src/main/java/org/apache/oodt/cas/workflow/cli/action/GetLastPageCliAction.java?rev=1703320&r1=1703319&r2=1703320&view=diff
==============================================================================
---
oodt/branches/avro_rpc/workflow/src/main/java/org/apache/oodt/cas/workflow/cli/action/GetLastPageCliAction.java
(original)
+++
oodt/branches/avro_rpc/workflow/src/main/java/org/apache/oodt/cas/workflow/cli/action/GetLastPageCliAction.java
Wed Sep 16 03:11:50 2015
@@ -23,7 +23,7 @@ import java.util.List;
import org.apache.oodt.cas.cli.exception.CmdLineActionException;
import org.apache.oodt.cas.workflow.structs.WorkflowInstance;
import org.apache.oodt.cas.workflow.structs.WorkflowInstancePage;
-import org.apache.oodt.cas.workflow.system.XmlRpcWorkflowManagerClient;
+import org.apache.oodt.cas.workflow.system.WorkflowManagerClient;
/**
* A {@link CmdLineOption} which gets the last page of workflows.
@@ -39,7 +39,7 @@ public class GetLastPageCliAction extend
public void execute(ActionMessagePrinter printer)
throws CmdLineActionException {
try {
- XmlRpcWorkflowManagerClient client = getClient();
+ WorkflowManagerClient client = getClient();
WorkflowInstancePage page = null;
if (status != null && !status.equals("")) {
WorkflowInstancePage firstPage = client.paginateWorkflowInstances(
Modified:
oodt/branches/avro_rpc/workflow/src/main/java/org/apache/oodt/cas/workflow/cli/action/GetNextPageCliAction.java
URL:
http://svn.apache.org/viewvc/oodt/branches/avro_rpc/workflow/src/main/java/org/apache/oodt/cas/workflow/cli/action/GetNextPageCliAction.java?rev=1703320&r1=1703319&r2=1703320&view=diff
==============================================================================
---
oodt/branches/avro_rpc/workflow/src/main/java/org/apache/oodt/cas/workflow/cli/action/GetNextPageCliAction.java
(original)
+++
oodt/branches/avro_rpc/workflow/src/main/java/org/apache/oodt/cas/workflow/cli/action/GetNextPageCliAction.java
Wed Sep 16 03:11:50 2015
@@ -26,7 +26,7 @@ import org.apache.commons.lang.Validate;
import org.apache.oodt.cas.cli.exception.CmdLineActionException;
import org.apache.oodt.cas.workflow.structs.WorkflowInstance;
import org.apache.oodt.cas.workflow.structs.WorkflowInstancePage;
-import org.apache.oodt.cas.workflow.system.XmlRpcWorkflowManagerClient;
+import org.apache.oodt.cas.workflow.system.WorkflowManagerClient;
/**
* A {@link CmdLineAction} which gets the next page of workflows.
@@ -45,7 +45,7 @@ public class GetNextPageCliAction extend
Validate.isTrue(pageNum != -1);
try {
- XmlRpcWorkflowManagerClient client = getClient();
+ WorkflowManagerClient client = getClient();
WorkflowInstancePage page = null;
if (status != null && !status.equals("")) {
page = client.paginateWorkflowInstances(pageNum + 1, status);
Modified:
oodt/branches/avro_rpc/workflow/src/main/java/org/apache/oodt/cas/workflow/cli/action/GetPrevPageCliAction.java
URL:
http://svn.apache.org/viewvc/oodt/branches/avro_rpc/workflow/src/main/java/org/apache/oodt/cas/workflow/cli/action/GetPrevPageCliAction.java?rev=1703320&r1=1703319&r2=1703320&view=diff
==============================================================================
---
oodt/branches/avro_rpc/workflow/src/main/java/org/apache/oodt/cas/workflow/cli/action/GetPrevPageCliAction.java
(original)
+++
oodt/branches/avro_rpc/workflow/src/main/java/org/apache/oodt/cas/workflow/cli/action/GetPrevPageCliAction.java
Wed Sep 16 03:11:50 2015
@@ -26,7 +26,7 @@ import org.apache.commons.lang.Validate;
import org.apache.oodt.cas.cli.exception.CmdLineActionException;
import org.apache.oodt.cas.workflow.structs.WorkflowInstance;
import org.apache.oodt.cas.workflow.structs.WorkflowInstancePage;
-import org.apache.oodt.cas.workflow.system.XmlRpcWorkflowManagerClient;
+import org.apache.oodt.cas.workflow.system.WorkflowManagerClient;
/**
* A {@link CmdLineAction} which gets the previous page of workflows.
@@ -45,7 +45,7 @@ public class GetPrevPageCliAction extend
Validate.isTrue(pageNum != -1);
try {
- XmlRpcWorkflowManagerClient client = getClient();
+ WorkflowManagerClient client = getClient();
WorkflowInstancePage page = null;
if (status != null && !status.equals("")) {
page = client.paginateWorkflowInstances(pageNum - 1, status);
Modified:
oodt/branches/avro_rpc/workflow/src/main/java/org/apache/oodt/cas/workflow/cli/action/GetWorkflowInstCliAction.java
URL:
http://svn.apache.org/viewvc/oodt/branches/avro_rpc/workflow/src/main/java/org/apache/oodt/cas/workflow/cli/action/GetWorkflowInstCliAction.java?rev=1703320&r1=1703319&r2=1703320&view=diff
==============================================================================
---
oodt/branches/avro_rpc/workflow/src/main/java/org/apache/oodt/cas/workflow/cli/action/GetWorkflowInstCliAction.java
(original)
+++
oodt/branches/avro_rpc/workflow/src/main/java/org/apache/oodt/cas/workflow/cli/action/GetWorkflowInstCliAction.java
Wed Sep 16 03:11:50 2015
@@ -19,7 +19,7 @@ package org.apache.oodt.cas.workflow.cli
//OODT imports
import org.apache.oodt.cas.cli.exception.CmdLineActionException;
import org.apache.oodt.cas.workflow.structs.WorkflowInstance;
-import org.apache.oodt.cas.workflow.system.XmlRpcWorkflowManagerClient;
+import org.apache.oodt.cas.workflow.system.WorkflowManagerClient;
/**
* A {@link CmdLineAction} which get WorkflowInstance information by given
@@ -35,7 +35,7 @@ public class GetWorkflowInstCliAction ex
public void execute(ActionMessagePrinter printer)
throws CmdLineActionException {
try {
- XmlRpcWorkflowManagerClient client = getClient();
+ WorkflowManagerClient client = getClient();
WorkflowInstance inst = client.getWorkflowInstanceById(instanceId);
if (inst == null) {
throw new Exception(
Modified:
oodt/branches/avro_rpc/workflow/src/main/java/org/apache/oodt/cas/workflow/cli/action/GetWorkflowInstsCliAction.java
URL:
http://svn.apache.org/viewvc/oodt/branches/avro_rpc/workflow/src/main/java/org/apache/oodt/cas/workflow/cli/action/GetWorkflowInstsCliAction.java?rev=1703320&r1=1703319&r2=1703320&view=diff
==============================================================================
---
oodt/branches/avro_rpc/workflow/src/main/java/org/apache/oodt/cas/workflow/cli/action/GetWorkflowInstsCliAction.java
(original)
+++
oodt/branches/avro_rpc/workflow/src/main/java/org/apache/oodt/cas/workflow/cli/action/GetWorkflowInstsCliAction.java
Wed Sep 16 03:11:50 2015
@@ -22,7 +22,7 @@ import java.util.List;
//OODT imports
import org.apache.oodt.cas.cli.exception.CmdLineActionException;
import org.apache.oodt.cas.workflow.structs.WorkflowInstance;
-import org.apache.oodt.cas.workflow.system.XmlRpcWorkflowManagerClient;
+import org.apache.oodt.cas.workflow.system.WorkflowManagerClient;
/**
* A {@link CmdLineAction} which lists workflow instances current managed by
@@ -37,7 +37,7 @@ public class GetWorkflowInstsCliAction e
throws CmdLineActionException {
try {
- XmlRpcWorkflowManagerClient client = getClient();
+ WorkflowManagerClient client = getClient();
@SuppressWarnings("unchecked")
List<WorkflowInstance> insts = client.getWorkflowInstances();
Modified:
oodt/branches/avro_rpc/workflow/src/main/java/org/apache/oodt/cas/workflow/cli/action/WorkflowCliAction.java
URL:
http://svn.apache.org/viewvc/oodt/branches/avro_rpc/workflow/src/main/java/org/apache/oodt/cas/workflow/cli/action/WorkflowCliAction.java?rev=1703320&r1=1703319&r2=1703320&view=diff
==============================================================================
---
oodt/branches/avro_rpc/workflow/src/main/java/org/apache/oodt/cas/workflow/cli/action/WorkflowCliAction.java
(original)
+++
oodt/branches/avro_rpc/workflow/src/main/java/org/apache/oodt/cas/workflow/cli/action/WorkflowCliAction.java
Wed Sep 16 03:11:50 2015
@@ -25,7 +25,8 @@ import org.apache.commons.lang.Validate;
//OODT imports
import org.apache.oodt.cas.cli.action.CmdLineAction;
-import org.apache.oodt.cas.workflow.system.XmlRpcWorkflowManagerClient;
+import org.apache.oodt.cas.workflow.system.WorkflowManagerClient;
+import org.apache.oodt.cas.workflow.system.rpc.RpcCommunicationFactory;
/**
* Base {@link CmdLineAction} for Workflow Manager.
@@ -34,24 +35,24 @@ import org.apache.oodt.cas.workflow.syst
*/
public abstract class WorkflowCliAction extends CmdLineAction {
- private XmlRpcWorkflowManagerClient client;
+ private WorkflowManagerClient client;
public String getUrl() {
return System.getProperty("org.apache.oodt.cas.workflow.url");
}
- protected XmlRpcWorkflowManagerClient getClient()
+ protected WorkflowManagerClient getClient()
throws MalformedURLException {
Validate.notNull(getUrl());
if (client != null) {
return client;
} else {
- return new XmlRpcWorkflowManagerClient(new URL(getUrl()));
+ return RpcCommunicationFactory.createClient(new URL(getUrl()));
}
}
- public void setClient(XmlRpcWorkflowManagerClient client) {
+ public void setClient(WorkflowManagerClient client) {
this.client = client;
}
}
Modified:
oodt/branches/avro_rpc/workflow/src/main/java/org/apache/oodt/cas/workflow/examples/BranchRedirector.java
URL:
http://svn.apache.org/viewvc/oodt/branches/avro_rpc/workflow/src/main/java/org/apache/oodt/cas/workflow/examples/BranchRedirector.java?rev=1703320&r1=1703319&r2=1703320&view=diff
==============================================================================
---
oodt/branches/avro_rpc/workflow/src/main/java/org/apache/oodt/cas/workflow/examples/BranchRedirector.java
(original)
+++
oodt/branches/avro_rpc/workflow/src/main/java/org/apache/oodt/cas/workflow/examples/BranchRedirector.java
Wed Sep 16 03:11:50 2015
@@ -26,7 +26,8 @@ import org.apache.oodt.cas.workflow.meta
import org.apache.oodt.cas.workflow.structs.WorkflowTaskConfiguration;
import org.apache.oodt.cas.workflow.structs.WorkflowTaskInstance;
import
org.apache.oodt.cas.workflow.structs.exceptions.WorkflowTaskInstanceException;
-import org.apache.oodt.cas.workflow.system.XmlRpcWorkflowManagerClient;
+import org.apache.oodt.cas.workflow.system.WorkflowManagerClient;
+import org.apache.oodt.cas.workflow.system.rpc.RpcCommunicationFactory;
/**
*
@@ -54,11 +55,11 @@ public class BranchRedirector implements
@Override
public void run(Metadata metadata, WorkflowTaskConfiguration config)
throws WorkflowTaskInstanceException {
- XmlRpcWorkflowManagerClient wm = null;
+ WorkflowManagerClient wm = null;
try {
- wm = new XmlRpcWorkflowManagerClient(new URL(
- metadata.getMetadata(CoreMetKeys.WORKFLOW_MANAGER_URL)));
+ wm = RpcCommunicationFactory.createClient(new URL(
+ metadata.getMetadata(CoreMetKeys.WORKFLOW_MANAGER_URL)));
wm.sendEvent(config.getProperty("eventName"), metadata);
} catch (Exception e) {
throw new WorkflowTaskInstanceException(e.getMessage());
Modified:
oodt/branches/avro_rpc/workflow/src/main/java/org/apache/oodt/cas/workflow/examples/RandomStatusUpdateTask.java
URL:
http://svn.apache.org/viewvc/oodt/branches/avro_rpc/workflow/src/main/java/org/apache/oodt/cas/workflow/examples/RandomStatusUpdateTask.java?rev=1703320&r1=1703319&r2=1703320&view=diff
==============================================================================
---
oodt/branches/avro_rpc/workflow/src/main/java/org/apache/oodt/cas/workflow/examples/RandomStatusUpdateTask.java
(original)
+++
oodt/branches/avro_rpc/workflow/src/main/java/org/apache/oodt/cas/workflow/examples/RandomStatusUpdateTask.java
Wed Sep 16 03:11:50 2015
@@ -28,8 +28,9 @@ import org.apache.oodt.cas.metadata.Meta
import org.apache.oodt.cas.workflow.structs.WorkflowInstance;
import org.apache.oodt.cas.workflow.structs.WorkflowTaskConfiguration;
import org.apache.oodt.cas.workflow.structs.WorkflowTaskInstance;
+import org.apache.oodt.cas.workflow.system.WorkflowManagerClient;
import org.apache.oodt.cas.workflow.system.XmlRpcWorkflowManager;
-import org.apache.oodt.cas.workflow.system.XmlRpcWorkflowManagerClient;
+import org.apache.oodt.cas.workflow.system.rpc.RpcCommunicationFactory;
/**
* @author mattmann
@@ -48,7 +49,7 @@ public class RandomStatusUpdateTask impl
private final int numStatusesToDisplay = 10;
- private XmlRpcWorkflowManagerClient client = null;
+ private WorkflowManagerClient client = null;
/*
* (non-Javadoc)
@@ -91,7 +92,7 @@ public class RandomStatusUpdateTask impl
private void setWorkflowMgrUrl(String wmUrlStr) {
System.out.println("Connecting to workflow mgr: ["+wmUrlStr+"]");
- this.client = new XmlRpcWorkflowManagerClient(safeGetUrl(wmUrlStr));
+ this.client =
RpcCommunicationFactory.createClient(safeGetUrl(wmUrlStr));
}
private URL safeGetUrl(String urlStr) {
Modified:
oodt/branches/avro_rpc/workflow/src/main/java/org/apache/oodt/cas/workflow/structs/TaskJob.java
URL:
http://svn.apache.org/viewvc/oodt/branches/avro_rpc/workflow/src/main/java/org/apache/oodt/cas/workflow/structs/TaskJob.java?rev=1703320&r1=1703319&r2=1703320&view=diff
==============================================================================
---
oodt/branches/avro_rpc/workflow/src/main/java/org/apache/oodt/cas/workflow/structs/TaskJob.java
(original)
+++
oodt/branches/avro_rpc/workflow/src/main/java/org/apache/oodt/cas/workflow/structs/TaskJob.java
Wed Sep 16 03:11:50 2015
@@ -27,6 +27,8 @@ import java.util.Date;
import java.util.logging.Level;
import java.util.logging.Logger;
+import org.apache.oodt.cas.workflow.system.WorkflowManagerClient;
+import org.apache.oodt.cas.workflow.system.rpc.RpcCommunicationFactory;
import org.apache.oodt.commons.util.DateConvert;
//OODT imports
@@ -36,7 +38,6 @@ import org.apache.oodt.cas.resource.stru
import org.apache.oodt.cas.resource.structs.exceptions.JobInputException;
import org.apache.oodt.cas.workflow.metadata.CoreMetKeys;
import
org.apache.oodt.cas.workflow.structs.exceptions.WorkflowTaskInstanceException;
-import org.apache.oodt.cas.workflow.system.XmlRpcWorkflowManagerClient;
import org.apache.oodt.cas.workflow.util.GenericWorkflowObjectFactory;
/**
@@ -117,7 +118,7 @@ public class TaskJob implements JobInsta
private void updateStatus(String status, Metadata met) {
String workflowInstId = met.getMetadata(WORKFLOW_INST_ID);
- XmlRpcWorkflowManagerClient wClient = getWmClientFromMetadata(met);
+ WorkflowManagerClient wClient = getWmClientFromMetadata(met);
try {
if (!wClient.updateWorkflowInstanceStatus(workflowInstId, status))
{
@@ -131,7 +132,7 @@ public class TaskJob implements JobInsta
private void updateMetadata(Metadata met) {
String workflowInstId = met.getMetadata(WORKFLOW_INST_ID);
- XmlRpcWorkflowManagerClient wClient = getWmClientFromMetadata(met);
+ WorkflowManagerClient wClient = getWmClientFromMetadata(met);
try {
if (!wClient.updateMetadataForWorkflow(workflowInstId, met)) {
@@ -146,7 +147,7 @@ public class TaskJob implements JobInsta
private void setWorkflowInstanceCurrentTaskStartDateTime(
String startDateTime, Metadata met) {
String workflowInstId = met.getMetadata(WORKFLOW_INST_ID);
- XmlRpcWorkflowManagerClient wClient = getWmClientFromMetadata(met);
+ WorkflowManagerClient wClient = getWmClientFromMetadata(met);
try {
if (!wClient.setWorkflowInstanceCurrentTaskStartDateTime(
@@ -162,7 +163,7 @@ public class TaskJob implements JobInsta
private void setWorkflowInstanceCurrentTaskEndDateTime(String endDateTime,
Metadata met) {
String workflowInstId = met.getMetadata(WORKFLOW_INST_ID);
- XmlRpcWorkflowManagerClient wClient = getWmClientFromMetadata(met);
+ WorkflowManagerClient wClient = getWmClientFromMetadata(met);
try {
if (!wClient.setWorkflowInstanceCurrentTaskEndDateTime(
@@ -175,7 +176,7 @@ public class TaskJob implements JobInsta
}
}
- private XmlRpcWorkflowManagerClient getWmClientFromMetadata(Metadata met) {
+ private WorkflowManagerClient getWmClientFromMetadata(Metadata met) {
String workflowMgrUrlStr = met.getMetadata(WORKFLOW_MANAGER_URL);
if (workflowMgrUrlStr == null
|| (workflowMgrUrlStr != null &&
workflowMgrUrlStr.equals(""))) {
@@ -184,8 +185,7 @@ public class TaskJob implements JobInsta
workflowMgrUrlStr = "http://localhost:9001";
}
- return new XmlRpcWorkflowManagerClient(
- safeGetUrlFromString(workflowMgrUrlStr));
+ return
RpcCommunicationFactory.createClient(safeGetUrlFromString(workflowMgrUrlStr));
}
private String getHostname() {
Modified:
oodt/branches/avro_rpc/workflow/src/main/java/org/apache/oodt/cas/workflow/structs/WorkflowInstancePage.java
URL:
http://svn.apache.org/viewvc/oodt/branches/avro_rpc/workflow/src/main/java/org/apache/oodt/cas/workflow/structs/WorkflowInstancePage.java?rev=1703320&r1=1703319&r2=1703320&view=diff
==============================================================================
---
oodt/branches/avro_rpc/workflow/src/main/java/org/apache/oodt/cas/workflow/structs/WorkflowInstancePage.java
(original)
+++
oodt/branches/avro_rpc/workflow/src/main/java/org/apache/oodt/cas/workflow/structs/WorkflowInstancePage.java
Wed Sep 16 03:11:50 2015
@@ -41,7 +41,7 @@ public class WorkflowInstancePage {
/* the size of the number of workflows on this page */
private int pageSize = -1;
- /* the list of produdcts associated with this page */
+ /* the list of products associated with this page */
private List pageWorkflows = null;
/**
Added:
oodt/branches/avro_rpc/workflow/src/main/java/org/apache/oodt/cas/workflow/system/AvroRpcWorkflowManager.java
URL:
http://svn.apache.org/viewvc/oodt/branches/avro_rpc/workflow/src/main/java/org/apache/oodt/cas/workflow/system/AvroRpcWorkflowManager.java?rev=1703320&view=auto
==============================================================================
---
oodt/branches/avro_rpc/workflow/src/main/java/org/apache/oodt/cas/workflow/system/AvroRpcWorkflowManager.java
(added)
+++
oodt/branches/avro_rpc/workflow/src/main/java/org/apache/oodt/cas/workflow/system/AvroRpcWorkflowManager.java
Wed Sep 16 03:11:50 2015
@@ -0,0 +1,717 @@
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one or more
+ * contributor license agreements. See the NOTICE file distributed with
+ * this work for additional information regarding copyright ownership.
+ * The ASF licenses this file to You under the Apache License, Version 2.0
+ * (the "License"); you may not use this file except in compliance with
+ * the License. You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package org.apache.oodt.cas.workflow.system;
+
+import com.google.common.base.Preconditions;
+import org.apache.avro.AvroRemoteException;
+import org.apache.avro.ipc.NettyServer;
+import org.apache.avro.ipc.Server;
+import org.apache.avro.ipc.specific.SpecificResponder;
+import org.apache.oodt.cas.metadata.Metadata;
+import org.apache.oodt.cas.workflow.engine.ThreadPoolWorkflowEngineFactory;
+import org.apache.oodt.cas.workflow.engine.WorkflowEngine;
+import
org.apache.oodt.cas.workflow.repository.DataSourceWorkflowRepositoryFactory;
+import org.apache.oodt.cas.workflow.repository.WorkflowRepository;
+import org.apache.oodt.cas.workflow.struct.avrotypes.AvroWorkflowInstancePage;
+import org.apache.oodt.cas.workflow.struct.avrotypes.AvroWorkflowInstance;
+import org.apache.oodt.cas.workflow.struct.avrotypes.AvroWorkflow;
+import org.apache.oodt.cas.workflow.struct.avrotypes.AvroWorkflowTask;
+import org.apache.oodt.cas.workflow.struct.avrotypes.AvroWorkflowCondition;
+import org.apache.oodt.cas.workflow.structs.WorkflowInstancePage;
+import org.apache.oodt.cas.workflow.structs.Workflow;
+import org.apache.oodt.cas.workflow.structs.WorkflowTask;
+import org.apache.oodt.cas.workflow.structs.WorkflowInstance;
+import org.apache.oodt.cas.workflow.structs.WorkflowCondition;
+import org.apache.oodt.cas.workflow.structs.exceptions.EngineException;
+import
org.apache.oodt.cas.workflow.structs.exceptions.InstanceRepositoryException;
+import org.apache.oodt.cas.workflow.structs.exceptions.RepositoryException;
+import org.apache.oodt.cas.workflow.util.AvroTypeFactory;
+import java.io.File;
+import java.io.FileInputStream;
+import java.io.FileNotFoundException;
+import java.io.IOException;
+import java.net.URL;
+import java.net.InetAddress;
+import java.net.MalformedURLException;
+import java.net.UnknownHostException;
+import java.net.InetSocketAddress;
+import java.util.List;
+import java.util.Map;
+import java.util.ArrayList;
+import java.util.Iterator;
+import java.util.logging.Level;
+import java.util.logging.Logger;
+
+
+import static
org.apache.oodt.cas.workflow.util.GenericWorkflowObjectFactory.getWorkflowEngineFromClassName;
+import static
org.apache.oodt.cas.workflow.util.GenericWorkflowObjectFactory.getWorkflowRepositoryFromClassName;
+
+/**
+ * @author radu
+ *
+ * <p>
+ * The Avro RPC based workflow manager.
+ * </p>
+ */
+public class AvroRpcWorkflowManager implements
WorkflowManager,org.apache.oodt.cas.workflow.struct.avrotypes.WorkflowManager {
+
+ private int webServerPort;
+
+ private Server server;
+
+ private static final Logger LOG =
Logger.getLogger(AvroRpcWorkflowManager.class.getName());
+
+ private final WorkflowEngine engine;
+
+ private WorkflowRepository repo;
+
+
+ public AvroRpcWorkflowManager(){
+ this(DEFAULT_WEB_SERVER_PORT);
+ }
+
+ public AvroRpcWorkflowManager(int port){
+ Preconditions.checkArgument(port > 0, "Must specify a port greater
than 0");
+ webServerPort = port;
+
+ engine = getWorkflowEngineFromProperty();
+ engine.setWorkflowManagerUrl(safeGetUrlFromString("http://"
+ + getHostname() + ":" + this.webServerPort));
+ repo = getWorkflowRepositoryFromProperty();
+
+ // start up the server
+ server = new NettyServer(new SpecificResponder(
+
org.apache.oodt.cas.workflow.struct.avrotypes.WorkflowManager.class,this),
+ new InetSocketAddress(this.webServerPort));
+ server.start();
+ LOG.log(Level.INFO, "Workflow Manager started by "
+ + System.getProperty("user.name", "unknown"));
+
+ }
+
+ @Override
+ public boolean shutdown() {
+ if (server != null) {
+ server.close();
+ server = null;
+ return true;
+ } else
+ return false;
+ }
+
+ @Override
+ public boolean refreshRepository() throws AvroRemoteException {
+ repo = getWorkflowRepositoryFromProperty();
+ return true;
+ }
+
+ @Override
+ public String executeDynamicWorkflow(List<String> taskIds, Map<String,
String> metadata)
+ throws AvroRemoteException {
+ try {
+ if (taskIds == null || (taskIds != null && taskIds.size() == 0))
+ throw new RepositoryException(
+ "Must specify task identifiers to build dynamic
workflows!");
+ Workflow dynamicWorkflow = new Workflow();
+
+ for (String taskId : taskIds) {
+ WorkflowTask task = this.repo.getWorkflowTaskById(taskId);
+ if (task == null)
+ throw new RepositoryException("Dynamic workflow task: [" +
taskId
+ + "] is not defined!");
+ dynamicWorkflow.getTasks().add(task);
+ }
+
+ dynamicWorkflow.setId(this.repo.addWorkflow(dynamicWorkflow));
+ dynamicWorkflow.setName("Dynamic Workflow-" +
dynamicWorkflow.getId());
+
+ Metadata met = new Metadata();
+ met.addMetadata(AvroTypeFactory.getMetadata(metadata));
+
+ WorkflowInstance inst = this.engine.startWorkflow(dynamicWorkflow,
met);
+ return inst.getId();
+
+ }catch (RepositoryException e){
+ throw new AvroRemoteException(e);
+ }catch (EngineException e){
+ throw new AvroRemoteException(e);
+ }
+
+ }
+
+ @Override
+ public List<String> getRegisteredEvents() throws AvroRemoteException {
+ List events = null;
+ try {
+ events = repo.getRegisteredEvents();
+ return events;
+
+ } catch (RepositoryException e) {
+ e.printStackTrace();
+ throw new AvroRemoteException(
+ "Exception getting registered events from repository:
Message: "
+ + e.getMessage());
+ }
+ }
+
+ @Override
+ public AvroWorkflowInstancePage getFirstPage() throws AvroRemoteException {
+ WorkflowInstancePage page = engine.getInstanceRepository()
+ .getFirstPage();
+ if (page != null) {
+ populateWorkflows(page.getPageWorkflows());
+ return AvroTypeFactory.getAvroWorkflowInstancePage(page);
+ } else
+ return
AvroTypeFactory.getAvroWorkflowInstancePage(WorkflowInstancePage
+ .blankPage());
+
+ }
+
+ @Override
+ public AvroWorkflowInstancePage getNextPage(AvroWorkflowInstancePage
currentPage) throws AvroRemoteException {
+ // first unpack current page
+ WorkflowInstancePage currPage =
AvroTypeFactory.getWorkflowInstancePage(currentPage);
+ WorkflowInstancePage page = engine.getInstanceRepository().getNextPage(
+ currPage);
+ if (page != null) {
+ populateWorkflows(page.getPageWorkflows());
+ return AvroTypeFactory.getAvroWorkflowInstancePage(page);
+ } else
+ return
AvroTypeFactory.getAvroWorkflowInstancePage(WorkflowInstancePage
+ .blankPage());
+ }
+
+ @Override
+ public AvroWorkflowInstancePage getPrevPage(AvroWorkflowInstancePage
currentPage) throws AvroRemoteException {
+ // first unpack current page
+ WorkflowInstancePage currPage =
AvroTypeFactory.getWorkflowInstancePage(currentPage);
+ WorkflowInstancePage page = engine.getInstanceRepository().getPrevPage(
+ currPage);
+ if (page != null) {
+ populateWorkflows(page.getPageWorkflows());
+ return AvroTypeFactory.getAvroWorkflowInstancePage(page);
+ } else
+ return
AvroTypeFactory.getAvroWorkflowInstancePage(WorkflowInstancePage
+ .blankPage());
+ }
+
+ @Override
+ public AvroWorkflowInstancePage getLastPage() throws AvroRemoteException {
+ WorkflowInstancePage page = engine.getInstanceRepository()
+ .getLastPage();
+ if (page != null) {
+ populateWorkflows(page.getPageWorkflows());
+ return AvroTypeFactory.getAvroWorkflowInstancePage(page);
+ } else
+ return
AvroTypeFactory.getAvroWorkflowInstancePage(WorkflowInstancePage
+ .blankPage());
+ }
+
+ @Override
+ public AvroWorkflowInstancePage paginateWorkflowInstancesOfStatus(int
pageNum, String status)
+ throws AvroRemoteException{
+ WorkflowInstancePage page = null;
+ try {
+ page = engine.getInstanceRepository()
+ .getPagedWorkflows(pageNum, status);
+ if (page != null) {
+ populateWorkflows(page.getPageWorkflows());
+ return AvroTypeFactory.getAvroWorkflowInstancePage(page);
+ } else
+ return
AvroTypeFactory.getAvroWorkflowInstancePage(WorkflowInstancePage
+ .blankPage());
+ } catch (InstanceRepositoryException e) {
+ throw new AvroRemoteException(e);
+ }
+ }
+
+ @Override
+ public AvroWorkflowInstancePage paginateWorkflowInstances(int pageNum)
throws AvroRemoteException {
+ WorkflowInstancePage page = null;
+ try {
+ page = engine.getInstanceRepository()
+ .getPagedWorkflows(pageNum);
+ if (page != null) {
+ populateWorkflows(page.getPageWorkflows());
+ return AvroTypeFactory.getAvroWorkflowInstancePage(page);
+ } else
+ return
AvroTypeFactory.getAvroWorkflowInstancePage(WorkflowInstancePage
+ .blankPage());
+ } catch (InstanceRepositoryException e) {
+ throw new AvroRemoteException(e);
+ }
+
+ }
+
+ @Override
+ public List<AvroWorkflow> getWorkflowsByEvent(String eventName) throws
AvroRemoteException {
+ List workflows = null;
+ try {
+ workflows = repo.getWorkflowsForEvent(eventName);
+ if (workflows != null)
+ return AvroTypeFactory.getAvroWorkflows(workflows);
+ else
+ return new ArrayList();
+ } catch (Exception e) {
+ e.printStackTrace();
+ throw new AvroRemoteException(
+ "Exception getting workflows for event: " + eventName
+ + " from repository: Message: " + e.getMessage());
+ }
+ }
+
+ @Override
+ public Map<String, String> getWorkflowInstanceMetadata(String wInstId)
throws AvroRemoteException {
+ Metadata met = engine.getWorkflowInstanceMetadata(wInstId);
+ return AvroTypeFactory.getAvroMetadata(met);
+ }
+
+
+ @Override
+ public boolean handleEvent(String eventName, Map<String, String> metadata)
throws AvroRemoteException {
+ LOG.log(Level.INFO, "WorkflowManager: Received event: " + eventName);
+
+ List workflows = null;
+
+ try {
+ workflows = repo.getWorkflowsForEvent(eventName);
+ } catch (Exception e) {
+ e.printStackTrace();
+ throw new AvroRemoteException(
+ "Exception getting workflows associated with event: "
+ + eventName + ": Message: " + e.getMessage());
+ }
+
+ if (workflows != null) {
+ for (Iterator i = workflows.iterator(); i.hasNext();) {
+ Workflow w = (Workflow) i.next();
+ LOG.log(Level.INFO, "WorkflowManager: Workflow " + w.getName()
+ + " retrieved for event " + eventName);
+
+ Metadata m = new Metadata();
+ m.addMetadata(AvroTypeFactory.getMetadata(metadata));
+
+ try {
+ engine.startWorkflow(w, m);
+ } catch (Exception e) {
+ e.printStackTrace();
+ throw new AvroRemoteException(
+ "Engine exception when starting workflow: "
+ + w.getName() + ": Message: "
+ + e.getMessage());
+ }
+ }
+ return true;
+ } else
+ return false;
+
+ }
+
+ @Override
+ public AvroWorkflowInstance getWorkflowInstanceById(String wInstId) throws
AvroRemoteException {
+ WorkflowInstance inst = null;
+
+ try {
+ inst = engine.getInstanceRepository().getWorkflowInstanceById(
+ wInstId);
+ } catch (Exception e) {
+ e.printStackTrace();
+ LOG.log(Level.WARNING,
+ "Error obtaining workflow instance with ID: [" + wInstId
+ + "]: Message: " + e.getMessage());
+ inst = new WorkflowInstance();
+ }
+
+ return AvroTypeFactory.getAvroWorkflowInstance(inst);
+
+ }
+
+ @Override
+ public boolean stopWorkflowInstance(String workflowInstId) throws
AvroRemoteException {
+ engine.stopWorkflow(workflowInstId);
+ return true;
+ }
+
+ @Override
+ public boolean pauseWorkflowInstance(String workflowInstId) throws
AvroRemoteException {
+ engine.pauseWorkflowInstance(workflowInstId);
+ return true;
+ }
+
+ @Override
+ public boolean resumeWorkflowInstance(String workflowInstId) throws
AvroRemoteException {
+ engine.resumeWorkflowInstance(workflowInstId);
+ return true;
+ }
+
+
+
+ @Override
+ public double getWorkflowWallClockMinutes(String workflowInstId) throws
AvroRemoteException {
+ return engine.getWallClockMinutes(workflowInstId);
+ }
+
+ @Override
+ public double getWorkflowCurrentTaskWallClockMinutes(String
workflowInstId) throws AvroRemoteException {
+ return engine.getCurrentTaskWallClockMinutes(workflowInstId);
+ }
+
+ @Override
+ public int getNumWorkflowInstancesByStatus(String status) throws
AvroRemoteException {
+ try {
+ return
engine.getInstanceRepository().getNumWorkflowInstancesByStatus(
+ status);
+ } catch (InstanceRepositoryException e) {
+ throw new AvroRemoteException(e);
+ }
+ }
+
+ @Override
+ public int getNumWorkflowInstances() throws AvroRemoteException {
+ try {
+ return engine.getInstanceRepository().getNumWorkflowInstances();
+ } catch (InstanceRepositoryException e) {
+ e.printStackTrace();
+ throw new AvroRemoteException(e);
+ }
+ }
+
+
+ // gimiky trebuie sa ma uit mai bine sa o examinez
--------------------------------
+ @Override
+ public List<AvroWorkflowInstance> getWorkflowInstancesByStatus(String
status) throws AvroRemoteException {
+ List workflowInsts = null;
+ List<AvroWorkflowInstance> avroWorkflowInstances = new
ArrayList<AvroWorkflowInstance>();
+ try {
+ workflowInsts = engine.getInstanceRepository()
+ .getWorkflowInstancesByStatus(status);
+ } catch (Exception e) {
+ e.printStackTrace();
+ LOG.log(Level.WARNING,
+ "Exception getting workflow instances by status: Message:
["
+ + e.getMessage() + "]");
+ return avroWorkflowInstances;
//AvroTypeFactory.getAvroWorkflowInstances(workflowInsts);
+ }
+
+ if (workflowInsts != null) {
+ LOG.log(Level.INFO,
+ "Getting workflow instances by status: retrieved: "
+ + workflowInsts.size() + " instances");
+
+ try {
+
+ for (WorkflowInstance wi :(List<WorkflowInstance>)
workflowInsts){
+ // pick up the description of the workflow
+ Workflow wDesc =
repo.getWorkflowById(wi.getWorkflow().getId());
+ // 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 = wi.getWorkflow();
+ repo.addWorkflow(wDesc);
+ }
+ wi.setWorkflow(wDesc);
+
avroWorkflowInstances.add(AvroTypeFactory.getAvroWorkflowInstance(wi));
+
+ }
+ } catch (Exception e) {
+ e.printStackTrace();
+ throw new AvroRemoteException(
+ "Exception getting workflow instances by statusfrom
workflow engine: Message: "
+ + e.getMessage());
+ }
+ }
+
+ return avroWorkflowInstances;
+
+ }
+
+ @Override
+ public List<AvroWorkflowInstance> getWorkflowInstances() throws
AvroRemoteException {
+ List workflowInsts = null;
+ List<AvroWorkflowInstance> avroWorkflowInstances = new
ArrayList<AvroWorkflowInstance>();
+
+ try {
+ workflowInsts = engine.getInstanceRepository()
+ .getWorkflowInstances();
+ } catch (Exception e) {
+ e.printStackTrace();
+ LOG.log(Level.WARNING,
+ "Exception getting workflow instances: Message: ["
+ + e.getMessage() + "]");
+ return avroWorkflowInstances;
+ }
+
+ if (workflowInsts != null) {
+ LOG.log(Level.INFO, "Getting workflow instances: retrieved: "
+ + workflowInsts.size() + " instances");
+
+ try {
+ for (WorkflowInstance wi :(List<WorkflowInstance>)
workflowInsts){
+ // pick up the description of the workflow
+ Workflow wDesc = repo.getWorkflowById(wi.getWorkflow()
+ .getId());
+ // 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 = wi.getWorkflow();
+ repo.addWorkflow(wDesc);
+ }
+ wi.setWorkflow(wDesc);
+
avroWorkflowInstances.add(AvroTypeFactory.getAvroWorkflowInstance(wi));
+
+ }
+ return avroWorkflowInstances;
+ } catch (Exception e) {
+ //e.printStackTrace();
+ throw new AvroRemoteException(
+ "Exception getting workflow instances from workflow
engine: Message: "
+ + e.getMessage());
+ }
+ } else
+ return null;
+
+ }
+
+ @Override
+ public List<AvroWorkflow> getWorkflows() throws AvroRemoteException {
+ List workflowList = null;
+ try {
+ workflowList = repo.getWorkflows();
+ } catch (RepositoryException e) {
+ throw new AvroRemoteException(e);
+ }
+
+ if (workflowList != null) {
+ LOG.log(Level.INFO, "Getting workflows: retrieved: "
+ + workflowList.size() + " workflows");
+
+ try {
+ return AvroTypeFactory.getAvroWorkflows(workflowList);
+ } catch (Exception e) {
+ e.printStackTrace();
+ throw new AvroRemoteException(
+ "Exception getting workflows from repository: Message:
"
+ + e.getMessage());
+ }
+
+ } else
+ return null;
+
+ }
+
+ @Override
+ public AvroWorkflowTask getTaskById(String taskId) throws
AvroRemoteException {
+ try {
+ WorkflowTask t = repo.getWorkflowTaskById(taskId);
+ return AvroTypeFactory.getAvroWorkflowTask(t);
+ } catch (Exception e) {
+ e.printStackTrace();
+ throw new AvroRemoteException(
+ "Exception getting task by id: Message: " +
e.getMessage());
+ }
+ }
+
+ @Override
+ public AvroWorkflowCondition getConditionById(String conditionId) throws
AvroRemoteException {
+ try {
+ WorkflowCondition c = repo.getWorkflowConditionById(conditionId);
+ return AvroTypeFactory.getAvroWorkflowCondition(c);
+ } catch (Exception e) {
+ e.printStackTrace();
+ throw new AvroRemoteException(
+ "Exception getting condition by id: Message: "
+ + e.getMessage());
+ }
+
+ }
+
+ @Override
+ public AvroWorkflow getWorkflowById(String workflowId) throws
AvroRemoteException {
+ try {
+ Workflow workflow = repo.getWorkflowById(workflowId);
+ return AvroTypeFactory.getAvroWorkflow(workflow);
+ } catch (Exception e) {
+ e.printStackTrace();
+ throw new AvroRemoteException(
+ "Exception getting workflow by id from the repository:
Message: "
+ + e.getMessage());
+ }
+
+ }
+
+ @Override
+ public synchronized boolean updateMetadataForWorkflow(String
workflowInstId, Map<String, String> metadata) throws AvroRemoteException {
+ Metadata met = new Metadata();
+ met.addMetadata(AvroTypeFactory.getMetadata(metadata));
+ return this.engine.updateMetadata(workflowInstId, met);
+ }
+
+ @Override
+ public synchronized boolean updateWorkflowInstance(AvroWorkflowInstance
instance) throws AvroRemoteException {
+ WorkflowInstance wInst = AvroTypeFactory.getWorkflowInstance(instance);
+ return doUpdateWorkflowInstance(wInst);
+ }
+
+ @Override
+ public boolean setWorkflowInstanceCurrentTaskStartDateTime(String wInstId,
String startDateTimeIsoStr) throws AvroRemoteException {
+ WorkflowInstance wInst = null;
+ try {
+ wInst = this.engine.getInstanceRepository()
+ .getWorkflowInstanceById(wInstId);
+ } catch (InstanceRepositoryException e) {
+ e.printStackTrace();
+ return false;
+ }
+ wInst.setCurrentTaskStartDateTimeIsoStr(startDateTimeIsoStr);
+ return doUpdateWorkflowInstance(wInst);
+
+ }
+
+ @Override
+ public synchronized boolean
setWorkflowInstanceCurrentTaskEndDateTime(String wInstId, String
endDateTimeIsoStr) throws AvroRemoteException {
+ WorkflowInstance wInst = null;
+ try {
+ wInst = this.engine.getInstanceRepository()
+ .getWorkflowInstanceById(wInstId);
+ } catch (InstanceRepositoryException e) {
+ e.printStackTrace();
+ return false;
+ }
+ wInst.setCurrentTaskEndDateTimeIsoStr(endDateTimeIsoStr);
+ return doUpdateWorkflowInstance(wInst);
+
+ }
+
+ public static void loadProperties() throws FileNotFoundException,
IOException {
+ String configFile = System.getProperty(PROPERTIES_FILE_PROPERTY);
+ if (configFile != null) {
+ LOG.log(Level.INFO,
+ "Loading Workflow Manager Configuration Properties from: ["
+ + configFile + "]");
+ System.getProperties().load(new FileInputStream(new File(
+ configFile)));
+ }
+ }
+
+
+
+ @Override
+ public synchronized boolean updateWorkflowInstanceStatus(String
workflowInstId, String status) throws AvroRemoteException {
+ WorkflowInstance wInst = null;
+ try {
+ wInst = engine.getInstanceRepository().getWorkflowInstanceById(
+ workflowInstId);
+ } catch (Exception e) {
+ throw new AvroRemoteException(e);
+ }
+
+ wInst.setStatus(status);
+ return doUpdateWorkflowInstance(wInst);
+
+ }
+
+
+ private static WorkflowEngine getWorkflowEngineFromProperty() {
+ return getWorkflowEngineFromClassName(System.getProperty(
+ WORKFLOW_ENGINE_FACTORY_PROPERTY,
+ ThreadPoolWorkflowEngineFactory.class.getCanonicalName()));
+ }
+
+ private static WorkflowRepository getWorkflowRepositoryFromProperty() {
+ return getWorkflowRepositoryFromClassName(System.getProperty(
+ WORKFLOW_REPOSITORY_FACTORY_PROPERTY,
+ DataSourceWorkflowRepositoryFactory.class.getCanonicalName()));
+ }
+
+ private String getHostname() {
+ try {
+ // Get hostname by textual representation of IP address
+ InetAddress addr = InetAddress.getLocalHost();
+ // Get the host name
+ String hostname = addr.getHostName();
+ return hostname;
+ } catch (UnknownHostException e) {
+ }
+ return null;
+ }
+
+ private URL safeGetUrlFromString(String urlStr) {
+ try {
+ return new URL(urlStr);
+ } catch (MalformedURLException e) {
+ return null;
+ }
+ }
+
+ private boolean doUpdateWorkflowInstance(WorkflowInstance wInst) {
+ try {
+ engine.getInstanceRepository().updateWorkflowInstance(wInst);
+ return true;
+ } catch (InstanceRepositoryException e) {
+ e.printStackTrace();
+ return false;
+ }
+ }
+
+ private void populateWorkflows(List wInsts) {
+ if (wInsts != null && wInsts.size() > 0) {
+ for (Iterator i = wInsts.iterator(); i.hasNext();) {
+ WorkflowInstance wInst = (WorkflowInstance) i.next();
+ if(wInst.getWorkflow() == null ||
+ (wInst.getWorkflow() != null &&
+ (wInst.getWorkflow().getName() == null ||
+ wInst.getWorkflow().getId() == null))){
+ wInst.setWorkflow(safeGetWorkflowById(wInst.getWorkflow()
+ .getId()));
+ }
+ else{
+ // check to see if the workflow exists in the
+ // repo
+ try {
+ if(repo.getWorkflowById(wInst.getWorkflow().getId())
== null){
+ repo.addWorkflow(wInst.getWorkflow());
+ }
+ } catch (RepositoryException e) {
+ LOG.log(Level.WARNING, "Attempting to look up
workflow: ["+wInst.getWorkflow()
+ .getId()+"] in populate workflows. Message:
"+e.getMessage());
+ e.printStackTrace();
+ }
+
+ }
+ }
+ }
+ }
+
+ private Workflow safeGetWorkflowById(String workflowId) {
+ try {
+ return repo.getWorkflowById(workflowId);
+ } catch (Exception e) {
+ e.printStackTrace();
+ LOG.log(Level.WARNING, "Error getting workflow by its id: ["
+ + workflowId + "]: Message: " + e.getMessage());
+ return new Workflow();
+ }
+ }
+
+}