broker.setRedeployManager(redeployManager);
}
private void createAuthorizationManager(MessageBroker broker)
{
LoginManager loginManager = new LoginManager();
// Create a Login Command for the LoginManager.
LoginCommand loginCommand = null;
Map loginCommands = securitySettings.getLoginCommands();
// If default Login Command is enabled, use it.
LoginCommandSettings loginCommandSettings = (LoginCommandSettings)loginCommands.get(LoginCommandSettings.SERVER_MATCH_OVERRIDE);
if (loginCommandSettings != null)
{
loginCommand = initLoginCommand(loginCommandSettings);
}
// Otherwise, try a server specific Login Command.
else
{
String serverInfo = securitySettings.getServerInfo();
loginCommandSettings = (LoginCommandSettings)loginCommands.get(serverInfo);
if (loginCommandSettings != null)
{
loginCommand = initLoginCommand(loginCommandSettings);
}
else
{
// Try a partial match of serverInfo
serverInfo = serverInfo.toLowerCase();
for (Iterator iterator = loginCommands.keySet().iterator(); iterator.hasNext();)
{
String serverMatch = (String)iterator.next();
loginCommandSettings = (LoginCommandSettings)loginCommands.get(serverMatch);
if (serverInfo.indexOf(serverMatch.toLowerCase()) != -1)
{
// add this match for easier lookup next time around
loginCommands.put(serverInfo, loginCommandSettings);
loginCommand = initLoginCommand(loginCommandSettings);
break;
}
}
}
}
if (loginCommand == null)
{
if (Log.isWarn())
Log.getLogger(ConfigurationManager.LOG_CATEGORY).warn
("No login command was found for '" + securitySettings.getServerInfo()
+ "'. Please ensure that the login-command tag has the correct server attribute value"
+ ", or use 'all' to use the login command regardless of the server.");
}
else
{
loginManager.setLoginCommand(loginCommand);
}
if (loginCommandSettings != null)
loginManager.setPerClientAuthentication(loginCommandSettings.isPerClientAuthentication());
broker.setLoginManager(loginManager);
}