protected void ensureBundlesInstalled()

in src/main/java/org/apache/sling/maven/bundlesupport/FsMountMojo.java [206:267]


    protected void ensureBundlesInstalled(CloseableHttpClient httpClient, URI consoleTargetUrl)
            throws MojoExecutionException {
        if (!deployFsResourceBundle) {
            return;
        }

        if (deployFsResourceBundlePrerequisites == null) {
            BundlePrerequisite latestJakartaJson = new BundlePrerequisite();
            latestJakartaJson.addBundle(new Bundle(BUNDLE_GROUP_ID, FS_BUNDLE_ARTIFACT_ID, FS_BUNDLE_DEFAULT_VERSION));
            latestJakartaJson.addPrecondition(
                    new Bundle(BUNDLE_GROUP_ID, JOHNZON_BUNDLE_ARTIFACT_ID, JOHNZON_2_BUNDLE_MIN_VERSION));
            latestJakartaJson.addPrecondition(
                    new Bundle(BUNDLE_GROUP_ID, SLING_API_BUNDLE_ARTIFACT_ID, SLING_API_BUNDLE_MIN_VERSION));
            latestJakartaJson.addPrecondition(new Bundle(
                    COMMONS_COLLECTIONS4_BUNDLE_GROUP_ID,
                    COMMONS_COLLECTIONS4_BUNDLE_ARTIFACT_ID,
                    COMMONS_COLLECTIONS4_BUNDLE_MIN_VERSION,
                    COMMONS_COLLECTIONS4_BUNDLE_SYMBOLICNAME));
            addDeployFsResourceBundlePrerequisite(latestJakartaJson);

            BundlePrerequisite legacyJavaxJson = new BundlePrerequisite();
            legacyJavaxJson.addBundle(
                    new Bundle(BUNDLE_GROUP_ID, JOHNZON_BUNDLE_ARTIFACT_ID, JOHNZON_1_BUNDLE_MIN_VERSION));
            legacyJavaxJson.addBundle(new Bundle(
                    COMMONS_COLLECTIONS4_BUNDLE_GROUP_ID,
                    COMMONS_COLLECTIONS4_BUNDLE_ARTIFACT_ID,
                    COMMONS_COLLECTIONS4_BUNDLE_MIN_VERSION,
                    COMMONS_COLLECTIONS4_BUNDLE_SYMBOLICNAME));
            legacyJavaxJson.addBundle(
                    new Bundle(BUNDLE_GROUP_ID, FS_BUNDLE_ARTIFACT_ID, FS_BUNDLE_LEGACY_DEFAULT_VERSION));
            legacyJavaxJson.addPrecondition(new Bundle(
                    BUNDLE_GROUP_ID,
                    RESOURCE_RESOLVER_BUNDLE_ARTIFACT_ID,
                    RESOURCE_RESOLVER_BUNDLE_LEGACY_MIN_VERSION));
            addDeployFsResourceBundlePrerequisite(legacyJavaxJson);

            BundlePrerequisite legacyAncient = new BundlePrerequisite();
            legacyAncient.addBundle(
                    new Bundle(BUNDLE_GROUP_ID, FS_BUNDLE_ARTIFACT_ID, FS_BUNDLE_LEGACY_ACNIENT_DEFAULT_VERSION));
            addDeployFsResourceBundlePrerequisite(legacyAncient);
        }

        boolean foundMatch = false;
        for (BundlePrerequisite bundlePrerequisite : deployFsResourceBundlePrerequisites) {
            if (isBundlePrerequisitesPreconditionsMet(httpClient, bundlePrerequisite, consoleTargetUrl)) {
                for (Bundle bundle : bundlePrerequisite.getBundles()) {
                    deployBundle(httpClient, bundle, consoleTargetUrl);
                }
                foundMatch = true;
                break;
            }
        }
        if (!foundMatch) {
            throw new MojoExecutionException(
                    "Target server does not meet any of the prerequisites for this goal. Haven't found the necessary bundles: "
                            + deployFsResourceBundlePrerequisites.stream()
                                    .map(bundlePrerequisite -> bundlePrerequisite.getPreconditions().stream()
                                            .map(BundlePrerequisite.Bundle::toString)
                                            .collect(Collectors.joining(", ")))
                                    .collect(Collectors.joining(" OR ")));
        }
    }