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);
}
/**