blob: 9c05cbcd88f36d6f31966ccd12e28772ab177c8d [file] [log] [blame]
/*
* 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;
//JDK imports
import java.net.MalformedURLException;
import java.net.URL;
import java.util.List;
import java.util.Vector;
//OODT imports
import org.apache.oodt.cas.metadata.Metadata;
import org.apache.oodt.cas.workflow.repository.MockWorkflowRepository;
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.WorkflowInstancePage;
import org.apache.oodt.cas.workflow.structs.WorkflowTask;
//Google imports
import com.google.common.collect.Lists;
/**
* A Mock {@link XmlRpcWorkflowManagerClient}.
*
* @author bfoster (Brian Foster)
*/
public class MockXmlRpcWorkflowManagerClient extends
XmlRpcWorkflowManagerClient {
private MethodCallDetails lastMethodCallDetails;
private MockWorkflowRepository workflowRepo;
public MockXmlRpcWorkflowManagerClient() throws MalformedURLException {
super(new URL("http://localhost:9000"));
workflowRepo = new MockWorkflowRepository();
}
public MethodCallDetails getLastMethodCallDetails() {
return lastMethodCallDetails;
}
public String executeDynamicWorkflow(List<String> taskIds, Metadata metadata)
throws Exception {
lastMethodCallDetails = new MethodCallDetails("executeDynamicWorkflow",
Lists.newArrayList(taskIds, metadata));
return "TestId1";
}
public List<String> getRegisteredEvents() throws Exception {
lastMethodCallDetails = new MethodCallDetails("getRegisteredEvents",
Lists.newArrayList());
return workflowRepo.getRegisteredEvents();
}
public WorkflowInstancePage getFirstPage() throws Exception {
lastMethodCallDetails = new MethodCallDetails("getFirstPage",
Lists.newArrayList());
WorkflowInstancePage page = new WorkflowInstancePage();
page.setPageNum(1);
page.setPageSize(0);
page.setTotalPages(0);
page.setPageWorkflows(Lists.newArrayList());
return page;
}
public WorkflowInstancePage getNextPage(WorkflowInstancePage currentPage)
throws Exception {
lastMethodCallDetails = new MethodCallDetails("getNextPage",
Lists.newArrayList((Object) currentPage));
WorkflowInstancePage page = new WorkflowInstancePage();
page.setPageNum(1);
page.setPageSize(0);
page.setTotalPages(0);
page.setPageWorkflows(Lists.newArrayList());
return page;
}
public WorkflowInstancePage getPrevPage(WorkflowInstancePage currentPage)
throws Exception {
lastMethodCallDetails = new MethodCallDetails("getPrevPage",
Lists.newArrayList((Object) currentPage));
WorkflowInstancePage page = new WorkflowInstancePage();
page.setPageNum(1);
page.setPageSize(0);
page.setTotalPages(0);
page.setPageWorkflows(Lists.newArrayList());
return page;
}
public WorkflowInstancePage getLastPage() throws Exception {
lastMethodCallDetails = new MethodCallDetails("getLastPage", null);
WorkflowInstancePage page = new WorkflowInstancePage();
page.setPageNum(1);
page.setPageSize(0);
page.setTotalPages(0);
page.setPageWorkflows(Lists.newArrayList());
return page;
}
public WorkflowInstancePage paginateWorkflowInstances(int pageNum,
String status) throws Exception {
lastMethodCallDetails = new MethodCallDetails("paginateWorkflowInstances",
Lists.newArrayList(pageNum, (Object) status));
WorkflowInstancePage page = new WorkflowInstancePage();
page.setPageNum(1);
page.setPageSize(0);
page.setTotalPages(0);
page.setPageWorkflows(Lists.newArrayList());
return page;
}
public WorkflowInstancePage paginateWorkflowInstances(int pageNum)
throws Exception {
lastMethodCallDetails = new MethodCallDetails("paginateWorkflowInstances",
Lists.newArrayList((Object) pageNum));
WorkflowInstancePage page = new WorkflowInstancePage();
page.setPageNum(1);
page.setPageSize(0);
page.setTotalPages(0);
page.setPageWorkflows(Lists.newArrayList());
return page;
}
public List<Workflow> getWorkflowsByEvent(String eventName) throws Exception {
lastMethodCallDetails = new MethodCallDetails("getWorkflowsByEvent",
Lists.newArrayList((Object) eventName));
return workflowRepo.getWorkflowsForEvent(eventName);
}
public Metadata getWorkflowInstanceMetadata(String wInstId) throws Exception {
lastMethodCallDetails = new MethodCallDetails("getWorkflowInstanceMetadata",
Lists.newArrayList((Object) wInstId));
return new Metadata();
}
public synchronized boolean setWorkflowInstanceCurrentTaskStartDateTime(
String wInstId, String startDateTimeIsoStr) throws Exception {
lastMethodCallDetails = new MethodCallDetails(
"setWorkflowInstanceCurrentTaskStartDateTime",
Lists.newArrayList((Object) wInstId, startDateTimeIsoStr));
return true;
}
public double getWorkflowCurrentTaskWallClockMinutes(String workflowInstId)
throws Exception {
lastMethodCallDetails = new MethodCallDetails(
"getWorkflowCurrentTaskWallClockMinutes",
Lists.newArrayList((Object) workflowInstId));
return 0.0;
}
public double getWorkflowWallClockMinutes(String workflowInstId)
throws Exception {
lastMethodCallDetails = new MethodCallDetails(
"getWorkflowWallClockMinutes",
Lists.newArrayList((Object) workflowInstId));
return 0.0;
}
public synchronized boolean stopWorkflowInstance(String workflowInstId)
throws Exception {
lastMethodCallDetails = new MethodCallDetails(
"stopWorkflowInstance",
Lists.newArrayList((Object) workflowInstId));
return true;
}
public synchronized boolean pauseWorkflowInstance(String workflowInstId)
throws Exception {
lastMethodCallDetails = new MethodCallDetails(
"pauseWorkflowInstance",
Lists.newArrayList((Object) workflowInstId));
return true;
}
public synchronized boolean resumeWorkflowInstance(String workflowInstId)
throws Exception {
lastMethodCallDetails = new MethodCallDetails(
"resumeWorkflowInstance",
Lists.newArrayList((Object) workflowInstId));
return true;
}
public synchronized boolean setWorkflowInstanceCurrentTaskEndDateTime(
String wInstId, String endDateTimeIsoStr) throws Exception {
lastMethodCallDetails = new MethodCallDetails(
"setWorkflowInstanceCurrentTaskEndDateTime",
Lists.newArrayList((Object) wInstId, endDateTimeIsoStr));
return true;
}
public synchronized boolean updateWorkflowInstanceStatus(
String workflowInstId, String status) throws Exception {
lastMethodCallDetails = new MethodCallDetails(
"updateWorkflowInstanceStatus",
Lists.newArrayList((Object) workflowInstId, status));
return true;
}
public synchronized boolean updateWorkflowInstance(WorkflowInstance instance)
throws Exception {
lastMethodCallDetails = new MethodCallDetails(
"updateWorkflowInstance",
Lists.newArrayList((Object) instance));
return true;
}
public synchronized boolean updateMetadataForWorkflow(String workflowInstId,
Metadata metadata) throws Exception {
lastMethodCallDetails = new MethodCallDetails(
"updateMetadataForWorkflow",
Lists.newArrayList((Object) workflowInstId, metadata));
return true;
}
public boolean sendEvent(String eventName, Metadata metadata)
throws Exception {
lastMethodCallDetails = new MethodCallDetails(
"sendEvent",
Lists.newArrayList((Object) eventName, metadata));
return true;
}
public WorkflowTask getTaskById(String taskId) throws Exception {
lastMethodCallDetails = new MethodCallDetails(
"getTaskById",
Lists.newArrayList((Object) taskId));
return workflowRepo.getWorkflowTaskById(taskId);
}
public WorkflowCondition getConditionById(String conditionId)
throws Exception {
lastMethodCallDetails = new MethodCallDetails(
"getConditionById",
Lists.newArrayList((Object) conditionId));
return workflowRepo.getWorkflowConditionById(conditionId);
}
public WorkflowInstance getWorkflowInstanceById(String wInstId)
throws Exception {
lastMethodCallDetails = new MethodCallDetails(
"getWorkflowInstanceById",
Lists.newArrayList((Object) wInstId));
WorkflowInstance wInst = new WorkflowInstance();
wInst.setStatus("Running");
wInst.setId("TestId");
wInst.setWorkflow(workflowRepo.getWorkflowById(
MockWorkflowRepository.WORKFLOW1_ID));
wInst.setCurrentTaskId(MockWorkflowRepository.TASK1_ID);
return wInst;
}
public Workflow getWorkflowById(String workflowId) throws Exception {
lastMethodCallDetails = new MethodCallDetails(
"getWorkflowById",
Lists.newArrayList((Object) workflowId));
return workflowRepo.getWorkflowById(workflowId);
}
public Vector<Workflow> getWorkflows() throws Exception {
lastMethodCallDetails = new MethodCallDetails(
"getWorkflows",
Lists.newArrayList());
return new Vector<Workflow>(workflowRepo.getWorkflows());
}
public int getNumWorkflowInstancesByStatus(String status) throws Exception {
lastMethodCallDetails = new MethodCallDetails(
"getNumWorkflowInstancesByStatus",
Lists.newArrayList((Object) status));
return 1;
}
public int getNumWorkflowInstances() throws Exception {
lastMethodCallDetails = new MethodCallDetails(
"getNumWorkflowInstances",
Lists.newArrayList());
return 1;
}
public Vector<WorkflowInstance> getWorkflowInstancesByStatus(String status) throws Exception {
lastMethodCallDetails = new MethodCallDetails(
"getWorkflowInstancesByStatus",
Lists.newArrayList((Object) status));
return new Vector<WorkflowInstance>();
}
public Vector<WorkflowInstance> getWorkflowInstances() throws Exception {
lastMethodCallDetails = new MethodCallDetails(
"getWorkflowInstances",
Lists.newArrayList());
return new Vector<WorkflowInstance>();
}
public class MethodCallDetails {
private String methodName;
private List<Object> args;
public MethodCallDetails(String methodName, List<Object> args) {
this.methodName = methodName;
this.args = args;
}
public String getMethodName() {
return methodName;
}
public List<Object> getArgs() {
return args;
}
}
}