SLING-8970 - adding test & fixing logic to consider inherited exports in region checks
diff --git a/src/main/java/org/apache/sling/feature/extension/apiregions/api/ApiRegions.java b/src/main/java/org/apache/sling/feature/extension/apiregions/api/ApiRegions.java
index 790d84c..e92908f 100644
--- a/src/main/java/org/apache/sling/feature/extension/apiregions/api/ApiRegions.java
+++ b/src/main/java/org/apache/sling/feature/extension/apiregions/api/ApiRegions.java
@@ -103,11 +103,16 @@
return false;
}
}
+ Set<ArtifactId> origins = new LinkedHashSet<>(Arrays.asList(region.getFeatureOrigins()));
+
this.regions.stream()
.filter(
existingRegion ->
- Stream.of(existingRegion.getFeatureOrigins())
- .anyMatch(Arrays.asList(region.getFeatureOrigins())::contains)
+ {
+ ArtifactId[] targetOrigins = existingRegion.getFeatureOrigins();
+ return (targetOrigins.length == 0 && origins.isEmpty())
+ || Stream.of(targetOrigins).anyMatch(origins::contains);
+ }
).reduce((a,b) -> b).ifPresent(region::setParent);
this.regions.add(region);