1 package com.atlassian.user.impl.ldap.properties.factory;
2
3 import com.atlassian.user.configuration.Configuration;
4 import com.atlassian.user.impl.ldap.properties.DefaultLdapSearchProperties;
5 import com.atlassian.user.impl.ldap.properties.LdapSearchProperties;
6 import org.apache.log4j.Logger;
7
8 import java.util.Properties;
9
10 public class LdapSearchPropertiesFactory
11 {
12 protected final Logger log = Logger.getLogger(this.getClass());
13
14 public LdapSearchProperties createInstance(Properties properties)
15 {
16 DefaultLdapSearchProperties result = new DefaultLdapSearchProperties();
17 result.setBaseGroupNamespace(properties.getProperty(Configuration.BASE_GROUP_NAMESPACE));
18 result.setBaseUserNamespace(properties.getProperty(Configuration.BASE_USER_NAMESPACE));
19 result.setEmailAttribute(properties.getProperty(Configuration.EMAIL_ATTRIBUTE));
20 result.setFirstnameAttribute(properties.getProperty(Configuration.FIRSTNAME_ATTRIBUTE));
21 result.setGroupFilter(properties.getProperty(Configuration.GROUP_SEARCH_FILTER));
22 result.setGroupnameAttribute(properties.getProperty(Configuration.GROUPNAME_ATTRIBUTE));
23 String groupSearchScopeAllDepths = properties.getProperty(Configuration.GROUP_SEARCH_ALL_DEPTHS);
24 result.setGroupSearchScopeAllDepths(Boolean.valueOf(groupSearchScopeAllDepths).booleanValue());
25 result.setSurnameAttribute(properties.getProperty(Configuration.SURNAME_ATTRIBUTE));
26 String timeLimitMillis = properties.getProperty(Configuration.TIME_TO_LIVE);
27 try
28 {
29 result.setTimeLimitMillis(Integer.parseInt(timeLimitMillis));
30 }
31 catch (NumberFormatException e)
32 {
33 log.warn("Error parsing LDAP time limit (in millis) in configuration file, using default value", e);
34 }
35 result.setUserFilter(properties.getProperty(Configuration.USER_SEARCH_FILTER));
36 result.setUsernameAttribute(properties.getProperty(Configuration.USERNAME_ATTRIBUTE));
37 String userSearchScopeAllDepths = properties.getProperty(Configuration.USER_SEARCH_ALL_DEPTHS);
38 result.setUserSearchScopeAllDepths(Boolean.valueOf(userSearchScopeAllDepths).booleanValue());
39
40 return result;
41 }
42 }