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
     {