@Bean @ConditionalOnProperty(name = "sftp.task-launcher-output", havingValue = "true") @IdempotentReceiver("idempotentReceiverInterceptor") @ServiceActivator(inputChannel = "sftpFileTaskLaunchChannel", outputChannel = Source.OUTPUT) public MessageProcessor<Message<?>> standaloneTaskLaunchRequestTransformer() { return message -> { TaskLaunchRequest outboundPayload = new TaskLaunchRequest(sftpSourceTaskProperties.getResourceUri(), getCommandLineArgs(message), getEnvironmentProperties(), getDeploymentProperties(), null); MessageBuilder<TaskLaunchRequest> builder = MessageBuilder.withPayload(outboundPayload) .copyHeaders(message.getHeaders()) .setHeader(MessageHeaders.CONTENT_TYPE, MimeTypeUtils.APPLICATION_JSON); if (this.sftpSourceProperties.isMultiSource()) { outboundPayload.getEnvironmentProperties().put(SFTP_HOST_PROPERTY_KEY, (String) message.getHeaders().get(SFTP_HOST_PROPERTY_KEY)); outboundPayload.getEnvironmentProperties().put(SFTP_PORT_PROPERTY_KEY, String.valueOf(message.getHeaders().get(SFTP_PORT_PROPERTY_KEY))); outboundPayload.getEnvironmentProperties().put(SFTP_USERNAME_PROPERTY_KEY, (String) message.getHeaders().get(SFTP_USERNAME_PROPERTY_KEY)); outboundPayload.getEnvironmentProperties().put(SFTP_PASSWORD_PROPERTY_KEY, (String) message.getHeaders().get(SFTP_PASSWORD_PROPERTY_KEY)); outboundPayload.getEnvironmentProperties().put(SFTP_SELECTED_SERVER_PROPERTY_KEY, (String) message.getHeaders().get(SFTP_SELECTED_SERVER_PROPERTY_KEY)); builder.removeHeaders(SFTP_HOST_PROPERTY_KEY, SFTP_PORT_PROPERTY_KEY, SFTP_USERNAME_PROPERTY_KEY, SFTP_PASSWORD_PROPERTY_KEY, SFTP_SELECTED_SERVER_PROPERTY_KEY); } return builder.build(); }; }
private void launchTask(TaskLaunchRequest taskLaunchRequest) { Assert.notNull(this.taskLauncher, "TaskLauncher has not been initialized"); logger.info("Launching Task for the following uri " + taskLaunchRequest.getUri()); Resource resource = this.resourceLoader.getResource(taskLaunchRequest.getUri()); AppDefinition definition = new AppDefinition(taskLaunchRequest.getApplicationName(), taskLaunchRequest.getEnvironmentProperties()); AppDeploymentRequest request = new AppDeploymentRequest(definition, resource, taskLaunchRequest.getDeploymentProperties(), taskLaunchRequest.getCommandlineArguments()); this.taskLauncher.launch(request); }