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
I see. I mistakenly thought each object class was REPLACE'd individually
and not as the Set it is.

On Fri, Dec 12, 2014 at 10:33 AM, Daniel Frett <notifications@github.com>
wrote:
>
> In
> ldaptive/src/main/java/org/ccci/idm/user/ldaptive/dao/LdaptiveUserDao.java
> <https://github.com/GlobalTechnology/idm-user-management/pull/30#discussion-diff-21750915>
> :
>
> > @@ -366,7 +366,7 @@ private void updateInternal(final Connection conn, final String dn, final User u
> >          final Set<String> mask = this.getAttributeMask(attrs);
> >
> >          for (final LdapAttribute attribute : entry.getAttributes()) {
> > -            if (mask.contains(attribute.getName())) {
> > +            if (mask.contains(attribute.getName()) || LDAP_ATTR_OBJECTCLASS.equals(attribute.getName())) {
>
> AttributeModificationType.REPLACE will add/remove as necessary and won't
> throw Exceptions if the value being added already exists or the value being
> removed doesn't exist.
>
> —
> Reply to this email directly or view it on GitHub
> <https://github.com/GlobalTechnology/idm-user-management/pull/30/files#r21750915>
> .
>