On Tue, Apr 19, 2011 at 1:03 PM, Pierre-Arnaud Marcelot <[email protected]> wrote: > Hi Kiran, > > I'm wondering if the Bean itself should not be renamed from > 'PasswordPolicyBean' to 'PasswordPoliciesBean' to allow the ConfigReader to > work. > > WDYT? we do some magical language processing here to find the singular form of a plural word representing the ads-compositeElement AT ;) so it works, no need to rename thanks for keeping an eye, much appreciated :) > > Regards, > Pierre-Arnaud > > On 18 avr. 2011, at 23:50, [email protected] wrote: > >> Author: kayyagari >> Date: Mon Apr 18 21:50:29 2011 >> New Revision: 1094786 >> >> URL: http://svn.apache.org/viewvc?rev=1094786&view=rev >> Log: >> o added a new container for password policies in config file >> o added support for reading multiple password policies >> >> Modified: >> >> directory/apacheds/trunk/server-config/src/main/java/org/apache/directory/server/config/ConfigPartitionReader.java >> >> directory/apacheds/trunk/server-config/src/main/java/org/apache/directory/server/config/beans/DirectoryServiceBean.java >> directory/apacheds/trunk/server-config/src/main/resources/config.ldif >> >> directory/apacheds/trunk/service-builder/src/main/java/org/apache/directory/server/config/ServiceBuilder.java >> >> Modified: >> directory/apacheds/trunk/server-config/src/main/java/org/apache/directory/server/config/ConfigPartitionReader.java >> URL: >> http://svn.apache.org/viewvc/directory/apacheds/trunk/server-config/src/main/java/org/apache/directory/server/config/ConfigPartitionReader.java?rev=1094786&r1=1094785&r2=1094786&view=diff >> ============================================================================== >> --- >> directory/apacheds/trunk/server-config/src/main/java/org/apache/directory/server/config/ConfigPartitionReader.java >> (original) >> +++ >> directory/apacheds/trunk/server-config/src/main/java/org/apache/directory/server/config/ConfigPartitionReader.java >> Mon Apr 18 21:50:29 2011 >> @@ -573,7 +573,13 @@ public class ConfigPartitionReader >> { >> // Try by removing 'es' >> attributeName = fieldName.substring( 0, >> fieldName.length() - 2 ); >> - >> + >> + // if not found try by removing 'ies' and adding >> 'y' , e.x ads-passwordPolicies >> + if ( fieldName.endsWith( "ies" ) && >> !schemaManager.getObjectClassRegistry().contains( attributeName ) ) >> + { >> + attributeName = fieldName.substring( 0, >> fieldName.length() - 3 ) + "y"; >> + } >> + >> if ( >> !schemaManager.getObjectClassRegistry().contains( attributeName ) ) >> { >> String message = "Cannot find the ObjectClass >> named " + attributeName + " in the schema"; >> >> Modified: >> directory/apacheds/trunk/server-config/src/main/java/org/apache/directory/server/config/beans/DirectoryServiceBean.java >> URL: >> http://svn.apache.org/viewvc/directory/apacheds/trunk/server-config/src/main/java/org/apache/directory/server/config/beans/DirectoryServiceBean.java?rev=1094786&r1=1094785&r2=1094786&view=diff >> ============================================================================== >> --- >> directory/apacheds/trunk/server-config/src/main/java/org/apache/directory/server/config/beans/DirectoryServiceBean.java >> (original) >> +++ >> directory/apacheds/trunk/server-config/src/main/java/org/apache/directory/server/config/beans/DirectoryServiceBean.java >> Mon Apr 18 21:50:29 2011 >> @@ -90,8 +90,8 @@ public class DirectoryServiceBean extend >> private List<PartitionBean> partitions = new ArrayList<PartitionBean>(); >> >> /** The reference to the Password Policy component */ >> - @ConfigurationElement >> - private PasswordPolicyBean passwordPolicy; >> + @ConfigurationElement(attributeType = "ads-passwordPolicies", container >> = "passwordPolicies") >> + private List<PasswordPolicyBean> passwordPolicies = new >> ArrayList<PasswordPolicyBean>(); >> >> >> /** >> @@ -524,24 +524,36 @@ public class DirectoryServiceBean extend >> >> >> /** >> - * @return the passwordPolicy >> + * @return the passwordPolicies >> */ >> - public PasswordPolicyBean getPasswordPolicy() >> + public List<PasswordPolicyBean> getPasswordPolicies() >> { >> - return passwordPolicy; >> + return passwordPolicies; >> } >> >> >> /** >> - * @param passwordPolicy the passwordPolicy to set >> + * @param passwordPolicies the pwdPolicies to set >> */ >> - public void setPasswordPolicy( PasswordPolicyBean passwordPolicy ) >> + public void setPasswordPolicies( List<PasswordPolicyBean> >> passwordPolicies ) >> { >> - this.passwordPolicy = passwordPolicy; >> + this.passwordPolicies = passwordPolicies; >> } >> >> >> /** >> + * @param ppolicies the password policies to add >> + */ >> + public void addPasswordPolicies( PasswordPolicyBean... ppolicies ) >> + { >> + for ( PasswordPolicyBean ppolicy : ppolicies ) >> + { >> + this.passwordPolicies.add( ppolicy ); >> + } >> + } >> + >> + >> + /** >> * {@inheritDoc} >> */ >> public String toString() >> @@ -592,9 +604,12 @@ public class DirectoryServiceBean extend >> sb.append( changeLog.toString( " " ) ); >> } >> >> - if ( passwordPolicy != null ) >> + if ( ( passwordPolicies != null ) && ( passwordPolicies.size() > 0 >> ) ) >> { >> - sb.append( passwordPolicy.toString( " " ) ); >> + for ( PasswordPolicyBean ppolicy : passwordPolicies ) >> + { >> + sb.append( ppolicy.toString( " " ) ); >> + } >> } >> >> sb.append( " servers : \n" ); >> >> Modified: >> directory/apacheds/trunk/server-config/src/main/resources/config.ldif >> URL: >> http://svn.apache.org/viewvc/directory/apacheds/trunk/server-config/src/main/resources/config.ldif?rev=1094786&r1=1094785&r2=1094786&view=diff >> ============================================================================== >> --- directory/apacheds/trunk/server-config/src/main/resources/config.ldif >> (original) >> +++ directory/apacheds/trunk/server-config/src/main/resources/config.ldif >> Mon Apr 18 21:50:29 2011 >> @@ -23,6 +23,7 @@ ads-servers: ldapServer >> ads-servers: ntpServer >> ads-partitions: example >> ads-partitions: system >> +ads-passwordPolicies: default >> ads-interceptors: aciAuthorizationInterceptor >> ads-interceptors: authenticationInterceptor >> ads-interceptors: collectiveAttributeInterceptor >> @@ -216,11 +217,16 @@ ads-interceptorclassname: org.apache.dir >> ads-interceptorid: triggerInterceptor >> ads-enabled: TRUE >> >> -dn: ads-pwdId=pwdPolicy,ads-directoryServiceId=default,ou=config >> +dn: ou=passwordPolicies,ads-directoryServiceId=default,ou=config >> +objectClass: organizationalUnit >> +objectClass: top >> +ou: passwordPolicies >> + >> +dn: >> ads-pwdId=default,ou=passwordPolicies,ads-directoryServiceId=default,ou=config >> objectClass: top >> objectClass: ads-base >> objectClass: ads-passwordPolicy >> -ads-pwdId: pwdPolicy >> +ads-pwdId: default >> ads-pwdSafeModify: FALSE >> ads-pwdMaxAge: 0 >> ads-pwdFailureCountInterval: 30 >> >> Modified: >> directory/apacheds/trunk/service-builder/src/main/java/org/apache/directory/server/config/ServiceBuilder.java >> URL: >> http://svn.apache.org/viewvc/directory/apacheds/trunk/service-builder/src/main/java/org/apache/directory/server/config/ServiceBuilder.java?rev=1094786&r1=1094785&r2=1094786&view=diff >> ============================================================================== >> --- >> directory/apacheds/trunk/service-builder/src/main/java/org/apache/directory/server/config/ServiceBuilder.java >> (original) >> +++ >> directory/apacheds/trunk/service-builder/src/main/java/org/apache/directory/server/config/ServiceBuilder.java >> Mon Apr 18 21:50:29 2011 >> @@ -1270,16 +1270,30 @@ public class ServiceBuilder >> directoryService.setJournal( jl ); >> } >> >> - // password policy >> - // TODO add support for reading multiple policies from the config >> - PasswordPolicyConfiguration pPolicyConfig = createPwdPolicyConfig( >> directoryServiceBean.getPasswordPolicy() ); >> - if ( pPolicyConfig != null ) >> + // password policies >> + List<PasswordPolicyBean> ppolicyBeans = >> directoryServiceBean.getPasswordPolicies(); >> + PpolicyConfigContainer ppolicyContainer = new >> PpolicyConfigContainer(); >> + >> + for ( PasswordPolicyBean ppolicyBean : ppolicyBeans ) >> { >> - PpolicyConfigContainer pPolicies = new >> PpolicyConfigContainer(); >> - pPolicies.setDefaultPolicy( pPolicyConfig ); >> - directoryService.setPwdPolicies( pPolicies ); >> + PasswordPolicyConfiguration ppolicyConfig = >> createPwdPolicyConfig( ppolicyBean ); >> + >> + if ( ppolicyConfig != null ) >> + { >> + // the name should be strictly 'default', the default >> policy can't be enforced by defining a new AT >> + if ( ppolicyBean.getPwdId().equalsIgnoreCase( "default" ) ) >> + { >> + ppolicyContainer.setDefaultPolicy( ppolicyConfig ); >> + } >> + else >> + { >> + ppolicyContainer.addPolicy( ppolicyBean.getDn(), >> ppolicyConfig ); >> + } >> + } >> } >> >> + directoryService.setPwdPolicies( ppolicyContainer ); >> + >> // MaxPDUSize >> directoryService.setMaxPDUSize( >> directoryServiceBean.getDsMaxPDUSize() ); >> >> >> > >
-- Kiran Ayyagari
