final DomainRoot domainRoot = getDomainRootProxy();
final Domain domainConfig = domainRoot.child(Domain.class);
final Map<String,Config> configs = domainConfig.getConfigs().childrenMap(Config.class);
// find the ADMIN_REALM
AuthRealm adminFileAuthRealm = null;
for( final Config config : configs.values() )
{
if ( config.getSecurityService() == null ) continue;
for( final AuthRealm auth : config.getSecurityService().childrenMap(AuthRealm.class).values() )
{
if ( auth.getName().equals(ADMIN_REALM) )
{
adminFileAuthRealm = auth;
break;
}
}
}
if (adminFileAuthRealm == null) {
// There must always be an admin realm
throw new IllegalStateException( "Cannot find admin realm" );
}
// Get FileRealm class name
final String fileRealmClassName = adminFileAuthRealm.getClassname();
if (fileRealmClassName != null && ! fileRealmClassName.equals(FILE_REALM_CLASSNAME)) {
// This condition can arise if admin-realm is not a File realm. Then the API to extract
// the anonymous user should be integrated for the logic below this line of code. for now,
// we treat this as an error and instead of throwing exception return false;
return null;
}
final Map<String,Property> props = adminFileAuthRealm.childrenMap(Property.class);
final Property keyfileProp = props.get("file");
if ( keyfileProp == null ) {
throw new IllegalStateException( "Cannot find property 'file'" );
}
//System.out.println( "############### keyFileProp: " + keyfileProp.getName() + " = " + keyfileProp.getValue() );
final String keyFile = keyfileProp.resolveAttribute( "Value" );
//System.out.println( "############### keyFile: " + keyfileProp.getValue() + " ===> " + keyFile);
if (keyFile == null) {
throw new IllegalStateException( "Cannot find key file" );
}
//System.out.println( "############### keyFile: " + keyFile);
String user = null;
final String[] usernames = getUserNames(adminFileAuthRealm.getName());
if (usernames.length == 1)
{
try
{
InjectedValues.getInstance().getHabitat().getByType(com.sun.enterprise.security.SecurityLifecycle.class);