/*
* Copyright (C) 2006-2016 DLR, Germany
*
* All rights reserved
*
* http://www.rcenvironment.de/
*/
package de.rcenvironment.core.start.validators.internal;
import java.io.IOException;
import org.osgi.service.cm.Configuration;
import org.osgi.service.cm.ConfigurationAdmin;
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;
/**
* Ensures that the actual configuration values are applied.
*
* @author Doreen Seider
*/
public class LoggingConfiguredProperlyValidator extends DefaultInstanceValidator {
private ConfigurationAdmin configurationAdmin;
@Override
public InstanceValidationResult validate() {
final String validationDisplayName = "Logging configuration";
boolean isConfiguredProperly = false;
Configuration paxLoggingConfiguration = null;
try {
String paxLoggingPid = "org.ops4j.pax.logging";
paxLoggingConfiguration = configurationAdmin.getConfiguration(paxLoggingPid);
} catch (IOException e) {
// Failed to get configuration of pax logging from the configuration admin service. Most likely, logging is not configured
// properly.
return createInstanceValidationResultForFailure(validationDisplayName);
}
String nonDefaultPaxConfigKey = "log4j.appender.DEBUG_LOG";
isConfiguredProperly = paxLoggingConfiguration.getProperties() != null
&& paxLoggingConfiguration.getProperties().get(nonDefaultPaxConfigKey) != null;
if (!isConfiguredProperly) {
return createInstanceValidationResultForFailure(validationDisplayName);
}
return InstanceValidationResultFactory.createResultForPassed(validationDisplayName);
}
private InstanceValidationResult createInstanceValidationResultForFailure(String validationDisplayName) {
final String errorMessage1 = "Failed to initialize background logging properly."
+ " Most likely, because RCE was started from another directory than its installation directory. "
+ "(The installation directory is the directory that contains the 'rce' executable.)";
final String errorMessage2 = " It is recommended to start RCE again from its installation directory.";
return InstanceValidationResultFactory.createResultForFailureWhichAllowesToProceed(validationDisplayName,
errorMessage1 + " " + errorMessage2, errorMessage1 + "\n\n" + errorMessage2);
}
protected void bindConfigurationAdmin(ConfigurationAdmin newService) {
configurationAdmin = newService;
}
}