public static ProgramController submit(ApplicationWithPrograms app, String programClassName,
Arguments userArgs, Supplier<File> folderSupplier) throws Exception {
ProgramRunnerFactory runnerFactory = injector.getInstance(ProgramRunnerFactory.class);
ProgramRunner runner = null;
Program program = null;
for (ProgramDescriptor programDescriptor : app.getPrograms()) {
if (programDescriptor.getSpecification().getClassName().equals(programClassName)) {
runner = runnerFactory.create(programDescriptor.getProgramId().getType());
program = createProgram(programDescriptor, app.getArtifactLocation(), runner, folderSupplier);
break;
}
}
Assert.assertNotNull(program);
BasicArguments systemArgs = new BasicArguments(ImmutableMap.of(
ProgramOptionConstants.RUN_ID, RunIds.generate().getId(),
ProgramOptionConstants.HOST, InetAddress.getLoopbackAddress().getCanonicalHostName(),
ProgramOptionConstants.ARTIFACT_ID, Joiner.on(":").join(app.getArtifactId().toIdParts())
));
return runner.run(program, new SimpleProgramOptions(program.getId(), systemArgs, userArgs));
}