for ( Plugin element : src )
{
if ( element.isInherited() || !element.getExecutions().isEmpty() )
{
// NOTE: Enforce recursive merge to trigger merging/inheritance logic for executions
Plugin plugin = new Plugin();
plugin.setLocation( "", element.getLocation( "" ) );
plugin.setGroupId( null );
mergePlugin( plugin, element, sourceDominant, context );
Object key = getPluginKey( element );
master.put( key, plugin );
}
}
Map<Object, List<Plugin>> predecessors = new LinkedHashMap<Object, List<Plugin>>();
List<Plugin> pending = new ArrayList<Plugin>();
for ( Plugin element : tgt )
{
Object key = getPluginKey( element );
Plugin existing = master.get( key );
if ( existing != null )
{
mergePlugin( element, existing, sourceDominant, context );
master.put( key, element );