1c8ccc8887814373a50c9aec154b50fe51b16e55
[bgpcep.git] / bgp / topology-provider / src / main / java / org / opendaylight / controller / config / yang / bgp / topology / provider / LinkstateTopologyBuilderModule.java
1 /*
2  * Copyright (c) 2013 Cisco Systems, Inc. and others.  All rights reserved.
3  *
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
7  */
8 /**
9  * Generated file
10
11  * Generated from: yang module name: config-bgp-topology-provider  yang module local name: bgp-linkstate-topology
12  * Generated by: org.opendaylight.controller.config.yangjmxgenerator.plugin.JMXGenerator
13  * Generated at: Tue Nov 19 15:22:41 CET 2013
14  *
15  * Do not modify this file unless it is present under src/main directory
16  */
17 package org.opendaylight.controller.config.yang.bgp.topology.provider;
18
19 import java.util.concurrent.ExecutionException;
20 import org.opendaylight.bgpcep.bgp.topology.provider.LinkstateTopologyBuilder;
21 import org.opendaylight.bgpcep.topology.DefaultTopologyReference;
22 import org.opendaylight.controller.config.api.JmxAttributeValidationException;
23 import org.opendaylight.controller.md.sal.binding.api.DataChangeListener;
24 import org.opendaylight.controller.md.sal.common.api.data.AsyncDataBroker.DataChangeScope;
25 import org.opendaylight.controller.md.sal.common.api.data.LogicalDatastoreType;
26 import org.opendaylight.controller.md.sal.common.api.data.TransactionCommitFailedException;
27 import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.bgp.linkstate.rev131125.LinkstateAddressFamily;
28 import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.bgp.linkstate.rev131125.LinkstateSubsequentAddressFamily;
29 import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.bgp.rib.rev130925.rib.Tables;
30 import org.opendaylight.yang.gen.v1.urn.tbd.params.xml.ns.yang.network.topology.rev131021.network.topology.Topology;
31 import org.opendaylight.yangtools.concepts.ListenerRegistration;
32 import org.opendaylight.yangtools.yang.binding.InstanceIdentifier;
33 import org.slf4j.Logger;
34 import org.slf4j.LoggerFactory;
35
36 /**
37  *
38  */
39 public final class LinkstateTopologyBuilderModule extends org.opendaylight.controller.config.yang.bgp.topology.provider.AbstractLinkstateTopologyBuilderModule {
40     private static final Logger LOG = LoggerFactory.getLogger(LinkstateTopologyBuilderModule.class);
41
42     public LinkstateTopologyBuilderModule(final org.opendaylight.controller.config.api.ModuleIdentifier identifier,
43         final org.opendaylight.controller.config.api.DependencyResolver dependencyResolver) {
44         super(identifier, dependencyResolver);
45     }
46
47     public LinkstateTopologyBuilderModule(final org.opendaylight.controller.config.api.ModuleIdentifier identifier,
48         final org.opendaylight.controller.config.api.DependencyResolver dependencyResolver,
49         final LinkstateTopologyBuilderModule oldModule, final java.lang.AutoCloseable oldInstance) {
50         super(identifier, dependencyResolver, oldModule, oldInstance);
51     }
52
53     @Override
54     public void validate() {
55         super.validate();
56         JmxAttributeValidationException.checkNotNull(getTopologyId(), "is not set.", topologyIdJmxAttribute);
57     }
58
59     @Override
60     public java.lang.AutoCloseable createInstance() {
61         final LinkstateTopologyBuilder b = new LinkstateTopologyBuilder(getDataProviderDependency(), getLocalRibDependency(), getTopologyId());
62         final InstanceIdentifier<Tables> i = b.tableInstanceIdentifier(LinkstateAddressFamily.class, LinkstateSubsequentAddressFamily.class);
63         final ListenerRegistration<DataChangeListener> r = getDataProviderDependency().registerDataChangeListener(LogicalDatastoreType.OPERATIONAL, i, b, DataChangeScope.SUBTREE);
64         LOG.debug("Registered listener {} on {} (topology {})", b, i, b.getInstanceIdentifier());
65
66         final class TopologyReferenceAutocloseable extends DefaultTopologyReference implements AutoCloseable {
67             public TopologyReferenceAutocloseable(final InstanceIdentifier<Topology> instanceIdentifier) {
68                 super(instanceIdentifier);
69             }
70
71             @Override
72             public void close() throws InterruptedException, ExecutionException, TransactionCommitFailedException {
73                 try {
74                     r.close();
75                 } finally {
76                     b.close();
77                 }
78             }
79         }
80
81         return new TopologyReferenceAutocloseable(b.getInstanceIdentifier());
82     }
83 }