From: Jan Hajnar Date: Wed, 1 Oct 2014 14:49:25 +0000 (+0200) Subject: Bug 2131 - NPE when starting controller X-Git-Tag: release/lithium~1003^2 X-Git-Url: https://git.opendaylight.org/gerrit/gitweb?p=controller.git;a=commitdiff_plain;h=e7cf56bb5194567f9517d627710fa432254241ed Bug 2131 - NPE when starting controller * made InvenroryAndReadAdapter wait for BindingAwareBroker because it was calling DeteBrokerService before it was available Change-Id: Ie38415194544997bc12d2dd3acfc57bfa8918730 Signed-off-by: Jan Hajnar --- diff --git a/opendaylight/md-sal/compatibility/sal-compatibility/src/main/java/org/opendaylight/controller/sal/compatibility/ComponentActivator.java b/opendaylight/md-sal/compatibility/sal-compatibility/src/main/java/org/opendaylight/controller/sal/compatibility/ComponentActivator.java index 4fc0cf75b3..6a8e3c0e5b 100644 --- a/opendaylight/md-sal/compatibility/sal-compatibility/src/main/java/org/opendaylight/controller/sal/compatibility/ComponentActivator.java +++ b/opendaylight/md-sal/compatibility/sal-compatibility/src/main/java/org/opendaylight/controller/sal/compatibility/ComponentActivator.java @@ -7,9 +7,7 @@ */ package org.opendaylight.controller.sal.compatibility; -import java.util.Dictionary; -import java.util.Hashtable; - +import com.google.common.base.Preconditions; import org.apache.felix.dm.Component; import org.opendaylight.controller.clustering.services.IClusterGlobalServices; import org.opendaylight.controller.sal.binding.api.BindingAwareBroker; @@ -36,7 +34,8 @@ import org.opendaylight.controller.sal.utils.INodeConnectorFactory; import org.opendaylight.controller.sal.utils.INodeFactory; import org.osgi.framework.BundleContext; -import com.google.common.base.Preconditions; +import java.util.Dictionary; +import java.util.Hashtable; public class ComponentActivator extends ComponentActivatorAbstractBase { private final INodeConnectorFactory nodeConnectorFactory = new MDSalNodeConnectorFactory(); @@ -90,8 +89,8 @@ public class ComponentActivator extends ComponentActivatorAbstractBase { @Override public void start(final BundleContext context) { - super.start(context); this.context = Preconditions.checkNotNull(context); + super.start(context); } public ProviderContext setBroker(final BindingAwareBroker broker) { @@ -101,14 +100,14 @@ public class ComponentActivator extends ComponentActivatorAbstractBase { @Override protected Object[] getGlobalImplementations() { return new Object[] { + this, // Used for setBroker callback flow, inventory, dataPacket, nodeFactory, nodeConnectorFactory, topology, - tpProvider, - this // Used for setBroker callback + tpProvider }; } @@ -216,6 +215,9 @@ public class ComponentActivator extends ComponentActivatorAbstractBase { .setService(IDiscoveryService.class) .setCallbacks("setDiscoveryPublisher", "setDiscoveryPublisher") .setRequired(false)); + it.add(createServiceDependency() + .setService(BindingAwareBroker.class) + .setRequired(true)); } private void _instanceConfigure(final InventoryAndReadAdapter imp, final Component it, String containerName) { @@ -232,6 +234,9 @@ public class ComponentActivator extends ComponentActivatorAbstractBase { .setService(IPluginOutInventoryService.class) .setCallbacks("setInventoryPublisher", "unsetInventoryPublisher") .setRequired(false)); + it.add(createServiceDependency() + .setService(BindingAwareBroker.class) + .setRequired(true)); } private void _configure(final TopologyAdapter imp, final Component it) { diff --git a/opendaylight/switchmanager/implementation/src/main/java/org/opendaylight/controller/switchmanager/internal/Activator.java b/opendaylight/switchmanager/implementation/src/main/java/org/opendaylight/controller/switchmanager/internal/Activator.java index 0f11284e53..deecf26e0d 100644 --- a/opendaylight/switchmanager/implementation/src/main/java/org/opendaylight/controller/switchmanager/internal/Activator.java +++ b/opendaylight/switchmanager/implementation/src/main/java/org/opendaylight/controller/switchmanager/internal/Activator.java @@ -77,7 +77,7 @@ public class Activator extends ComponentActivatorAbstractBase { c.add(createContainerServiceDependency(containerName).setService( IInventoryService.class).setCallbacks( "setInventoryService", "unsetInventoryService") - .setRequired(false)); + .setRequired(true)); c.add(createContainerServiceDependency(containerName).setService( IStatisticsManager.class).setCallbacks( "setStatisticsManager", "unsetStatisticsManager")