@Override
 protected CloudWatchWorkflowClientExternal createClientInstance(
     WorkflowExecution workflowExecution,
     StartWorkflowOptions options,
     DataConverter dataConverter,
     GenericWorkflowClientExternal genericClient) {
   WorkflowType workflowType = new WorkflowType();
   workflowType.setName("CloudWatchWorkflow.sendMetrics");
   workflowType.setVersion("2.0");
   return new CloudWatchWorkflowClientExternalImpl(
       workflowExecution, workflowType, options, dataConverter, genericClient);
 }
 @Override
 protected DeleteLoadBalancerWorkflowClient createClientInstance(
     WorkflowExecution execution,
     StartWorkflowOptions options,
     DataConverter dataConverter,
     GenericWorkflowClient genericClient) {
   WorkflowType workflowType = new WorkflowType();
   workflowType.setName("DeleteLoadBalancer");
   workflowType.setVersion("1.0");
   return new DeleteLoadBalancerWorkflowClientImpl(
       execution, workflowType, options, dataConverter, genericClient);
 }
 public WorkflowTestBase(DecisionContext decisionContext) {
   this.decisionContext = decisionContext;
   workflowContext = (TestWorkflowContext) decisionContext.getWorkflowContext();
   workflowClock = (TestWorkflowClock) decisionContext.getWorkflowClock();
   WorkflowExecution we = new WorkflowExecution();
   we.setWorkflowId("testWorkflowId");
   we.setRunId("testRunId");
   workflowContext.setWorkflowExecution(we);
   WorkflowType wt = new WorkflowType();
   wt.setName("testWorkflow");
   wt.setVersion("0.0");
   workflowContext.setWorkflowType(wt);
 }
  public void sendGCM(String registration_id, String message, int badge) throws IOException {

    Object[] workflowInput = new Object[] {registration_id, message, badge};
    DataConverter converter = new JsonDataConverter();
    StartWorkflowExecutionRequest startWorkflowExecutionRequest =
        new StartWorkflowExecutionRequest();
    startWorkflowExecutionRequest.setInput(converter.toData(workflowInput));
    startWorkflowExecutionRequest.setDomain("MobMonkey");
    TaskList tasks = new TaskList();
    tasks.setName("Gcm");
    startWorkflowExecutionRequest.setTaskList(tasks);
    WorkflowType workflowType = new WorkflowType();
    workflowType.setName("GcmWorkflow.sendNotification");
    workflowType.setVersion("1.12");
    startWorkflowExecutionRequest.setWorkflowType(workflowType);
    startWorkflowExecutionRequest.setWorkflowId(UUID.randomUUID().toString());
    this.swfClient().startWorkflowExecution(startWorkflowExecutionRequest);
  }
 public void sendAPNS(String eMailAddress, String[] deviceIds, String message, int badge)
     throws IOException {
   Object[] workflowInput = new Object[] {eMailAddress, deviceIds, message, badge};
   DataConverter converter = new JsonDataConverter();
   StartWorkflowExecutionRequest startWorkflowExecutionRequest =
       new StartWorkflowExecutionRequest();
   startWorkflowExecutionRequest.setInput(converter.toData(workflowInput));
   startWorkflowExecutionRequest.setDomain("MobMonkey");
   TaskList tasks = new TaskList();
   tasks.setName("Apns");
   startWorkflowExecutionRequest.setTaskList(tasks);
   WorkflowType workflowType = new WorkflowType();
   workflowType.setName("ApnsWorkflow.sendNotification");
   workflowType.setVersion("1.10");
   startWorkflowExecutionRequest.setWorkflowType(workflowType);
   startWorkflowExecutionRequest.setWorkflowId(UUID.randomUUID().toString());
   this.swfClient().startWorkflowExecution(startWorkflowExecutionRequest);
 }
  protected WorkflowType getWorkflowType(
      String interfaceName, Method method, Execute executeAnnotation) {
    assert (method != null);
    assert (executeAnnotation != null);

    WorkflowType workflowType = new WorkflowType();

    String workflowName = null;
    if (executeAnnotation.name() != null && !executeAnnotation.name().isEmpty()) {
      workflowName = executeAnnotation.name();
    } else {
      workflowName = interfaceName + "." + method.getName();
    }

    if (executeAnnotation.version().isEmpty()) {
      throw new IllegalArgumentException(
          "Empty value of the required \"version\" parameter of the @Execute annotation found on "
              + getMethodFullName(method));
    }
    workflowType.setName(workflowName);
    workflowType.setVersion(executeAnnotation.version());
    return workflowType;
  }