cc2cf413f4d7740b415ae478df5ad3b74842c0f6
[bgpcep.git] / bgp / topology-provider / src / main / java / org / opendaylight / controller / config / yang / bgp / reachability / ipv6 / Ipv6ReachabilityTopologyBuilderModule.java
1 /*
2  * Copyright (c) 2014 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-reachability-ipv6
12  * Generated by: org.opendaylight.controller.config.yangjmxgenerator.plugin.JMXGenerator
13  * Generated at: Tue Nov 19 15:13:57 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.reachability.ipv6;
18
19 import java.util.concurrent.ExecutionException;
20 import org.opendaylight.bgpcep.bgp.topology.provider.Ipv6ReachabilityTopologyBuilder;
21 import org.opendaylight.bgpcep.topology.DefaultTopologyReference;
22 import org.opendaylight.controller.config.api.JmxAttributeValidationException;
23 import org.opendaylight.controller.md.sal.binding.api.DataTreeChangeService;
24 import org.opendaylight.controller.md.sal.common.api.data.TransactionCommitFailedException;
25 import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.bgp.types.rev130919.Ipv6AddressFamily;
26 import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.bgp.types.rev130919.UnicastSubsequentAddressFamily;
27 import org.opendaylight.yang.gen.v1.urn.tbd.params.xml.ns.yang.network.topology.rev131021.network.topology.Topology;
28 import org.opendaylight.yangtools.concepts.ListenerRegistration;
29 import org.opendaylight.yangtools.yang.binding.InstanceIdentifier;
30 import org.slf4j.Logger;
31 import org.slf4j.LoggerFactory;
32
33 /**
34  *
35  */
36 public final class Ipv6ReachabilityTopologyBuilderModule extends
37         org.opendaylight.controller.config.yang.bgp.reachability.ipv6.AbstractIpv6ReachabilityTopologyBuilderModule {
38     private static final Logger LOG = LoggerFactory.getLogger(Ipv6ReachabilityTopologyBuilderModule.class);
39
40     public Ipv6ReachabilityTopologyBuilderModule(final org.opendaylight.controller.config.api.ModuleIdentifier identifier,
41         final org.opendaylight.controller.config.api.DependencyResolver dependencyResolver) {
42         super(identifier, dependencyResolver);
43     }
44
45     public Ipv6ReachabilityTopologyBuilderModule(final org.opendaylight.controller.config.api.ModuleIdentifier identifier,
46             final org.opendaylight.controller.config.api.DependencyResolver dependencyResolver,
47             final Ipv6ReachabilityTopologyBuilderModule oldModule, final AutoCloseable oldInstance) {
48         super(identifier, dependencyResolver, oldModule, oldInstance);
49     }
50
51     @Override
52     public void validate() {
53         super.validate();
54         JmxAttributeValidationException.checkNotNull(getTopologyId(), "is not set.", topologyIdJmxAttribute);
55     }
56
57     @Override
58     public AutoCloseable createInstance() {
59         final Ipv6ReachabilityTopologyBuilder b = new Ipv6ReachabilityTopologyBuilder(getDataProviderDependency(), getLocalRibDependency(), getTopologyId());
60         final ListenerRegistration<?> r = b.start((DataTreeChangeService) getDataProviderDependency(), Ipv6AddressFamily.class, UnicastSubsequentAddressFamily.class);
61         LOG.debug("Registered listener {} on topology {}", b, b.getInstanceIdentifier());
62
63         final class TopologyReferenceAutocloseable extends DefaultTopologyReference implements AutoCloseable {
64             public TopologyReferenceAutocloseable(final InstanceIdentifier<Topology> instanceIdentifier) {
65                 super(instanceIdentifier);
66             }
67
68             @Override
69             public void close() throws InterruptedException, ExecutionException, TransactionCommitFailedException {
70                 try {
71                     r.close();
72                 } finally {
73                     b.close();
74                 }
75             }
76         }
77
78         return new TopologyReferenceAutocloseable(b.getInstanceIdentifier());
79     }
80 }