import com.google.common.base.Optional;
import java.util.Collection;
import java.util.Collections;
+import javax.annotation.Nonnull;
import org.opendaylight.controller.config.yang.bgp.rib.spi.AbstractRIBSupport;
import org.opendaylight.controller.md.sal.common.api.data.LogicalDatastoreType;
import org.opendaylight.controller.md.sal.dom.api.DOMDataWriteTransaction;
super(routesContainer);
}
- protected abstract NodeIdentifier routeIdentifier();
+ /**
+ * Return the NodeIdentifier corresponding to the list containing individual routes.
+ *
+ * @return The NodeIdentifier for individual route list.
+ */
+ @Nonnull protected abstract NodeIdentifier routeIdentifier();
@Override
public final Collection<Class<? extends DataObject>> cacheableAttributeObjects() {
return routesContainerIdentifier;
}
- protected abstract NodeIdentifier destinationIdentifier();
+ /**
+ * Return the {@link NodeIdentifier} of the AFI/SAFI-specific container under
+ * the NLRI destination.
+ *
+ * @return Container identifier, may not be null.
+ */
+ @Nonnull protected abstract NodeIdentifier destinationContainerIdentifier();
+
protected abstract void deleteDestinationRoutes(DOMDataWriteTransaction tx, YangInstanceIdentifier tablePath, ContainerNode destination);
protected abstract void putDestinationRoutes(DOMDataWriteTransaction tx, YangInstanceIdentifier tablePath, ContainerNode destination, ContainerNode attributes);
public final void deleteRoutes(final DOMDataWriteTransaction tx, final YangInstanceIdentifier tablePath, final ContainerNode nlri) {
final Optional<DataContainerChild<? extends PathArgument, ?>> maybeRoutes = nlri.getChild(WITHDRAWN_ROUTES);
if (maybeRoutes.isPresent()) {
- final ContainerNode destination = getDestination(maybeRoutes.get(), destinationIdentifier());
+ final ContainerNode destination = getDestination(maybeRoutes.get(), destinationContainerIdentifier());
if (destination != null) {
deleteDestinationRoutes(tx, tablePath, destination);
}
public final void putRoutes(final DOMDataWriteTransaction tx, final YangInstanceIdentifier tablePath, final ContainerNode nlri, final ContainerNode attributes) {
final Optional<DataContainerChild<? extends PathArgument, ?>> maybeRoutes = nlri.getChild(ADVERTIZED_ROUTES);
if (maybeRoutes.isPresent()) {
- final ContainerNode destination = getDestination(maybeRoutes.get(), destinationIdentifier());
+ final ContainerNode destination = getDestination(maybeRoutes.get(), destinationContainerIdentifier());
if (destination != null) {
putDestinationRoutes(tx, tablePath, destination, attributes);
}