mraible
Oct 11th, 2006, 02:18 AM
I have the following methods I'm using to update a User object in LDAP.
protected void mapToContext(User user, DirContextAdapter context) {
context.setAttributeValues("objectclass", new String[]{"top", "person", "inetOrgPerson"});
context.setAttributeValue("uid", user.getUsername());
context.setAttributeValue("userPassword", LdapUtils.getUtf8Bytes(user.getPassword()));
context.setAttributeValue("cn", user.getFirstName());
context.setAttributeValue("sn", user.getLastName());
context.setAttributeValue("displayName", user.getFullName());
context.setAttributeValue("mail", user.getEmail());
context.setAttributeValue("telephoneNumber", user.getPhoneNumber());
context.setAttributeValue("title", user.getTitle());
context.setAttributeValue("department", user.getDepartment());
context.setAttributeValue("passwordHint", user.getPasswordHint());
context.setAttributeValue("version", String.valueOf(user.getVersion()));
context.setAttributeValue("accountEnabled", String.valueOf(user.isEnabled()));
context.setAttributeValue("accountExpired", String.valueOf(user.isAccountExpired()));
context.setAttributeValue("accountLocked", String.valueOf(user.isAccountLocked()));
context.setAttributeValue("credentialsExpired", String.valueOf(user.isCredentialsExpired()));
}
Everything works fine if I modify the String values. However, if I modify version, accountEnabled, accountExpired (the non-String values), I get the following error:
org.springframework.ldap.UncategorizedLdapExceptio n: Operation failed; nested exception is javax.naming.directory.InvalidAttributeIdentifierE xception: [LDAP: error code 17 - Undefined Attribute Type]; remaining name 'uid=tomcat, ou=users'
Caused by: javax.naming.directory.InvalidAttributeIdentifierE xception: [LDAP: error code 17 - Undefined Attribute Type]; remaining name 'uid=tomcat, ou=users'
at com.sun.jndi.ldap.LdapCtx.mapErrorCode(LdapCtx.jav a:3054)
at com.sun.jndi.ldap.LdapCtx.processReturnCode(LdapCt x.java:2931)
at com.sun.jndi.ldap.LdapCtx.processReturnCode(LdapCt x.java:2737)
at com.sun.jndi.ldap.LdapCtx.c_modifyAttributes(LdapC tx.java:1437)
at com.sun.jndi.toolkit.ctx.ComponentDirContext.p_mod ifyAttributes(ComponentDirContext.java:255)
at com.sun.jndi.toolkit.ctx.PartialCompositeDirContex t.modifyAttributes(PartialCompositeDirContext.java :172)
at javax.naming.directory.InitialDirContext.modifyAtt ributes(InitialDirContext.java:153)
at org.springframework.ldap.LdapTemplate$13.executeWi thContext(LdapTemplate.java:741)
at org.springframework.ldap.LdapTemplate.executeWithC ontext(LdapTemplate.java:641)
at org.springframework.ldap.LdapTemplate.executeReadW rite(LdapTemplate.java:636)
at org.springframework.ldap.LdapTemplate.modifyAttrib utes(LdapTemplate.java:738)
Any idea what could be wrong?
Thanks,
Matt
protected void mapToContext(User user, DirContextAdapter context) {
context.setAttributeValues("objectclass", new String[]{"top", "person", "inetOrgPerson"});
context.setAttributeValue("uid", user.getUsername());
context.setAttributeValue("userPassword", LdapUtils.getUtf8Bytes(user.getPassword()));
context.setAttributeValue("cn", user.getFirstName());
context.setAttributeValue("sn", user.getLastName());
context.setAttributeValue("displayName", user.getFullName());
context.setAttributeValue("mail", user.getEmail());
context.setAttributeValue("telephoneNumber", user.getPhoneNumber());
context.setAttributeValue("title", user.getTitle());
context.setAttributeValue("department", user.getDepartment());
context.setAttributeValue("passwordHint", user.getPasswordHint());
context.setAttributeValue("version", String.valueOf(user.getVersion()));
context.setAttributeValue("accountEnabled", String.valueOf(user.isEnabled()));
context.setAttributeValue("accountExpired", String.valueOf(user.isAccountExpired()));
context.setAttributeValue("accountLocked", String.valueOf(user.isAccountLocked()));
context.setAttributeValue("credentialsExpired", String.valueOf(user.isCredentialsExpired()));
}
Everything works fine if I modify the String values. However, if I modify version, accountEnabled, accountExpired (the non-String values), I get the following error:
org.springframework.ldap.UncategorizedLdapExceptio n: Operation failed; nested exception is javax.naming.directory.InvalidAttributeIdentifierE xception: [LDAP: error code 17 - Undefined Attribute Type]; remaining name 'uid=tomcat, ou=users'
Caused by: javax.naming.directory.InvalidAttributeIdentifierE xception: [LDAP: error code 17 - Undefined Attribute Type]; remaining name 'uid=tomcat, ou=users'
at com.sun.jndi.ldap.LdapCtx.mapErrorCode(LdapCtx.jav a:3054)
at com.sun.jndi.ldap.LdapCtx.processReturnCode(LdapCt x.java:2931)
at com.sun.jndi.ldap.LdapCtx.processReturnCode(LdapCt x.java:2737)
at com.sun.jndi.ldap.LdapCtx.c_modifyAttributes(LdapC tx.java:1437)
at com.sun.jndi.toolkit.ctx.ComponentDirContext.p_mod ifyAttributes(ComponentDirContext.java:255)
at com.sun.jndi.toolkit.ctx.PartialCompositeDirContex t.modifyAttributes(PartialCompositeDirContext.java :172)
at javax.naming.directory.InitialDirContext.modifyAtt ributes(InitialDirContext.java:153)
at org.springframework.ldap.LdapTemplate$13.executeWi thContext(LdapTemplate.java:741)
at org.springframework.ldap.LdapTemplate.executeWithC ontext(LdapTemplate.java:641)
at org.springframework.ldap.LdapTemplate.executeReadW rite(LdapTemplate.java:636)
at org.springframework.ldap.LdapTemplate.modifyAttrib utes(LdapTemplate.java:738)
Any idea what could be wrong?
Thanks,
Matt