public void merge()

in src/main/java/org/apache/sling/feature/extension/apiregions/ArtifactRulesMergeHandler.java [36:64]


    public void merge(final HandlerContext context, 
        final Feature targetFeature, 
        final Feature sourceFeature, 
        final Extension targetExtension, 
        final Extension sourceExtension) {

        if ( targetExtension == null ) {
            // no target available yet, just copy source
            final ArtifactRules sourceRules = ArtifactRules.getArtifactRules(sourceExtension);
            ArtifactRules.setArtifactRules(targetFeature, sourceRules);
        } else {
            final ArtifactRules sourceRules = ArtifactRules.getArtifactRules(sourceExtension);
            final ArtifactRules targetRules = ArtifactRules.getArtifactRules(targetExtension);

            // mode merging
            if ( context.isInitialMerge() ) {
                targetRules.setMode(sourceRules.getMode());
            } else {
                if ( targetRules.getMode().ordinal() > sourceRules.getMode().ordinal() ) {
                    targetRules.setMode(sourceRules.getMode());
                }
            }

            // merge - just add
            targetRules.getBundleVersionRules().addAll(sourceRules.getBundleVersionRules());
            
            ArtifactRules.setArtifactRules(targetFeature, targetRules);
        }
    }