Get rid of JSR305 annotations
[bgpcep.git] / bgp / openconfig-rp-spi / src / main / java / org / opendaylight / protocol / bgp / openconfig / routing / policy / spi / policy / condition / ConditionsPolicy.java
1 /*
2  * Copyright (c) 2018 AT&T Intellectual Property. All rights reserved.
3  *
4  * This program and the accompanying materials are made available under the
5  * terms of the Eclipse Public License v1.0 which accompanies this distribution,
6  * and is available at http://www.eclipse.org/legal/epl-v10.html
7  */
8 package org.opendaylight.protocol.bgp.openconfig.routing.policy.spi.policy.condition;
9
10 import org.eclipse.jdt.annotation.NonNull;
11 import org.eclipse.jdt.annotation.Nullable;
12 import org.opendaylight.protocol.bgp.openconfig.routing.policy.spi.RouteEntryBaseAttributes;
13 import org.opendaylight.protocol.bgp.rib.spi.policy.BGPRouteEntryExportParameters;
14 import org.opendaylight.protocol.bgp.rib.spi.policy.BGPRouteEntryImportParameters;
15 import org.opendaylight.yang.gen.v1.http.openconfig.net.yang.bgp.types.rev151009.AfiSafiType;
16 import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.bgp.message.rev180329.path.attributes.Attributes;
17
18 /**
19  * Condition Policy: Check if route matches defined condition.
20  */
21 public interface ConditionsPolicy<T, N> {
22     /**
23      * Check if route matches defined condition (Import Policy).
24      *
25      * @param afiSafiType                Afi Safi Type
26      * @param routeEntryInfo             contains route Entry Info(AS, ClusterId, OriginatorId)
27      * @param routeEntryImportParameters contains route basic information
28      * @param attributes                 attributes
29      * @param conditions                 configured conditions
30      * @return true if all defined condition matches
31      */
32     boolean matchImportCondition(@NonNull Class<? extends AfiSafiType> afiSafiType,
33             @NonNull RouteEntryBaseAttributes routeEntryInfo,
34             @NonNull BGPRouteEntryImportParameters routeEntryImportParameters,
35             @Nullable N attributes, @NonNull T conditions);
36
37     /**
38      * Check if route matches defined condition (Export Policy).
39      *
40      * @param afiSafiType                Afi Safi Type
41      * @param routeEntryInfo             contains route Entry Info(AS, ClusterId, OriginatorId)
42      * @param routeEntryExportParameters route basic export information
43      * @param attributes                 attributes
44      * @param conditions                 configured conditions
45      * @return true if all defined condition matches
46      */
47     boolean matchExportCondition(@NonNull Class<? extends AfiSafiType> afiSafiType,
48             @NonNull RouteEntryBaseAttributes routeEntryInfo,
49             @NonNull BGPRouteEntryExportParameters routeEntryExportParameters,
50             @Nullable N attributes,
51             T conditions);
52
53     /**
54      * Returns the specific attribute to check if match condition.
55      *
56      * @param attributes route attributes
57      * @return specific attribute
58      */
59     @Nullable N getConditionParameter(@NonNull Attributes attributes);
60 }