blob: dd27674a457768b18397e9524cd570c1b5d9bfd5 [file] [log] [blame]
/*
* Copyright 2006 The Apache Software Foundation
*
* Licensed 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.examples.eventlistener;
import org.osgi.framework.BundleActivator;
import org.osgi.framework.BundleContext;
import org.osgi.framework.ServiceListener;
import org.osgi.framework.ServiceEvent;
/**
* This class implements a simple bundle that utilizes the OSGi framework's
* event mechanism to listen for service events. Upon receiving a service event,
* it prints out the event's details.
*
* @author <a href="mailto:dev@felix.apache.org">Felix Project Team</a>
*/
public class Activator implements BundleActivator, ServiceListener
{
/**
* Implements BundleActivator.start(). Prints a message and adds itself to
* the bundle context as a service listener.
*
* @param context the framework context for the bundle.
*/
public void start( BundleContext context )
{
System.out.println( "Starting to listen for service events." );
context.addServiceListener( this );
}
/**
* Implements BundleActivator.stop(). Prints a message and removes itself
* from the bundle context as a service listener.
*
* @param context the framework context for the bundle.
*/
public void stop( BundleContext context )
{
context.removeServiceListener( this );
System.out.println( "Stopped listening for service events." );
// Note: It is not required that we remove the listener here,
// since the framework will do it automatically anyway.
}
/**
* Implements ServiceListener.serviceChanged(). Prints the details of any
* service event from the framework.
*
* @param event the fired service event.
*/
public void serviceChanged( ServiceEvent event )
{
String[] objectClass = ( String[] ) event.getServiceReference().getProperty( "objectClass" );
if ( event.getType() == ServiceEvent.REGISTERED )
{
System.out.println( "Ex1: Service of type " + objectClass[0] + " registered." );
}
else if ( event.getType() == ServiceEvent.UNREGISTERING )
{
System.out.println( "Ex1: Service of type " + objectClass[0] + " unregistered." );
}
else if ( event.getType() == ServiceEvent.MODIFIED )
{
System.out.println( "Ex1: Service of type " + objectClass[0] + " modified." );
}
}
}