Configuration processConfiguration()

in src/main/java/org/apache/sling/feature/scanner/impl/ContentPackageScanner.java [419:467]


    Configuration processConfiguration(
            final File configFile, final ArtifactId packageArtifactId, final String contentPath) throws IOException {

        boolean isConfig = true;
        if (contentPath.endsWith(".xml")) {
            final String contents = Files.readAllLines(configFile.toPath()).toString();
            if (contents.indexOf("jcr:primaryType=\"sling:OsgiConfig\"") == -1) {
                isConfig = false;
            }
        }

        if (isConfig) {
            final String id;
            if (contentPath.endsWith("/.content.xml")) {
                final int lastSlash = contentPath.lastIndexOf('/');
                final int previousSlash = contentPath.lastIndexOf('/', lastSlash - 1);
                id = contentPath.substring(previousSlash + 1, lastSlash);
            } else {
                String name = contentPath;
                final int lastSlash = contentPath.lastIndexOf('/');
                for (final String ext : CFG_EXTENSIONS) {
                    if (name.endsWith(ext)) {
                        name = name.substring(lastSlash + 1, name.length() - ext.length());
                    }
                }
                id = name;
            }

            final String pid;
            final int slashPos = id.indexOf('-');
            if (slashPos == -1) {
                pid = id;
            } else {
                pid = id.substring(0, slashPos) + '~' + id.substring(slashPos + 1);
            }

            final Configuration cfg = new Configuration(pid);
            cfg.getProperties()
                    .put(Configuration.PROP_PREFIX + ContentPackageDescriptorImpl.METADATA_PATH, contentPath);
            cfg.getProperties()
                    .put(
                            Configuration.PROP_PREFIX + ContentPackageDescriptorImpl.METADATA_PACKAGE,
                            packageArtifactId.toMvnId());

            return cfg;
        }

        return null;
    }