Esempio n. 1
0
  public StreamSink createStreamSink(ServiceContext context, Flow flow) {
    List<String> commandList = new ArrayList<String>();
    String cmd = command.evaluateString(context, flow);
    commandList.add(cmd);
    for (int i = 0; i < commandArgs.length; ++i) {
      String arg = commandArgs[i].evaluateString(context, flow);
      commandList.add(arg);
    }

    ProcessBuilder processBuilder = new ProcessBuilder(commandList);

    Map<String, String> environment = processBuilder.environment();
    for (int i = 0; i < envVariableFactories.length; ++i) {
      EnvVariable envVariable = envVariableFactories[i].createEnvVariable(context, flow);
      environment.put(envVariable.getName(), envVariable.getValue());
    }

    String directory = dirResolver.evaluateAsString(flow.getParameters(), flow.getRecord());
    if (directory.length() > 0) {
      File file = new File(directory);
      processBuilder.directory(file);
    }

    StreamSink streamSink = new CommandSink(processBuilder, charset);
    return streamSink;
  }