This is an automated email from the ASF dual-hosted git repository. bdelacretaz pushed a commit to branch master in repository https://gitbox.apache.org/repos/asf/sling-org-apache-sling-capabilities.git
commit f9653c234e3f319a1e66a21b60fe16aa13e32c74 Author: Bertrand Delacretaz <[email protected]> AuthorDate: Thu Oct 11 17:05:26 2018 +0200 Test multiple sources --- .../capabilities/internal/CapabilitiesServlet.java | 5 +++ .../capabilities/it/CapabilitiesBundleIT.java | 37 +++++++++++++++++----- 2 files changed, 34 insertions(+), 8 deletions(-) diff --git a/src/main/java/org/apache/sling/capabilities/internal/CapabilitiesServlet.java b/src/main/java/org/apache/sling/capabilities/internal/CapabilitiesServlet.java index ae7e2b8..b1a91a0 100644 --- a/src/main/java/org/apache/sling/capabilities/internal/CapabilitiesServlet.java +++ b/src/main/java/org/apache/sling/capabilities/internal/CapabilitiesServlet.java @@ -71,6 +71,11 @@ public class CapabilitiesServlet extends SlingSafeMethodsServlet { } @Override + public String toString() { + return getClass().getSimpleName() + ": " + sources.size() + " " + CapabilitiesSource.class.getSimpleName() + " active"; + } + + @Override protected void doGet(SlingHttpServletRequest request, SlingHttpServletResponse response) throws ServletException, IOException { // Resource Path must match a configurable set of patterns, to prevent diff --git a/src/test/java/org/apache/sling/capabilities/it/CapabilitiesBundleIT.java b/src/test/java/org/apache/sling/capabilities/it/CapabilitiesBundleIT.java index 00dc3dc..6541579 100644 --- a/src/test/java/org/apache/sling/capabilities/it/CapabilitiesBundleIT.java +++ b/src/test/java/org/apache/sling/capabilities/it/CapabilitiesBundleIT.java @@ -20,9 +20,11 @@ package org.apache.sling.capabilities.it; import java.util.Map; import javax.inject.Inject; +import javax.servlet.Servlet; import org.apache.sling.capabilities.CapabilitiesSource; import static org.junit.Assert.assertEquals; import static org.junit.Assert.assertNotNull; +import static org.junit.Assert.assertTrue; import org.junit.Before; import org.junit.Test; import org.junit.runner.RunWith; @@ -31,6 +33,8 @@ import org.ops4j.pax.exam.spi.reactors.ExamReactorStrategy; import org.ops4j.pax.exam.spi.reactors.PerClass; import org.osgi.framework.Bundle; import org.osgi.framework.BundleContext; +import org.osgi.framework.InvalidSyntaxException; +import org.osgi.framework.ServiceReference; import org.osgi.framework.ServiceRegistration; @RunWith(PaxExam.class) @@ -42,6 +46,11 @@ public class CapabilitiesBundleIT extends CapabilitiesTestSupport { private Bundle testBundle; + private static class TestCapabilitiesSource implements CapabilitiesSource { + public String getNamespace() { return null; } + public Map<String, Object> getCapabilities() { return null; } + }; + @Before public void setup() { final String symbolicName = "org.apache.sling.capabilities"; @@ -61,16 +70,28 @@ public class CapabilitiesBundleIT extends CapabilitiesTestSupport { } @Test - public void testRegisterSource() { + public void testRegisterSources() throws InvalidSyntaxException { // Verify that the bundle setup (exported packages) allows us to // register a source from the outside - final CapabilitiesSource src = new CapabilitiesSource() { - public String getNamespace() { return null; } - public Map<String, Object> getCapabilities() { return null; } - }; + final ServiceRegistration [] reg = new ServiceRegistration[3]; + for(int i=0 ; i < reg.length; i++) { + reg[i] = bundleContext.registerService(CapabilitiesSource.class.getName(), new TestCapabilitiesSource(), null); + assertNotNull("Expecting ServiceRegistration", reg[i]); + } - final ServiceRegistration reg = bundleContext.registerService(CapabilitiesSource.class.getName(), src, null); - assertNotNull("Expecting ServiceRegistration", reg); - reg.unregister(); + try { + // Now check that all sources are registered + // using toString() trick from CapabilitiesServlet + final String expected = reg.length + " CapabilitiesSource"; + final ServiceReference[] refs = bundleContext.getServiceReferences(Servlet.class.getName(), "(sling.servlet.resourceTypes=sling/capabilities)"); + assertTrue("Expecting a single Servlet service", refs != null && refs.length == 1); + final String str = bundleContext.getService(refs[0]).toString(); + assertTrue("Expecting " + expected + " but got " + str, str.contains(expected)); + bundleContext.ungetService(refs[0]); + } finally { + for(int i=0 ; i < reg.length; i++) { + reg[i].unregister(); + } + } } }
