* to register an implementation of this class and the RIB core then calls into it
* to inquire about details specific to that particular model.
*/
-public interface RIBSupport<R extends Route, N extends Identifier> extends AddPathRibSupport {
+public interface RIBSupport<
+ C extends Routes & DataObject,
+ S extends DataObject,
+ R extends Route,
+ I extends Identifier> {
/**
* Return the table-type-specific empty routes container, as augmented into the
* bgp-rib model under /rib/tables/routes choice node. This needs to include all
* @return Class
*/
@Nonnull
- Class<? extends Routes> routesCaseClass();
+ Class<C> routesCaseClass();
/**
* Return class object of the Routes Container statement.
* @return Class
*/
@Nonnull
- Class<? extends DataObject> routesContainerClass();
+ Class<S> routesContainerClass();
/**
* Return class object of the Routes List statement.
* @return Class
*/
@Nonnull
- Class<? extends Route> routesListClass();
+ Class<R> routesListClass();
@Nonnull
default ImmutableCollection<Class<? extends DataObject>> cacheableAttributeObjects() {
@Nonnull
InstanceIdentifier<R> createRouteIdentifier(
@Nonnull KeyedInstanceIdentifier<Tables, TablesKey> tableKey,
- @Nonnull N newRouteKey);
+ @Nonnull I newRouteKey);
/**
* Creates a route with new path Id and attributes.
* @return Protocol-specific case in the routes choice, may not be null.
*/
@Nonnull
- Routes emptyRoutesContainer();
+ C emptyRoutesCase();
+
+ /**
+ * Return the table-type-specific empty routes container, as augmented into the
+ * bgp-peer model under /peer/effect-rib-in/tables/routes choice node/routes container. This needs to include all
+ * the skeleton nodes under which the individual routes will be stored.
+ *
+ * @return Protocol-specific container in the routes, may not be null.
+ */
+ @Nonnull
+ S emptyRoutesContainer();
+
/**
* @return route list Key (RouteKey + pathId)
*/
@Nonnull
- N createRouteListKey(@Nonnull long pathId, @Nonnull String routeKey);
+ I createRouteListKey(@Nonnull long pathId, @Nonnull String routeKey);
}