static Map < SerializedField , Object > fieldsDelta ( Map < SerializedField , Object > base , Map < SerializedField , Object > child ) { Map < SerializedField , Object > m = new EnumMap < SerializedField , Object > ( child ) ; for ( Map . Entry < SerializedField , Object > baseEntry : base . entrySet ( ) ) { SerializedField f = baseEntry . getKey ( ) ; if ( m . containsKey ( f ) && ConfigImplUtil . equalsHandlingNull ( baseEntry . getValue ( ) , m . get ( f ) ) ) { // if field is unchanged, just remove it so we inherit m . remove ( f ) ; } else if ( ! m . containsKey ( f ) ) { // if field has been removed, we have to add a deletion entry switch ( f ) { case ORIGIN_DESCRIPTION : throw new ConfigException . BugOrBroken ( "origin missing description field? " + child ) ; case ORIGIN_LINE_NUMBER : m . put ( SerializedField . ORIGIN_LINE_NUMBER , - 1 ) ; break ; case ORIGIN_END_LINE_NUMBER : m . put ( SerializedField . ORIGIN_END_LINE_NUMBER , - 1 ) ; break ; case ORIGIN_TYPE : throw new ConfigException . BugOrBroken ( "should always be an ORIGIN_TYPE field" ) ; case ORIGIN_URL : m . put ( SerializedField . ORIGIN_NULL_URL , "" ) ; break ; case ORIGIN_RESOURCE : m . put ( SerializedField . ORIGIN_NULL_RESOURCE , "" ) ; break ; case ORIGIN_COMMENTS : m . put ( SerializedField . ORIGIN_NULL_COMMENTS , "" ) ; break ; case ORIGIN_NULL_URL : // FALL THRU case ORIGIN_NULL_RESOURCE : // FALL THRU case ORIGIN_NULL_COMMENTS : throw new ConfigException . BugOrBroken ( "computing delta, base object should not contain " + f + " " + base ) ; case END_MARKER : case ROOT_VALUE : case ROOT_WAS_CONFIG : case UNKNOWN : case VALUE_DATA : case VALUE_ORIGIN : throw new ConfigException . BugOrBroken ( "should not appear here: " + f ) ; } } else { // field is in base and child, but differs, so leave it } } return m ; }
filename with every single value .