public interface MyEventType extends EventType {
void handle(MyEvent event);
}
public class MyEvent {
private String message;
public MyEvent(String message) {
this.message = message;
}
public String getMessage() {
return message;
}
}
public class MyEventHandler implements EventHandler<MyEventType> {
@Override
public void handleEvent(MyEvent event) {
System.out.println("Received event: " + event.getMessage());
}
}
public class EventPublisher {
private EventAdmin eventAdmin;
public void setEventAdmin(EventAdmin eventAdmin) {
this.eventAdmin = eventAdmin;
}
public void publishEvent(String message) {
MyEvent event = new MyEvent(message);
eventAdmin.postEvent(event);
}
}
public class EventSubscriber {
public void activate() {
ServiceTracker<MyEventType, MyEventHandler> tracker = new ServiceTracker<>(
bundleContext, MyEventType.class, null);
tracker.open();
}
public void deactivate() {
tracker.close();
}
}