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/13 14:11:01 UTC
svn commit: r1659549 -
/felix/trunk/http/base/src/main/java/org/apache/felix/http/base/internal/listener/
Author: cziegeler
Date: Fri Feb 13 13:11:01 2015
New Revision: 1659549
URL: http://svn.apache.org/r1659549
Log:
FELIX-4781 : Implement various listeners. Ignore new whiteboard listeners for Http Service
Modified:
felix/trunk/http/base/src/main/java/org/apache/felix/http/base/internal/listener/AbstractListenerManager.java
felix/trunk/http/base/src/main/java/org/apache/felix/http/base/internal/listener/HttpSessionAttributeListenerManager.java
felix/trunk/http/base/src/main/java/org/apache/felix/http/base/internal/listener/HttpSessionListenerManager.java
felix/trunk/http/base/src/main/java/org/apache/felix/http/base/internal/listener/ServletContextAttributeListenerManager.java
felix/trunk/http/base/src/main/java/org/apache/felix/http/base/internal/listener/ServletRequestAttributeListenerManager.java
felix/trunk/http/base/src/main/java/org/apache/felix/http/base/internal/listener/ServletRequestListenerManager.java
Modified: felix/trunk/http/base/src/main/java/org/apache/felix/http/base/internal/listener/AbstractListenerManager.java
URL: http://svn.apache.org/viewvc/felix/trunk/http/base/src/main/java/org/apache/felix/http/base/internal/listener/AbstractListenerManager.java?rev=1659549&r1=1659548&r2=1659549&view=diff
==============================================================================
--- felix/trunk/http/base/src/main/java/org/apache/felix/http/base/internal/listener/AbstractListenerManager.java (original)
+++ felix/trunk/http/base/src/main/java/org/apache/felix/http/base/internal/listener/AbstractListenerManager.java Fri Feb 13 13:11:01 2015
@@ -21,22 +21,21 @@ package org.apache.felix.http.base.inter
import java.util.ArrayList;
import java.util.Iterator;
-
import org.osgi.framework.BundleContext;
+import org.osgi.framework.Filter;
import org.osgi.framework.ServiceReference;
import org.osgi.util.tracker.ServiceTracker;
-public class AbstractListenerManager<ListenerType> extends ServiceTracker
+public class AbstractListenerManager<ListenerType> extends ServiceTracker<ListenerType, ListenerType>
{
private ArrayList<ListenerType> allContextListeners;
- private final Object lock;
+ private final Object lock = new Object();
- protected AbstractListenerManager(BundleContext context, Class<ListenerType> clazz)
+ protected AbstractListenerManager(final BundleContext context, final Filter filter)
{
- super(context, clazz.getName(), null);
- lock = new Object();
+ super(context, filter, null);
}
@SuppressWarnings("unchecked")
@@ -74,7 +73,7 @@ public class AbstractListenerManager<Lis
}
@Override
- public Object addingService(ServiceReference reference)
+ public ListenerType addingService(ServiceReference<ListenerType> reference)
{
synchronized (lock)
{
@@ -85,7 +84,7 @@ public class AbstractListenerManager<Lis
}
@Override
- public void modifiedService(ServiceReference reference, Object service)
+ public void modifiedService(ServiceReference<ListenerType> reference, ListenerType service)
{
synchronized (lock)
{
@@ -96,7 +95,7 @@ public class AbstractListenerManager<Lis
}
@Override
- public void removedService(ServiceReference reference, Object service)
+ public void removedService(ServiceReference<ListenerType> reference, ListenerType service)
{
synchronized (lock)
{
Modified: felix/trunk/http/base/src/main/java/org/apache/felix/http/base/internal/listener/HttpSessionAttributeListenerManager.java
URL: http://svn.apache.org/viewvc/felix/trunk/http/base/src/main/java/org/apache/felix/http/base/internal/listener/HttpSessionAttributeListenerManager.java?rev=1659549&r1=1659548&r2=1659549&view=diff
==============================================================================
--- felix/trunk/http/base/src/main/java/org/apache/felix/http/base/internal/listener/HttpSessionAttributeListenerManager.java (original)
+++ felix/trunk/http/base/src/main/java/org/apache/felix/http/base/internal/listener/HttpSessionAttributeListenerManager.java Fri Feb 13 13:11:01 2015
@@ -24,6 +24,8 @@ import javax.servlet.http.HttpSessionAtt
import javax.servlet.http.HttpSessionBindingEvent;
import org.osgi.framework.BundleContext;
+import org.osgi.framework.InvalidSyntaxException;
+import org.osgi.service.http.whiteboard.HttpWhiteboardConstants;
/**
* The <code>ProxyListener</code> implements the Servlet API 2.4 listener
@@ -33,12 +35,27 @@ import org.osgi.framework.BundleContext;
public class HttpSessionAttributeListenerManager extends AbstractListenerManager<HttpSessionAttributeListener>
implements HttpSessionAttributeListener
{
+ private static org.osgi.framework.Filter createFilter(final BundleContext btx)
+ {
+ try
+ {
+ return btx.createFilter(String.format("(&(objectClass=%s)(!(%s=*)))",
+ HttpSessionAttributeListener.class.getName(),
+ HttpWhiteboardConstants.HTTP_WHITEBOARD_LISTENER));
+ }
+ 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 HttpSessionAttributeListenerManager(BundleContext context)
{
- super(context, HttpSessionAttributeListener.class);
+ super(context, createFilter(context));
}
+ @Override
public void attributeAdded(final HttpSessionBindingEvent se)
{
final Iterator<HttpSessionAttributeListener> listeners = getContextListeners();
@@ -48,6 +65,7 @@ public class HttpSessionAttributeListene
}
}
+ @Override
public void attributeRemoved(final HttpSessionBindingEvent se)
{
final Iterator<HttpSessionAttributeListener> listeners = getContextListeners();
@@ -57,6 +75,7 @@ public class HttpSessionAttributeListene
}
}
+ @Override
public void attributeReplaced(final HttpSessionBindingEvent se)
{
final Iterator<HttpSessionAttributeListener> listeners = getContextListeners();
Modified: felix/trunk/http/base/src/main/java/org/apache/felix/http/base/internal/listener/HttpSessionListenerManager.java
URL: http://svn.apache.org/viewvc/felix/trunk/http/base/src/main/java/org/apache/felix/http/base/internal/listener/HttpSessionListenerManager.java?rev=1659549&r1=1659548&r2=1659549&view=diff
==============================================================================
--- felix/trunk/http/base/src/main/java/org/apache/felix/http/base/internal/listener/HttpSessionListenerManager.java (original)
+++ felix/trunk/http/base/src/main/java/org/apache/felix/http/base/internal/listener/HttpSessionListenerManager.java Fri Feb 13 13:11:01 2015
@@ -24,6 +24,8 @@ import javax.servlet.http.HttpSessionEve
import javax.servlet.http.HttpSessionListener;
import org.osgi.framework.BundleContext;
+import org.osgi.framework.InvalidSyntaxException;
+import org.osgi.service.http.whiteboard.HttpWhiteboardConstants;
/**
* The <code>ProxyListener</code> implements the Servlet API 2.4 listener
@@ -33,12 +35,27 @@ import org.osgi.framework.BundleContext;
public class HttpSessionListenerManager extends AbstractListenerManager<HttpSessionListener> implements
HttpSessionListener
{
+ private static org.osgi.framework.Filter createFilter(final BundleContext btx)
+ {
+ try
+ {
+ return btx.createFilter(String.format("(&(objectClass=%s)(!(%s=*)))",
+ HttpSessionListener.class.getName(),
+ HttpWhiteboardConstants.HTTP_WHITEBOARD_LISTENER));
+ }
+ 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 HttpSessionListenerManager(BundleContext context)
{
- super(context, HttpSessionListener.class);
+ super(context, createFilter(context));
}
+ @Override
public void sessionCreated(final HttpSessionEvent se)
{
final Iterator<HttpSessionListener> listeners = getContextListeners();
@@ -48,6 +65,7 @@ public class HttpSessionListenerManager
}
}
+ @Override
public void sessionDestroyed(final HttpSessionEvent se)
{
final Iterator<HttpSessionListener> listeners = getContextListeners();
Modified: felix/trunk/http/base/src/main/java/org/apache/felix/http/base/internal/listener/ServletContextAttributeListenerManager.java
URL: http://svn.apache.org/viewvc/felix/trunk/http/base/src/main/java/org/apache/felix/http/base/internal/listener/ServletContextAttributeListenerManager.java?rev=1659549&r1=1659548&r2=1659549&view=diff
==============================================================================
--- felix/trunk/http/base/src/main/java/org/apache/felix/http/base/internal/listener/ServletContextAttributeListenerManager.java (original)
+++ felix/trunk/http/base/src/main/java/org/apache/felix/http/base/internal/listener/ServletContextAttributeListenerManager.java Fri Feb 13 13:11:01 2015
@@ -22,7 +22,10 @@ import java.util.Iterator;
import javax.servlet.ServletContextAttributeEvent;
import javax.servlet.ServletContextAttributeListener;
+
import org.osgi.framework.BundleContext;
+import org.osgi.framework.InvalidSyntaxException;
+import org.osgi.service.http.whiteboard.HttpWhiteboardConstants;
/**
* The <code>ProxyListener</code> implements the Servlet API 2.4 listener
@@ -32,12 +35,27 @@ import org.osgi.framework.BundleContext;
public class ServletContextAttributeListenerManager extends AbstractListenerManager<ServletContextAttributeListener>
implements ServletContextAttributeListener
{
+ private static org.osgi.framework.Filter createFilter(final BundleContext btx)
+ {
+ try
+ {
+ return btx.createFilter(String.format("(&(objectClass=%s)(!(%s=*)))",
+ ServletContextAttributeListener.class.getName(),
+ HttpWhiteboardConstants.HTTP_WHITEBOARD_LISTENER));
+ }
+ 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 ServletContextAttributeListenerManager(BundleContext context)
{
- super(context, ServletContextAttributeListener.class);
+ super(context, createFilter(context));
}
+ @Override
public void attributeAdded(final ServletContextAttributeEvent scab)
{
final Iterator<ServletContextAttributeListener> listeners = getContextListeners();
@@ -47,6 +65,7 @@ public class ServletContextAttributeList
}
}
+ @Override
public void attributeRemoved(final ServletContextAttributeEvent scab)
{
final Iterator<ServletContextAttributeListener> listeners = getContextListeners();
@@ -56,6 +75,7 @@ public class ServletContextAttributeList
}
}
+ @Override
public void attributeReplaced(final ServletContextAttributeEvent scab)
{
final Iterator<ServletContextAttributeListener> listeners = getContextListeners();
Modified: felix/trunk/http/base/src/main/java/org/apache/felix/http/base/internal/listener/ServletRequestAttributeListenerManager.java
URL: http://svn.apache.org/viewvc/felix/trunk/http/base/src/main/java/org/apache/felix/http/base/internal/listener/ServletRequestAttributeListenerManager.java?rev=1659549&r1=1659548&r2=1659549&view=diff
==============================================================================
--- felix/trunk/http/base/src/main/java/org/apache/felix/http/base/internal/listener/ServletRequestAttributeListenerManager.java (original)
+++ felix/trunk/http/base/src/main/java/org/apache/felix/http/base/internal/listener/ServletRequestAttributeListenerManager.java Fri Feb 13 13:11:01 2015
@@ -24,6 +24,8 @@ import javax.servlet.ServletRequestAttri
import javax.servlet.ServletRequestAttributeListener;
import org.osgi.framework.BundleContext;
+import org.osgi.framework.InvalidSyntaxException;
+import org.osgi.service.http.whiteboard.HttpWhiteboardConstants;
/**
* The <code>ProxyListener</code> implements the Servlet API 2.4 listener
@@ -32,10 +34,24 @@ import org.osgi.framework.BundleContext;
*/
public class ServletRequestAttributeListenerManager extends AbstractListenerManager<ServletRequestAttributeListener>
{
+ private static org.osgi.framework.Filter createFilter(final BundleContext btx)
+ {
+ try
+ {
+ return btx.createFilter(String.format("(&(objectClass=%s)(!(%s=*)))",
+ ServletRequestAttributeListener.class.getName(),
+ HttpWhiteboardConstants.HTTP_WHITEBOARD_LISTENER));
+ }
+ 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 ServletRequestAttributeListenerManager(BundleContext context)
{
- super(context, ServletRequestAttributeListener.class);
+ super(context, createFilter(context));
}
public void attributeAdded(final ServletRequestAttributeEvent srae)
Modified: felix/trunk/http/base/src/main/java/org/apache/felix/http/base/internal/listener/ServletRequestListenerManager.java
URL: http://svn.apache.org/viewvc/felix/trunk/http/base/src/main/java/org/apache/felix/http/base/internal/listener/ServletRequestListenerManager.java?rev=1659549&r1=1659548&r2=1659549&view=diff
==============================================================================
--- felix/trunk/http/base/src/main/java/org/apache/felix/http/base/internal/listener/ServletRequestListenerManager.java (original)
+++ felix/trunk/http/base/src/main/java/org/apache/felix/http/base/internal/listener/ServletRequestListenerManager.java Fri Feb 13 13:11:01 2015
@@ -24,6 +24,8 @@ import javax.servlet.ServletRequestEvent
import javax.servlet.ServletRequestListener;
import org.osgi.framework.BundleContext;
+import org.osgi.framework.InvalidSyntaxException;
+import org.osgi.service.http.whiteboard.HttpWhiteboardConstants;
/**
* The <code>ProxyListener</code> implements the Servlet API 2.4 listener
@@ -32,10 +34,24 @@ import org.osgi.framework.BundleContext;
*/
public class ServletRequestListenerManager extends AbstractListenerManager<ServletRequestListener>
{
+ private static org.osgi.framework.Filter createFilter(final BundleContext btx)
+ {
+ try
+ {
+ return btx.createFilter(String.format("(&(objectClass=%s)(!(%s=*)))",
+ ServletRequestListener.class.getName(),
+ HttpWhiteboardConstants.HTTP_WHITEBOARD_LISTENER));
+ }
+ 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 ServletRequestListenerManager(BundleContext context)
{
- super(context, ServletRequestListener.class);
+ super(context, createFilter(context));
}
public void requestDestroyed(final ServletRequestEvent sre)