private static KerberosComponentDescriptor processComponent(KerberosComponentDescriptor previousStackComponent,
                                                              KerberosComponentDescriptor newStackComponent,
                                                              KerberosComponentDescriptor userComponent) {
    userComponent.setAuthToLocalProperties(processAuthToLocalProperties(
        (previousStackComponent == null) ? null : previousStackComponent.getAuthToLocalProperties(),
        (newStackComponent == null) ? null : newStackComponent.getAuthToLocalProperties(),
        userComponent.getAuthToLocalProperties()));

    userComponent.setConfigurations(processConfigurations(
        (previousStackComponent == null) ? null : previousStackComponent.getConfigurations(),
        (newStackComponent == null) ? null : newStackComponent.getConfigurations(),
        userComponent.getConfigurations()));

    userComponent.setIdentities(processIdentities(
        (previousStackComponent == null) ? null : previousStackComponent.getIdentities(),
        (newStackComponent == null) ? null : newStackComponent.getIdentities(),
        userComponent.getIdentities()));

    return userComponent;
  }
Processes a {@link KerberosComponentDescriptor} to change the user-supplied data based on the changes
observed between the previous stack version's data and the new stack version's data.
<p>
The supplied userComponent value is updated in place.

@param previousStackComponent a {@link KerberosComponentDescriptor} from the previous stack version's Kerberos descriptor
@param newStackComponent      a {@link KerberosComponentDescriptor} from the new stack version's Kerberos descriptor
@param userComponent          a {@link KerberosComponentDescriptor} from the user-specified Kerberos descriptor
@return the updated {@link KerberosComponentDescriptor}
ambari-server/src/main/java/org/apache/ambari/server/state/kerberos/KerberosDescriptorUpdateHelper.java