@Override public boolean isRebuilding() { String repositoryName = getRepository().getName(); return taskScheduler.listsTasks().stream() .filter(task -> RebuildBrowseNodesTaskDescriptor.TYPE_ID.equals(task.getTypeId())) .filter(task -> TaskInfo.State.RUNNING.equals(task.getCurrentState().getState())) .anyMatch(task -> { String taskRepositoryName = task.getConfiguration().getString(REPOSITORY_NAME_FIELD_ID); return taskRepositoryName.equals(repositoryName) || taskRepositoryName.equals(RepositorySelector.ALL); }); } }
/** * Returns whether or not a reindexing task exists for a particular npm repository. */ private boolean hasRunningTask(final Repository repository) { for (TaskInfo taskInfo : taskScheduler.listsTasks()) { TaskConfiguration taskConfiguration = taskInfo.getConfiguration(); String typeId = taskConfiguration.getTypeId(); String repositoryName = taskConfiguration.getString(REPOSITORY_NAME_FIELD_ID); if (ReindexNpmRepositoryTaskDescriptor.TYPE_ID.equals(typeId) && repository.getName().equals(repositoryName) && TaskInfo.State.RUNNING.equals(taskInfo.getCurrentState().getState())) { return true; } } return false; } }
private boolean launchExistingTask(final String repositoryName) throws TaskRemovedException { for (TaskInfo taskInfo : taskScheduler.listsTasks()) { if (isRebuildTask(repositoryName, taskInfo)) { if (!TaskInfo.State.RUNNING.equals(taskInfo.getCurrentState().getState())) { taskInfo.runNow(); } return true; } } return false; }
@Subscribe @AllowConcurrentEvents public void on(final TaskEvent event) { if (isRecording()) { TaskInfo task = event.getTaskInfo(); TaskConfiguration configuration = task.getConfiguration(); AuditData data = new AuditData(); data.setDomain(DOMAIN); data.setType(type(event.getClass())); data.setContext(configuration.getTypeName()); Map<String, String> attributes = data.getAttributes(); // TaskInfo.{id/name/message} are all delegates to configuration attributes.put("schedule", string(task.getSchedule())); attributes.put("currentState", string(task.getCurrentState())); attributes.put("lastRunState", string(task.getLastRunState())); // TODO: may want to use TaskDescriptor to provider better comprehension of the configuration // TODO: ... for now though, just include everything its simpler attributes.putAll(configuration.asMap()); record(data); } } }