in src/main/java/org/apache/sling/feature/extension/apiregions/analyser/CheckApiRegionsCrossFeatureDups.java [119:143]
private boolean allOtherExportersNonDefining(PackageInfo pi, FeatureDescriptor f, Set<String> definingFeatures) {
List<ArtifactId> declaringFeatures = new ArrayList<>();
for (BundleDescriptor bd : f.getBundleDescriptors()) {
if (bd.getExportedPackages().contains(pi)) {
declaringFeatures.addAll(Arrays.asList(bd.getArtifact().getFeatureOrigins(f.getFeature().getId())));
}
}
for (ArtifactId feature : declaringFeatures) {
for (String definingFeature : definingFeatures) {
if (definingFeature.endsWith("*")) {
String prefix = definingFeature.substring(0, definingFeature.length() - 1);
if (feature.toMvnId().startsWith(prefix)) {
return false;
}
} else {
if (feature.toMvnId().equals(definingFeature)) {
return false;
}
}
}
}
return true;
}