Migrate away from legacy setters
[bgpcep.git] / bgp / openconfig-rp-statement / src / main / java / org / opendaylight / protocol / bgp / openconfig / routing / policy / statement / StatementActivator.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.statement;
9
10 import static java.util.Objects.requireNonNull;
11
12 import java.util.ArrayList;
13 import java.util.List;
14 import org.opendaylight.mdsal.binding.api.DataBroker;
15 import org.opendaylight.protocol.bgp.openconfig.routing.policy.spi.registry.AbstractBGPStatementProviderActivator;
16 import org.opendaylight.protocol.bgp.openconfig.routing.policy.spi.registry.StatementRegistryProvider;
17 import org.opendaylight.protocol.bgp.openconfig.routing.policy.statement.actions.AsPathPrepend;
18 import org.opendaylight.protocol.bgp.openconfig.routing.policy.statement.actions.LocalAsPathPrependHandler;
19 import org.opendaylight.protocol.bgp.openconfig.routing.policy.statement.actions.NonTransitiveAttributesFilterHandler;
20 import org.opendaylight.protocol.bgp.openconfig.routing.policy.statement.actions.SetClusterIdPrependHandler;
21 import org.opendaylight.protocol.bgp.openconfig.routing.policy.statement.actions.SetCommunityHandler;
22 import org.opendaylight.protocol.bgp.openconfig.routing.policy.statement.actions.SetExtCommunityHandler;
23 import org.opendaylight.protocol.bgp.openconfig.routing.policy.statement.actions.SetOriginatorIdPrependHandler;
24 import org.opendaylight.protocol.bgp.openconfig.routing.policy.statement.conditions.MatchAfiSafiNotInHandler;
25 import org.opendaylight.protocol.bgp.openconfig.routing.policy.statement.conditions.MatchAsPathSetHandler;
26 import org.opendaylight.protocol.bgp.openconfig.routing.policy.statement.conditions.MatchBgpNeighborSetHandler;
27 import org.opendaylight.protocol.bgp.openconfig.routing.policy.statement.conditions.MatchClusterIdSetHandler;
28 import org.opendaylight.protocol.bgp.openconfig.routing.policy.statement.conditions.MatchCommunitySetHandler;
29 import org.opendaylight.protocol.bgp.openconfig.routing.policy.statement.conditions.MatchExtCommunitySetHandler;
30 import org.opendaylight.protocol.bgp.openconfig.routing.policy.statement.conditions.MatchOriginatorIdSetHandler;
31 import org.opendaylight.protocol.bgp.openconfig.routing.policy.statement.conditions.MatchRoleSetHandler;
32 import org.opendaylight.protocol.bgp.openconfig.routing.policy.statement.conditions.VpnNonMemberHandler;
33 import org.opendaylight.yang.gen.v1.http.openconfig.net.yang.bgp.policy.rev151009.bgp.match.conditions.MatchAsPathSet;
34 import org.opendaylight.yang.gen.v1.http.openconfig.net.yang.bgp.policy.rev151009.bgp.match.conditions.MatchCommunitySet;
35 import org.opendaylight.yang.gen.v1.http.openconfig.net.yang.bgp.policy.rev151009.bgp.match.conditions.MatchExtCommunitySet;
36 import org.opendaylight.yang.gen.v1.http.openconfig.net.yang.bgp.policy.rev151009.routing.policy.policy.definitions.policy.definition.statements.statement.actions.bgp.actions.SetAsPathPrepend;
37 import org.opendaylight.yang.gen.v1.http.openconfig.net.yang.bgp.policy.rev151009.routing.policy.policy.definitions.policy.definition.statements.statement.actions.bgp.actions.SetCommunity;
38 import org.opendaylight.yang.gen.v1.http.openconfig.net.yang.bgp.policy.rev151009.routing.policy.policy.definitions.policy.definition.statements.statement.actions.bgp.actions.SetExtCommunity;
39 import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.odl.bgp._default.policy.rev180329.LocalAsPathPrepend;
40 import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.odl.bgp._default.policy.rev180329.MatchAfiSafiNotInCondition;
41 import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.odl.bgp._default.policy.rev180329.MatchBgpNeighborCondition;
42 import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.odl.bgp._default.policy.rev180329.MatchClusterIdSetCondition;
43 import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.odl.bgp._default.policy.rev180329.MatchOriginatorIdSetCondition;
44 import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.odl.bgp._default.policy.rev180329.MatchRoleSetCondition;
45 import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.odl.bgp._default.policy.rev180329.NonTransitiveAttributesFilter;
46 import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.odl.bgp._default.policy.rev180329.SetClusterIdPrepend;
47 import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.odl.bgp._default.policy.rev180329.SetOriginatorIdPrepend;
48 import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.odl.bgp._default.policy.rev180329.VpnNonMemberCondition;
49 import org.opendaylight.yangtools.concepts.Registration;
50
51 public final class StatementActivator extends AbstractBGPStatementProviderActivator {
52     private final DataBroker dataBroker;
53
54     public StatementActivator(final DataBroker dataBroker) {
55         this.dataBroker = requireNonNull(dataBroker);
56     }
57
58     @Override
59     protected synchronized List<Registration> startImpl(final StatementRegistryProvider provider) {
60         final List<Registration> registration = new ArrayList<>(14);
61         registerActions(provider, registration);
62         registerConditions(provider, registration);
63         return registration;
64     }
65
66     private void registerConditions(final StatementRegistryProvider provider, final List<Registration> registration) {
67         registration.add(provider.registerBgpConditionsAugmentationPolicy(MatchRoleSetCondition.class,
68                 new MatchRoleSetHandler(this.dataBroker)));
69
70         registration.add(provider.registerBgpConditionsAugmentationPolicy(MatchOriginatorIdSetCondition.class,
71                 new MatchOriginatorIdSetHandler(this.dataBroker)));
72
73         registration.add(provider.registerBgpConditionsAugmentationPolicy(MatchClusterIdSetCondition.class,
74                 new MatchClusterIdSetHandler(this.dataBroker)));
75
76         registration.add(provider.registerBgpConditionsPolicy(MatchAsPathSet.class,
77                 new MatchAsPathSetHandler(this.dataBroker)));
78
79         registration.add(provider.registerBgpConditionsPolicy(MatchExtCommunitySet.class,
80                 new MatchExtCommunitySetHandler(this.dataBroker)));
81
82         registration.add(provider.registerBgpConditionsPolicy(MatchCommunitySet.class,
83                 new MatchCommunitySetHandler(this.dataBroker)));
84
85         registration.add(provider.registerBgpConditionsAugmentationPolicy(MatchBgpNeighborCondition.class,
86                 new MatchBgpNeighborSetHandler(this.dataBroker)));
87
88         registration.add(provider.registerBgpConditionsAugmentationPolicy(MatchAfiSafiNotInCondition.class,
89                 MatchAfiSafiNotInHandler.getInstance()));
90
91         registration.add(provider.registerBgpConditionsAugmentationPolicy(VpnNonMemberCondition.class,
92                 VpnNonMemberHandler.getInstance()));
93     }
94
95     private void registerActions(final StatementRegistryProvider provider, final List<Registration> registration) {
96         registration.add(provider.registerBgpActionPolicy(SetAsPathPrepend.class, AsPathPrepend.getInstance()));
97
98         registration.add(provider.registerBgpActionAugmentationPolicy(LocalAsPathPrepend.class,
99                 LocalAsPathPrependHandler.getInstance()));
100
101         registration.add(provider.registerBgpActionPolicy(SetCommunity.class,
102                 new SetCommunityHandler(this.dataBroker)));
103
104         registration.add(provider.registerBgpActionPolicy(SetExtCommunity.class,
105                 new SetExtCommunityHandler(this.dataBroker)));
106
107         registration.add(provider.registerBgpActionAugmentationPolicy(SetOriginatorIdPrepend.class,
108                 SetOriginatorIdPrependHandler.getInstance()));
109
110         registration.add(provider.registerBgpActionAugmentationPolicy(NonTransitiveAttributesFilter.class,
111                 NonTransitiveAttributesFilterHandler.getInstance()));
112
113         registration.add(provider.registerBgpActionAugmentationPolicy(SetClusterIdPrepend.class,
114                 SetClusterIdPrependHandler.getInstance()));
115     }
116 }