com.github.dynamicextensionsalfresco.event.impl.DefaultEventBus.kt Maven / Gradle / Ivy
Go to download
Show more of this group Show more artifacts with this name
Show all versions of event-bus Show documentation
Show all versions of event-bus Show documentation
Adds an OSGi container to alfresco repository supporting dynamic code reloading, classpath isolation and a bunch of other useful features
package com.github.dynamicextensionsalfresco.event.impl
import com.github.dynamicextensionsalfresco.event.Event
import com.github.dynamicextensionsalfresco.event.EventBus
import com.github.dynamicextensionsalfresco.event.EventListener
import org.osgi.framework.BundleContext
/**
* Synchronous implementation that only notifies listeners based on their supported events.
* @author Laurent Van der Linden
*/
public class DefaultEventBus(private val bundleContext: BundleContext) : EventBus {
@Suppress("UNCHECKED_CAST")
override fun publish(event: Event) {
bundleContext.getAllServiceReferences(EventListener::class.java.name, null)
.asSequence()
.map { bundleContext.getService(it) }
.filterIsInstance(EventListener::class.java)
.filter { it.supportedEventTypes.any { it == event.javaClass } }
.forEach { (it as EventListener).onEvent(event) }
}
}
© 2015 - 2025 Weber Informatics LLC | Privacy Policy