BUG-731: do not throw Exceptions
[bgpcep.git] / bgp / topology-provider-config / src / main / java / org / opendaylight / controller / config / yang / bgp / topology / provider / Ipv4ReachabilityTopologyBuilderModule.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-reachability-ipv4
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.topology.provider;
18
19 import java.util.concurrent.ExecutionException;
20
21 import org.opendaylight.bgpcep.bgp.topology.provider.Ipv4ReachabilityTopologyBuilder;
22 import org.opendaylight.bgpcep.topology.DefaultTopologyReference;
23 import org.opendaylight.controller.config.api.JmxAttributeValidationException;
24 import org.opendaylight.controller.sal.binding.api.data.DataChangeListener;
25 import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.bgp.rib.rev130925.rib.Tables;
26 import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.bgp.types.rev130919.Ipv4AddressFamily;
27 import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.bgp.types.rev130919.UnicastSubsequentAddressFamily;
28 import org.opendaylight.yang.gen.v1.urn.tbd.params.xml.ns.yang.network.topology.rev131021.network.topology.Topology;
29 import org.opendaylight.yangtools.concepts.ListenerRegistration;
30 import org.opendaylight.yangtools.yang.binding.InstanceIdentifier;
31 import org.slf4j.Logger;
32 import org.slf4j.LoggerFactory;
33
34
35 /**
36  *
37  */
38 public final class Ipv4ReachabilityTopologyBuilderModule extends org.opendaylight.controller.config.yang.bgp.topology.provider.AbstractIpv4ReachabilityTopologyBuilderModule
39 {
40         private static final Logger LOG = LoggerFactory.getLogger(Ipv4ReachabilityTopologyBuilderModule.class);
41
42         public Ipv4ReachabilityTopologyBuilderModule(final org.opendaylight.controller.config.api.ModuleIdentifier identifier, final org.opendaylight.controller.config.api.DependencyResolver dependencyResolver) {
43                 super(identifier, dependencyResolver);
44         }
45
46         public Ipv4ReachabilityTopologyBuilderModule(final org.opendaylight.controller.config.api.ModuleIdentifier identifier, final org.opendaylight.controller.config.api.DependencyResolver dependencyResolver, final Ipv4ReachabilityTopologyBuilderModule oldModule, final java.lang.AutoCloseable oldInstance) {
47                 super(identifier, dependencyResolver, oldModule, oldInstance);
48         }
49
50         @Override
51         public void validate(){
52                 super.validate();
53                 JmxAttributeValidationException.checkNotNull(getTopologyId(),
54                                 "is not set.", topologyIdJmxAttribute);
55         }
56
57         @Override
58         public java.lang.AutoCloseable createInstance() {
59                 final Ipv4ReachabilityTopologyBuilder b = new Ipv4ReachabilityTopologyBuilder(getDataProviderDependency(), getLocalRibDependency(), getTopologyId());
60                 final InstanceIdentifier<Tables> i = b.tableInstanceIdentifier(Ipv4AddressFamily.class, UnicastSubsequentAddressFamily.class);
61                 final ListenerRegistration<DataChangeListener> r = getDataProviderDependency().registerDataChangeListener(i, b);
62                 LOG.debug("Registered listener {} on {} (topology {})", b, i, b.getInstanceIdentifier());
63
64                 final class TopologyReferenceAutocloseable extends DefaultTopologyReference implements AutoCloseable {
65                         public TopologyReferenceAutocloseable(final InstanceIdentifier<Topology> instanceIdentifier) {
66                                 super(instanceIdentifier);
67                         }
68
69                         @Override
70                         public void close() throws InterruptedException, ExecutionException {
71                                 try {
72                                         r.close();
73                                 } finally {
74                                         b.close();
75                                 }
76                         }
77                 }
78
79                 return new TopologyReferenceAutocloseable(b.getInstanceIdentifier());
80         }
81 }