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/02/14 16:18:34 UTC
svn commit: r1659800 - in
/felix/trunk/http/base/src/main/java/org/apache/felix/http/base/internal/whiteboard:
ContextHandler.java ServletContextHelperManager.java
WhiteboardHttpService.java
Author: cziegeler
Date: Sat Feb 14 15:18:34 2015
New Revision: 1659800
URL: http://svn.apache.org/r1659800
Log:
FELIX-4060 : Implement HTTP Service Update (RFC-189) - correct context and path handling
Modified:
felix/trunk/http/base/src/main/java/org/apache/felix/http/base/internal/whiteboard/ContextHandler.java
felix/trunk/http/base/src/main/java/org/apache/felix/http/base/internal/whiteboard/ServletContextHelperManager.java
felix/trunk/http/base/src/main/java/org/apache/felix/http/base/internal/whiteboard/WhiteboardHttpService.java
Modified: felix/trunk/http/base/src/main/java/org/apache/felix/http/base/internal/whiteboard/ContextHandler.java
URL: http://svn.apache.org/viewvc/felix/trunk/http/base/src/main/java/org/apache/felix/http/base/internal/whiteboard/ContextHandler.java?rev=1659800&r1=1659799&r2=1659800&view=diff
==============================================================================
--- felix/trunk/http/base/src/main/java/org/apache/felix/http/base/internal/whiteboard/ContextHandler.java (original)
+++ felix/trunk/http/base/src/main/java/org/apache/felix/http/base/internal/whiteboard/ContextHandler.java Sat Feb 14 15:18:34 2015
@@ -183,7 +183,7 @@ public final class ContextHandler implem
if ( so != null )
{
holder = new ContextHolder();
- // TODO check for null
+ // TODO check for null of getService()
holder.servletContextHelper = so.getService();
holder.servletContext = new PerBundleServletContextImpl(bundle,
this.sharedContext,
@@ -194,6 +194,7 @@ public final class ContextHandler implem
this.getServletRequestAttributeListener());
this.perBundleContextMap.put(key, holder);
}
+ // TODO - check null for so
}
holder.counter++;
Modified: felix/trunk/http/base/src/main/java/org/apache/felix/http/base/internal/whiteboard/ServletContextHelperManager.java
URL: http://svn.apache.org/viewvc/felix/trunk/http/base/src/main/java/org/apache/felix/http/base/internal/whiteboard/ServletContextHelperManager.java?rev=1659800&r1=1659799&r2=1659800&view=diff
==============================================================================
--- felix/trunk/http/base/src/main/java/org/apache/felix/http/base/internal/whiteboard/ServletContextHelperManager.java (original)
+++ felix/trunk/http/base/src/main/java/org/apache/felix/http/base/internal/whiteboard/ServletContextHelperManager.java Sat Feb 14 15:18:34 2015
@@ -177,8 +177,6 @@ public final class ServletContextHelperM
*/
private void deactivate(final ContextHandler handler)
{
- this.httpService.unregisterContext(handler);
-
// context listeners last
final Map<ServiceReference<ServletContextListener>, ServletContextListenerInfo> listeners = new TreeMap<ServiceReference<ServletContextListener>, ServletContextListenerInfo>();
final Iterator<Map.Entry<WhiteboardServiceInfo<?>, List<ContextHandler>>> i = this.servicesMap.entrySet().iterator();
@@ -206,6 +204,9 @@ public final class ServletContextHelperM
handler.destroyed(info);
}
handler.deactivate();
+
+ this.httpService.unregisterContext(handler);
+
}
/**
Modified: felix/trunk/http/base/src/main/java/org/apache/felix/http/base/internal/whiteboard/WhiteboardHttpService.java
URL: http://svn.apache.org/viewvc/felix/trunk/http/base/src/main/java/org/apache/felix/http/base/internal/whiteboard/WhiteboardHttpService.java?rev=1659800&r1=1659799&r2=1659800&view=diff
==============================================================================
--- felix/trunk/http/base/src/main/java/org/apache/felix/http/base/internal/whiteboard/WhiteboardHttpService.java (original)
+++ felix/trunk/http/base/src/main/java/org/apache/felix/http/base/internal/whiteboard/WhiteboardHttpService.java Sat Feb 14 15:18:34 2015
@@ -36,6 +36,7 @@ import org.apache.felix.http.base.intern
import org.apache.felix.http.base.internal.handler.FilterHandler;
import org.apache.felix.http.base.internal.handler.HandlerRegistry;
import org.apache.felix.http.base.internal.handler.HttpSessionWrapper;
+import org.apache.felix.http.base.internal.handler.PerContextHandlerRegistry;
import org.apache.felix.http.base.internal.handler.ServletHandler;
import org.apache.felix.http.base.internal.runtime.FilterInfo;
import org.apache.felix.http.base.internal.runtime.ResourceInfo;
@@ -185,8 +186,12 @@ public final class WhiteboardHttpService
servletInfo,
servlet);
try {
- this.handlerRegistry.getRegistry(contextHandler.getContextInfo()).addServlet(handler);
- contextHandler.addWhiteboardService(servletInfo);
+ final PerContextHandlerRegistry registry = this.handlerRegistry.getRegistry(contextHandler.getContextInfo());
+ if (registry != null )
+ {
+ registry.addServlet(handler);
+ contextHandler.addWhiteboardService(servletInfo);
+ }
} catch (final ServletException e) {
so.ungetService(servlet);
// TODO create failure DTO
@@ -202,13 +207,17 @@ public final class WhiteboardHttpService
*/
public void unregisterServlet(@Nonnull final ContextHandler contextHandler, @Nonnull final ServletInfo servletInfo)
{
- final Servlet instance = this.handlerRegistry.getRegistry(contextHandler.getContextInfo()).removeServlet(servletInfo, true);
- if ( instance != null )
+ final PerContextHandlerRegistry registry = this.handlerRegistry.getRegistry(contextHandler.getContextInfo());
+ if (registry != null )
{
- this.bundleContext.getServiceObjects(servletInfo.getServiceReference()).ungetService(instance);
- contextHandler.ungetServletContext(servletInfo.getServiceReference().getBundle());
- contextHandler.removeWhiteboardService(servletInfo);
+ final Servlet instance = registry.removeServlet(servletInfo, true);
+ if ( instance != null )
+ {
+ this.bundleContext.getServiceObjects(servletInfo.getServiceReference()).ungetService(instance);
+ }
}
+ contextHandler.ungetServletContext(servletInfo.getServiceReference().getBundle());
+ contextHandler.removeWhiteboardService(servletInfo);
}
/**
@@ -228,8 +237,12 @@ public final class WhiteboardHttpService
filter,
filterInfo);
try {
- this.handlerRegistry.getRegistry(contextHandler.getContextInfo()).addFilter(handler);
- contextHandler.addWhiteboardService(filterInfo);
+ final PerContextHandlerRegistry registry = this.handlerRegistry.getRegistry(contextHandler.getContextInfo());
+ if (registry != null )
+ {
+ registry.addFilter(handler);
+ contextHandler.addWhiteboardService(filterInfo);
+ }
} catch (final ServletException e) {
// TODO create failure DTO
}
@@ -243,13 +256,17 @@ public final class WhiteboardHttpService
*/
public void unregisterFilter(@Nonnull final ContextHandler contextHandler, @Nonnull final FilterInfo filterInfo)
{
- final Filter instance = this.handlerRegistry.getRegistry(contextHandler.getContextInfo()).removeFilter(filterInfo, true);
- if ( instance != null )
+ final PerContextHandlerRegistry registry = this.handlerRegistry.getRegistry(contextHandler.getContextInfo());
+ if (registry != null )
{
- this.bundleContext.getServiceObjects(filterInfo.getServiceReference()).ungetService(instance);
- contextHandler.ungetServletContext(filterInfo.getServiceReference().getBundle());
- contextHandler.removeWhiteboardService(filterInfo);
+ final Filter instance = registry.removeFilter(filterInfo, true);
+ if ( instance != null )
+ {
+ this.bundleContext.getServiceObjects(filterInfo.getServiceReference()).ungetService(instance);
+ }
}
+ contextHandler.ungetServletContext(filterInfo.getServiceReference().getBundle());
+ contextHandler.removeWhiteboardService(filterInfo);
}
/**
@@ -268,8 +285,12 @@ public final class WhiteboardHttpService
servletInfo,
servlet);
try {
- this.handlerRegistry.getRegistry(contextHandler.getContextInfo()).addServlet(handler);
- contextHandler.addWhiteboardService(resourceInfo);
+ final PerContextHandlerRegistry registry = this.handlerRegistry.getRegistry(contextHandler.getContextInfo());
+ if (registry != null )
+ {
+ registry.addServlet(handler);
+ contextHandler.addWhiteboardService(resourceInfo);
+ }
} catch (ServletException e) {
// TODO create failure DTO
}
@@ -283,8 +304,13 @@ public final class WhiteboardHttpService
public void unregisterResource(@Nonnull final ContextHandler contextHandler, @Nonnull final ResourceInfo resourceInfo)
{
final ServletInfo servletInfo = new ServletInfo(resourceInfo);
- this.unregisterServlet(contextHandler, servletInfo);
- contextHandler.removeWhiteboardService(resourceInfo);
+ final PerContextHandlerRegistry registry = this.handlerRegistry.getRegistry(contextHandler.getContextInfo());
+ if (registry != null )
+ {
+ registry.removeServlet(servletInfo, true);
+ }
+ contextHandler.ungetServletContext(servletInfo.getServiceReference().getBundle());
+ contextHandler.removeWhiteboardService(servletInfo);
}
public void registerContext(@Nonnull final ContextHandler contextHandler)