From 37f2912ce3af03dfafaa63a5a0c9c97219ae34d3 Mon Sep 17 00:00:00 2001 From: Vaclav Demcak Date: Thu, 29 May 2014 11:44:19 +0200 Subject: [PATCH 1/1] Bug 625 - Fixed Apache DM Activation after removing xtend code. Apache DM does not provide any compile time/ runtime checks for callbacks missing / modified. Previously in xtend callbacks were provided by @Property annotation, which generated setters and getters for this. In refactor these was accidentally ommited. From code-perspective it was not obvious that this affects Apache DM instantiation of this service, since Apache DM uses strings and reflection. Change-Id: I655ce7c1bc9971e3db370c5048057c1e6070a46d Signed-off-by: Vaclav Demcak --- .../sal/compatibility/ComponentActivator.java | 1 + .../sal/compatibility/DataPacketAdapter.java | 17 ++++++++++++++++- .../compatibility/topology/TopologyAdapter.java | 12 +++++++++++- 3 files changed, 28 insertions(+), 2 deletions(-) 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 b3a89a4ff9..ba68d523af 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 @@ -107,6 +107,7 @@ public class ComponentActivator extends ComponentActivatorAbstractBase { nodeConnectorFactory, topology, tpProvider, + this // Used for setBroker callback }; } diff --git a/opendaylight/md-sal/compatibility/sal-compatibility/src/main/java/org/opendaylight/controller/sal/compatibility/DataPacketAdapter.java b/opendaylight/md-sal/compatibility/sal-compatibility/src/main/java/org/opendaylight/controller/sal/compatibility/DataPacketAdapter.java index f95f97804f..4d26a3a095 100644 --- a/opendaylight/md-sal/compatibility/sal-compatibility/src/main/java/org/opendaylight/controller/sal/compatibility/DataPacketAdapter.java +++ b/opendaylight/md-sal/compatibility/sal-compatibility/src/main/java/org/opendaylight/controller/sal/compatibility/DataPacketAdapter.java @@ -17,13 +17,19 @@ import org.slf4j.LoggerFactory; class DataPacketAdapter implements PacketProcessingListener { private static final Logger LOG = LoggerFactory.getLogger(DataPacketAdapter.class); + + // These are injected via Apache DM (see ComponentActivator) private IPluginOutDataPacketService dataPacketPublisher; @Override public void onPacketReceived(final PacketReceived packet) { try { RawPacket inPacket = toRawPacket(packet); - dataPacketPublisher.receiveDataPacket(inPacket); + if (dataPacketPublisher != null) { + dataPacketPublisher.receiveDataPacket(inPacket); + } else { + LOG.warn("IPluginOutDataPacketService is not available. Not forwarding packet to AD-SAL."); + } } catch (ConstructionException e) { LOG.warn("Failed to construct raw packet from {}, dropping it", packet, e); } @@ -34,4 +40,13 @@ class DataPacketAdapter implements PacketProcessingListener { ret.setIncomingNodeConnector(NodeMapping.toADNodeConnector(received.getIngress())); return ret; } + + public IPluginOutDataPacketService getDataPacketPublisher() { + return dataPacketPublisher; + } + + // These are injected via Apache DM (see ComponentActivator) + public void setDataPacketPublisher(final IPluginOutDataPacketService dataPacketPublisher) { + this.dataPacketPublisher = dataPacketPublisher; + } } diff --git a/opendaylight/md-sal/compatibility/sal-compatibility/src/main/java/org/opendaylight/controller/sal/compatibility/topology/TopologyAdapter.java b/opendaylight/md-sal/compatibility/sal-compatibility/src/main/java/org/opendaylight/controller/sal/compatibility/topology/TopologyAdapter.java index b609addae4..4e3cf69817 100644 --- a/opendaylight/md-sal/compatibility/sal-compatibility/src/main/java/org/opendaylight/controller/sal/compatibility/topology/TopologyAdapter.java +++ b/opendaylight/md-sal/compatibility/sal-compatibility/src/main/java/org/opendaylight/controller/sal/compatibility/topology/TopologyAdapter.java @@ -23,8 +23,10 @@ public class TopologyAdapter implements IPluginInTopologyService { private final InstanceIdentifier topology = InstanceIdentifier.builder(NetworkTopology.class) .child(Topology.class, new TopologyKey(new TopologyId("flow:1"))).toInstance(); - // FIXME: seems to be unused + // Injected via Apache DM private IPluginOutTopologyService topologyPublisher; + + private DataProviderService dataService; public void setDataService(final DataProviderService dataService) { @@ -37,4 +39,12 @@ public class TopologyAdapter implements IPluginInTopologyService { final Topology t = reader.readOperationalData(topology); topologyPublisher.edgeUpdate(TopologyMapping.toADEdgeUpdates(t, reader)); } + + public IPluginOutTopologyService getTopologyPublisher() { + return topologyPublisher; + } + + public void setTopologyPublisher(final IPluginOutTopologyService topologyPublisher) { + this.topologyPublisher = topologyPublisher; + } } -- 2.36.6