public static Feature assemble()

in src/main/java/org/apache/sling/feature/builder/FeatureBuilder.java [182:222]


    public static Feature assemble(
            final ArtifactId featureId,
            final BuilderContext context,
            final Feature... features) {
        if ( featureId == null || features == null || context == null ) {
            throw new IllegalArgumentException("Features and/or context must not be null");
        }

        final Feature target = new Feature(featureId);

        final Feature[] assembledFeatures = FeatureBuilder.deduplicate(context, features);

        // append feature list in extension
        final Extension list = new Extension(ExtensionType.ARTIFACTS, Extension.EXTENSION_NAME_ASSEMBLED_FEATURES,
                ExtensionState.TRANSIENT);
        for(final Feature feature : assembledFeatures) {
            list.getArtifacts().add(new Artifact(feature.getId()));
        }
        target.getExtensions().add(list);

        // assemble feature
        boolean targetIsComplete = true;
        boolean firstMerge = true;
        for(final Feature assembled : assembledFeatures) {
            if (!assembled.isComplete()) {
                targetIsComplete = false;
            }

            merge(target, assembled, context, context.getArtifactOverrides(), context.getConfigOverrides(), null, false, firstMerge);
            firstMerge = false;
        }

        // check complete flag
        if (targetIsComplete) {
            target.setComplete(true);
        }

        target.setAssembled(true);

        return target;
    }