PackageType computePackageType()

in src/main/java/org/apache/jackrabbit/filevault/maven/packaging/mojo/GenerateMetadataMojo.java [1265:1311]


    PackageType computePackageType() {
        final PackageType packageType;
        // auto detect...
        boolean hasApps = false;
        boolean hasOsgiConfigsOrBundles = false;
        boolean hasOther = false;
        for (PathFilterSet p : filters.getFilterSets()) {
            if (PathFilterSet.TYPE_CLEANUP.equals(p.getType())) {
                continue;
            }
            String root = p.getRoot();
            if ("/apps".equals(root) || root.startsWith("/apps/") || "/libs".equals(root) || root.startsWith("/libs/")) {
                // is it OSGi config or bundles (just some heuristic)
                if (OSGI_CONFIG_OR_BUNDLE_FILTER_ROOT_PATTERN.matcher(root).matches()) {
                    getLog().debug("Detected probably OSGi config/bundle filter entry: " + p);
                    hasOsgiConfigsOrBundles = true;
                } else {
                    hasApps = true;
                    getLog().debug("Detected /apps or /libs filter entry: " + p);
                }
            } else {
                hasOther = true;
                getLog().debug("Detected filter entry outside /apps and /libs: " + p);
            }
        }
        // no embeds and subpackages?
        getLog().debug("Detected " + embeddeds.length + " bundle(s) and " + subPackages.length + " sub package(s).");
        if (embeddeds.length == 0 && subPackages.length == 0) {
            if (hasApps && !hasOther && !hasOsgiConfigsOrBundles) {
                packageType = PackageType.APPLICATION;
            } else if (hasOther && !hasApps && !hasOsgiConfigsOrBundles) {
                packageType = PackageType.CONTENT;
            } else if (!hasOther && !hasApps && hasOsgiConfigsOrBundles) {
                packageType = PackageType.CONTAINER;
            } else {
                packageType = PackageType.MIXED;
            }
        } else {
            if (!hasApps && !hasOther) {
                packageType = PackageType.CONTAINER;
            } else {
                packageType = PackageType.MIXED;
            }
        }
        getLog().info("Auto-detected package type: " + packageType.toString().toLowerCase());
        return packageType;
    }