support updating objectClasses for a User

This PR does a few things:

- moves existing deactivatedUid and new objectClass meta-data to a common implementation meta-data HashMap.
- implementation meta-data is not observed for object equality
- updates objectClasses based on current state of User object
- always updates objectClass on object update
Yes, but does it actually remove the object class?

On Fri, Dec 12, 2014 at 10:20 AM, Daniel Frett <notifications@github.com>
wrote:
>
> In
> ldaptive/src/main/java/org/ccci/idm/user/ldaptive/dao/mapper/AbstractUserLdapEntryMapper.java
> <https://github.com/GlobalTechnology/idm-user-management/pull/30#discussion-diff-21749918>
> :
>
> >          }
> > -        if(hasRelayAttributes(user)) {
> > -            attr.addStringValue(LDAP_OBJECTCLASS_RELAY_ATTRIBUTES);
> > +
> > +        // update objectClasses
> > +        objectClasses.addAll(LDAP_OBJECTCLASSES_USER);
> > +        if(hasCruPersonAttributes(user)) {
> > +            objectClasses.add(LDAP_OBJECTCLASS_CRU_PERSON_ATTRIBUTES);
> > +        } else {
> > +            objectClasses.remove(LDAP_OBJECTCLASS_CRU_PERSON_ATTRIBUTES);
>
> I added in the remove based on this earlier discussion:
>
> #30 (comment)
> <https://github.com/GlobalTechnology/idm-user-management/pull/30#issuecomment-66651541>
>
> I'm removing it for the scenario that someone has all the cru person
> attributes removed
>
> —
> Reply to this email directly or view it on GitHub
> <https://github.com/GlobalTechnology/idm-user-management/pull/30/files#r21749918>
> .
>