Stores the command line arguements within the task repository

Resolves spring-cloud/spring-cloud-task#62

Code Review Polishing
This commit is contained in:
Michael Minella
2016-01-19 17:02:37 -06:00
committed by Glenn Renfro
parent 1a7cd94721
commit 846eb3fad9
4 changed files with 174 additions and 35 deletions

View File

@@ -26,6 +26,7 @@ import org.apache.commons.logging.LogFactory;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.beans.factory.annotation.Value;
import org.springframework.boot.ApplicationArguments;
import org.springframework.cloud.task.listener.TaskLifecycleListener;
import org.springframework.cloud.task.repository.TaskNameResolver;
import org.springframework.cloud.task.repository.TaskRepository;
@@ -60,6 +61,9 @@ public class SimpleTaskConfiguration {
@Autowired
private ResourceLoader resourceLoader;
@Autowired(required = false)
private ApplicationArguments applicationArguments;
@Value("${spring.class.initialize.enable:true}")
private boolean taskInitializationEnable;
@@ -78,7 +82,7 @@ public class SimpleTaskConfiguration {
@Bean
public TaskLifecycleListener taskLifecycleListener() {
return new TaskLifecycleListener(taskRepository(), taskNameResolver());
return new TaskLifecycleListener(taskRepository(), taskNameResolver(), this.applicationArguments);
}
@Bean

View File

@@ -18,11 +18,14 @@ package org.springframework.cloud.task.listener;
import java.io.PrintWriter;
import java.io.StringWriter;
import java.util.ArrayList;
import java.util.Arrays;
import java.util.Date;
import java.util.List;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import org.springframework.boot.ApplicationArguments;
import org.springframework.boot.context.event.ApplicationFailedEvent;
import org.springframework.cloud.task.repository.TaskExecution;
import org.springframework.cloud.task.repository.TaskNameResolver;
@@ -63,16 +66,20 @@ public class TaskLifecycleListener implements ApplicationListener<ApplicationEve
private TaskNameResolver taskNameResolver;
private ApplicationArguments applicationArguments;
/**
* @param taskRepository The repository to record executions in.
*/
public TaskLifecycleListener(TaskRepository taskRepository,
TaskNameResolver taskNameResolver) {
TaskNameResolver taskNameResolver,
ApplicationArguments applicationArguments) {
Assert.notNull(taskRepository, "A taskRepository is required");
Assert.notNull(taskNameResolver, "A taskNameResolver is required");
this.taskRepository = taskRepository;
this.taskNameResolver = taskNameResolver;
this.applicationArguments = applicationArguments;
}
/**
@@ -142,9 +149,15 @@ public class TaskLifecycleListener implements ApplicationListener<ApplicationEve
private void doTaskStart() {
if(!started) {
List<String> args = new ArrayList<>(0);
if(this.applicationArguments != null) {
args = Arrays.asList(this.applicationArguments.getSourceArgs());
}
this.taskExecution = new TaskExecution(this.taskRepository.getNextExecutionId(),
0, this.taskNameResolver.getTaskName(), new Date(), null, null, null,
new ArrayList<String>(0), null);
args, null);
this.taskRepository.createTaskExecution(this.taskExecution);
}