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/01/30 19:43:29 UTC

svn commit: r1656088 - in /felix/trunk/http/base/src/main/java/org/apache/felix/http/base/internal: runtime/ServletInfo.java service/HttpServiceImpl.java whiteboard/ServletContextHelperManager.java

Author: cziegeler
Date: Fri Jan 30 18:43:28 2015
New Revision: 1656088

URL: http://svn.apache.org/r1656088
Log:
FELIX-4547 : Implement the missing resources registration

Modified:
    felix/trunk/http/base/src/main/java/org/apache/felix/http/base/internal/runtime/ServletInfo.java
    felix/trunk/http/base/src/main/java/org/apache/felix/http/base/internal/service/HttpServiceImpl.java
    felix/trunk/http/base/src/main/java/org/apache/felix/http/base/internal/whiteboard/ServletContextHelperManager.java

Modified: felix/trunk/http/base/src/main/java/org/apache/felix/http/base/internal/runtime/ServletInfo.java
URL: http://svn.apache.org/viewvc/felix/trunk/http/base/src/main/java/org/apache/felix/http/base/internal/runtime/ServletInfo.java?rev=1656088&r1=1656087&r2=1656088&view=diff
==============================================================================
--- felix/trunk/http/base/src/main/java/org/apache/felix/http/base/internal/runtime/ServletInfo.java (original)
+++ felix/trunk/http/base/src/main/java/org/apache/felix/http/base/internal/runtime/ServletInfo.java Fri Jan 30 18:43:28 2015
@@ -88,6 +88,24 @@ public final class ServletInfo extends A
         this.servlet = null;
     }
 
+    @SuppressWarnings("unchecked")
+    public ServletInfo(final ResourceInfo resource, final Servlet servlet)
+    {
+        super(getRef(resource.getServiceReference()));
+        this.name = null;
+        this.patterns = resource.getPatterns();
+        this.errorPage = null;
+        this.asyncSupported = false;
+        this.initParams = null;
+        this.context = null;
+        this.servlet = servlet;
+    }
+
+    private static ServiceReference getRef(final ServiceReference ref)
+    {
+        return ref;
+    }
+
     /**
      * Constructor for Http Service
      */

Modified: felix/trunk/http/base/src/main/java/org/apache/felix/http/base/internal/service/HttpServiceImpl.java
URL: http://svn.apache.org/viewvc/felix/trunk/http/base/src/main/java/org/apache/felix/http/base/internal/service/HttpServiceImpl.java?rev=1656088&r1=1656087&r2=1656088&view=diff
==============================================================================
--- felix/trunk/http/base/src/main/java/org/apache/felix/http/base/internal/service/HttpServiceImpl.java (original)
+++ felix/trunk/http/base/src/main/java/org/apache/felix/http/base/internal/service/HttpServiceImpl.java Fri Jan 30 18:43:28 2015
@@ -37,6 +37,7 @@ import org.apache.felix.http.base.intern
 import org.apache.felix.http.base.internal.logger.SystemLogger;
 import org.apache.felix.http.base.internal.runtime.ContextInfo;
 import org.apache.felix.http.base.internal.runtime.FilterInfo;
+import org.apache.felix.http.base.internal.runtime.ResourceInfo;
 import org.apache.felix.http.base.internal.runtime.ServletInfo;
 import org.apache.felix.http.base.internal.whiteboard.HttpContextBridge;
 import org.osgi.framework.Bundle;
@@ -309,6 +310,32 @@ public final class HttpServiceImpl imple
         unregisterServlet(servlet);
     }
 
+    /**
+     * Register a resource with a {@link ServletContextHelper}.
+     */
+    public void registerResource(final ServletContextHelper context,
+            final ContextInfo contextInfo,
+            final ResourceInfo resourceInfo)
+    {
+        if (resourceInfo == null)
+        {
+            throw new IllegalArgumentException("ResourceInfo cannot be null!");
+        }
+        final ServletInfo servletInfo = new ServletInfo(resourceInfo, new ResourceServlet(resourceInfo.getPrefix()));
+
+        this.registerServlet(context, contextInfo, servletInfo);
+    }
+
+    public void unregisterResource(final ContextInfo contextInfo, final ResourceInfo resourceInfo)
+    {
+        if (resourceInfo == null)
+        {
+            throw new IllegalArgumentException("ResourceInfo cannot be null!");
+        }
+        final ServletInfo servletInfo = new ServletInfo(resourceInfo, null);
+        this.unregisterServlet(contextInfo, servletInfo);
+    }
+
     public void unregisterAll()
     {
         HashSet<Servlet> servlets = new HashSet<Servlet>(this.localServlets);
@@ -387,7 +414,7 @@ public final class HttpServiceImpl imple
         }
     }
 
-    private boolean isAliasValid(String alias)
+    private boolean isAliasValid(final String alias)
     {
         if (alias == null)
         {

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=1656088&r1=1656087&r2=1656088&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 Fri Jan 30 18:43:28 2015
@@ -35,7 +35,6 @@ import org.osgi.framework.Bundle;
 import org.osgi.framework.BundleContext;
 import org.osgi.framework.ServiceFactory;
 import org.osgi.framework.ServiceRegistration;
-import org.osgi.service.http.NamespaceException;
 import org.osgi.service.http.context.ServletContextHelper;
 import org.osgi.service.http.whiteboard.HttpWhiteboardConstants;
 
@@ -250,24 +249,12 @@ public final class ServletContextHelperM
     private void registerResource(final ResourceInfo resourceInfo, final ContextHolder holder)
     {
         final ServletContextHelper helper = holder.getContext(resourceInfo.getServiceReference().getBundle());
-        // TODO - use servlet context helper and move registration to http service
-        for(final String alias : resourceInfo.getPatterns())
-        {
-            try {
-                this.httpService.registerResources(alias, resourceInfo.getPrefix(), null);
-            } catch (NamespaceException e) {
-                // TODO Auto-generated catch block
-                e.printStackTrace();
-            }
-        }
+        this.httpService.registerResource(helper, holder.getInfo(), resourceInfo);
     }
 
     private void unregisterResource(final ResourceInfo resourceInfo, final ContextHolder holder)
     {
-        for(final String alias : resourceInfo.getPatterns())
-        {
-            this.httpService.unregister(alias);
-        }
+        this.httpService.unregisterResource(holder.getInfo(), resourceInfo);
     }
 
     /**