if (Configuration.MODEL_VERSION.equals(modelVersion)) {
// we have a problem here, model version is OK but we could not load it previously?
throw new ConfigurationIsCorruptedException(file);
}
UpgradeMessage msg = new UpgradeMessage();
msg.setModelVersion(modelVersion);
SecurityUpgrader upgrader = upgraders.get(msg.getModelVersion());
if (upgrader != null) {
log.info("Upgrading old Security configuration file (version " + msg.getModelVersion() + ") from "
+ file.getAbsolutePath());
msg.setConfiguration(upgrader.loadConfiguration(file));
while (!Configuration.MODEL_VERSION.equals(msg.getModelVersion())) {
// an application might need to upgrade content, that is NOT part of the model
SecurityDataUpgrader dataUpgrader = this.dataUpgraders.get(msg.getModelVersion());
if (upgrader != null) {
upgrader.upgrade(msg);
if (dataUpgrader != null) {
dataUpgrader.upgrade(msg.getConfiguration());
}
}
else {
// we could parse the XML but have no model version? Is this security config at all?
throw new UnsupportedConfigurationVersionException(modelVersion, file);
}
upgrader = upgraders.get(msg.getModelVersion());
}
log.info("Security configuration file upgraded to current version " + msg.getModelVersion()
+ " succesfully.");
return (Configuration) msg.getConfiguration();
}
else {
// we could parse the XML but have no model version? Is this security config at all?
throw new UnsupportedConfigurationVersionException(modelVersion, file);
}