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
11 * Generated from: yang module name: bgp-rib-impl yang module local name: rib-impl
12 * Generated by: org.opendaylight.controller.config.yangjmxgenerator.plugin.JMXGenerator
13 * Generated at: Wed Nov 06 13:02:32 CET 2013
15 * Do not modify this file unless it is present under src/main directory
17 package org.opendaylight.controller.config.yang.bgp.rib.impl;
19 import java.util.Hashtable;
20 import java.util.List;
21 import org.opendaylight.controller.config.api.JmxAttributeValidationException;
22 import org.opendaylight.controller.md.sal.dom.api.DOMDataBroker;
23 import org.opendaylight.controller.sal.core.api.model.SchemaService;
24 import org.opendaylight.protocol.bgp.openconfig.spi.BGPConfigModuleTracker;
25 import org.opendaylight.protocol.bgp.openconfig.spi.BGPOpenconfigMapper;
26 import org.opendaylight.protocol.bgp.openconfig.spi.InstanceConfigurationIdentifier;
27 import org.opendaylight.protocol.bgp.openconfig.spi.pojo.BGPRibInstanceConfiguration;
28 import org.opendaylight.protocol.bgp.rib.impl.RIBImpl;
29 import org.opendaylight.yang.gen.v1.urn.ietf.params.xml.ns.yang.ietf.inet.types.rev100924.AsNumber;
30 import org.opendaylight.yang.gen.v1.urn.ietf.params.xml.ns.yang.ietf.inet.types.rev130715.Ipv4Address;
31 import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.bgp.multiprotocol.rev130919.BgpTableType;
32 import org.opendaylight.yangtools.sal.binding.generator.impl.GeneratedClassLoadingStrategy;
33 import org.opendaylight.yangtools.yang.model.api.SchemaContextListener;
34 import org.osgi.framework.BundleContext;
39 public final class RIBImplModule extends org.opendaylight.controller.config.yang.bgp.rib.impl.AbstractRIBImplModule {
41 private static final String IS_NOT_SET = "is not set.";
42 private BundleContext bundleContext;
44 public RIBImplModule(final org.opendaylight.controller.config.api.ModuleIdentifier name,
45 final org.opendaylight.controller.config.api.DependencyResolver dependencyResolver) {
46 super(name, dependencyResolver);
49 public RIBImplModule(final org.opendaylight.controller.config.api.ModuleIdentifier name,
50 final org.opendaylight.controller.config.api.DependencyResolver dependencyResolver, final RIBImplModule oldModule,
51 final java.lang.AutoCloseable oldInstance) {
52 super(name, dependencyResolver, oldModule, oldInstance);
56 public void customValidation() {
57 JmxAttributeValidationException.checkNotNull(getExtensions(), IS_NOT_SET, extensionsJmxAttribute);
58 JmxAttributeValidationException.checkNotNull(getRibId(), IS_NOT_SET, ribIdJmxAttribute);
59 JmxAttributeValidationException.checkNotNull(getLocalAs(), IS_NOT_SET, localAsJmxAttribute);
60 JmxAttributeValidationException.checkNotNull(getBgpRibId(), IS_NOT_SET, bgpRibIdJmxAttribute);
61 JmxAttributeValidationException.checkNotNull(getTcpReconnectStrategy(), IS_NOT_SET, tcpReconnectStrategyJmxAttribute);
62 JmxAttributeValidationException.checkNotNull(getSessionReconnectStrategy(), IS_NOT_SET, sessionReconnectStrategyJmxAttribute);
63 JmxAttributeValidationException.checkNotNull(getLocalTable(), IS_NOT_SET, localTableJmxAttribute);
67 public java.lang.AutoCloseable createInstance() {
68 final AsNumber asNumber = new AsNumber(getLocalAs());
69 final RIBImpl rib = new RIBImpl(getRibId(), asNumber, getBgpRibId(), getClusterId(), getExtensionsDependency(),
70 getBgpDispatcherDependency(), getTcpReconnectStrategyDependency(), getCodecTreeFactoryDependency(), getSessionReconnectStrategyDependency(),
71 getDataProviderDependency(), getDomDataProviderDependency(), getLocalTableDependency(), classLoadingStrategy(),
72 new RIBImplModuleTracker(getGlobalWriter()), getOpenconfigProviderDependency());
73 registerSchemaContextListener(rib);
77 private GeneratedClassLoadingStrategy classLoadingStrategy() {
78 return getExtensionsDependency().getClassLoadingStrategy();
81 private void registerSchemaContextListener(final RIBImpl rib) {
82 final DOMDataBroker domBroker = getDomDataProviderDependency();
83 if(domBroker instanceof SchemaService) {
84 ((SchemaService) domBroker).registerSchemaContextListener(rib);
86 // FIXME:Get bundle context and register global schema service from bundle
88 bundleContext.registerService(SchemaContextListener.class, rib, new Hashtable<String,String>());
92 public void setBundleContext(final BundleContext bundleContext) {
93 this.bundleContext = bundleContext;
96 private BGPOpenconfigMapper<BGPRibInstanceConfiguration> getGlobalWriter() {
97 if (getOpenconfigProviderDependency() != null) {
98 return getOpenconfigProviderDependency().getOpenConfigMapper(BGPRibInstanceConfiguration.class);
103 private final class RIBImplModuleTracker implements BGPConfigModuleTracker {
105 private final BGPOpenconfigMapper<BGPRibInstanceConfiguration> globalWriter;
106 private final InstanceConfigurationIdentifier identifier;
108 public RIBImplModuleTracker(final BGPOpenconfigMapper<BGPRibInstanceConfiguration> globalWriter) {
109 this.globalWriter = globalWriter;
110 this.identifier = new InstanceConfigurationIdentifier(getIdentifier().getInstanceName());
114 public void onInstanceCreate() {
115 if (globalWriter != null) {
116 final List<BgpTableType> tableDependency = getLocalTableDependency();
117 final org.opendaylight.yang.gen.v1.urn.ietf.params.xml.ns.yang.ietf.inet.types.rev130715.AsNumber as = Rev130715Util.getASNumber(getLocalAs());
118 final Ipv4Address bgpRibId = Rev130715Util.getIpv4Address(getBgpRibId());
119 final Ipv4Address clusterId = Rev130715Util.getIpv4Address(getClusterId());
121 final BGPRibInstanceConfiguration bgpRibConfig = new BGPRibInstanceConfiguration(identifier, as, bgpRibId, clusterId, tableDependency);
122 globalWriter.writeConfiguration(bgpRibConfig);
127 public void onInstanceClose() {
128 if (globalWriter != null) {
129 globalWriter.removeConfiguration(identifier);