0c31a5821a0b1aa0c354ccede34f711f4a51a1b7
[openflowplugin.git] / openflowplugin / src / main / java / org / opendaylight / yang / gen / v1 / urn / opendaylight / params / xml / ns / yang / openflow / common / config / impl / rev140326 / ConfigurableOpenFlowProviderModule.java
1 /**
2 * Generated file
3
4 * Generated from: yang module name: openflow-provider-impl  yang module local name: openflow-provider-impl
5 * Generated by: org.opendaylight.controller.config.yangjmxgenerator.plugin.JMXGenerator
6 * Generated at: Wed Apr 02 16:59:36 PDT 2014
7 *
8 * Do not modify this file unless it is present under src/main directory
9 */
10 package org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.openflow.common.config.impl.rev140326;
11
12 import com.google.common.base.MoreObjects;
13 import javax.management.ObjectName;
14 import org.opendaylight.openflowplugin.openflow.md.core.sal.OpenflowPluginProvider;
15
16 /**
17 *
18 */
19 public final class ConfigurableOpenFlowProviderModule extends org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.openflow.common.config.impl.rev140326.AbstractConfigurableOpenFlowProviderModule {
20
21     private OpenflowPluginProvider pluginProvider;
22
23     /**
24      * @param identifier module identifier
25      * @param dependencyResolver dependency resolver
26      */
27     public ConfigurableOpenFlowProviderModule(org.opendaylight.controller.config.api.ModuleIdentifier identifier, org.opendaylight.controller.config.api.DependencyResolver dependencyResolver) {
28         super(identifier, dependencyResolver);
29     }
30
31     /**
32      * @param identifier module identifier
33      * @param dependencyResolver dependency resolver
34      * @param oldModule old module
35      * @param oldInstance old instance
36      */
37     public ConfigurableOpenFlowProviderModule(org.opendaylight.controller.config.api.ModuleIdentifier identifier, org.opendaylight.controller.config.api.DependencyResolver dependencyResolver,
38             ConfigurableOpenFlowProviderModule oldModule, java.lang.AutoCloseable oldInstance) {
39
40         super(identifier, dependencyResolver, oldModule, oldInstance);
41     }
42
43     @Override
44     protected void customValidation() {
45         // Add custom validation for module attributes here.
46     }
47
48     @Override
49     public java.lang.AutoCloseable createInstance() {
50         pluginProvider =  new OpenflowPluginProvider();
51         pluginProvider.setDataBroker(getDataBrokerDependency());
52         pluginProvider.setNotificationService(getNotificationServiceDependency());
53         pluginProvider.setRpcRegistry(getRpcRegistryDependency());
54         pluginProvider.setSwitchConnectionProviders(getOpenflowSwitchConnectionProviderDependency());
55         pluginProvider.setEntityOwnershipService(getOwnershipServiceDependency());
56         pluginProvider.setRole(getRole());
57         pluginProvider.initialization();
58         return pluginProvider;
59     }
60
61     @Override
62     public boolean canReuseInstance(
63             AbstractConfigurableOpenFlowProviderModule oldModule) {
64         // we can reuse if only the role field changed
65         boolean noChangeExceptRole = true;
66         noChangeExceptRole &= dependencyResolver.canReuseDependency(
67                 getDataBroker(), dataBrokerJmxAttribute);
68         noChangeExceptRole &= dependencyResolver.canReuseDependency(
69                 getNotificationService(), notificationServiceJmxAttribute);
70         noChangeExceptRole &= dependencyResolver.canReuseDependency(
71                 getRpcRegistry(), rpcRegistryJmxAttribute);
72
73         for (ObjectName ofSwitchProvider : getOpenflowSwitchConnectionProvider()) {
74             noChangeExceptRole &= dependencyResolver.canReuseDependency(
75                     ofSwitchProvider, openflowSwitchConnectionProviderJmxAttribute);
76         }
77         return noChangeExceptRole;
78     }
79
80     @Override
81     public AutoCloseable reuseInstance(AutoCloseable oldInstance) {
82         OpenflowPluginProvider recycled = (OpenflowPluginProvider) super.reuseInstance(oldInstance);
83         // change role if different
84         recycled.fireRoleChange(MoreObjects.firstNonNull(getRole(), getRole()));
85
86         return recycled;
87     }
88 }