diff --git a/src/de/superx/rest/EtlJobApi.java b/src/de/superx/rest/EtlJobApi.java index 87385e9..83ec13e 100644 --- a/src/de/superx/rest/EtlJobApi.java +++ b/src/de/superx/rest/EtlJobApi.java @@ -189,9 +189,10 @@ public class EtlJobApi extends RestControllerBase { return jobDescriptionSource.getJobsForComponent(abbreviation); } - @RequestMapping(path="/job/writeJobsToDb", method = RequestMethod.POST) - public boolean writeJobsToDb() { - try { + @RequestMapping(path="/job/writeJobsToDb", method = RequestMethod.POST) + public boolean writeJobsToDb() { + userService.checkAdminRights(); + try { List jobs = entityJobDescriptionSource.readJobs(); for (ContainerNode containerNode : jobs) { try { diff --git a/src/de/superx/spring/service/EntityJobDescriptionSource.java b/src/de/superx/spring/service/EntityJobDescriptionSource.java index 55e87e7..019a134 100644 --- a/src/de/superx/spring/service/EntityJobDescriptionSource.java +++ b/src/de/superx/spring/service/EntityJobDescriptionSource.java @@ -1005,15 +1005,18 @@ public class EntityJobDescriptionSource implements JobDescriptionSource { } @Override - public List readInstallJobs(List components) { - logger.debug("Reading install jobs from file system"); - List jobs = new ArrayList<>(); - for (String componentAbbreviation : PathAndFileUtils.getModules()) { - jobs.add(getInstallUpgradeJob(componentAbbreviation)); - } - logger.debug("Count of jobs: " + jobs.size()); - return jobs; - } + public List readInstallJobs(List components) { + logger.debug("Reading install jobs from file system"); + List jobs = new ArrayList<>(); + for (String componentAbbreviation : PathAndFileUtils.getModules()) { + ContainerNode job = getInstallUpgradeJob(componentAbbreviation); + if (job != null) { + jobs.add(job); + } + } + logger.debug("Count of jobs: " + jobs.size()); + return jobs; + } public static ContainerNode getPreKernInstallJob() { ContainerNode root = createContainerNode("kern_pre_install", "kern_pre_install", Integer.valueOf(9)); diff --git a/src/de/superx/spring/service/JobAdapter.java b/src/de/superx/spring/service/JobAdapter.java index 35f6c7e..f5beb7a 100644 --- a/src/de/superx/spring/service/JobAdapter.java +++ b/src/de/superx/spring/service/JobAdapter.java @@ -150,25 +150,31 @@ public class JobAdapter implements JobDescriptionSource { } } - public static List mergeJobsPreferringDatabase( - List jobsDatabase, - List jobsFilesystem){ - - List result = new ArrayList<>(jobsDatabase); - - for (ContainerNode jobFs : jobsFilesystem) { - boolean isJobInDatabase = false; - for (ContainerNode jobDb : jobsDatabase) { - if(jobDb.name.equals(jobFs.name)) { - isJobInDatabase = true; - break; - } - } - if(!isJobInDatabase) { - result.add(jobFs); - } - } - return result; - - } + public static List mergeJobsPreferringDatabase( + List jobsDatabase, + List jobsFilesystem) { + + List result = new ArrayList<>(jobsDatabase); + + for (ContainerNode jobFs : jobsFilesystem) { + if (jobFs == null) { + logger.warn("Skipping null job from filesystem"); + continue; + } + + boolean isJobInDatabase = false; + for (ContainerNode jobDb : jobsDatabase) { + if (jobDb != null && jobDb.name.equals(jobFs.name)) { + isJobInDatabase = true; + break; + } + } + + if (!isJobInDatabase) { + result.add(jobFs); + } + } + + return result; + } }