KickJava   Java API By Example, From Geeks To Geeks.

Java > Open Source Codes > org > apache > ldap > server > authn > AuthenticatorConfigBuilder


1 /*
2  * Copyright 2004 The Apache Software Foundation
3  *
4  * Licensed under the Apache License, Version 2.0 (the "License");
5  * you may not use this file except in compliance with the License.
6  * You may obtain a copy of the License at
7  *
8  * http://www.apache.org/licenses/LICENSE-2.0
9  *
10  * Unless required by applicable law or agreed to in writing, software
11  * distributed under the License is distributed on an "AS IS" BASIS,
12  * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
13  * See the License for the specific language governing permissions and
14  * limitations under the License.
15  *
16  */

17 package org.apache.ldap.server.authn;
18
19
20 import org.apache.ldap.common.util.StringTools;
21 import org.apache.ldap.server.jndi.EnvKeys;
22
23 import javax.naming.NamingException JavaDoc;
24 import java.io.FileInputStream JavaDoc;
25 import java.util.Hashtable JavaDoc;
26 import java.util.Properties JavaDoc;
27
28
29 /**
30  * An authenticator configuration builder which produces AuthenticatorConfig
31  * objects from various configuration formats, namely Hashtables.
32  *
33  * @author <a HREF="mailto:endisd@vergenet.com">Endi S. Dewata</a>
34  */

35 public class AuthenticatorConfigBuilder
36 {
37     /** keep this so we do not have create empty ones over and over again */
38     private final static GenericAuthenticatorConfig[] EMPTY = new GenericAuthenticatorConfig[0];
39
40
41     /**
42      * Extracts properties from a Hashtable and builds a configuration bean for
43      * an AuthenticationService.
44      *
45      * @param authenticatorName the name of the authenticator to extract configs for
46      * @param env the Hastable containing usually JNDI environment settings
47      * @return the extracted configuration object
48      * @throws javax.naming.NamingException
49      */

50     public static GenericAuthenticatorConfig getAuthenticatorConfig( String JavaDoc authenticatorName, Hashtable JavaDoc env )
51             throws NamingException JavaDoc
52     {
53         final StringBuffer JavaDoc buf = new StringBuffer JavaDoc();
54         final GenericAuthenticatorConfig config = new GenericAuthenticatorConfig();
55
56         // --------------------------------------------------------------------
57
// set id for authenticator
58
// --------------------------------------------------------------------
59

60         config.setAuthenticatorName( authenticatorName );
61
62         // --------------------------------------------------------------------
63
// set authenticator class
64
// --------------------------------------------------------------------
65

66         buf.setLength( 0 );
67         buf.append( EnvKeys.AUTHENTICATOR_CLASS ).append( authenticatorName );
68         String JavaDoc authenticatorClass = ( String JavaDoc ) env.get( buf.toString() );
69
70         if ( authenticatorClass != null )
71         {
72             config.setAuthenticatorClass( authenticatorClass );
73         }
74
75         // --------------------------------------------------------------------
76
// set authenticator properties
77
// --------------------------------------------------------------------
78

79         buf.setLength( 0 );
80         buf.append( EnvKeys.AUTHENTICATOR_PROPERTIES ).append( authenticatorName );
81         String JavaDoc propertiesFile = ( String JavaDoc ) env.get( buf.toString() );
82
83         if ( propertiesFile != null )
84         {
85             try
86             {
87                 Properties JavaDoc properties = config.getProperties();
88                 properties.load( new FileInputStream JavaDoc( propertiesFile ) );
89                 config.setProperties( properties );
90             }
91             catch ( Exception JavaDoc e )
92             {
93                 throw new NamingException JavaDoc( e.getMessage() );
94             }
95         }
96
97         return config;
98     }
99
100
101     /**
102      * Extracts properties from a Hashtable and builds a set of configurations
103      * bean for Authenticators.
104      *
105      * @param env the Hastable containing usually JNDI environment settings
106      * @return all the extracted configuration objects configured
107      * @throws javax.naming.NamingException
108      */

109     public static GenericAuthenticatorConfig[] getAuthenticatorConfigs( Hashtable JavaDoc env )
110             throws NamingException JavaDoc
111     {
112         String JavaDoc idList = ( String JavaDoc ) env.get( EnvKeys.AUTHENTICATORS );
113
114         // return empty array when we got nothin to work with!
115
if ( idList == null || idList.trim().length() == 0 )
116         {
117             return EMPTY;
118         }
119
120         idList = StringTools.deepTrim( idList );
121         final String JavaDoc[] ids = idList.split( " " );
122         final GenericAuthenticatorConfig[] configs = new GenericAuthenticatorConfig[ids.length];
123         for ( int ii = 0; ii < configs.length; ii++ )
124         {
125             configs[ii] = getAuthenticatorConfig( ids[ii], env );
126         }
127
128         return configs;
129     }
130 }
131
Popular Tags