import org.opendaylight.openflowplugin.openflow.md.core.sal.OpenflowPluginProvider;
+import com.google.common.base.Objects;
+
/**
*
*/
pluginProvider = new OpenflowPluginProvider();
pluginProvider.setBroker(getBindingAwareBrokerDependency());
pluginProvider.setSwitchConnectionProviders(getOpenflowSwitchConnectionProviderDependency());
+ pluginProvider.setRole(getRole());
pluginProvider.initialization();
return pluginProvider;
}
+
+ @Override
+ public boolean canReuseInstance(
+ AbstractConfigurableOpenFlowProviderModule oldModule) {
+ // we can reuse if only the role field changed
+ boolean noChangeExceptRole = true;
+ noChangeExceptRole &= getBindingAwareBrokerDependency().equals(oldModule.getBindingAwareBrokerDependency());
+ noChangeExceptRole &= getOpenflowSwitchConnectionProviderDependency().equals(oldModule.getOpenflowSwitchConnectionProviderDependency());
+ return noChangeExceptRole;
+ }
+
+ @Override
+ public AutoCloseable reuseInstance(AutoCloseable oldInstance) {
+ OpenflowPluginProvider recycled = (OpenflowPluginProvider) super.reuseInstance(oldInstance);
+ // change role if different
+ recycled.fireRoleChange(Objects.firstNonNull(getRole(), getRole()));
+
+ return recycled;
+ }
}