2 * Copyright (c) 2013 Cisco Systems, Inc. and others. All rights reserved.
4 * This program and the accompanying materials are made available under the
5 * terms of the Eclipse Public License v1.0 which accompanies this distribution,
6 * and is available at http://www.eclipse.org/legal/epl-v10.html
8 package org.opendaylight.protocol.bgp.rib.spi;
10 import java.util.ServiceLoader;
12 import org.slf4j.Logger;
13 import org.slf4j.LoggerFactory;
15 import com.google.common.base.Preconditions;
20 public final class ServiceLoaderRIBExtensionConsumerContext extends SimpleRIBExtensionProviderContext implements AutoCloseable {
21 private static final Logger LOG = LoggerFactory.getLogger(ServiceLoaderRIBExtensionConsumerContext.class);
22 private final ServiceLoader<RIBExtensionProviderActivator> loader;
24 private ServiceLoaderRIBExtensionConsumerContext(final ServiceLoader<RIBExtensionProviderActivator> loader) {
25 this.loader = Preconditions.checkNotNull(loader);
27 for (RIBExtensionProviderActivator a : loader) {
28 a.startRIBExtensionProvider(this);
32 public static ServiceLoaderRIBExtensionConsumerContext createConsumerContext() throws Exception {
33 final ServiceLoader<RIBExtensionProviderActivator> loader = ServiceLoader.load(RIBExtensionProviderActivator.class);
34 final ServiceLoaderRIBExtensionConsumerContext ctx = new ServiceLoaderRIBExtensionConsumerContext(loader);
40 public void close() throws Exception {
41 for (RIBExtensionProviderActivator a : loader) {
43 a.stopRIBExtensionProvider();
44 } catch (Exception e) {
45 LOG.warn("Stopping activator {} failed", a, e);