import com.google.common.annotations.VisibleForTesting;
import java.util.Dictionary;
import java.util.Map;
+import java.util.function.Consumer;
import org.opendaylight.yangtools.yang.model.api.EffectiveModelContext;
-import org.opendaylight.yangtools.yang.model.api.EffectiveModelContextListener;
import org.osgi.framework.FrameworkUtil;
import org.osgi.service.component.annotations.Activate;
import org.osgi.service.component.annotations.Component;
import org.osgi.service.component.annotations.Deactivate;
/**
- * A Factory Component which implements {@link EffectiveModelContextListener}. Instances of this component are created
- * through by {@link OSGiDOMSchemaService} each time a listener is registered.
+ * A Factory Component for OSGi SR manifestation of a {@code Consumer<EffectiveModelContext>}. Instances of this
+ * component are created through by {@link OSGiDOMSchemaService} each time a listener is registered.
*/
-@Component(factory = EffectiveModelContextImpl.FACTORY_NAME, service = EffectiveModelContextListener.class)
-public final class EffectiveModelContextImpl implements EffectiveModelContextListener {
+@Component(factory = ModelContextListener.FACTORY_NAME, service = ModelContextListener.class)
+public final class ModelContextListener {
static final String FACTORY_NAME = "org.opendaylight.mdsal.dom.schema.osgi.impl.SchemaSchemaContextListener";
@VisibleForTesting
static final String DELEGATE = "org.opendaylight.mdsal.dom.schema.osgi.SchemaSchemaContextListener";
- private EffectiveModelContextListener delegate = null;
-
- @Override
- public void onModelContextUpdated(final EffectiveModelContext newModelContext) {
- delegate.onModelContextUpdated(newModelContext);
- }
+ private Consumer<EffectiveModelContext> delegate = null;
@Activate
- void activate(final Map<String, ?> properties) {
- delegate = (EffectiveModelContextListener) verifyNotNull(properties.get(DELEGATE));
+ public ModelContextListener(final Map<String, ?> properties) {
+ delegate = (Consumer<EffectiveModelContext>) verifyNotNull(properties.get(DELEGATE));
}
@Deactivate
delegate = null;
}
- static Dictionary<String, ?> props(final EffectiveModelContextListener delegate) {
+ void onModelContextUpdated(final EffectiveModelContext newModelContext) {
+ delegate.accept(newModelContext);
+ }
+
+ static Dictionary<String, ?> props(final Consumer<EffectiveModelContext> delegate) {
return FrameworkUtil.asDictionary(Map.of(DELEGATE, delegate));
}
}