/* (c) 2017 Open Source Geospatial Foundation - all rights reserved * This code is licensed under the GPL 2.0 license, available at the root * application directory. */ package org.geoserver.backuprestore.listener; import org.geoserver.backuprestore.listener.BackupRestoreJobExecutionListener.JobType; import org.geoserver.platform.GeoServerExtensions; import org.springframework.batch.core.JobExecution; import org.springframework.batch.core.JobExecutionListener; import java.util.List; /** * Job execution listener that will invoke listeners contributed by extensions. */ public final class GenericListenersExecutor implements JobExecutionListener { // type of the job associated to this listener instance (backup or restore) private final JobType jobType; public GenericListenersExecutor(boolean backup) { jobType = backup ? JobType.BACKUP : JobType.RESTORE; } @Override public void beforeJob(JobExecution jobExecution) { getListeners().forEach(listener -> listener.beforeJob(jobType, jobExecution)); } @Override public void afterJob(JobExecution jobExecution) { getListeners().forEach(listener -> listener.afterJob(jobType, jobExecution)); } /** * Helper method that returns all the available job execution listeners. */ private List<BackupRestoreJobExecutionListener> getListeners() { return GeoServerExtensions.extensions(BackupRestoreJobExecutionListener.class); } }