You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@felix.apache.org by cz...@apache.org on 2015/05/17 12:25:11 UTC
svn commit: r1679835 - in /felix/trunk/http/base/src:
main/java/org/apache/felix/http/base/internal/registry/ServletRegistry.java
test/java/org/apache/felix/http/base/internal/registry/ServletRegistryTest.java
Author: cziegeler
Date: Sun May 17 10:25:10 2015
New Revision: 1679835
URL: http://svn.apache.org/r1679835
Log:
FELIX-4888 : ServletHandler's are not sorted by longest matching path. Implement new servlet registry, start filter holder implementation
Modified:
felix/trunk/http/base/src/main/java/org/apache/felix/http/base/internal/registry/ServletRegistry.java
felix/trunk/http/base/src/test/java/org/apache/felix/http/base/internal/registry/ServletRegistryTest.java
Modified: felix/trunk/http/base/src/main/java/org/apache/felix/http/base/internal/registry/ServletRegistry.java
URL: http://svn.apache.org/viewvc/felix/trunk/http/base/src/main/java/org/apache/felix/http/base/internal/registry/ServletRegistry.java?rev=1679835&r1=1679834&r2=1679835&view=diff
==============================================================================
--- felix/trunk/http/base/src/main/java/org/apache/felix/http/base/internal/registry/ServletRegistry.java (original)
+++ felix/trunk/http/base/src/main/java/org/apache/felix/http/base/internal/registry/ServletRegistry.java Sun May 17 10:25:10 2015
@@ -185,7 +185,7 @@ public final class ServletRegistry
List<ServletHolder> inactiveList = this.inactivateServletMapping.get(pattern);
if ( inactiveList == null )
{
- inactiveList = new ArrayList<ServletHolder>(inactiveList);
+ inactiveList = new ArrayList<ServletHolder>();
this.inactivateServletMapping.put(pattern, inactiveList);
}
inactiveList.add(holder);
Modified: felix/trunk/http/base/src/test/java/org/apache/felix/http/base/internal/registry/ServletRegistryTest.java
URL: http://svn.apache.org/viewvc/felix/trunk/http/base/src/test/java/org/apache/felix/http/base/internal/registry/ServletRegistryTest.java?rev=1679835&r1=1679834&r2=1679835&view=diff
==============================================================================
--- felix/trunk/http/base/src/test/java/org/apache/felix/http/base/internal/registry/ServletRegistryTest.java (original)
+++ felix/trunk/http/base/src/test/java/org/apache/felix/http/base/internal/registry/ServletRegistryTest.java Sun May 17 10:25:10 2015
@@ -36,6 +36,7 @@ import org.osgi.framework.BundleContext;
import org.osgi.framework.Constants;
import org.osgi.framework.InvalidSyntaxException;
import org.osgi.framework.ServiceReference;
+import org.osgi.service.http.runtime.dto.DTOConstants;
import org.osgi.service.http.whiteboard.HttpWhiteboardConstants;
public class ServletRegistryTest {
@@ -64,6 +65,50 @@ public class ServletRegistryTest {
// empty again
assertEquals(0, status.size());
+ }
+
+ @Test public void testSimpleHiding() throws InvalidSyntaxException
+ {
+ final Map<ServletInfo, ServletRegistry.ServletRegistrationStatus> status = reg.getServletStatusMapping();
+ // empty reg
+ assertEquals(0, status.size());
+
+ // register servlets
+ final ServletHolder h1 = createServletHolder(1L, 10, "/foo");
+ reg.addServlet(h1);
+
+ final ServletHolder h2 = createServletHolder(2L, 0, "/foo");
+ reg.addServlet(h2);
+
+ // two entries in reg
+ assertEquals(2, status.size());
+ assertNotNull(status.get(h1.getServletInfo()));
+ assertNotNull(status.get(h2.getServletInfo()));
+
+ // h1 is active
+ assertNotNull(status.get(h1.getServletInfo()).pathToStatus.get("/foo"));
+ final int code1 = status.get(h1.getServletInfo()).pathToStatus.get("/foo");
+ assertEquals(-1, code1);
+
+ // h2 is hidden
+ assertNotNull(status.get(h2.getServletInfo()).pathToStatus.get("/foo"));
+ final int code2 = status.get(h2.getServletInfo()).pathToStatus.get("/foo");
+ assertEquals(DTOConstants.FAILURE_REASON_SHADOWED_BY_OTHER_SERVICE, code2);
+
+ // remove servlet 1
+ reg.removeServlet(h1.getServletInfo());
+
+ // h2 is active
+ assertEquals(1, status.size());
+ assertNotNull(status.get(h2.getServletInfo()).pathToStatus.get("/foo"));
+ final int code3 = status.get(h2.getServletInfo()).pathToStatus.get("/foo");
+ assertEquals(-1, code3);
+
+ // remove servlet 2
+ reg.removeServlet(h2.getServletInfo());
+
+ // empty again
+ assertEquals(0, status.size());
}
private static ServletInfo createServletInfo(final long id, final int ranking, final String... paths) throws InvalidSyntaxException