Add TaskTree definitions more directly
Instead of putting all the task configs into a List and then adding the
List, add the task configs to the nodelist directly. This eliminates a
bunch of boiler plate "collection" code.
Change-Id: I431b32dcd683dd94a6f5b730fe0c6ad90942816c
diff --git a/src/main/java/com/googlesource/gerrit/plugins/task/TaskTree.java b/src/main/java/com/googlesource/gerrit/plugins/task/TaskTree.java
index efb4a39..5f29f00 100644
--- a/src/main/java/com/googlesource/gerrit/plugins/task/TaskTree.java
+++ b/src/main/java/com/googlesource/gerrit/plugins/task/TaskTree.java
@@ -163,18 +163,31 @@
}
protected void addSubDefinitions() throws OrmException {
- addSubDefinitions(getSubDefinitions());
- addSubDefinitions(getTasksFactoryDefinitions());
+ addSubTaskDefinitions();
+ addSubTasksFactoryDefinitions();
addSubFileDefinitions();
addExternalDefinitions();
}
+ protected void addSubTaskDefinitions() {
+ for (String name : task.subTasks) {
+ try {
+ Task def = task.config.getTaskOptional(name);
+ if (def != null) {
+ addSubDefinition(def);
+ }
+ } catch (ConfigInvalidException e) {
+ addSubDefinition(null);
+ }
+ }
+ }
+
protected void addSubFileDefinitions() {
for (String file : task.subTasksFiles) {
try {
addSubDefinitions(getTaskDefinitions(task.config.getBranch(), file));
} catch (ConfigInvalidException | IOException e) {
- nodes.add(null);
+ addSubDefinition(null);
}
}
}
@@ -184,32 +197,17 @@
try {
External ext = task.config.getExternal(external);
if (ext == null) {
- nodes.add(null);
+ addSubDefinition(null);
} else {
addSubDefinitions(getTaskDefinitions(ext));
}
} catch (ConfigInvalidException | IOException e) {
- nodes.add(null);
+ addSubDefinition(null);
}
}
}
- protected List<Task> getSubDefinitions() {
- List<Task> defs = new ArrayList<>();
- for (String name : task.subTasks) {
- try {
- Task def = task.config.getTaskOptional(name);
- if (def != null) {
- defs.add(def);
- }
- } catch (ConfigInvalidException e) {
- defs.add(null);
- }
- }
- return defs;
- }
-
- protected List<Task> getTasksFactoryDefinitions() throws OrmException {
+ protected void addSubTasksFactoryDefinitions() throws OrmException {
List<Task> taskList = new ArrayList<>();
for (String taskFactoryName : task.subTasksFactories) {
TasksFactory tasksFactory = task.config.getTasksFactory(taskFactoryName);
@@ -219,28 +217,27 @@
new Properties(namesFactory, task.properties);
switch (NamesFactoryType.getNamesFactoryType(namesFactory.type)) {
case STATIC:
- getStaticTypeTasksDefinitions(tasksFactory, namesFactory, taskList);
+ addStaticTypeTasksDefinitions(tasksFactory, namesFactory);
continue;
case CHANGE:
- getChangesTypeTaskDefinitions(tasksFactory, namesFactory, taskList);
+ addChangesTypeTaskDefinitions(tasksFactory, namesFactory);
continue;
}
}
}
- taskList.add(null);
+ addSubDefinition(null);
}
- return taskList;
}
- protected void getStaticTypeTasksDefinitions(
- TasksFactory tasksFactory, NamesFactory namesFactory, List<Task> taskList) {
+ protected void addStaticTypeTasksDefinitions(
+ TasksFactory tasksFactory, NamesFactory namesFactory) {
for (String name : namesFactory.names) {
- taskList.add(task.config.createTask(tasksFactory, name));
+ addSubDefinition(task.config.createTask(tasksFactory, name));
}
}
- protected void getChangesTypeTaskDefinitions(
- TasksFactory tasksFactory, NamesFactory namesFactory, List<Task> taskList) {
+ protected void addChangesTypeTaskDefinitions(
+ TasksFactory tasksFactory, NamesFactory namesFactory) {
try {
if (namesFactory.changes != null) {
List<ChangeData> changeDataList =
@@ -248,7 +245,7 @@
.get()
.query(changeQueryBuilderProvider.get().parse(namesFactory.changes)).entities();
for (ChangeData changeData : changeDataList) {
- taskList.add(task.config.createTask(tasksFactory, changeData.getId().toString()));
+ addSubDefinition(task.config.createTask(tasksFactory, changeData.getId().toString()));
}
return;
}
@@ -256,7 +253,7 @@
log.atSevere().withCause(e).log("ERROR: running changes query: " + namesFactory.changes);
} catch (QueryParseException e) {
}
- taskList.add(null);
+ addSubDefinition(null);
}
protected List<Task> getTaskDefinitions(External external)