
org.ow2.petals.extension.autoloader.InstallDirectoryScannerImpl Maven / Gradle / Ivy
/**
* Copyright (c) 2005-2012 EBM WebSourcing, 2012-2016 Linagora
*
* This program/library is free software: you can redistribute it and/or modify
* it under the terms of the GNU Lesser General Public License as published by
* the Free Software Foundation, either version 2.1 of the License, or (at your
* option) any later version.
*
* This program/library is distributed in the hope that it will be useful, but
* WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
* FITNESS FOR A PARTICULAR PURPOSE. See the GNU Lesser General Public License
* for more details.
*
* You should have received a copy of the GNU Lesser General Public License
* along with this program/library; If not, see http://www.gnu.org/licenses/
* for the GNU Lesser General Public License version 2.1.
*/
package org.ow2.petals.extension.autoloader;
import java.io.File;
import java.util.Timer;
import java.util.TimerTask;
import java.util.logging.Logger;
import org.objectweb.fractal.fraclet.annotations.Component;
import org.objectweb.fractal.fraclet.annotations.Interface;
import org.objectweb.fractal.fraclet.annotations.Lifecycle;
import org.objectweb.fractal.fraclet.annotations.Requires;
import org.objectweb.fractal.fraclet.types.Step;
import org.ow2.petals.microkernel.api.jbi.management.DeploymentService;
import org.ow2.petals.microkernel.api.jbi.management.InstallationService;
import com.ebmwebsourcing.easycommons.log.LoggingUtil;
/**
* Periodically check if new Install or Deploy elements are presents in the
* autoloader directories.
*
* @author Adrien Louis - EBM WebSourcing
*/
@Component(provides = @Interface(name = "service", signature = DirectoryScanner.class))
public class InstallDirectoryScannerImpl implements DirectoryScanner {
@Requires(name = "deployment")
private DeploymentService deploymentService;
@Requires(name = "installation")
private InstallationService installationService;
private final LoggingUtil log = new LoggingUtil(Logger.getLogger(AutoLoaderService.FRACTAL_COMPONENT_LOGGER_NAME
+ "." + InstallDirectoryScannerImpl.class.getSimpleName()));
/**
* The task scanning the directory
*/
private TimerTask scanningTask;
public InstallDirectoryScannerImpl() {
// NOP
}
/**
* Starts the installation directory scanner.
*/
@Lifecycle(step = Step.START)
public void start() {
this.log.call();
}
public void startScanner(final File installDirectory, final Timer directoriesToScanTimer,
final long scanPeriod) {
this.log.start();
this.scanningTask = new InstallDirectoryScanningTask(this.deploymentService, this.installationService,
installDirectory, this.log);
directoriesToScanTimer.schedule(this.scanningTask, scanPeriod, scanPeriod);
this.log.end();
}
/**
* Stop the autoload of the components. TODO : synchronization, does the
* autoload must wait before the end of an installation before closing?
*/
@Lifecycle(step = Step.STOP)
public void stop() {
this.log.start();
this.scanningTask.cancel();
this.log.end();
}
}
© 2015 - 2025 Weber Informatics LLC | Privacy Policy