X-Git-Url: https://git.opendaylight.org/gerrit/gitweb?p=controller.git;a=blobdiff_plain;f=opendaylight%2Fmd-sal%2Fsal-binding-api%2Fsrc%2Fmain%2Fjava%2Forg%2Fopendaylight%2Fcontroller%2Fsal%2Fbinding%2Fapi%2FAbstractBindingAwareProvider.java;h=d32fa36b668e352bc2b5142650a2d0cb42f743df;hp=20a7c0d779310037372a1a7ae5c4e1c6e8e59043;hb=ce474a2be8f4f14a0c7c3abe6016d086c4f46a41;hpb=fe024ad74b8656c3ee61b9ddff6009a779aa2189 diff --git a/opendaylight/md-sal/sal-binding-api/src/main/java/org/opendaylight/controller/sal/binding/api/AbstractBindingAwareProvider.java b/opendaylight/md-sal/sal-binding-api/src/main/java/org/opendaylight/controller/sal/binding/api/AbstractBindingAwareProvider.java index 20a7c0d779..d32fa36b66 100644 --- a/opendaylight/md-sal/sal-binding-api/src/main/java/org/opendaylight/controller/sal/binding/api/AbstractBindingAwareProvider.java +++ b/opendaylight/md-sal/sal-binding-api/src/main/java/org/opendaylight/controller/sal/binding/api/AbstractBindingAwareProvider.java @@ -1,25 +1,72 @@ +/* + * Copyright (c) 2013 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.sal.binding.api; -import org.osgi.framework.BundleActivator; +import java.util.Collection; +import java.util.Collections; + +import org.opendaylight.controller.sal.binding.api.BindingAwareBroker.ConsumerContext; +import org.opendaylight.controller.sal.binding.api.BindingAwareBroker.ProviderContext; +import org.opendaylight.yangtools.yang.binding.RpcService; import org.osgi.framework.BundleContext; -import org.osgi.framework.ServiceReference; -public abstract class AbstractBindingAwareProvider implements BindingAwareProvider, BundleActivator { +@Deprecated +public abstract class AbstractBindingAwareProvider extends AbstractBrokerAwareActivator implements BindingAwareProvider { + + @Override + protected final void onBrokerAvailable(BindingAwareBroker broker, BundleContext context) { + ProviderContext ctx = broker.registerProvider(this, context); + registerRpcImplementations(ctx); + registerFunctionality(ctx); + } + + private void registerFunctionality(ProviderContext ctx) { + Collection functionality = this.getFunctionality(); + if (functionality == null || functionality.isEmpty()) { + return; + } + for (ProviderFunctionality providerFunctionality : functionality) { + ctx.registerFunctionality(providerFunctionality); + } + + } + + private void registerRpcImplementations(ProviderContext ctx) { + Collection rpcs = this.getImplementations(); + if (rpcs == null || rpcs.isEmpty()) { + return; + } + for (RpcService rpcService : rpcs) { + // ctx.addRpcImplementation(type, implementation); + } + + } @Override - public final void start(BundleContext context) throws Exception { - ServiceReference brokerRef = context.getServiceReference(BindingAwareBroker.class); - BindingAwareBroker broker = context.getService(brokerRef); - broker.registerProvider(this, context); - startImpl(context); + public Collection getFunctionality() { + return Collections.emptySet(); } - + + @Override + public Collection getImplementations() { + return Collections.emptySet(); + } + + /** + * Initialization of consumer context. + * + * {@link ProviderContext} is replacement of {@link ConsumerContext} + * so this method is not needed in case of Provider. + * + */ @Deprecated - abstract protected void startImpl(BundleContext context); - @Override - public final void stop(BundleContext context) throws Exception { - - + public final void onSessionInitialized(ConsumerContext session) { + // NOOP } }