in src/main/java/org/apache/sling/feature/scanner/impl/ContentPackageScanner.java [404:451]
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;
}