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/20 18:47:24 UTC
svn commit: r1680637 - in /felix/trunk/http/base/src:
main/java/org/apache/felix/http/base/internal/registry/
test/java/org/apache/felix/http/base/internal/registry/
Author: cziegeler
Date: Wed May 20 16:47:24 2015
New Revision: 1680637
URL: http://svn.apache.org/r1680637
Log:
FELIX-4894 : Implement cross context shadowing
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/ErrorPageRegistryTest.java
felix/trunk/http/base/src/test/java/org/apache/felix/http/base/internal/registry/HandlerRegistryTest.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=1680637&r1=1680636&r2=1680637&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 Wed May 20 16:47:24 2015
@@ -105,7 +105,7 @@ public final class ServletRegistry
final PathResolver regHandler = this.activeServletMappings.get(pattern);
if ( regHandler != null )
{
- if ( regHandler.getServletHandler().getServletInfo().getServiceReference().compareTo(handler.getServletInfo().getServiceReference()) < 0 )
+ if ( regHandler.getServletHandler().getServletInfo().compareTo(handler.getServletInfo()) < 0 )
{
// replace if no error with new servlet
if ( this.tryToActivate(pattern, handler, status) )
Modified: felix/trunk/http/base/src/test/java/org/apache/felix/http/base/internal/registry/ErrorPageRegistryTest.java
URL: http://svn.apache.org/viewvc/felix/trunk/http/base/src/test/java/org/apache/felix/http/base/internal/registry/ErrorPageRegistryTest.java?rev=1680637&r1=1680636&r2=1680637&view=diff
==============================================================================
--- felix/trunk/http/base/src/test/java/org/apache/felix/http/base/internal/registry/ErrorPageRegistryTest.java (original)
+++ felix/trunk/http/base/src/test/java/org/apache/felix/http/base/internal/registry/ErrorPageRegistryTest.java Wed May 20 16:47:24 2015
@@ -230,6 +230,7 @@ public class ErrorPageRegistryTest {
final Bundle bundle = mock(Bundle.class);
when(bundle.getBundleContext()).thenReturn(bCtx);
+ @SuppressWarnings("unchecked")
final ServiceReference<Servlet> ref = mock(ServiceReference.class);
when(ref.getBundle()).thenReturn(bundle);
when(ref.getProperty(Constants.SERVICE_ID)).thenReturn(id);
Modified: felix/trunk/http/base/src/test/java/org/apache/felix/http/base/internal/registry/HandlerRegistryTest.java
URL: http://svn.apache.org/viewvc/felix/trunk/http/base/src/test/java/org/apache/felix/http/base/internal/registry/HandlerRegistryTest.java?rev=1680637&r1=1680636&r2=1680637&view=diff
==============================================================================
--- felix/trunk/http/base/src/test/java/org/apache/felix/http/base/internal/registry/HandlerRegistryTest.java (original)
+++ felix/trunk/http/base/src/test/java/org/apache/felix/http/base/internal/registry/HandlerRegistryTest.java Wed May 20 16:47:24 2015
@@ -16,12 +16,23 @@
*/
package org.apache.felix.http.base.internal.registry;
+import static org.junit.Assert.assertEquals;
import static org.junit.Assert.assertFalse;
import static org.junit.Assert.assertTrue;
+import java.util.Collections;
+
+import javax.servlet.Servlet;
+import javax.servlet.ServletConfig;
+
+import org.apache.felix.http.base.internal.handler.HttpServiceServletHandler;
+import org.apache.felix.http.base.internal.handler.ServletHandler;
+import org.apache.felix.http.base.internal.runtime.ServletInfo;
import org.apache.felix.http.base.internal.runtime.dto.FailedDTOHolder;
import org.junit.Test;
+import org.mockito.Mockito;
import org.osgi.service.http.runtime.dto.ServletContextDTO;
+import org.osgi.service.http.runtime.dto.ServletDTO;
public class HandlerRegistryTest
@@ -41,56 +52,45 @@ public class HandlerRegistryTest
registry.shutdown();
assertFalse(registry.getRuntime(dto, holder));
}
- /*
+
@Test
public void testAddRemoveServlet() throws Exception
{
- HandlerRegistry hr = new HandlerRegistry();
+ registry.init();
+
+ final FailedDTOHolder holder = new FailedDTOHolder();
+ final ServletContextDTO dto = new ServletContextDTO();
+ dto.servletDTOs = new ServletDTO[0];
Servlet servlet = Mockito.mock(Servlet.class);
- final ServletInfo info = new ServletInfo("foo", "/foo", 0, null, servlet, null);
- ServletHandler handler = new ServletHandler(null, null, info, info.getServlet());
- assertEquals("Precondition", 0, hr.getServlets().length);
- hr.addServlet(null, handler);
+ final ServletInfo info = new ServletInfo("foo", "/foo", 0, Collections.EMPTY_MAP);
+ ServletHandler handler = new HttpServiceServletHandler(0, null, info, servlet);
+
+ assertTrue(registry.getRuntime(dto, holder));
+ assertEquals("Precondition", 0, dto.servletDTOs.length);
+
+ registry.addServlet(handler);
Mockito.verify(servlet, Mockito.times(1)).init(Mockito.any(ServletConfig.class));
- assertEquals(1, hr.getServlets().length);
- assertSame(handler, hr.getServlets()[0]);
+ assertTrue(registry.getRuntime(dto, holder));
+ assertEquals(1, dto.servletDTOs.length);
+ assertEquals(info.getServiceId(), dto.servletDTOs[0].serviceId);
- final ServletInfo info2 = new ServletInfo("bar", "/bar", 0, null, servlet, null);
- ServletHandler handler2 = new ServletHandler(null, null, info2, info2.getServlet());
- try
- {
- hr.addServlet(null, handler2);
- // TODO
-// fail("Should not have allowed to add the same servlet twice");
- }
- catch (ServletException se)
- {
- // good
- }
- assertArrayEquals(new ServletHandler[] {handler2, handler}, hr.getServlets());
-
- final ServletInfo info3 = new ServletInfo("zar", "/foo", 0, null, Mockito.mock(Servlet.class), null);
- ServletHandler handler3 = new ServletHandler(null, null,info3, info3.getServlet());
-
- try
- {
- hr.addServlet(null, handler3);
- fail("Should not have allowed to add the same alias twice");
- }
- catch (NamespaceException ne) {
- // good
- }
- assertArrayEquals(new ServletHandler[] {handler2, handler}, hr.getServlets());
-
- assertSame(servlet, hr.getServletByAlias("/foo"));
-
- Mockito.verify(servlet, Mockito.never()).destroy();
- hr.removeServlet(servlet, true);
- Mockito.verify(servlet, Mockito.times(2)).destroy();
- assertEquals(0, hr.getServlets().length);
- }
+ final ServletInfo info2 = new ServletInfo("bar", "/bar", 0, Collections.EMPTY_MAP);
+ ServletHandler handler2 = new HttpServiceServletHandler(0, null, info2, Mockito.mock(Servlet.class));
+ registry.addServlet(handler2);
+ assertTrue(registry.getRuntime(dto, holder));
+ assertEquals(2, dto.servletDTOs.length);
+ final ServletInfo info3 = new ServletInfo("zar", "/foo", 0, Collections.EMPTY_MAP);
+ ServletHandler handler3 = new HttpServiceServletHandler(0, null,info3, Mockito.mock(Servlet.class));
+ registry.addServlet(handler3);
+ assertTrue(registry.getRuntime(dto, holder));
+ assertEquals(2, dto.servletDTOs.length);
+ assertEquals(1, holder.failedServletDTOs.size());
+
+ registry.shutdown();
+ }
+/*
@Test
public void testAddServletWhileSameServletAddedDuringInit() throws Exception
{