KickJava   Java API By Example, From Geeks To Geeks.

Java > Open Source Codes > com > nightlabs > ipanema > base > login > IpanemaSecurityConfiguration


1 /*
2  * Created on Oct 5, 2004
3  * by Alexander Bieber
4  *
5  */

6 package com.nightlabs.ipanema.base.login;
7
8 import java.util.ArrayList JavaDoc;
9 import java.util.HashMap JavaDoc;
10
11 import javax.security.auth.login.AppConfigurationEntry JavaDoc;
12 import javax.security.auth.login.Configuration JavaDoc;
13
14 import org.apache.log4j.Logger;
15
16 import com.nightlabs.config.Config;
17 import com.nightlabs.config.ConfigException;
18
19 /**
20  * @author Alexander Bieber
21  */

22 public class IpanemaSecurityConfiguration extends Configuration JavaDoc {
23     public static final Logger LOGGER = Logger.getLogger(IpanemaSecurityConfiguration.class);
24
25     private LoginConfigModule loginConfigModule = null;
26     private HashMap JavaDoc entries = new HashMap JavaDoc();
27     
28     public IpanemaSecurityConfiguration(){
29         try {
30             loginConfigModule = (LoginConfigModule) Config.sharedInstance().createConfigModule(LoginConfigModule.class);
31             refresh();
32         } catch (ConfigException e) {
33             throw new RuntimeException JavaDoc(e);
34         }
35     }
36     
37     
38     /* (non-Javadoc)
39      * @see javax.security.auth.login.Configuration#refresh()
40      */

41     public void refresh() {
42         LOGGER.debug("Refreshing entries");
43         ArrayList JavaDoc configEntries = loginConfigModule.getSecurityConfigurations();
44         this.entries.clear();
45         for (int i=0; i<configEntries.size(); i++){
46             IpanemaSecurityConfigurationEntry confEntry = (IpanemaSecurityConfigurationEntry)configEntries.get(i);
47             LOGGER.debug("Adding entry for "+confEntry.getApplicationName()+"("+confEntry.getLoginModuleName()+", "+confEntry.getControlFlag()+", "+confEntry.getOptions()+")");
48             LOGGER.debug("Control Flag is: "+strToLoginModuleControlFlag(confEntry.getControlFlag()));
49             this.entries.put(
50                 confEntry.getApplicationName(),
51                 new AppConfigurationEntry JavaDoc(
52                     confEntry.getLoginModuleName(),
53                     strToLoginModuleControlFlag(confEntry.getControlFlag()),
54                     confEntry.getOptions()
55                 )
56             );
57         }
58     }
59
60     /* (non-Javadoc)
61      * @see javax.security.auth.login.Configuration#getAppConfigurationEntry(java.lang.String)
62      */

63     public AppConfigurationEntry JavaDoc[] getAppConfigurationEntry(String JavaDoc applicationName) {
64 // LOGGER.debug("Having request for "+applicationName);
65
if (entries.containsKey(applicationName)){
66 // LOGGER.debug("Found entry for "+applicationName);
67
return new AppConfigurationEntry JavaDoc[]{(AppConfigurationEntry JavaDoc)entries.get(applicationName)};
68         }
69         return null;
70     }
71     
72     private static IpanemaSecurityConfiguration configInstance = null;
73     public static void declareConfiguration(){
74         Class JavaDoc configClass = null; //Configuration.getConfiguration().getClass();
75
if (configClass == null)
76             LOGGER.debug("Current security configuration is null");
77         else
78             LOGGER.debug("Current security configuration is of type: "+configClass.getName());
79         
80         if (configClass != IpanemaSecurityConfiguration.class){
81             configInstance = new IpanemaSecurityConfiguration();
82             Configuration.setConfiguration(configInstance);
83             LOGGER.debug("Set configuration to type: "+Configuration.getConfiguration().getClass().getName());
84         }
85     }
86     
87     
88     private static AppConfigurationEntry.LoginModuleControlFlag JavaDoc strToLoginModuleControlFlag(String JavaDoc flag){
89         if (flag.toLowerCase().equals(IpanemaSecurityConfigurationEntry.MODULE_CONTROL_FLAG_REQUIRED))
90             return AppConfigurationEntry.LoginModuleControlFlag.REQUIRED;
91         else if (flag.toLowerCase().equals(IpanemaSecurityConfigurationEntry.MODULE_CONTROL_FLAG_REQUISITE))
92             return AppConfigurationEntry.LoginModuleControlFlag.REQUISITE;
93         else if (flag.toLowerCase().equals(IpanemaSecurityConfigurationEntry.MODULE_CONTROL_FLAG_SUFFICIENT))
94             return AppConfigurationEntry.LoginModuleControlFlag.SUFFICIENT;
95         else if (flag.toLowerCase().equals(IpanemaSecurityConfigurationEntry.MODULE_CONTROL_FLAG_OPTIONAL))
96             return AppConfigurationEntry.LoginModuleControlFlag.OPTIONAL;
97         
98         return AppConfigurationEntry.LoginModuleControlFlag.REQUIRED;
99     }
100
101 }
102
Popular Tags