You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@sling.apache.org by da...@apache.org on 2018/11/05 16:31:33 UTC

[sling-whiteboard] branch master updated: Additional unit tests for the apiregions runtime component.

This is an automated email from the ASF dual-hosted git repository.

davidb 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 e783e67  Additional unit tests for the apiregions runtime component.
e783e67 is described below

commit e783e67ad9a97cdebab0179bfdf527ffa0ce3f5f
Author: David Bosschaert <bo...@adobe.com>
AuthorDate: Mon Nov 5 16:30:49 2018 +0000

    Additional unit tests for the apiregions runtime component.
---
 .../sling/feature/apiregions/impl/ResolverHookImpl.java    |  5 +++--
 .../feature/apiregions/impl/ResolverHookImplTest.java      | 14 ++++++++++++++
 2 files changed, 17 insertions(+), 2 deletions(-)

diff --git a/featuremodel/feature-apiregions/src/main/java/org/apache/sling/feature/apiregions/impl/ResolverHookImpl.java b/featuremodel/feature-apiregions/src/main/java/org/apache/sling/feature/apiregions/impl/ResolverHookImpl.java
index 4939961..ae446cd 100644
--- a/featuremodel/feature-apiregions/src/main/java/org/apache/sling/feature/apiregions/impl/ResolverHookImpl.java
+++ b/featuremodel/feature-apiregions/src/main/java/org/apache/sling/feature/apiregions/impl/ResolverHookImpl.java
@@ -75,8 +75,8 @@ class ResolverHookImpl implements ResolverHook {
         String reqBundleName = reqBundle.getSymbolicName();
         Version reqBundleVersion = reqBundle.getVersion();
 
-        List<String> reqFeatures = new ArrayList<>();
         Set<String> reqRegions = new HashSet<>();
+        List<String> reqFeatures = new ArrayList<>();
         List<String> aids = bsnVerMap.get(new AbstractMap.SimpleEntry<String, Version>(reqBundleName, reqBundleVersion));
         if (aids != null) {
             for (String aid : aids) {
@@ -120,7 +120,8 @@ class ResolverHookImpl implements ResolverHook {
 
             List<String> capBundleArtifacts = bsnVerMap.get(new AbstractMap.SimpleEntry<String, Version>(capBundleName, capBundleVersion));
             if (capBundleArtifacts == null)
-                return; // TODO what to do?
+                return; // Capability is not in any feature, everyone can access
+
             List<String> capFeatures = new ArrayList<>();
             for (String ba : capBundleArtifacts) {
                 Set<String> capfeats = bundleFeatureMap.get(ba);
diff --git a/featuremodel/feature-apiregions/src/test/java/org/apache/sling/feature/apiregions/impl/ResolverHookImplTest.java b/featuremodel/feature-apiregions/src/test/java/org/apache/sling/feature/apiregions/impl/ResolverHookImplTest.java
index 2127804..c27ccd4 100644
--- a/featuremodel/feature-apiregions/src/test/java/org/apache/sling/feature/apiregions/impl/ResolverHookImplTest.java
+++ b/featuremodel/feature-apiregions/src/test/java/org/apache/sling/feature/apiregions/impl/ResolverHookImplTest.java
@@ -141,6 +141,13 @@ public class ResolverHookImplTest {
         rh.filterMatches(req5, c5);
         assertEquals(Collections.singletonList(bc5), c5);
 
+        // Check that we cannot get at a capability in a region from a bundle not in a feature
+        BundleRequirement req6 = mockRequirement(6, "bundle.not.in.feature", new Version(2,0,0));
+        BundleCapability bc6 = mockCapability("org.foo", "b9", bsnvermap);
+        Collection<BundleCapability> c6 = new ArrayList<>(Arrays.asList(bc6));
+        rh.filterMatches(req6, c6);
+        assertEquals(0, c6.size());
+
         // Check that capabilities in non-package namespaces are ignored
         BundleRequirement req7 = Mockito.mock(BundleRequirement.class);
         Mockito.when(req7.getNamespace()).thenReturn("some.other.namespace");
@@ -186,6 +193,13 @@ public class ResolverHookImplTest {
         Collection<BundleCapability> c12 = new ArrayList<>(Arrays.asList(bc12));
         rh.filterMatches(req12, c12);
         assertEquals(Collections.singletonList(bc12), c12);
+
+        // Check that anyone can get a capability from a bundle not in a feature
+        BundleRequirement req13 = mockRequirement("b9", bsnvermap);
+        BundleCapability bc13 = mockCapability("some.package", 999, "no.in.any.feature", new Version(1,0,0));
+        Collection<BundleCapability> c13 = new ArrayList<>(Arrays.asList(bc13));
+        rh.filterMatches(req13, c13);
+        assertEquals(Collections.singletonList(bc13), c13);
     }
 
     private BundleCapability mockCapability(String pkgName, String bid, Map<Entry<String, Version>, List<String>> bsnvermap) {