/*
* Copyright (C) 2006-2016 DLR, Germany
*
* All rights reserved
*
* http://www.rcenvironment.de/
*/
package de.rcenvironment.core.start.validators.internal;
import de.rcenvironment.core.configuration.ConfigurationService;
import de.rcenvironment.core.start.common.validation.api.InstanceValidationResult;
import de.rcenvironment.core.start.common.validation.api.InstanceValidationResultFactory;
import de.rcenvironment.core.start.common.validation.spi.DefaultInstanceValidator;
import de.rcenvironment.core.utils.common.StringUtils;
/**
* Validator to prevent accidental use of same instance data directory if multiple RCE instances are running on the same machine. The check
* is based on a lock file in the data directory of each instance, which is performed by the {@link ConfigurationService} implementation.
*
* @author Jan Flink
* @author Robert Mischke
*/
public class ProfileDirectoryNotInUseValidator extends DefaultInstanceValidator {
private static ConfigurationService configService;
@Override
public InstanceValidationResult validate() {
final String validationDisplayName = "Profile directory lock";
if (!configService.isIntendedProfileDirectorySuccessfullyLocked()) {
String errorMessage = StringUtils.format(Messages.instanceIdAlreadyInUse, configService
.getOriginalProfileDirectory().getAbsolutePath());
return InstanceValidationResultFactory.createResultForFailureWhichRequiresInstanceShutdown(
validationDisplayName, errorMessage, errorMessage);
}
return InstanceValidationResultFactory.createResultForPassed(validationDisplayName);
}
protected void bindConfigurationService(ConfigurationService configIn) {
configService = configIn;
}
}