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;
}