this.jobParametersConverter.setMakeParametersUnique(makeParametersUnique);
}
@Transformer
public JobLaunchRequest toJobLaunchRequest(Message<?> message) {
Job job;
try {
job = jobRegistry.getJob(jobName);
}
catch (NoSuchJobException e) {
throw new IllegalArgumentException("The job " + jobName + " doesn't exist. Is it deployed?");
}
final Object payload = message.getPayload();
JobParameters jobParameters;
if (logger.isDebugEnabled()) {
logger.debug(String.format("JobParameters are provided as '%s'. "
+ "Convertering to Spring Batch JobParameters...", payload.getClass().getSimpleName()));
}
if (payload instanceof File) {
jobParameters = jobParametersConverter.getJobParametersForFile((File) message.getPayload());
}
else if (payload instanceof String) {
jobParameters = jobParametersConverter.getJobParametersForJsonString((String) payload);
}
else if (payload instanceof Properties) {
jobParameters = jobParametersConverter.getJobParameters((Properties) payload);
}
else if (payload instanceof Map<?, ?>) {
jobParameters = jobParametersConverter.getJobParametersForMap((Map) payload);
}
else if (payload instanceof Tuple) {
final Tuple tuple = (Tuple) payload;
final List<Object> tupleValues = tuple.getValues();
final Map<String, Object> map = new LinkedHashMap<String, Object>(tupleValues.size());
for (int i = 0; i < tupleValues.size(); i++) {
map.put(tuple.getFieldNames().get(i), tupleValues.get(i));
}
jobParameters = jobParametersConverter.getJobParametersForMap(map);
}
else {
throw new IllegalArgumentException("This transformer does not support payloads of type "
+ payload.getClass().getSimpleName());
}
final boolean isRestart = Boolean.valueOf(jobParameters.getString(ExpandedJobParametersConverter.IS_RESTART_JOB_PARAMETER_KEY));
if (job.getJobParametersIncrementer() != null && !isRestart) {
jobParameters = job.getJobParametersIncrementer().getNext(jobParameters);
}
jobParameters = jobParametersConverter.removeRestartParameterIfExists(jobParameters);
return new JobLaunchRequest(job, jobParameters);