blob: 9f942ae6bc2c1a6e972f34c587cd10a16ebaa932 [file] [log] [blame]
/*******************************************************************************
* Copyright (c) 2003 IBM Corporation and others.
* All rights reserved. This program and the accompanying materials
* are made available under the terms of the Common Public License v1.0
* which accompanies this distribution, and is available at
* http://www.eclipse.org/legal/cpl-v10.html
*
* Contributors:
* IBM Corporation - initial API and implementation
*******************************************************************************/
package org.eclipse.osgi.framework.internal.core;
import org.eclipse.osgi.framework.debug.Debug;
import org.osgi.framework.*;
public class FilteredServiceListener implements ServiceListener
{
/** Filter for listener. */
protected FilterImpl filter;
/** Real listener. */
protected ServiceListener listener;
/**
* Constructor.
*
* @param filterstring filter for this listener.
* @param listener real listener.
* @exception InvalidSyntaxException if the filter is invalid.
*/
protected FilteredServiceListener(String filterstring, ServiceListener listener)
throws InvalidSyntaxException
{
filter = new FilterImpl(filterstring);
this.listener = listener;
}
/**
* Receive notification that a service has had a
* change occur in it's lifecycle.
*
* @param event The ServiceEvent.
*/
public void serviceChanged(ServiceEvent event)
{
ServiceReferenceImpl reference = (ServiceReferenceImpl)event.getServiceReference();
if (Debug.DEBUG && Debug.DEBUG_EVENTS)
{
String listenerName = this.getClass().getName() + "@" + Integer.toHexString(this.hashCode());
Debug.println("filterServiceEvent("+listenerName+", \""+filter+"\", "+reference.registration.properties+")");
}
if (filter.match(reference))
{
if (Debug.DEBUG && Debug.DEBUG_EVENTS)
{
String listenerName = listener.getClass().getName() + "@" + Integer.toHexString(listener.hashCode());
Debug.println("dispatchFilteredServiceEvent("+listenerName+")");
}
listener.serviceChanged(event);
}
}
/**
* Get the filter string used by this Filtered listener.
*
* @return The filter string used by this listener.
*/
public String toString()
{
return(filter.toString());
}
}