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 2014/09/11 23:24:30 UTC
svn commit: r1624398 [1/2] - in /felix/sandbox/http-rfc189/whiteboard/src:
main/java/org/apache/felix/http/whiteboard/internal/manager/
main/java/org/apache/felix/http/whiteboard/internal/tracker/
test/java/org/apache/felix/http/whiteboard/internal/man...
Author: cziegeler
Date: Thu Sep 11 21:24:30 2014
New Revision: 1624398
URL: http://svn.apache.org/r1624398
Log:
FELIX-4547 : Implement the missing resources registration
Added:
felix/sandbox/http-rfc189/whiteboard/src/main/java/org/apache/felix/http/whiteboard/internal/tracker/ResourceTracker.java (with props)
Modified:
felix/sandbox/http-rfc189/whiteboard/src/main/java/org/apache/felix/http/whiteboard/internal/manager/AbstractMapping.java
felix/sandbox/http-rfc189/whiteboard/src/main/java/org/apache/felix/http/whiteboard/internal/manager/ExtenderManager.java
felix/sandbox/http-rfc189/whiteboard/src/main/java/org/apache/felix/http/whiteboard/internal/manager/FilterMapping.java
felix/sandbox/http-rfc189/whiteboard/src/main/java/org/apache/felix/http/whiteboard/internal/manager/ResourceMapping.java
felix/sandbox/http-rfc189/whiteboard/src/main/java/org/apache/felix/http/whiteboard/internal/manager/ServletMapping.java
felix/sandbox/http-rfc189/whiteboard/src/main/java/org/apache/felix/http/whiteboard/internal/tracker/AbstractTracker.java
felix/sandbox/http-rfc189/whiteboard/src/main/java/org/apache/felix/http/whiteboard/internal/tracker/FilterTracker.java
felix/sandbox/http-rfc189/whiteboard/src/main/java/org/apache/felix/http/whiteboard/internal/tracker/HttpContextTracker.java
felix/sandbox/http-rfc189/whiteboard/src/main/java/org/apache/felix/http/whiteboard/internal/tracker/HttpServiceTracker.java
felix/sandbox/http-rfc189/whiteboard/src/main/java/org/apache/felix/http/whiteboard/internal/tracker/ServletContextHelperTracker.java
felix/sandbox/http-rfc189/whiteboard/src/main/java/org/apache/felix/http/whiteboard/internal/tracker/ServletTracker.java
felix/sandbox/http-rfc189/whiteboard/src/test/java/org/apache/felix/http/whiteboard/internal/manager/ExtenderManagerTest.java
Modified: felix/sandbox/http-rfc189/whiteboard/src/main/java/org/apache/felix/http/whiteboard/internal/manager/AbstractMapping.java
URL: http://svn.apache.org/viewvc/felix/sandbox/http-rfc189/whiteboard/src/main/java/org/apache/felix/http/whiteboard/internal/manager/AbstractMapping.java?rev=1624398&r1=1624397&r2=1624398&view=diff
==============================================================================
--- felix/sandbox/http-rfc189/whiteboard/src/main/java/org/apache/felix/http/whiteboard/internal/manager/AbstractMapping.java (original)
+++ felix/sandbox/http-rfc189/whiteboard/src/main/java/org/apache/felix/http/whiteboard/internal/manager/AbstractMapping.java Thu Sep 11 21:24:30 2014
@@ -18,12 +18,9 @@ package org.apache.felix.http.whiteboard
import java.util.Hashtable;
-import javax.servlet.ServletException;
-
import org.osgi.framework.Bundle;
import org.osgi.service.http.HttpContext;
import org.osgi.service.http.HttpService;
-import org.osgi.service.http.NamespaceException;
abstract class AbstractMapping
{
@@ -32,7 +29,7 @@ abstract class AbstractMapping
private final Hashtable<String, String> initParams;
private boolean registered;
- protected AbstractMapping(Bundle bundle)
+ protected AbstractMapping(final Bundle bundle)
{
this.bundle = bundle;
this.context = null;
@@ -70,8 +67,8 @@ abstract class AbstractMapping
this.registered = registered;
}
- public abstract void register(HttpService httpService) throws ServletException, NamespaceException;
+ public abstract void register(HttpService httpService);
- public abstract void unregister(HttpService httpService) throws ServletException;
+ public abstract void unregister(HttpService httpService);
}
Modified: felix/sandbox/http-rfc189/whiteboard/src/main/java/org/apache/felix/http/whiteboard/internal/manager/ExtenderManager.java
URL: http://svn.apache.org/viewvc/felix/sandbox/http-rfc189/whiteboard/src/main/java/org/apache/felix/http/whiteboard/internal/manager/ExtenderManager.java?rev=1624398&r1=1624397&r2=1624398&view=diff
==============================================================================
--- felix/sandbox/http-rfc189/whiteboard/src/main/java/org/apache/felix/http/whiteboard/internal/manager/ExtenderManager.java (original)
+++ felix/sandbox/http-rfc189/whiteboard/src/main/java/org/apache/felix/http/whiteboard/internal/manager/ExtenderManager.java Thu Sep 11 21:24:30 2014
@@ -24,7 +24,6 @@ import java.util.Set;
import javax.servlet.DispatcherType;
import javax.servlet.Filter;
import javax.servlet.Servlet;
-import javax.servlet.ServletException;
import org.apache.felix.http.api.ExtHttpService;
import org.apache.felix.http.api.FilterInfo;
@@ -36,27 +35,31 @@ import org.osgi.framework.Constants;
import org.osgi.framework.ServiceReference;
import org.osgi.service.http.HttpContext;
import org.osgi.service.http.HttpService;
-import org.osgi.service.http.NamespaceException;
import org.osgi.service.http.context.ServletContextHelper;
+import org.osgi.service.http.runtime.dto.ResourceDTO;
import org.osgi.service.http.whiteboard.HttpWhiteboardConstants;
@SuppressWarnings({ "deprecation" })
public final class ExtenderManager
{
- private final HashMap<ServiceReference, AbstractMapping> mapping;
+ static final String TYPE_FILTER = "f";
+ static final String TYPE_SERVLET = "s";
+ static final String TYPE_RESOURCE = "r";
+
+ private final Map<String, AbstractMapping> mapping;
private final HttpContextManager contextManager;
private volatile HttpService httpService;
public ExtenderManager()
{
- this.mapping = new HashMap<ServiceReference, AbstractMapping>();
+ this.mapping = new HashMap<String, AbstractMapping>();
this.contextManager = new HttpContextManager();
}
static boolean isEmpty(final String value)
{
- return value == null || "".equals(value);
+ return value == null || value.length() == 0;
}
static boolean isEmpty(final String[] value)
@@ -164,7 +167,7 @@ public final class ExtenderManager
}
}
- public void add(HttpContext service, ServiceReference ref) throws ServletException, NamespaceException
+ public void add(HttpContext service, ServiceReference ref)
{
String contextId = getStringProperty(ref, org.apache.felix.http.whiteboard.HttpWhiteboardConstants.CONTEXT_ID);
if (!isEmpty(contextId))
@@ -183,7 +186,7 @@ public final class ExtenderManager
}
}
- public void remove(HttpContext service) throws ServletException
+ public void remove(HttpContext service)
{
Collection<AbstractMapping> mappings = this.contextManager.removeHttpContext(service);
if (mappings != null)
@@ -195,7 +198,7 @@ public final class ExtenderManager
}
}
- public void add(ServletContextHelper service, ServiceReference ref) throws ServletException, NamespaceException
+ public void add(ServletContextHelper service, ServiceReference ref)
{
String name = getStringProperty(ref, HttpWhiteboardConstants.HTTP_WHITEBOARD_CONTEXT_NAME);
String path = getStringProperty(ref, HttpWhiteboardConstants.HTTP_WHITEBOARD_CONTEXT_PATH);
@@ -214,7 +217,42 @@ public final class ExtenderManager
}
}
- public void remove(ServletContextHelper service) throws ServletException
+ public void addResource(final ServiceReference ref)
+ {
+ final String[] pattern = getStringArrayProperty(ref, HttpWhiteboardConstants.HTTP_WHITEBOARD_RESOURCE_PATTERN);
+ final String prefix = getStringProperty(ref, HttpWhiteboardConstants.HTTP_WHITEBOARD_RESOURCE_PREFIX);
+
+ if (!isEmpty(pattern))
+ {
+ if ( !isEmpty(prefix))
+ {
+ for(final String p : pattern)
+ {
+ // TODO : check if p is empty - and then log?
+ final ResourceDTO resourceDTO = new ResourceDTO();
+ resourceDTO.patterns = new String[] {p};
+ resourceDTO.prefix = prefix;
+ final ResourceMapping mapping = new ResourceMapping(ref.getBundle(), resourceDTO);
+ this.addMapping(TYPE_RESOURCE, ref, mapping);
+ }
+ }
+ else
+ {
+ SystemLogger.debug("Ignoring Resource Service " + ref + ", " + HttpWhiteboardConstants.HTTP_WHITEBOARD_RESOURCE_PREFIX + " is missing or empty");
+ }
+ }
+ else
+ {
+ SystemLogger.debug("Ignoring Resource Service " + ref + ", " + HttpWhiteboardConstants.HTTP_WHITEBOARD_RESOURCE_PATTERN + " is missing or empty");
+ }
+ }
+
+ public void removeResource(final ServiceReference ref)
+ {
+ this.removeMapping(TYPE_RESOURCE, ref);
+ }
+
+ public void remove(ServletContextHelper service)
{
Collection<AbstractMapping> mappings = this.contextManager.removeContextHelper(service);
if (mappings != null)
@@ -251,7 +289,7 @@ public final class ExtenderManager
this.contextManager.ungetHttpContext(bundle, contextId, mapping);
}
- public void add(Filter service, ServiceReference ref) throws ServletException, NamespaceException
+ public void add(Filter service, ServiceReference ref)
{
FilterInfo filterInfo = new FilterInfo();
filterInfo.name = getStringProperty(ref, HttpWhiteboardConstants.HTTP_WHITEBOARD_FILTER_NAME);
@@ -289,10 +327,10 @@ public final class ExtenderManager
FilterMapping mapping = new FilterMapping(ref.getBundle(), service, filterInfo);
filterInfo.context = getHttpContext(mapping, ref); // XXX
addInitParams(ref, mapping);
- addMapping(ref, mapping);
+ addMapping(TYPE_FILTER, ref, mapping);
}
- public void add(Servlet service, ServiceReference ref) throws ServletException, NamespaceException
+ public void add(Servlet service, ServiceReference ref)
{
ServletInfo servletInfo = new ServletInfo();
servletInfo.name = getStringProperty(ref, HttpWhiteboardConstants.HTTP_WHITEBOARD_SERVLET_NAME);
@@ -330,15 +368,21 @@ public final class ExtenderManager
ServletMapping mapping = new ServletMapping(ref.getBundle(), service, servletInfo);
servletInfo.context = getHttpContext(mapping, ref); // XXX
addInitParams(ref, mapping);
- addMapping(ref, mapping);
+ addMapping(TYPE_SERVLET, ref, mapping);
+ }
+
+ public void removeFilter(ServiceReference ref)
+ {
+ removeMapping(TYPE_FILTER, ref);
}
- public void remove(ServiceReference ref) throws ServletException
+ public void removeServlet(ServiceReference ref)
{
- removeMapping(ref);
+ removeMapping(TYPE_SERVLET, ref);
}
- public synchronized void setHttpService(HttpService service) throws ServletException, NamespaceException
+
+ public synchronized void setHttpService(HttpService service)
{
this.httpService = service;
if (this.httpService instanceof ExtHttpService)
@@ -352,22 +396,23 @@ public final class ExtenderManager
registerAll();
}
- public synchronized void unsetHttpService() throws ServletException
+ public synchronized void unsetHttpService()
{
unregisterAll();
this.httpService = null;
}
- public synchronized void unregisterAll() throws ServletException
+ public synchronized void unregisterAll()
{
- Collection<AbstractMapping> mappings = null;
+ AbstractMapping[] mappings = null;
HttpService service;
synchronized (this)
{
service = this.httpService;
if (service != null)
{
- mappings = this.mapping.values();
+ Collection<AbstractMapping> values = this.mapping.values();
+ mappings = values.toArray(new AbstractMapping[values.size()]);
}
}
if (mappings != null)
@@ -379,16 +424,17 @@ public final class ExtenderManager
}
}
- private synchronized void registerAll() throws ServletException, NamespaceException
+ private synchronized void registerAll()
{
- Collection<AbstractMapping> mappings = null;
+ AbstractMapping[] mappings = null;
HttpService service;
synchronized (this)
{
service = this.httpService;
if (service != null)
{
- mappings = this.mapping.values();
+ Collection<AbstractMapping> values = this.mapping.values();
+ mappings = values.toArray(new AbstractMapping[values.size()]);
}
}
if (mappings != null)
@@ -400,15 +446,15 @@ public final class ExtenderManager
}
}
- private synchronized void addMapping(ServiceReference ref, AbstractMapping mapping) throws ServletException, NamespaceException
+ private synchronized void addMapping(final String servType, ServiceReference ref, AbstractMapping mapping)
{
- this.mapping.put(ref, mapping);
- registerMapping(mapping);
+ this.mapping.put(ref.getProperty(Constants.SERVICE_ID).toString().concat(servType), mapping);
+ this.registerMapping(mapping);
}
- private synchronized void removeMapping(ServiceReference ref) throws ServletException
+ private synchronized void removeMapping(final String servType, ServiceReference ref)
{
- AbstractMapping mapping = this.mapping.remove(ref);
+ AbstractMapping mapping = this.mapping.remove(ref.getProperty(Constants.SERVICE_ID).toString().concat(servType));
if (mapping != null)
{
ungetHttpContext(mapping, ref);
@@ -416,7 +462,7 @@ public final class ExtenderManager
}
}
- private void registerMapping(AbstractMapping mapping) throws ServletException, NamespaceException
+ private void registerMapping(AbstractMapping mapping)
{
HttpService httpService = this.httpService;
if (httpService != null)
@@ -425,7 +471,7 @@ public final class ExtenderManager
}
}
- private void unregisterMapping(AbstractMapping mapping) throws ServletException
+ private void unregisterMapping(AbstractMapping mapping)
{
HttpService httpService = this.httpService;
if (httpService != null)
Modified: felix/sandbox/http-rfc189/whiteboard/src/main/java/org/apache/felix/http/whiteboard/internal/manager/FilterMapping.java
URL: http://svn.apache.org/viewvc/felix/sandbox/http-rfc189/whiteboard/src/main/java/org/apache/felix/http/whiteboard/internal/manager/FilterMapping.java?rev=1624398&r1=1624397&r2=1624398&view=diff
==============================================================================
--- felix/sandbox/http-rfc189/whiteboard/src/main/java/org/apache/felix/http/whiteboard/internal/manager/FilterMapping.java (original)
+++ felix/sandbox/http-rfc189/whiteboard/src/main/java/org/apache/felix/http/whiteboard/internal/manager/FilterMapping.java Thu Sep 11 21:24:30 2014
@@ -17,10 +17,10 @@
package org.apache.felix.http.whiteboard.internal.manager;
import javax.servlet.Filter;
-import javax.servlet.ServletException;
import org.apache.felix.http.api.ExtHttpService;
import org.apache.felix.http.api.FilterInfo;
+import org.apache.felix.http.base.internal.logger.SystemLogger;
import org.osgi.framework.Bundle;
import org.osgi.service.http.HttpService;
@@ -37,7 +37,7 @@ public final class FilterMapping extends
}
@Override
- public void register(HttpService httpService) throws ServletException
+ public void register(HttpService httpService)
{
if (!isRegistered() && (httpService instanceof ExtHttpService) && getContext() != null)
{
@@ -46,7 +46,7 @@ public final class FilterMapping extends
}
@Override
- public void unregister(HttpService httpService) throws ServletException
+ public void unregister(HttpService httpService)
{
if (isRegistered() && (httpService instanceof ExtHttpService))
{
@@ -59,11 +59,18 @@ public final class FilterMapping extends
return filter;
}
- private void register(ExtHttpService httpService) throws ServletException
+ private void register(ExtHttpService httpService)
{
this.filterInfo.context = getContext(); // XXX
- httpService.registerFilter(this.filter, this.filterInfo);
- setRegistered(true);
+ try
+ {
+ httpService.registerFilter(this.filter, this.filterInfo);
+ setRegistered(true);
+ }
+ catch (Exception e)
+ {
+ SystemLogger.error("Failed to register filter", e);
+ }
}
private void unregister(ExtHttpService httpService)
Modified: felix/sandbox/http-rfc189/whiteboard/src/main/java/org/apache/felix/http/whiteboard/internal/manager/ResourceMapping.java
URL: http://svn.apache.org/viewvc/felix/sandbox/http-rfc189/whiteboard/src/main/java/org/apache/felix/http/whiteboard/internal/manager/ResourceMapping.java?rev=1624398&r1=1624397&r2=1624398&view=diff
==============================================================================
--- felix/sandbox/http-rfc189/whiteboard/src/main/java/org/apache/felix/http/whiteboard/internal/manager/ResourceMapping.java (original)
+++ felix/sandbox/http-rfc189/whiteboard/src/main/java/org/apache/felix/http/whiteboard/internal/manager/ResourceMapping.java Thu Sep 11 21:24:30 2014
@@ -18,24 +18,42 @@ package org.apache.felix.http.whiteboard
import org.osgi.framework.Bundle;
import org.osgi.service.http.HttpService;
+import org.osgi.service.http.NamespaceException;
+import org.osgi.service.http.runtime.dto.ResourceDTO;
public final class ResourceMapping extends AbstractMapping
{
- public ResourceMapping(Bundle bundle)
+ private final ResourceDTO dto;
+
+ public ResourceMapping(final Bundle bundle, final ResourceDTO resourceDTO)
{
super(bundle);
+ this.dto = resourceDTO;
}
@Override
- public void register(HttpService httpService)
+ public void register(final HttpService httpService)
{
- // TODO Auto-generated method stub
+ if (!isRegistered() && getContext() != null)
+ {
+ try {
+ httpService.registerResources(this.dto.patterns[0], this.dto.prefix, this.getContext());
+ this.setRegistered(true);
+ }
+ catch (final NamespaceException e)
+ {
+ // TODO Handle exception
+ e.printStackTrace();
+ }
+ }
}
@Override
- public void unregister(HttpService httpService)
+ public void unregister(final HttpService httpService)
{
- // TODO Auto-generated method stub
+ if (isRegistered())
+ {
+ httpService.unregister(this.dto.patterns[0]);
+ }
}
-
}
Modified: felix/sandbox/http-rfc189/whiteboard/src/main/java/org/apache/felix/http/whiteboard/internal/manager/ServletMapping.java
URL: http://svn.apache.org/viewvc/felix/sandbox/http-rfc189/whiteboard/src/main/java/org/apache/felix/http/whiteboard/internal/manager/ServletMapping.java?rev=1624398&r1=1624397&r2=1624398&view=diff
==============================================================================
--- felix/sandbox/http-rfc189/whiteboard/src/main/java/org/apache/felix/http/whiteboard/internal/manager/ServletMapping.java (original)
+++ felix/sandbox/http-rfc189/whiteboard/src/main/java/org/apache/felix/http/whiteboard/internal/manager/ServletMapping.java Thu Sep 11 21:24:30 2014
@@ -17,13 +17,12 @@
package org.apache.felix.http.whiteboard.internal.manager;
import javax.servlet.Servlet;
-import javax.servlet.ServletException;
import org.apache.felix.http.api.ExtHttpService;
import org.apache.felix.http.api.ServletInfo;
+import org.apache.felix.http.base.internal.logger.SystemLogger;
import org.osgi.framework.Bundle;
import org.osgi.service.http.HttpService;
-import org.osgi.service.http.NamespaceException;
public final class ServletMapping extends AbstractMapping
{
@@ -38,12 +37,20 @@ public final class ServletMapping extend
}
@Override
- public void register(HttpService httpService) throws ServletException, NamespaceException
+ public void register(HttpService httpService)
{
if (!isRegistered() && (httpService instanceof ExtHttpService) && getContext() != null)
{
this.servletInfo.context = getContext(); // XXX
- ((ExtHttpService) httpService).registerServlet(this.servlet, this.servletInfo);
+ try
+ {
+ ((ExtHttpService) httpService).registerServlet(this.servlet, this.servletInfo);
+ this.setRegistered(true);
+ }
+ catch (Exception e)
+ {
+ SystemLogger.error("Failed to register servlet", e);
+ }
setRegistered(true);
}
}
Modified: felix/sandbox/http-rfc189/whiteboard/src/main/java/org/apache/felix/http/whiteboard/internal/tracker/AbstractTracker.java
URL: http://svn.apache.org/viewvc/felix/sandbox/http-rfc189/whiteboard/src/main/java/org/apache/felix/http/whiteboard/internal/tracker/AbstractTracker.java?rev=1624398&r1=1624397&r2=1624398&view=diff
==============================================================================
--- felix/sandbox/http-rfc189/whiteboard/src/main/java/org/apache/felix/http/whiteboard/internal/tracker/AbstractTracker.java (original)
+++ felix/sandbox/http-rfc189/whiteboard/src/main/java/org/apache/felix/http/whiteboard/internal/tracker/AbstractTracker.java Thu Sep 11 21:24:30 2014
@@ -16,70 +16,50 @@
*/
package org.apache.felix.http.whiteboard.internal.tracker;
-import javax.servlet.ServletException;
-
-import org.apache.felix.http.base.internal.logger.SystemLogger;
-import org.osgi.service.http.NamespaceException;
-import org.osgi.util.tracker.ServiceTracker;
import org.osgi.framework.BundleContext;
+import org.osgi.framework.Filter;
import org.osgi.framework.ServiceReference;
+import org.osgi.util.tracker.ServiceTracker;
public abstract class AbstractTracker<T> extends ServiceTracker
{
- public AbstractTracker(BundleContext context, Class<T> clz)
+ public AbstractTracker(final BundleContext context, final Class<T> clz)
{
super(context, clz.getName(), null);
}
+ public AbstractTracker(final BundleContext context, final Filter filter)
+ {
+ super(context, filter, null);
+ }
+
@Override
@SuppressWarnings("unchecked")
- public final Object addingService(ServiceReference ref)
+ public final Object addingService(final ServiceReference ref)
{
- try
- {
- T service = (T) super.addingService(ref);
- added(service, ref);
- return service;
- }
- catch (Exception e)
- {
- SystemLogger.warning("Failed to add service!", e); // XXX log more information!
- }
- return null;
+ T service = (T) super.addingService(ref);
+ added(service, ref);
+ return service;
}
@Override
@SuppressWarnings("unchecked")
- public final void modifiedService(ServiceReference ref, Object service)
+ public final void modifiedService(final ServiceReference ref, final Object service)
{
- try
- {
- modified( (T)service, ref);
- }
- catch (Exception e)
- {
- SystemLogger.warning("Failed to modify service", e); // XXX log more information!
- }
+ modified( (T)service, ref);
}
@Override
@SuppressWarnings("unchecked")
- public final void removedService(ServiceReference ref, Object service)
+ public final void removedService(final ServiceReference ref, final Object service)
{
- try
- {
- super.removedService(ref, service);
- removed((T) service, ref);
- }
- catch (Exception e)
- {
- SystemLogger.warning("Failed to remove service!", e); // XXX log more information!
- }
+ super.removedService(ref, service);
+ removed((T) service, ref);
}
- protected abstract void modified(T service, ServiceReference ref) throws ServletException, NamespaceException;
+ protected abstract void modified(T service, ServiceReference ref);
- protected abstract void added(T service, ServiceReference ref) throws ServletException, NamespaceException;
+ protected abstract void added(T service, ServiceReference ref);
- protected abstract void removed(T service, ServiceReference ref) throws ServletException;
+ protected abstract void removed(T service, ServiceReference ref);
}
Modified: felix/sandbox/http-rfc189/whiteboard/src/main/java/org/apache/felix/http/whiteboard/internal/tracker/FilterTracker.java
URL: http://svn.apache.org/viewvc/felix/sandbox/http-rfc189/whiteboard/src/main/java/org/apache/felix/http/whiteboard/internal/tracker/FilterTracker.java?rev=1624398&r1=1624397&r2=1624398&view=diff
==============================================================================
--- felix/sandbox/http-rfc189/whiteboard/src/main/java/org/apache/felix/http/whiteboard/internal/tracker/FilterTracker.java (original)
+++ felix/sandbox/http-rfc189/whiteboard/src/main/java/org/apache/felix/http/whiteboard/internal/tracker/FilterTracker.java Thu Sep 11 21:24:30 2014
@@ -17,12 +17,10 @@
package org.apache.felix.http.whiteboard.internal.tracker;
import javax.servlet.Filter;
-import javax.servlet.ServletException;
import org.apache.felix.http.whiteboard.internal.manager.ExtenderManager;
import org.osgi.framework.BundleContext;
import org.osgi.framework.ServiceReference;
-import org.osgi.service.http.NamespaceException;
public final class FilterTracker extends AbstractTracker<Filter>
{
@@ -34,19 +32,22 @@ public final class FilterTracker extends
this.manager = manager;
}
- protected void added(Filter service, ServiceReference ref) throws ServletException, NamespaceException
+ @Override
+ protected void added(Filter service, ServiceReference ref)
{
this.manager.add(service, ref);
}
- protected void modified(Filter service, ServiceReference ref) throws ServletException, NamespaceException
+ @Override
+ protected void modified(Filter service, ServiceReference ref)
{
removed(service, ref);
added(service, ref);
}
- protected void removed(Filter service, ServiceReference ref) throws ServletException
+ @Override
+ protected void removed(Filter service, ServiceReference ref)
{
- this.manager.remove(ref);
+ this.manager.removeFilter(ref);
}
}
Modified: felix/sandbox/http-rfc189/whiteboard/src/main/java/org/apache/felix/http/whiteboard/internal/tracker/HttpContextTracker.java
URL: http://svn.apache.org/viewvc/felix/sandbox/http-rfc189/whiteboard/src/main/java/org/apache/felix/http/whiteboard/internal/tracker/HttpContextTracker.java?rev=1624398&r1=1624397&r2=1624398&view=diff
==============================================================================
--- felix/sandbox/http-rfc189/whiteboard/src/main/java/org/apache/felix/http/whiteboard/internal/tracker/HttpContextTracker.java (original)
+++ felix/sandbox/http-rfc189/whiteboard/src/main/java/org/apache/felix/http/whiteboard/internal/tracker/HttpContextTracker.java Thu Sep 11 21:24:30 2014
@@ -16,13 +16,10 @@
*/
package org.apache.felix.http.whiteboard.internal.tracker;
-import javax.servlet.ServletException;
-
+import org.apache.felix.http.whiteboard.internal.manager.ExtenderManager;
import org.osgi.framework.BundleContext;
import org.osgi.framework.ServiceReference;
import org.osgi.service.http.HttpContext;
-import org.osgi.service.http.NamespaceException;
-import org.apache.felix.http.whiteboard.internal.manager.ExtenderManager;
public final class HttpContextTracker extends AbstractTracker<HttpContext>
{
@@ -34,18 +31,21 @@ public final class HttpContextTracker ex
this.manager = manager;
}
- protected void added(HttpContext service, ServiceReference ref) throws ServletException, NamespaceException
+ @Override
+ protected void added(HttpContext service, ServiceReference ref)
{
this.manager.add(service, ref);
}
- protected void modified(HttpContext service, ServiceReference ref) throws ServletException, NamespaceException
+ @Override
+ protected void modified(HttpContext service, ServiceReference ref)
{
removed(service, ref);
added(service, ref);
}
- protected void removed(HttpContext service, ServiceReference ref) throws ServletException
+ @Override
+ protected void removed(HttpContext service, ServiceReference ref)
{
this.manager.remove(service);
}
Modified: felix/sandbox/http-rfc189/whiteboard/src/main/java/org/apache/felix/http/whiteboard/internal/tracker/HttpServiceTracker.java
URL: http://svn.apache.org/viewvc/felix/sandbox/http-rfc189/whiteboard/src/main/java/org/apache/felix/http/whiteboard/internal/tracker/HttpServiceTracker.java?rev=1624398&r1=1624397&r2=1624398&view=diff
==============================================================================
--- felix/sandbox/http-rfc189/whiteboard/src/main/java/org/apache/felix/http/whiteboard/internal/tracker/HttpServiceTracker.java (original)
+++ felix/sandbox/http-rfc189/whiteboard/src/main/java/org/apache/felix/http/whiteboard/internal/tracker/HttpServiceTracker.java Thu Sep 11 21:24:30 2014
@@ -16,13 +16,10 @@
*/
package org.apache.felix.http.whiteboard.internal.tracker;
-import javax.servlet.ServletException;
-
import org.apache.felix.http.whiteboard.internal.manager.ExtenderManager;
import org.osgi.framework.BundleContext;
import org.osgi.framework.ServiceReference;
import org.osgi.service.http.HttpService;
-import org.osgi.service.http.NamespaceException;
public final class HttpServiceTracker extends AbstractTracker<HttpService>
{
@@ -34,17 +31,20 @@ public final class HttpServiceTracker ex
this.manager = manager;
}
- protected void added(HttpService service, ServiceReference ref) throws ServletException, NamespaceException
+ @Override
+ protected void added(HttpService service, ServiceReference ref)
{
this.manager.setHttpService(service);
}
- protected void modified(HttpService service, ServiceReference ref) throws ServletException, NamespaceException
+ @Override
+ protected void modified(HttpService service, ServiceReference ref)
{
// Do nothing
}
- protected void removed(HttpService service, ServiceReference ref) throws ServletException
+ @Override
+ protected void removed(HttpService service, ServiceReference ref)
{
this.manager.unsetHttpService();
}
Added: felix/sandbox/http-rfc189/whiteboard/src/main/java/org/apache/felix/http/whiteboard/internal/tracker/ResourceTracker.java
URL: http://svn.apache.org/viewvc/felix/sandbox/http-rfc189/whiteboard/src/main/java/org/apache/felix/http/whiteboard/internal/tracker/ResourceTracker.java?rev=1624398&view=auto
==============================================================================
--- felix/sandbox/http-rfc189/whiteboard/src/main/java/org/apache/felix/http/whiteboard/internal/tracker/ResourceTracker.java (added)
+++ felix/sandbox/http-rfc189/whiteboard/src/main/java/org/apache/felix/http/whiteboard/internal/tracker/ResourceTracker.java Thu Sep 11 21:24:30 2014
@@ -0,0 +1,69 @@
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one or more
+ * contributor license agreements. See the NOTICE file distributed with
+ * this work for additional information regarding copyright ownership.
+ * The ASF licenses this file to You under the Apache License, Version 2.0
+ * (the "License"); you may not use this file except in compliance with
+ * the License. You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+package org.apache.felix.http.whiteboard.internal.tracker;
+
+import org.apache.felix.http.whiteboard.internal.manager.ExtenderManager;
+import org.osgi.framework.BundleContext;
+import org.osgi.framework.Filter;
+import org.osgi.framework.InvalidSyntaxException;
+import org.osgi.framework.ServiceReference;
+import org.osgi.service.http.whiteboard.HttpWhiteboardConstants;
+
+public final class ResourceTracker extends AbstractTracker<Object>
+{
+ private final ExtenderManager manager;
+
+ private static Filter createFilter(final BundleContext btx)
+ {
+ try
+ {
+ return btx.createFilter(String.format("(&(%s=*)(%s=*))",
+ HttpWhiteboardConstants.HTTP_WHITEBOARD_RESOURCE_PATTERN,
+ HttpWhiteboardConstants.HTTP_WHITEBOARD_RESOURCE_PREFIX));
+ }
+ catch ( final InvalidSyntaxException ise)
+ {
+ // we can safely ignore it as the above filter is a constant
+ }
+ return null; // we never get here - and if we get an NPE which is fine
+ }
+
+ public ResourceTracker(final BundleContext context, final ExtenderManager manager)
+ {
+ super(context, createFilter(context));
+ this.manager = manager;
+ }
+
+ @Override
+ protected void added(final Object service, final ServiceReference ref)
+ {
+ this.manager.addResource(ref);
+ }
+
+ @Override
+ protected void modified(final Object service, final ServiceReference ref)
+ {
+ removed(service, ref);
+ added(service, ref);
+ }
+
+ @Override
+ protected void removed(final Object service, final ServiceReference ref)
+ {
+ this.manager.removeResource(ref);
+ }
+}
Propchange: felix/sandbox/http-rfc189/whiteboard/src/main/java/org/apache/felix/http/whiteboard/internal/tracker/ResourceTracker.java
------------------------------------------------------------------------------
svn:eol-style = native
Propchange: felix/sandbox/http-rfc189/whiteboard/src/main/java/org/apache/felix/http/whiteboard/internal/tracker/ResourceTracker.java
------------------------------------------------------------------------------
svn:keywords = author date id revision rev url
Modified: felix/sandbox/http-rfc189/whiteboard/src/main/java/org/apache/felix/http/whiteboard/internal/tracker/ServletContextHelperTracker.java
URL: http://svn.apache.org/viewvc/felix/sandbox/http-rfc189/whiteboard/src/main/java/org/apache/felix/http/whiteboard/internal/tracker/ServletContextHelperTracker.java?rev=1624398&r1=1624397&r2=1624398&view=diff
==============================================================================
--- felix/sandbox/http-rfc189/whiteboard/src/main/java/org/apache/felix/http/whiteboard/internal/tracker/ServletContextHelperTracker.java (original)
+++ felix/sandbox/http-rfc189/whiteboard/src/main/java/org/apache/felix/http/whiteboard/internal/tracker/ServletContextHelperTracker.java Thu Sep 11 21:24:30 2014
@@ -19,12 +19,8 @@ package org.apache.felix.http.whiteboard
import org.apache.felix.http.whiteboard.internal.manager.ExtenderManager;
import org.osgi.framework.BundleContext;
import org.osgi.framework.ServiceReference;
-import org.osgi.service.http.NamespaceException;
import org.osgi.service.http.context.ServletContextHelper;
-import javax.servlet.Servlet;
-import javax.servlet.ServletException;
-
public final class ServletContextHelperTracker extends AbstractTracker<ServletContextHelper>
{
private final ExtenderManager manager;
@@ -35,18 +31,21 @@ public final class ServletContextHelperT
this.manager = manager;
}
- protected void added(ServletContextHelper service, ServiceReference ref) throws ServletException, NamespaceException
+ @Override
+ protected void added(ServletContextHelper service, ServiceReference ref)
{
this.manager.add(service, ref);
}
- protected void modified(ServletContextHelper service, ServiceReference ref) throws ServletException, NamespaceException
+ @Override
+ protected void modified(ServletContextHelper service, ServiceReference ref)
{
removed(service, ref);
added(service, ref);
}
- protected void removed(ServletContextHelper service, ServiceReference ref) throws ServletException
+ @Override
+ protected void removed(ServletContextHelper service, ServiceReference ref)
{
this.manager.remove(service);
}
Modified: felix/sandbox/http-rfc189/whiteboard/src/main/java/org/apache/felix/http/whiteboard/internal/tracker/ServletTracker.java
URL: http://svn.apache.org/viewvc/felix/sandbox/http-rfc189/whiteboard/src/main/java/org/apache/felix/http/whiteboard/internal/tracker/ServletTracker.java?rev=1624398&r1=1624397&r2=1624398&view=diff
==============================================================================
--- felix/sandbox/http-rfc189/whiteboard/src/main/java/org/apache/felix/http/whiteboard/internal/tracker/ServletTracker.java (original)
+++ felix/sandbox/http-rfc189/whiteboard/src/main/java/org/apache/felix/http/whiteboard/internal/tracker/ServletTracker.java Thu Sep 11 21:24:30 2014
@@ -16,13 +16,11 @@
*/
package org.apache.felix.http.whiteboard.internal.tracker;
+import javax.servlet.Servlet;
+
import org.apache.felix.http.whiteboard.internal.manager.ExtenderManager;
import org.osgi.framework.BundleContext;
import org.osgi.framework.ServiceReference;
-import org.osgi.service.http.NamespaceException;
-
-import javax.servlet.Servlet;
-import javax.servlet.ServletException;
public final class ServletTracker extends AbstractTracker<Servlet>
{
@@ -34,19 +32,22 @@ public final class ServletTracker extend
this.manager = manager;
}
- protected void added(Servlet service, ServiceReference ref) throws ServletException, NamespaceException
+ @Override
+ protected void added(Servlet service, ServiceReference ref)
{
this.manager.add(service, ref);
}
- protected void modified(Servlet service, ServiceReference ref) throws ServletException, NamespaceException
+ @Override
+ protected void modified(Servlet service, ServiceReference ref)
{
removed(service, ref);
added(service, ref);
}
- protected void removed(Servlet service, ServiceReference ref) throws ServletException
+ @Override
+ protected void removed(Servlet service, ServiceReference ref)
{
- this.manager.remove(ref);
+ this.manager.removeServlet(ref);
}
}