You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@sling.apache.org by si...@apache.org on 2019/04/04 13:45:43 UTC
[sling-whiteboard] branch master updated: [api-regions] added check
to avoid adding duplicates across inheritance
This is an automated email from the ASF dual-hosted git repository.
simonetripodi pushed a commit to branch master
in repository https://gitbox.apache.org/repos/asf/sling-whiteboard.git
The following commit(s) were added to refs/heads/master by this push:
new 770dab0 [api-regions] added check to avoid adding duplicates across inheritance
770dab0 is described below
commit 770dab0c627b39c00930521687d71ae737671ae1
Author: stripodi <st...@192.168.1.111>
AuthorDate: Thu Apr 4 15:45:35 2019 +0200
[api-regions] added check to avoid adding duplicates across inheritance
---
.../java/org/apache/sling/feature/apiregions/ApiRegion.java | 12 ++++++++----
.../org/apache/sling/feature/apiregions/ApiRegionTest.java | 9 +++++++++
2 files changed, 17 insertions(+), 4 deletions(-)
diff --git a/feature-api-regions/src/main/java/org/apache/sling/feature/apiregions/ApiRegion.java b/feature-api-regions/src/main/java/org/apache/sling/feature/apiregions/ApiRegion.java
index 0dd60fe..a264944 100644
--- a/feature-api-regions/src/main/java/org/apache/sling/feature/apiregions/ApiRegion.java
+++ b/feature-api-regions/src/main/java/org/apache/sling/feature/apiregions/ApiRegion.java
@@ -111,23 +111,27 @@ public final class ApiRegion implements Iterable<String> {
}
}
- public void addApi(String api) {
+ public boolean addApi(String api) {
// ignore null, empty package and non well-formed packages names, i.e. javax.jms.doc-files
if (api == null
|| api.isEmpty()
|| !PACKAGE_NAME_VALIDATION.matcher(api).matches()) {
// ignore it
- return;
+ return false;
}
// ignore packages with reserved keywords, i.e. org.apache.commons.lang.enum
for (String apiPart : api.split("\\.")) {
if (KEYWORDS.contains(apiPart)) {
- return;
+ return false;
}
}
- apis.add(api);
+ if (contains(api)) {
+ return false;
+ }
+
+ return apis.add(api);
}
public boolean contains(String api) {
diff --git a/feature-api-regions/src/test/java/org/apache/sling/feature/apiregions/ApiRegionTest.java b/feature-api-regions/src/test/java/org/apache/sling/feature/apiregions/ApiRegionTest.java
index e0c78aa..c8b637f 100644
--- a/feature-api-regions/src/test/java/org/apache/sling/feature/apiregions/ApiRegionTest.java
+++ b/feature-api-regions/src/test/java/org/apache/sling/feature/apiregions/ApiRegionTest.java
@@ -82,6 +82,15 @@ public class ApiRegionTest {
}
@Test
+ public void inheritanceAvoidsDuplicates() {
+ ApiRegion granpa = new ApiRegion("granpa", null);
+ assertTrue(granpa.addApi("org.apache.sling.feature.apiregions"));
+
+ ApiRegion father = new ApiRegion("father", granpa);
+ assertFalse(father.addApi("org.apache.sling.feature.apiregions"));
+ }
+
+ @Test
public void inheritanceIteratorCheck() {
ApiRegion granpa = new ApiRegion("granpa", null);
granpa.addApi("org.apache.sling.feature.apiregions");