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/19 19:30:24 UTC
svn commit: r1680351 - in /felix/trunk/http/base/src:
main/java/org/apache/felix/http/base/internal/whiteboard/
test/java/org/apache/felix/http/base/internal/registry/
Author: cziegeler
Date: Tue May 19 17:30:24 2015
New Revision: 1680351
URL: http://svn.apache.org/r1680351
Log:
FELIX-4888 : ServletHandler's are not sorted by longest matching path. DTO handling (WiP)
Added:
felix/trunk/http/base/src/test/java/org/apache/felix/http/base/internal/registry/ErrorPageRegistryTest.java
- copied, changed from r1680349, felix/trunk/http/base/src/test/java/org/apache/felix/http/base/internal/registry/ErrorPageTest.java
Removed:
felix/trunk/http/base/src/test/java/org/apache/felix/http/base/internal/registry/ErrorPageTest.java
Modified:
felix/trunk/http/base/src/main/java/org/apache/felix/http/base/internal/whiteboard/WhiteboardManager.java
Modified: felix/trunk/http/base/src/main/java/org/apache/felix/http/base/internal/whiteboard/WhiteboardManager.java
URL: http://svn.apache.org/viewvc/felix/trunk/http/base/src/main/java/org/apache/felix/http/base/internal/whiteboard/WhiteboardManager.java?rev=1680351&r1=1680350&r2=1680351&view=diff
==============================================================================
--- felix/trunk/http/base/src/main/java/org/apache/felix/http/base/internal/whiteboard/WhiteboardManager.java (original)
+++ felix/trunk/http/base/src/main/java/org/apache/felix/http/base/internal/whiteboard/WhiteboardManager.java Tue May 19 17:30:24 2015
@@ -24,7 +24,6 @@ import static org.osgi.service.http.runt
import java.util.ArrayList;
import java.util.Collection;
import java.util.Collections;
-import java.util.Comparator;
import java.util.Dictionary;
import java.util.HashMap;
import java.util.Hashtable;
@@ -33,7 +32,6 @@ import java.util.List;
import java.util.Map;
import java.util.Set;
import java.util.TreeMap;
-import java.util.TreeSet;
import java.util.concurrent.ConcurrentSkipListMap;
import javax.annotation.Nonnull;
@@ -748,41 +746,39 @@ public final class WhiteboardManager
{
final FailedDTOHolder failedDTOHolder = new FailedDTOHolder();
- final Collection<ServletContextDTO> contextDTOs = new TreeSet<ServletContextDTO>(new Comparator<ServletContextDTO>() {
-
- @Override
- public int compare(ServletContextDTO o1, ServletContextDTO o2) {
- // Service id's can be negative. Negative id's follow the reverse natural ordering of integers.
- int reverseOrder = ( o1.serviceId >= 0 && o2.serviceId >= 0 ) ? 1 : -1;
- return reverseOrder * Long.compare(o1.serviceId, o2.serviceId);
- }
- });
+ final Collection<ServletContextDTO> contextDTOs = new ArrayList<ServletContextDTO>();
+ // add the context for the http service
+ final ServletContextHelperInfo info = new ServletContextHelperInfo(Integer.MAX_VALUE, 0, HTTP_SERVICE_CONTEXT_NAME, "/", null);
+ final ServletContextDTO dto = ServletContextDTOBuilder.build(info, webContext, -1);
+ if ( registry.getRuntime(dto, failedDTOHolder) )
+ {
+ contextDTOs.add(dto);
+ }
+ // get sort list of context handlers
+ final List<ContextHandler> contextHandlerList = new ArrayList<ContextHandler>();
synchronized ( this.contextMap )
{
- for (final List<ContextHandler> contextHandlerList : this.contextMap.values())
+ for (final List<ContextHandler> list : this.contextMap.values())
{
- if ( !contextHandlerList.isEmpty() )
+ if ( !list.isEmpty() )
{
- final ContextHandler handler = contextHandlerList.get(0);
- final ServletContextDTO dto = ServletContextDTOBuilder.build(handler.getContextInfo(), handler.getSharedContext(), -1);
-
- if ( registry.getRuntime(dto, failedDTOHolder) )
- {
- handler.getListenerRegistry().getRuntime(dto);
- contextDTOs.add(dto);
- }
+ contextHandlerList.add(list.get(0));
}
}
failedDTOHolder.add(serviceFailures);
}
+ Collections.sort(contextHandlerList);
- // add the context for the http service
- final ServletContextHelperInfo info = new ServletContextHelperInfo(Integer.MAX_VALUE, 0, HTTP_SERVICE_CONTEXT_NAME, "/", null);
- final ServletContextDTO dto = ServletContextDTOBuilder.build(info, webContext, -1);
- if ( registry.getRuntime(dto, failedDTOHolder) )
+ for (final ContextHandler handler : contextHandlerList)
{
- contextDTOs.add(dto);
+ final ServletContextDTO scDTO = ServletContextDTOBuilder.build(handler.getContextInfo(), handler.getSharedContext(), -1);
+
+ if ( registry.getRuntime(scDTO, failedDTOHolder) )
+ {
+ handler.getListenerRegistry().getRuntime(scDTO);
+ contextDTOs.add(scDTO);
+ }
}
return new RegistryRuntime(failedDTOHolder, contextDTOs);
Copied: felix/trunk/http/base/src/test/java/org/apache/felix/http/base/internal/registry/ErrorPageRegistryTest.java (from r1680349, felix/trunk/http/base/src/test/java/org/apache/felix/http/base/internal/registry/ErrorPageTest.java)
URL: http://svn.apache.org/viewvc/felix/trunk/http/base/src/test/java/org/apache/felix/http/base/internal/registry/ErrorPageRegistryTest.java?p2=felix/trunk/http/base/src/test/java/org/apache/felix/http/base/internal/registry/ErrorPageRegistryTest.java&p1=felix/trunk/http/base/src/test/java/org/apache/felix/http/base/internal/registry/ErrorPageTest.java&r1=1680349&r2=1680351&rev=1680351&view=diff
==============================================================================
--- felix/trunk/http/base/src/test/java/org/apache/felix/http/base/internal/registry/ErrorPageTest.java (original)
+++ felix/trunk/http/base/src/test/java/org/apache/felix/http/base/internal/registry/ErrorPageRegistryTest.java Tue May 19 17:30:24 2015
@@ -47,7 +47,7 @@ import org.osgi.framework.ServiceReferen
import org.osgi.service.http.runtime.dto.ServletContextDTO;
import org.osgi.service.http.whiteboard.HttpWhiteboardConstants;
-public class ErrorPageTest {
+public class ErrorPageRegistryTest {
private final ErrorPageRegistry reg = new ErrorPageRegistry();