We can use proper arguments to make warnings go away.
Change-Id: I626a3ed5b90c00822e0f62381d995c720fcc7108
Signed-off-by: Robert Varga <robert.varga@pantheon.tech>
public static final int NO_TUNNEL_INFORMATION_PRESENT = 0;
private static final SimpleTunnelIdentifierRegistry SINGLETON = new SimpleTunnelIdentifierRegistry();
private static final Logger LOG = LoggerFactory.getLogger(SimpleTunnelIdentifierRegistry.class);
- private final HandlerRegistry<DataContainer, TunnelIdentifierParser, TunnelIdentifierSerializer> handlers =
+ private final HandlerRegistry<DataContainer, TunnelIdentifierParser<?>, TunnelIdentifierSerializer<?>> handlers =
new HandlerRegistry<>();
private SimpleTunnelIdentifierRegistry() {
}
public TunnelIdentifier parse(final int tunnelType, final ByteBuf buffer) {
- final TunnelIdentifierParser parser = this.handlers.getParser(tunnelType);
+ final TunnelIdentifierParser<?> parser = this.handlers.getParser(tunnelType);
if (!buffer.isReadable() || parser == null) {
LOG.debug("Skipping parsing of PMSI Tunnel Attribute type {}", tunnelType);
return null;
return serializer.serialize(tunnel, tunnelBuffer);
}
- public AbstractRegistration registerParser(final TunnelIdentifierParser parser) {
+ public AbstractRegistration registerParser(final TunnelIdentifierParser<?> parser) {
return this.handlers.registerParser(parser.getType(), parser);
}
- public AbstractRegistration registerSerializer(final TunnelIdentifierSerializer serializer) {
+ public AbstractRegistration registerSerializer(final TunnelIdentifierSerializer<?> serializer) {
return this.handlers.registerSerializer(serializer.getClazz(), serializer);
}
}
return this.bgpPeerRegistry;
}
- private synchronized ServerBootstrap createServerBootstrap(final ChannelPipelineInitializer initializer) {
+ private synchronized ServerBootstrap createServerBootstrap(final ChannelPipelineInitializer<?> initializer) {
final ServerBootstrap serverBootstrap = new ServerBootstrap();
if (Epoll.isAvailable()) {
serverBootstrap.channel(EpollServerSocketChannel.class);
};
}
- static ChannelHandler createServerChannelHandler(final ChannelPipelineInitializer initializer) {
+ static <S extends BGPSession> ChannelHandler createServerChannelHandler(
+ final ChannelPipelineInitializer<S> initializer) {
return new ChannelInitializer<SocketChannel>() {
@Override
- @SuppressWarnings("unchecked")
protected void initChannel(final SocketChannel channel) {
- initializer.initializeChannel(channel,
- new DefaultPromise<BGPSessionImpl>(GlobalEventExecutor.INSTANCE));
+ initializer.initializeChannel(channel, new DefaultPromise<>(GlobalEventExecutor.INSTANCE));
}
};
}
import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.bgp.rib.rev180329.rib.TablesKey;
import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.bgp.rib.rev180329.rib.tables.Routes;
import org.opendaylight.yangtools.concepts.ListenerRegistration;
+import org.opendaylight.yangtools.yang.binding.ChildOf;
+import org.opendaylight.yangtools.yang.binding.ChoiceIn;
import org.opendaylight.yangtools.yang.binding.DataObject;
+import org.opendaylight.yangtools.yang.binding.Identifiable;
import org.opendaylight.yangtools.yang.binding.Identifier;
import org.opendaylight.yangtools.yang.binding.InstanceIdentifier;
import org.opendaylight.yangtools.yang.binding.KeyedInstanceIdentifier;
this.peerImportParameters = peer;
}
- @SuppressWarnings("unchecked")
public void init() {
- final DataTreeIdentifier treeId = new DataTreeIdentifier(LogicalDatastoreType.OPERATIONAL,
+ final DataTreeIdentifier<Tables> treeId = new DataTreeIdentifier<>(LogicalDatastoreType.OPERATIONAL,
this.peerIId.child(AdjRibIn.class).child(Tables.class));
LOG.debug("Registered Effective RIB on {}", this.peerIId);
this.reg = requireNonNull(this.databroker).registerDataTreeChangeListener(treeId, this);
}
@SuppressWarnings("unchecked")
- private void updateRoutes(
+ private <C extends Routes & DataObject & ChoiceIn<Tables>, S extends ChildOf<? super C>,
+ R extends Route & ChildOf<? super S> & Identifiable<I>, I extends Identifier<R>> void updateRoutes(
final WriteTransaction tx,
- final TablesKey tableKey, final RIBSupport ribSupport,
+ final TablesKey tableKey, final RIBSupport<C, S, R, I> ribSupport,
final KeyedInstanceIdentifier<Tables, TablesKey> tablePath,
final Collection<DataObjectModification<? extends DataObject>> routeChanges) {
for (final DataObjectModification<? extends DataObject> routeChanged : routeChanges) {
- final Identifier routeKey
- = ((InstanceIdentifier.IdentifiableItem) routeChanged.getIdentifier()).getKey();
+ final I routeKey
+ = ((InstanceIdentifier.IdentifiableItem<R, I>) routeChanged.getIdentifier()).getKey();
switch (routeChanged.getModificationType()) {
case SUBTREE_MODIFIED:
case WRITE:
- writeRoutes(tx, tableKey, ribSupport, tablePath, routeKey, (Route) routeChanged.getDataAfter());
+ writeRoutes(tx, tableKey, ribSupport, tablePath, routeKey, (R) routeChanged.getDataAfter());
break;
case DELETE:
- final InstanceIdentifier routeIID = ribSupport.createRouteIdentifier(tablePath, routeKey);
+ final InstanceIdentifier<R> routeIID = ribSupport.createRouteIdentifier(tablePath, routeKey);
tx.delete(LogicalDatastoreType.OPERATIONAL, routeIID);
break;
}
}
}
- @SuppressWarnings("unchecked")
- private void writeRoutes(final WriteTransaction tx, final TablesKey tk, final RIBSupport ribSupport,
- final KeyedInstanceIdentifier<Tables, TablesKey> tablePath, final Identifier routeKey,
- final Route route) {
- final InstanceIdentifier routeIID = ribSupport.createRouteIdentifier(tablePath, routeKey);
+ private <C extends Routes & DataObject & ChoiceIn<Tables>, S extends ChildOf<? super C>,
+ R extends Route & ChildOf<? super S> & Identifiable<I>, I extends Identifier<R>> void writeRoutes(
+ final WriteTransaction tx, final TablesKey tk, final RIBSupport<C, S, R, I> ribSupport,
+ final KeyedInstanceIdentifier<Tables, TablesKey> tablePath, final I routeKey,
+ final R route) {
+ final InstanceIdentifier<R> routeIID = ribSupport.createRouteIdentifier(tablePath, routeKey);
CountersUtil.increment(this.prefixesReceived.get(tk), tk);
final Optional<Attributes> effAtt = this.ribPolicies
.applyImportPolicies(this.peerImportParameters, route.getAttributes(),
peerTracker, tablesKey, afiSafiType, pathSelectionStrategy);
}
- @SuppressWarnings("unchecked")
private synchronized void init() {
final WriteTransaction tx = this.chain.newWriteOnlyTransaction();
tx.merge(LogicalDatastoreType.OPERATIONAL,
final InstanceIdentifier<Tables> tableId = this.ribIId.builder().child(Peer.class)
.child(EffectiveRibIn.class).child(Tables.class, this.tk).build();
this.reg = this.dataBroker.registerDataTreeChangeListener(
- new DataTreeIdentifier(LogicalDatastoreType.OPERATIONAL, tableId), this);
+ new DataTreeIdentifier<>(LogicalDatastoreType.OPERATIONAL, tableId), this);
}
/**
import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.bgp.message.rev180329.path.attributes.Attributes;
import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.bgp.multiprotocol.rev180329.update.attributes.MpReachNlri;
import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.bgp.multiprotocol.rev180329.update.attributes.MpUnreachNlri;
+import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.bgp.rib.rev180329.Route;
+import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.bgp.rib.rev180329.rib.Tables;
import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.bgp.rib.rev180329.rib.tables.Routes;
+import org.opendaylight.yangtools.yang.binding.ChildOf;
+import org.opendaylight.yangtools.yang.binding.ChoiceIn;
+import org.opendaylight.yangtools.yang.binding.DataObject;
+import org.opendaylight.yangtools.yang.binding.Identifiable;
+import org.opendaylight.yangtools.yang.binding.Identifier;
import org.opendaylight.yangtools.yang.common.QName;
import org.opendaylight.yangtools.yang.data.api.YangInstanceIdentifier;
import org.opendaylight.yangtools.yang.data.api.YangInstanceIdentifier.NodeIdentifierWithPredicates;
}
@Override
- public void writeRoutes(final DOMDataWriteTransaction tx, final YangInstanceIdentifier tableId, final MpReachNlri nlri,
- final Attributes attributes) {
+ public void writeRoutes(final DOMDataWriteTransaction tx, final YangInstanceIdentifier tableId,
+ final MpReachNlri nlri, final Attributes attributes) {
final ContainerNode domNlri = this.codecs.serializeReachNlri(nlri);
final ContainerNode routeAttributes = this.codecs.serializeAttributes(attributes);
this.ribSupport.putRoutes(tx, tableId, domNlri, routeAttributes);
final ChoiceNode routes = this.ribSupport.emptyRoutes();
Verify.verifyNotNull(routes, "Null empty routes in %s", this.ribSupport);
- Verify.verify(Routes.QNAME.equals(routes.getNodeType()), "Empty routes have unexpected identifier %s, expected %s", routes.getNodeType(), Routes.QNAME);
+ Verify.verify(Routes.QNAME.equals(routes.getNodeType()),
+ "Empty routes have unexpected identifier %s, expected %s", routes.getNodeType(), Routes.QNAME);
tx.put(LogicalDatastoreType.OPERATIONAL, tableId, tb.withChild(routes).build());
}
@Override
- public void deleteRoutes(final DOMDataWriteTransaction tx, final YangInstanceIdentifier tableId, final MpUnreachNlri nlri) {
+ public void deleteRoutes(final DOMDataWriteTransaction tx, final YangInstanceIdentifier tableId,
+ final MpUnreachNlri nlri) {
this.ribSupport.deleteRoutes(tx, tableId, this.codecs.serializeUnreachNlri(nlri));
}
@Override
- public RIBSupport getRibSupport() {
- return this.ribSupport;
+ @SuppressWarnings("unchecked")
+ public <C extends Routes & DataObject & ChoiceIn<Tables>, S extends ChildOf<? super C>,
+ R extends Route & ChildOf<? super S> & Identifiable<I>, I extends Identifier<R>>
+ RIBSupport<C, S, R, I> getRibSupport() {
+ return (RIBSupport<C, S, R, I>) this.ribSupport;
}
}
R extends Route & ChildOf<? super S> & Identifiable<I>, I extends Identifier<R>>
RIBSupport<C, S, R, I> getRIBSupport(final TablesKey key) {
final RIBSupportContext ribSupport = getRIBSupportContext(key);
- if (ribSupport != null) {
- return ribSupport.getRibSupport();
- }
- return null;
+ return ribSupport == null ? null : ribSupport.getRibSupport();
}
@Override
public RIBSupportContext getRIBSupportContext(final TablesKey key) {
final RIBSupport<?, ?, ?, ?> ribSupport = this.extensionContext.getRIBSupport(key);
- if (ribSupport != null) {
- return this.contexts.getUnchecked(ribSupport);
- }
- return null;
+ return ribSupport == null ? null : this.contexts.getUnchecked(ribSupport);
}
}
import org.opendaylight.protocol.bgp.rib.spi.entry.RouteEntryDependenciesContainer;
import org.opendaylight.protocol.bgp.rib.spi.policy.BGPRibRoutingPolicy;
import org.opendaylight.yang.gen.v1.http.openconfig.net.yang.bgp.types.rev151009.AfiSafiType;
+import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.bgp.rib.rev180329.Route;
import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.bgp.rib.rev180329.rib.Tables;
import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.bgp.rib.rev180329.rib.TablesKey;
+import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.bgp.rib.rev180329.rib.tables.Routes;
+import org.opendaylight.yangtools.yang.binding.ChildOf;
+import org.opendaylight.yangtools.yang.binding.ChoiceIn;
+import org.opendaylight.yangtools.yang.binding.DataObject;
+import org.opendaylight.yangtools.yang.binding.Identifiable;
+import org.opendaylight.yangtools.yang.binding.Identifier;
import org.opendaylight.yangtools.yang.binding.KeyedInstanceIdentifier;
public final class RouteEntryDependenciesContainerImpl implements RouteEntryDependenciesContainer {
this.locRibTarget = requireNonNull(locRibTarget);
}
+ @SuppressWarnings("unchecked")
@Override
- public RIBSupport<?, ?, ?, ?> getRibSupport() {
- return this.ribSupport;
+ public <C extends Routes & DataObject & ChoiceIn<Tables>, S extends ChildOf<C>,
+ R extends Route & ChildOf<S> & Identifiable<I>, I extends Identifier<R>>
+ RIBSupport<C, S, R, I> getRibSupport() {
+ return (RIBSupport<C, S, R, I>) this.ribSupport;
}
@Override
import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.bgp.message.rev180329.path.attributes.Attributes;
import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.bgp.multiprotocol.rev180329.update.attributes.MpReachNlri;
import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.bgp.multiprotocol.rev180329.update.attributes.MpUnreachNlri;
+import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.bgp.rib.rev180329.Route;
+import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.bgp.rib.rev180329.rib.Tables;
+import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.bgp.rib.rev180329.rib.tables.Routes;
+import org.opendaylight.yangtools.yang.binding.ChildOf;
+import org.opendaylight.yangtools.yang.binding.ChoiceIn;
+import org.opendaylight.yangtools.yang.binding.DataObject;
+import org.opendaylight.yangtools.yang.binding.Identifiable;
+import org.opendaylight.yangtools.yang.binding.Identifier;
import org.opendaylight.yangtools.yang.data.api.YangInstanceIdentifier;
/**
*
* @return RIBSupport
*/
- public abstract RIBSupport getRibSupport();
+ public abstract <C extends Routes & DataObject & ChoiceIn<Tables>, S extends ChildOf<? super C>,
+ R extends Route & ChildOf<? super S> & Identifiable<I>, I extends Identifier<R>>
+ RIBSupport<C, S, R, I> getRibSupport();
}