package org.springframework.roo.process.manager.internal;
import org.apache.commons.lang3.Validate;
import org.springframework.roo.file.monitor.FileMonitorService;
import org.springframework.roo.file.monitor.MonitoringRequest;
import org.springframework.roo.process.manager.CommandCallback;
/**
* Represents a {@link CommandCallback} to start or stop monitoring a particular
* file path.
*
* @author Ben Alex
* @since 1.0
*/
public class MonitoringRequestCommand implements CommandCallback<Boolean> {
private final boolean add;
private final FileMonitorService fileMonitorService;
private final MonitoringRequest monitoringRequest;
public MonitoringRequestCommand(final FileMonitorService fileMonitorService,
final MonitoringRequest monitoringRequest, final boolean add) {
Validate.notNull(fileMonitorService, "File monitor service required");
Validate.notNull(monitoringRequest, "Request required");
this.fileMonitorService = fileMonitorService;
this.monitoringRequest = monitoringRequest;
this.add = add;
}
public Boolean callback() {
boolean result;
if (add) {
result = fileMonitorService.add(monitoringRequest);
} else {
result = fileMonitorService.remove(monitoringRequest);
}
fileMonitorService.scanAll();
return result;
}
}