From 31a2298fc02482baae6507596ccc8c842d3e3dfb Mon Sep 17 00:00:00 2001 From: Robert Varga Date: Tue, 25 Mar 2014 13:00:56 +0100 Subject: [PATCH] Update to use yang concepts Change-Id: I529ec122c54d51efe10128985e8b1b0cd715461b Signed-off-by: Robert Varga --- .../osgi/mapping/ModuleInfoBundleTracker.java | 19 +++-- .../sal/binding/api/BindingAwareBroker.java | 74 +++++++++---------- .../sal/common/impl/AbstractRegistration.java | 27 ------- .../impl/AbstractRoutedRegistration.java | 3 +- .../controller/sal/core/api/Broker.java | 4 +- .../broker/impl/NotificationRouterImpl.java | 10 +-- 6 files changed, 55 insertions(+), 82 deletions(-) delete mode 100644 opendaylight/md-sal/sal-common-impl/src/main/java/org/opendaylight/controller/md/sal/common/impl/AbstractRegistration.java diff --git a/opendaylight/config/config-manager/src/main/java/org/opendaylight/controller/config/manager/impl/osgi/mapping/ModuleInfoBundleTracker.java b/opendaylight/config/config-manager/src/main/java/org/opendaylight/controller/config/manager/impl/osgi/mapping/ModuleInfoBundleTracker.java index 8e93583e04..48fdd8855d 100644 --- a/opendaylight/config/config-manager/src/main/java/org/opendaylight/controller/config/manager/impl/osgi/mapping/ModuleInfoBundleTracker.java +++ b/opendaylight/config/config-manager/src/main/java/org/opendaylight/controller/config/manager/impl/osgi/mapping/ModuleInfoBundleTracker.java @@ -7,9 +7,16 @@ */ package org.opendaylight.controller.config.manager.impl.osgi.mapping; +import static java.lang.String.format; + +import java.io.InputStream; +import java.net.URL; +import java.util.Collection; +import java.util.LinkedList; +import java.util.List; + import org.apache.commons.io.IOUtils; import org.opendaylight.yangtools.concepts.ObjectRegistration; -import org.opendaylight.yangtools.concepts.Registration; import org.opendaylight.yangtools.sal.binding.generator.api.ModuleInfoRegistry; import org.opendaylight.yangtools.yang.binding.YangModelBindingProvider; import org.opendaylight.yangtools.yang.binding.YangModuleInfo; @@ -19,14 +26,6 @@ import org.osgi.util.tracker.BundleTrackerCustomizer; import org.slf4j.Logger; import org.slf4j.LoggerFactory; -import java.io.InputStream; -import java.net.URL; -import java.util.Collection; -import java.util.LinkedList; -import java.util.List; - -import static java.lang.String.format; - /** * Tracks bundles and attempts to retrieve YangModuleInfo, which is then fed into ModuleInfoRegistry */ @@ -78,7 +77,7 @@ public final class ModuleInfoBundleTracker implements BundleTrackerCustomizer reg : regs) { + for (ObjectRegistration reg : regs) { try { reg.close(); } catch (Exception e) { diff --git a/opendaylight/md-sal/sal-binding-api/src/main/java/org/opendaylight/controller/sal/binding/api/BindingAwareBroker.java b/opendaylight/md-sal/sal-binding-api/src/main/java/org/opendaylight/controller/sal/binding/api/BindingAwareBroker.java index db0d674e63..5b700703bc 100644 --- a/opendaylight/md-sal/sal-binding-api/src/main/java/org/opendaylight/controller/sal/binding/api/BindingAwareBroker.java +++ b/opendaylight/md-sal/sal-binding-api/src/main/java/org/opendaylight/controller/sal/binding/api/BindingAwareBroker.java @@ -11,7 +11,7 @@ import org.opendaylight.controller.md.sal.common.api.routing.RoutedRegistration; import org.opendaylight.controller.sal.binding.api.BindingAwareProvider.ProviderFunctionality; import org.opendaylight.controller.sal.binding.api.data.DataBrokerService; import org.opendaylight.controller.sal.binding.api.data.DataProviderService; -import org.opendaylight.yangtools.concepts.Registration; +import org.opendaylight.yangtools.concepts.ObjectRegistration; import org.opendaylight.yangtools.yang.binding.BaseIdentity; import org.opendaylight.yangtools.yang.binding.InstanceIdentifier; import org.opendaylight.yangtools.yang.binding.RpcService; @@ -19,20 +19,20 @@ import org.osgi.framework.BundleContext; /** * Binding-aware core of the SAL layer responsible for wiring the SAL consumers. - * + * * The responsibility of the broker is to maintain registration of SAL * functionality {@link Consumer}s and {@link Provider}s, store provider and * consumer specific context and functionality registration via * {@link ConsumerContext} and provide access to infrastructure services, which * removes direct dependencies between providers and consumers. - * + * * The Binding-aware broker is also responsible for translation from Java * classes modeling the functionality and data to binding-independent form which * is used in SAL Core. - * - * + * + * *

Infrastructure services

Some examples of infrastructure services: - * + * *
    *
  • YANG Module service - see {@link ConsumerContext#getRpcService(Class)}, * {@link ProviderContext} @@ -42,34 +42,34 @@ import org.osgi.framework.BundleContext; *
  • Data Store access and modification - see {@link DataBrokerService} and * {@link DataProviderService} *
- * + * * The services are exposed via session. - * + * *

Session-based access

- * + * * The providers and consumers needs to register in order to use the * binding-independent SAL layer and to expose functionality via SAL layer. - * + * * For more information about session-based access see {@link ConsumerContext} * and {@link ProviderContext} - * - * - * + * + * + * */ public interface BindingAwareBroker { /** * Registers the {@link BindingAwareConsumer}, which will use the SAL layer. - * + * *

* Note that consumer could register additional functionality at later point * by using service and functionality specific APIs. - * + * *

* The consumer is required to use returned session for all communication * with broker or one of the broker services. The session is announced to * the consumer by invoking * {@link Consumer#onSessionInitiated(ConsumerContext)}. - * + * * @param cons * Consumer to be registered. * @return a session specific to consumer registration @@ -82,24 +82,24 @@ public interface BindingAwareBroker { /** * Registers the {@link BindingAwareProvider}, which will use the SAL layer. - * + * *

* During the registration, the broker obtains the initial functionality * from consumer, using the * {@link BindingAwareProvider#getImplementations()}, and register that * functionality into system and concrete infrastructure services. - * + * *

* Note that provider could register additional functionality at later point * by using service and functionality specific APIs. - * + * *

* The consumer is required to use returned session for all * communication with broker or one of the broker services. The session is * announced to the consumer by invoking * {@link BindingAwareProvider#onSessionInitiated(ProviderContext)}. - * - * + * + * * @param prov * Provider to be registered. * @return a session unique to the provider registration. @@ -112,26 +112,26 @@ public interface BindingAwareBroker { /** * {@link BindingAwareConsumer} specific access to the SAL functionality. - * + * *

* ConsumerSession is {@link BindingAwareConsumer}-specific access to the * SAL functionality and infrastructure services. - * + * *

* The session serves to store SAL context (e.g. registration of * functionality) for the consumer and provides access to the SAL * infrastructure services and other functionality provided by * {@link Provider}s. - * - * - * + * + * + * */ public interface ConsumerContext extends RpcConsumerRegistry { /** * Returns a session specific instance (implementation) of requested * binding-aware infrastructural service - * + * * @param service * Broker service * @return Session specific implementation of service @@ -143,19 +143,19 @@ public interface BindingAwareBroker { /** * {@link BindingAwareProvider} specific access to the SAL functionality. - * + * *

* ProviderSession is {@link BindingAwareProvider}-specific access to the * SAL functionality and infrastructure services, which also allows for * exposing the provider's functionality to the other * {@link BindingAwareConsumer}s. - * + * *

* The session serves to store SAL context (e.g. registration of * functionality) for the providers and exposes access to the SAL * infrastructure services, dynamic functionality registration and any other * functionality provided by other {@link BindingAwareConsumer}s. - * + * */ public interface ProviderContext extends ConsumerContext, RpcProviderRegistry { @@ -166,7 +166,7 @@ public interface BindingAwareBroker { void unregisterFunctionality(ProviderFunctionality functionality); } - public interface RpcRegistration extends Registration { + public interface RpcRegistration extends ObjectRegistration { Class getServiceType(); } @@ -177,9 +177,9 @@ public interface BindingAwareBroker { /** * Register particular instance identifier to be processed by this * RpcService - * - * Deprecated in favor of {@link RoutedRegistration#registerPath(Object, Object)}. - * + * + * Deprecated in favor of {@link RoutedRegistration#registerPath(Object, Object)}. + * * @param context * @param instance */ @@ -189,9 +189,9 @@ public interface BindingAwareBroker { /** * Unregister particular instance identifier to be processed by this * RpcService - * - * Deprecated in favor of {@link RoutedRegistration#unregisterPath(Object, Object)}. - * + * + * Deprecated in favor of {@link RoutedRegistration#unregisterPath(Object, Object)}. + * * @param context * @param instance */ diff --git a/opendaylight/md-sal/sal-common-impl/src/main/java/org/opendaylight/controller/md/sal/common/impl/AbstractRegistration.java b/opendaylight/md-sal/sal-common-impl/src/main/java/org/opendaylight/controller/md/sal/common/impl/AbstractRegistration.java deleted file mode 100644 index bb8594f35d..0000000000 --- a/opendaylight/md-sal/sal-common-impl/src/main/java/org/opendaylight/controller/md/sal/common/impl/AbstractRegistration.java +++ /dev/null @@ -1,27 +0,0 @@ -/* - * Copyright (c) 2014 Cisco Systems, Inc. and others. All rights reserved. - * - * This program and the accompanying materials are made available under the - * terms of the Eclipse Public License v1.0 which accompanies this distribution, - * and is available at http://www.eclipse.org/legal/epl-v10.html - */ -package org.opendaylight.controller.md.sal.common.impl; - -import org.opendaylight.yangtools.concepts.Registration; - -public abstract class AbstractRegistration implements Registration { - - - private final T instance; - - public AbstractRegistration(T instance) { - super(); - this.instance = instance; - } - - @Override - public final T getInstance() { - return instance; - } - -} diff --git a/opendaylight/md-sal/sal-common-impl/src/main/java/org/opendaylight/controller/md/sal/common/impl/AbstractRoutedRegistration.java b/opendaylight/md-sal/sal-common-impl/src/main/java/org/opendaylight/controller/md/sal/common/impl/AbstractRoutedRegistration.java index 4ffb87d5d3..22c458a507 100644 --- a/opendaylight/md-sal/sal-common-impl/src/main/java/org/opendaylight/controller/md/sal/common/impl/AbstractRoutedRegistration.java +++ b/opendaylight/md-sal/sal-common-impl/src/main/java/org/opendaylight/controller/md/sal/common/impl/AbstractRoutedRegistration.java @@ -8,9 +8,10 @@ package org.opendaylight.controller.md.sal.common.impl; import org.opendaylight.controller.md.sal.common.api.routing.RoutedRegistration; +import org.opendaylight.yangtools.concepts.AbstractObjectRegistration; import org.opendaylight.yangtools.concepts.Path; -public abstract class AbstractRoutedRegistration, S> extends AbstractRegistration implements +public abstract class AbstractRoutedRegistration, S> extends AbstractObjectRegistration implements RoutedRegistration { public AbstractRoutedRegistration(S instance) { diff --git a/opendaylight/md-sal/sal-dom-api/src/main/java/org/opendaylight/controller/sal/core/api/Broker.java b/opendaylight/md-sal/sal-dom-api/src/main/java/org/opendaylight/controller/sal/core/api/Broker.java index 6af06255c7..72df8cb553 100644 --- a/opendaylight/md-sal/sal-dom-api/src/main/java/org/opendaylight/controller/sal/core/api/Broker.java +++ b/opendaylight/md-sal/sal-dom-api/src/main/java/org/opendaylight/controller/sal/core/api/Broker.java @@ -16,7 +16,7 @@ import org.opendaylight.controller.sal.core.api.data.DataProviderService; import org.opendaylight.controller.sal.core.api.notify.NotificationPublishService; import org.opendaylight.controller.sal.core.api.notify.NotificationService; import org.opendaylight.yangtools.concepts.ListenerRegistration; -import org.opendaylight.yangtools.concepts.Registration; +import org.opendaylight.yangtools.concepts.ObjectRegistration; import org.opendaylight.yangtools.yang.common.QName; import org.opendaylight.yangtools.yang.common.RpcResult; import org.opendaylight.yangtools.yang.data.api.CompositeNode; @@ -237,7 +237,7 @@ public interface Broker { ListenerRegistration addRpcRegistrationListener(RpcRegistrationListener listener); } - public interface RpcRegistration extends Registration { + public interface RpcRegistration extends ObjectRegistration { QName getType(); @Override diff --git a/opendaylight/md-sal/sal-dom-broker/src/main/java/org/opendaylight/controller/sal/dom/broker/impl/NotificationRouterImpl.java b/opendaylight/md-sal/sal-dom-broker/src/main/java/org/opendaylight/controller/sal/dom/broker/impl/NotificationRouterImpl.java index 50af3fbfc1..7fba31114f 100644 --- a/opendaylight/md-sal/sal-dom-broker/src/main/java/org/opendaylight/controller/sal/dom/broker/impl/NotificationRouterImpl.java +++ b/opendaylight/md-sal/sal-dom-broker/src/main/java/org/opendaylight/controller/sal/dom/broker/impl/NotificationRouterImpl.java @@ -11,7 +11,7 @@ import java.util.Collection; import org.opendaylight.controller.sal.core.api.notify.NotificationListener; import org.opendaylight.controller.sal.dom.broker.spi.NotificationRouter; -import org.opendaylight.yangtools.concepts.AbstractObjectRegistration; +import org.opendaylight.yangtools.concepts.AbstractListenerRegistration; import org.opendaylight.yangtools.concepts.Registration; import org.opendaylight.yangtools.yang.common.QName; import org.opendaylight.yangtools.yang.data.api.CompositeNode; @@ -25,12 +25,12 @@ import com.google.common.collect.Multimaps; public class NotificationRouterImpl implements NotificationRouter { private static Logger log = LoggerFactory.getLogger(NotificationRouterImpl.class); - private final Multimap> listeners = Multimaps.synchronizedSetMultimap(HashMultimap.>create()); + private final Multimap listeners = Multimaps.synchronizedSetMultimap(HashMultimap.create()); // private Registration defaultListener; private void sendNotification(CompositeNode notification) { final QName type = notification.getNodeType(); - final Collection> toNotify = listeners.get(type); + final Collection toNotify = listeners.get(type); log.trace("Publishing notification " + type); if ((toNotify == null) || toNotify.isEmpty()) { @@ -38,7 +38,7 @@ public class NotificationRouterImpl implements NotificationRouter { return; } - for (Registration listener : toNotify) { + for (ListenerRegistration listener : toNotify) { try { // FIXME: ensure that notification is immutable listener.getInstance().onNotification(notification); @@ -60,7 +60,7 @@ public class NotificationRouterImpl implements NotificationRouter { return ret; } - private class ListenerRegistration extends AbstractObjectRegistration { + private class ListenerRegistration extends AbstractListenerRegistration { final QName type; -- 2.36.6