.setCallbacks("setStatisticsManager", "unsetStatisticsManager").setRequired(false));
} else
- if (imp.equals(MDController.class)) {
- // c.setInterface(new String[] { IDiscoveryListener.class.getName(),
- // IContainerListener.class.getName(),
- // IRefreshInternalProvider.class.getName(),
- // IInventoryShimExternalListener.class.getName() }, null);
- c.add(createServiceDependency().setService(SwitchConnectionProvider.class)
- .setCallbacks("setSwitchConnectionProvider", "unsetSwitchConnectionProvider").setRequired(true));
- logger.debug("configuring MDController ..");
- } else if (imp == pluginProvider) {
+ if (imp == pluginProvider) {
// c.setInterface(new String[] { IDiscoveryListener.class.getName(),
// IContainerListener.class.getName(),
// IRefreshInternalProvider.class.getName(),
// IInventoryShimExternalListener.class.getName() }, null);
c.add(createServiceDependency().setService(BindingAwareBroker.class)
.setCallbacks("setBroker", "unsetBroker").setRequired(true));
+ c.add(createServiceDependency().setService(SwitchConnectionProvider.class)
+ .setCallbacks("setSwitchConnectionProvider", "unsetSwitchConnectionProvider").setRequired(true));
logger.debug("configuring Binding Aware Provider");
}
}
import java.util.Collections;
import org.opendaylight.controller.sal.binding.api.BindingAwareBroker;
-import org.opendaylight.controller.sal.binding.api.BindingAwareProvider;
import org.opendaylight.controller.sal.binding.api.BindingAwareBroker.ConsumerContext;
import org.opendaylight.controller.sal.binding.api.BindingAwareBroker.ProviderContext;
+import org.opendaylight.controller.sal.binding.api.BindingAwareProvider;
+import org.opendaylight.openflowjava.protocol.spi.connection.SwitchConnectionProvider;
+import org.opendaylight.openflowplugin.openflow.md.core.MDController;
import org.opendaylight.yangtools.yang.binding.RpcService;
import org.osgi.framework.BundleContext;
private BundleContext context;
+ private SwitchConnectionProvider switchConnectionProvider;
+
+ private MDController mdController;
+
+ public void unsetSwitchConnectionProvider() {
+ switchConnectionProvider = null;
+ }
+
+ public void setSwitchConnectionProvider(
+ SwitchConnectionProvider switchConnectionProvider) {
+ this.switchConnectionProvider = switchConnectionProvider;
+ registerProvider();
+ }
+
public BundleContext getContext() {
return context;
}
@Override
public void onSessionInitiated(ProviderContext session) {
registrationManager.onSessionInitiated(session);
+ mdController = new MDController();
+ mdController.setSwitchConnectionProvider(switchConnectionProvider);
+ mdController.init();
+ mdController.start();
}
@Override
public void setBroker(BindingAwareBroker broker) {
this.broker = broker;
- broker.registerProvider(this, context);
+ registerProvider();
};
public void unsetBroker(BindingAwareBroker broker) {
this.broker = null;
};
-}
+
+ private boolean hasAllDependencies(){
+ if(this.broker != null && this.switchConnectionProvider != null) {
+ return true;
+ }
+ return false;
+ }
+ private void registerProvider() {
+ if(hasAllDependencies()) {
+ this.broker.registerProvider(this,context);
+ }
+ }
+ }