*/
package org.opendaylight.transportpce.networkmodel.listeners;
-import java.util.Collection;
import java.util.LinkedList;
+import java.util.List;
import org.eclipse.jdt.annotation.NonNull;
import org.opendaylight.mdsal.binding.api.DataTreeChangeListener;
+import org.opendaylight.mdsal.binding.api.DataTreeIdentifier;
import org.opendaylight.mdsal.binding.api.DataTreeModification;
import org.opendaylight.transportpce.networkmodel.service.NetworkModelService;
-import org.opendaylight.yang.gen.v1.http.org.opendaylight.transportpce.portmapping.rev220114.mapping.Mapping;
-import org.opendaylight.yang.gen.v1.http.org.opendaylight.transportpce.portmapping.rev220114.network.Nodes;
+import org.opendaylight.yang.gen.v1.http.org.opendaylight.transportpce.portmapping.rev231221.mapping.Mapping;
+import org.opendaylight.yang.gen.v1.http.org.opendaylight.transportpce.portmapping.rev231221.network.Nodes;
+import org.opendaylight.yangtools.yang.binding.DataObjectStep;
import org.opendaylight.yangtools.yang.binding.InstanceIdentifier;
-import org.opendaylight.yangtools.yang.binding.InstanceIdentifier.PathArgument;
-import org.slf4j.Logger;
-import org.slf4j.LoggerFactory;
public class PortMappingListener implements DataTreeChangeListener<Mapping> {
- private static final Logger LOG = LoggerFactory.getLogger(PortMappingListener.class);
-
private final NetworkModelService networkModelService;
public PortMappingListener(NetworkModelService networkModelService) {
}
@Override
- public void onDataTreeChanged(@NonNull Collection<DataTreeModification<Mapping>> changes) {
+ public void onDataTreeChanged(@NonNull List<DataTreeModification<Mapping>> changes) {
for (DataTreeModification<Mapping> change : changes) {
- if (change.getRootNode().getDataBefore() != null && change.getRootNode().getDataAfter() != null) {
- Mapping oldMapping = change.getRootNode().getDataBefore();
- Mapping newMapping = change.getRootNode().getDataAfter();
+ if (change.getRootNode().dataBefore() != null && change.getRootNode().dataAfter() != null) {
+ Mapping oldMapping = change.getRootNode().dataBefore();
+ Mapping newMapping = change.getRootNode().dataAfter();
if (oldMapping.getPortAdminState().equals(newMapping.getPortAdminState())
- || oldMapping.getPortOperState().equals(newMapping.getPortOperState())) {
+ && oldMapping.getPortOperState().equals(newMapping.getPortOperState())) {
return;
} else {
- LinkedList<PathArgument> path = new LinkedList<>();
- path.addAll((Collection<? extends PathArgument>) change.getRootPath().getRootIdentifier()
- .getPathArguments());
- path.removeLast();
- @SuppressWarnings("unchecked") InstanceIdentifier<Nodes> portmappintNodeID =
- (InstanceIdentifier<Nodes>) InstanceIdentifier.create(path);
- String nodeId = InstanceIdentifier.keyOf(portmappintNodeID).getNodeId();
- networkModelService.updateOpenRoadmTopologies(nodeId, newMapping);
+ networkModelService.updateOpenRoadmTopologies(
+ getNodeIdFromMappingDataTreeIdentifier(change.getRootPath()), newMapping);
}
}
}
}
+
+ protected String getNodeIdFromMappingDataTreeIdentifier(DataTreeIdentifier<Mapping> dataTreeIdentifier) {
+ LinkedList<DataObjectStep<?>> path = new LinkedList<>();
+ dataTreeIdentifier.path().getPathArguments().forEach(p -> path.add(p));
+ path.removeLast();
+ InstanceIdentifier<Nodes> portMappingNodeID = InstanceIdentifier.unsafeOf(path);
+ return InstanceIdentifier.keyOf(portMappingNodeID).getNodeId();
+ }
}