2 * Copyright (c) 2015 Cisco Systems, Inc. and others. All rights reserved.
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
9 package org.opendaylight.protocol.rsvp.parser.impl;
11 import java.util.ArrayList;
12 import java.util.List;
13 import org.opendaylight.protocol.rsvp.parser.impl.subobject.ero.EROAsNumberSubobjectParser;
14 import org.opendaylight.protocol.rsvp.parser.impl.subobject.ero.EROIpv4PrefixSubobjectParser;
15 import org.opendaylight.protocol.rsvp.parser.impl.subobject.ero.EROIpv6PrefixSubobjectParser;
16 import org.opendaylight.protocol.rsvp.parser.impl.subobject.ero.EROLabelSubobjectParser;
17 import org.opendaylight.protocol.rsvp.parser.impl.subobject.ero.EROPathKey128SubobjectParser;
18 import org.opendaylight.protocol.rsvp.parser.impl.subobject.ero.EROPathKey32SubobjectParser;
19 import org.opendaylight.protocol.rsvp.parser.impl.subobject.ero.EROUnnumberedInterfaceSubobjectParser;
20 import org.opendaylight.protocol.rsvp.parser.impl.subobject.ero.SEROBasicProtectionSubobjectParser;
21 import org.opendaylight.protocol.rsvp.parser.impl.subobject.ero.SERODynamicProtectionSubobjectParser;
22 import org.opendaylight.protocol.rsvp.parser.impl.subobject.label.GeneralizedLabelParser;
23 import org.opendaylight.protocol.rsvp.parser.impl.subobject.label.Type1LabelParser;
24 import org.opendaylight.protocol.rsvp.parser.impl.subobject.label.WavebandSwitchingLabelParser;
25 import org.opendaylight.protocol.rsvp.parser.impl.subobject.rro.RROIpv4PrefixSubobjectParser;
26 import org.opendaylight.protocol.rsvp.parser.impl.subobject.rro.RROIpv6PrefixSubobjectParser;
27 import org.opendaylight.protocol.rsvp.parser.impl.subobject.rro.RROLabelSubobjectParser;
28 import org.opendaylight.protocol.rsvp.parser.impl.subobject.rro.RROPathKey128SubobjectParser;
29 import org.opendaylight.protocol.rsvp.parser.impl.subobject.rro.RROPathKey32SubobjectParser;
30 import org.opendaylight.protocol.rsvp.parser.impl.subobject.rro.RROUnnumberedInterfaceSubobjectParser;
31 import org.opendaylight.protocol.rsvp.parser.impl.subobject.rro.SRROBasicProtectionSubobjectParser;
32 import org.opendaylight.protocol.rsvp.parser.impl.subobject.rro.SRRODynamicProtectionSubobjectParser;
33 import org.opendaylight.protocol.rsvp.parser.impl.subobject.xro.XROAsNumberSubobjectParser;
34 import org.opendaylight.protocol.rsvp.parser.impl.subobject.xro.XROIpv4PrefixSubobjectParser;
35 import org.opendaylight.protocol.rsvp.parser.impl.subobject.xro.XROIpv6PrefixSubobjectParser;
36 import org.opendaylight.protocol.rsvp.parser.impl.subobject.xro.XROPathKey128SubobjectParser;
37 import org.opendaylight.protocol.rsvp.parser.impl.subobject.xro.XROPathKey32SubobjectParser;
38 import org.opendaylight.protocol.rsvp.parser.impl.subobject.xro.XROSRLGSubobjectParser;
39 import org.opendaylight.protocol.rsvp.parser.impl.subobject.xro.XROUnnumberedInterfaceSubobjectParser;
40 import org.opendaylight.protocol.rsvp.parser.impl.te.AdminStatusObjectParser;
41 import org.opendaylight.protocol.rsvp.parser.impl.te.AssociationObjectParserIPV4;
42 import org.opendaylight.protocol.rsvp.parser.impl.te.AssociationObjectParserIPV6;
43 import org.opendaylight.protocol.rsvp.parser.impl.te.AttributesObjectParser;
44 import org.opendaylight.protocol.rsvp.parser.impl.te.BandwidthObjectParser;
45 import org.opendaylight.protocol.rsvp.parser.impl.te.DetourObjectIpv4Parser;
46 import org.opendaylight.protocol.rsvp.parser.impl.te.DetourObjectIpv6Parser;
47 import org.opendaylight.protocol.rsvp.parser.impl.te.DynamicProtectionObjectParser;
48 import org.opendaylight.protocol.rsvp.parser.impl.te.ExcludeRouteObjectParser;
49 import org.opendaylight.protocol.rsvp.parser.impl.te.ExplicitRouteObjectParser;
50 import org.opendaylight.protocol.rsvp.parser.impl.te.FastRerouteObjectParser;
51 import org.opendaylight.protocol.rsvp.parser.impl.te.FlowSpecObjectParser;
52 import org.opendaylight.protocol.rsvp.parser.impl.te.InformationalFastRerouteObjectParser;
53 import org.opendaylight.protocol.rsvp.parser.impl.te.MetricObjectParser;
54 import org.opendaylight.protocol.rsvp.parser.impl.te.PrimaryPathRouteObjectParser;
55 import org.opendaylight.protocol.rsvp.parser.impl.te.ProtectionObjectParser;
56 import org.opendaylight.protocol.rsvp.parser.impl.te.RecordRouteObjectParser;
57 import org.opendaylight.protocol.rsvp.parser.impl.te.ReoptimizationBandwidthObjectParser;
58 import org.opendaylight.protocol.rsvp.parser.impl.te.RequiredAttributesObjectParser;
59 import org.opendaylight.protocol.rsvp.parser.impl.te.SecondaryExplicitRouteObjectParser;
60 import org.opendaylight.protocol.rsvp.parser.impl.te.SecondaryRecordRouteObjectParser;
61 import org.opendaylight.protocol.rsvp.parser.impl.te.SenderTspecObjectParser;
62 import org.opendaylight.protocol.rsvp.parser.impl.te.SessionAttributeLspObjectParser;
63 import org.opendaylight.protocol.rsvp.parser.impl.te.SessionAttributeLspRaObjectParser;
64 import org.opendaylight.protocol.rsvp.parser.spi.AbstractRSVPExtensionProviderActivator;
65 import org.opendaylight.protocol.rsvp.parser.spi.LabelRegistry;
66 import org.opendaylight.protocol.rsvp.parser.spi.RSVPExtensionProviderContext;
67 import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.rsvp.rev150820.admin.status.object.AdminStatusObject;
68 import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.rsvp.rev150820.association.object.AssociationObject;
69 import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.rsvp.rev150820.bandwidth.object.bandwidth.object.BasicBandwidthObject;
70 import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.rsvp.rev150820.bandwidth.object.bandwidth.object.ReoptimizationBandwidthObject;
71 import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.rsvp.rev150820.basic.explicit.route.subobjects.subobject.type.AsNumberCase;
72 import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.rsvp.rev150820.basic.explicit.route.subobjects.subobject.type.IpPrefixCase;
73 import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.rsvp.rev150820.basic.explicit.route.subobjects.subobject.type.LabelCase;
74 import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.rsvp.rev150820.basic.explicit.route.subobjects.subobject.type.SrlgCase;
75 import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.rsvp.rev150820.basic.explicit.route.subobjects.subobject.type.UnnumberedCase;
76 import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.rsvp.rev150820.detour.object.detour.object.Ipv4DetourObject;
77 import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.rsvp.rev150820.detour.object.detour.object.Ipv6DetourObject;
78 import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.rsvp.rev150820.exclude.route.object.ExcludeRouteObject;
79 import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.rsvp.rev150820.explicit.route.object.ExplicitRouteObject;
80 import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.rsvp.rev150820.explicit.route.subobjects.subobject.type.PathKeyCase;
81 import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.rsvp.rev150820.fast.reroute.object.fast.reroute.object.BasicFastRerouteObject;
82 import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.rsvp.rev150820.fast.reroute.object.fast.reroute.object.LegacyFastRerouteObject;
83 import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.rsvp.rev150820.flow.spec.object.FlowSpecObject;
84 import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.rsvp.rev150820.label.subobject.label.type.GeneralizedLabelCase;
85 import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.rsvp.rev150820.label.subobject.label.type.Type1LabelCase;
86 import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.rsvp.rev150820.label.subobject.label.type.WavebandSwitchingLabelCase;
87 import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.rsvp.rev150820.lsp.attributes.object.LspAttributesObject;
88 import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.rsvp.rev150820.lsp.required.attributes.object.LspRequiredAttributesObject;
89 import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.rsvp.rev150820.metric.object.MetricObject;
90 import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.rsvp.rev150820.primary.path.route.object.PrimaryPathRouteObject;
91 import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.rsvp.rev150820.protection.object.protection.object.BasicProtectionObject;
92 import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.rsvp.rev150820.protection.object.protection.object.DynamicControlProtectionObject;
93 import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.rsvp.rev150820.record.route.object.RecordRouteObject;
94 import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.rsvp.rev150820.secondary.explicit.route.object.SecondaryExplicitRouteObject;
95 import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.rsvp.rev150820.secondary.explicit.route.object.secondary.explicit.route.object.subobject.container.subobject.type.BasicProtectionCase;
96 import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.rsvp.rev150820.secondary.explicit.route.object.secondary.explicit.route.object.subobject.container.subobject.type.DynamicControlProtectionCase;
97 import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.rsvp.rev150820.secondary.record.route.object.SecondaryRecordRouteObject;
98 import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.rsvp.rev150820.session.attribute.object.session.attribute.object.BasicSessionAttributeObject;
99 import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.rsvp.rev150820.session.attribute.object.session.attribute.object.SessionAttributeObjectWithResourcesAffinities;
100 import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.rsvp.rev150820.tspec.object.TspecObject;
102 public class RSVPActivator extends AbstractRSVPExtensionProviderActivator {
104 protected List<AutoCloseable> startImpl(final RSVPExtensionProviderContext context) {
105 final List<AutoCloseable> regs = new ArrayList<>();
107 registerLabelParsers(regs, context);
108 final LabelRegistry labelReg = context.getLabelHandlerRegistry();
109 registerRROParsers(regs, context, labelReg);
110 registerXROParsers(regs, context);
111 registerEROParsers(regs, context, labelReg);
112 registerRSVPTEParsers(context);
117 private void registerRSVPTEParsers(final RSVPExtensionProviderContext context) {
118 final DetourObjectIpv4Parser detourIpv4 = new DetourObjectIpv4Parser();
119 context.registerRsvpObjectParser(DetourObjectIpv4Parser.CLASS_NUM, DetourObjectIpv4Parser.CTYPE, detourIpv4);
120 context.registerRsvpObjectSerializer(Ipv4DetourObject.class, detourIpv4);
122 final DetourObjectIpv6Parser detourIpv6 = new DetourObjectIpv6Parser();
123 context.registerRsvpObjectParser(DetourObjectIpv6Parser.CLASS_NUM, DetourObjectIpv6Parser.CTYPE, detourIpv6);
124 context.registerRsvpObjectSerializer(Ipv6DetourObject.class, detourIpv6);
126 final FastRerouteObjectParser fastC1 = new FastRerouteObjectParser();
127 context.registerRsvpObjectParser(FastRerouteObjectParser.CLASS_NUM, FastRerouteObjectParser.CTYPE, fastC1);
128 context.registerRsvpObjectSerializer(BasicFastRerouteObject.class, fastC1);
130 final InformationalFastRerouteObjectParser fastC7 = new InformationalFastRerouteObjectParser();
131 context.registerRsvpObjectParser(InformationalFastRerouteObjectParser.CLASS_NUM, InformationalFastRerouteObjectParser.CTYPE, fastC7);
132 context.registerRsvpObjectSerializer(LegacyFastRerouteObject.class, fastC7);
134 final SenderTspecObjectParser tSpec = new SenderTspecObjectParser();
135 context.registerRsvpObjectParser(SenderTspecObjectParser.CLASS_NUM, SenderTspecObjectParser.CTYPE, tSpec);
136 context.registerRsvpObjectSerializer(TspecObject.class, tSpec);
138 final FlowSpecObjectParser fSpec = new FlowSpecObjectParser();
139 context.registerRsvpObjectParser(FlowSpecObjectParser.CLASS_NUM, FlowSpecObjectParser.CTYPE, fSpec);
140 context.registerRsvpObjectSerializer(FlowSpecObject.class, fSpec);
142 final SessionAttributeLspObjectParser sAttributeC7 = new SessionAttributeLspObjectParser();
143 context.registerRsvpObjectParser(SessionAttributeLspObjectParser.CLASS_NUM, SessionAttributeLspObjectParser.CTYPE, sAttributeC7);
144 context.registerRsvpObjectSerializer(BasicSessionAttributeObject.class, sAttributeC7);
146 final SessionAttributeLspRaObjectParser sAttributeC1 = new SessionAttributeLspRaObjectParser();
147 context.registerRsvpObjectParser(SessionAttributeLspRaObjectParser.CLASS_NUM, SessionAttributeLspRaObjectParser.CTYPE, sAttributeC1);
148 context.registerRsvpObjectSerializer(SessionAttributeObjectWithResourcesAffinities.class, sAttributeC1);
150 final RecordRouteObjectParser rroParser = new RecordRouteObjectParser(context.getRROSubobjectHandlerRegistry());
151 context.registerRsvpObjectParser(RecordRouteObjectParser.CLASS_NUM, RecordRouteObjectParser.CTYPE, rroParser);
152 context.registerRsvpObjectSerializer(RecordRouteObject.class, rroParser);
154 final ExcludeRouteObjectParser xroParser = new ExcludeRouteObjectParser(context.getXROSubobjectHandlerRegistry());
155 context.registerRsvpObjectParser(ExcludeRouteObjectParser.CLASS_NUM, ExcludeRouteObjectParser.CTYPE, xroParser);
156 context.registerRsvpObjectSerializer(ExcludeRouteObject.class, xroParser);
158 final ExplicitRouteObjectParser eroParser = new ExplicitRouteObjectParser(context.getEROSubobjectHandlerRegistry());
159 context.registerRsvpObjectParser(ExplicitRouteObjectParser.CLASS_NUM, ExplicitRouteObjectParser.CTYPE, eroParser);
160 context.registerRsvpObjectSerializer(ExplicitRouteObject.class, eroParser);
162 final AssociationObjectParserIPV4 ipv4AsoParser = new AssociationObjectParserIPV4();
163 context.registerRsvpObjectParser(AssociationObjectParserIPV4.CLASS_NUM, AssociationObjectParserIPV4.CTYPE_IPV4, ipv4AsoParser);
164 final AssociationObjectParserIPV6 ipv6AsoParser = new AssociationObjectParserIPV6();
165 context.registerRsvpObjectParser(AssociationObjectParserIPV6.CLASS_NUM, AssociationObjectParserIPV6.CTYPE_IPV6, ipv6AsoParser);
166 context.registerRsvpObjectSerializer(AssociationObject.class, ipv4AsoParser);
168 final AdminStatusObjectParser admParser = new AdminStatusObjectParser();
169 context.registerRsvpObjectParser(AdminStatusObjectParser.CLASS_NUM, AdminStatusObjectParser.CTYPE, admParser);
170 context.registerRsvpObjectSerializer(AdminStatusObject.class, admParser);
172 final BandwidthObjectParser bandT1Parser = new BandwidthObjectParser();
173 context.registerRsvpObjectParser(BandwidthObjectParser.CLASS_NUM, BandwidthObjectParser.CTYPE, bandT1Parser);
174 context.registerRsvpObjectSerializer(BasicBandwidthObject.class, bandT1Parser);
176 final ReoptimizationBandwidthObjectParser bandT2Parser = new ReoptimizationBandwidthObjectParser();
177 context.registerRsvpObjectParser(ReoptimizationBandwidthObjectParser.CLASS_NUM, ReoptimizationBandwidthObjectParser.CTYPE, bandT2Parser);
178 context.registerRsvpObjectSerializer(ReoptimizationBandwidthObject.class, bandT2Parser);
180 final MetricObjectParser metricParser = new MetricObjectParser();
181 context.registerRsvpObjectParser(MetricObjectParser.CLASS_NUM, MetricObjectParser.CTYPE, metricParser);
182 context.registerRsvpObjectSerializer(MetricObject.class, metricParser);
184 final PrimaryPathRouteObjectParser primatyParser = new PrimaryPathRouteObjectParser(context.getEROSubobjectHandlerRegistry());
185 context.registerRsvpObjectParser(PrimaryPathRouteObjectParser.CLASS_NUM, PrimaryPathRouteObjectParser.CTYPE, primatyParser);
186 context.registerRsvpObjectSerializer(PrimaryPathRouteObject.class, primatyParser);
188 final AttributesObjectParser lspAttributeParser = new AttributesObjectParser();
189 context.registerRsvpObjectParser(AttributesObjectParser.CLASS_NUM, AttributesObjectParser.CTYPE, lspAttributeParser);
190 context.registerRsvpObjectSerializer(LspAttributesObject.class, lspAttributeParser);
192 final RequiredAttributesObjectParser lspRequiredAttParser = new RequiredAttributesObjectParser();
193 context.registerRsvpObjectParser(RequiredAttributesObjectParser.CLASS_NUM, RequiredAttributesObjectParser.CTYPE,
194 lspRequiredAttParser);
195 context.registerRsvpObjectSerializer(LspRequiredAttributesObject.class, lspRequiredAttParser);
197 final ProtectionObjectParser protectionType1Parser = new ProtectionObjectParser();
198 context.registerRsvpObjectParser(ProtectionObjectParser.CLASS_NUM, ProtectionObjectParser.CTYPE, protectionType1Parser);
199 context.registerRsvpObjectSerializer(BasicProtectionObject.class, protectionType1Parser);
201 final DynamicProtectionObjectParser protectionType2Parser = new DynamicProtectionObjectParser();
202 context.registerRsvpObjectParser(DynamicProtectionObjectParser.CLASS_NUM, DynamicProtectionObjectParser.CTYPE, protectionType2Parser);
203 context.registerRsvpObjectSerializer(DynamicControlProtectionObject.class, protectionType2Parser);
205 final SecondaryExplicitRouteObjectParser serTypeParser = new SecondaryExplicitRouteObjectParser(context.getEROSubobjectHandlerRegistry());
206 context.registerRsvpObjectParser(SecondaryExplicitRouteObjectParser.CLASS_NUM, SecondaryExplicitRouteObjectParser.CTYPE, serTypeParser);
207 context.registerRsvpObjectSerializer(SecondaryExplicitRouteObject.class, serTypeParser);
209 final SecondaryRecordRouteObjectParser srroTypeParser = new SecondaryRecordRouteObjectParser(context.getRROSubobjectHandlerRegistry());
210 context.registerRsvpObjectParser(SecondaryRecordRouteObjectParser.CLASS_NUM, SecondaryRecordRouteObjectParser.CTYPE, srroTypeParser);
211 context.registerRsvpObjectSerializer(SecondaryRecordRouteObject.class, srroTypeParser);
214 private void registerLabelParsers(final List<AutoCloseable> regs, final RSVPExtensionProviderContext context) {
215 final Type1LabelParser type1Parser = new Type1LabelParser();
216 regs.add(context.registerLabelParser(Type1LabelParser.CTYPE, type1Parser));
217 regs.add(context.registerLabelSerializer(Type1LabelCase.class, type1Parser));
219 final GeneralizedLabelParser generalizedParser = new GeneralizedLabelParser();
220 regs.add(context.registerLabelParser(GeneralizedLabelParser.CTYPE, generalizedParser));
221 regs.add(context.registerLabelSerializer(GeneralizedLabelCase.class, generalizedParser));
223 final WavebandSwitchingLabelParser wavebandParser = new WavebandSwitchingLabelParser();
224 regs.add(context.registerLabelParser(WavebandSwitchingLabelParser.CTYPE, wavebandParser));
225 regs.add(context.registerLabelSerializer(WavebandSwitchingLabelCase.class, wavebandParser));
228 private void registerRROParsers(final List<AutoCloseable> regs, final RSVPExtensionProviderContext context, final LabelRegistry labelReg) {
229 final RROIpv4PrefixSubobjectParser ipv4prefixParser = new RROIpv4PrefixSubobjectParser();
230 regs.add(context.registerRROSubobjectParser(RROIpv4PrefixSubobjectParser.TYPE, ipv4prefixParser));
231 regs.add(context.registerRROSubobjectSerializer(
232 org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.rsvp.rev150820.record.route.subobjects.subobject.type.IpPrefixCase.class,
234 regs.add(context.registerRROSubobjectParser(RROIpv6PrefixSubobjectParser.TYPE, new RROIpv6PrefixSubobjectParser()));
236 final RROUnnumberedInterfaceSubobjectParser unnumberedParser = new RROUnnumberedInterfaceSubobjectParser();
237 regs.add(context.registerRROSubobjectParser(RROUnnumberedInterfaceSubobjectParser.TYPE, unnumberedParser));
238 regs.add(context.registerRROSubobjectSerializer(
239 org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.rsvp.rev150820.record.route.subobjects.subobject.type.UnnumberedCase.class,
242 final RROPathKey32SubobjectParser pathKey32Parser = new RROPathKey32SubobjectParser();
243 final RROPathKey128SubobjectParser pathKey128Parser = new RROPathKey128SubobjectParser();
244 regs.add(context.registerRROSubobjectParser(RROPathKey32SubobjectParser.TYPE, pathKey32Parser));
245 regs.add(context.registerRROSubobjectParser(RROPathKey128SubobjectParser.TYPE, pathKey128Parser));
246 regs.add(context.registerRROSubobjectSerializer(org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns
247 .yang.rsvp.rev150820.record.route.subobjects.subobject.type.PathKeyCase.class, pathKey32Parser));
249 final RROLabelSubobjectParser labelParser = new RROLabelSubobjectParser(labelReg);
250 regs.add(context.registerRROSubobjectParser(RROLabelSubobjectParser.TYPE, labelParser));
251 regs.add(context.registerRROSubobjectSerializer(
252 org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.rsvp.rev150820.record.route.subobjects.subobject.type.LabelCase.class,
255 final SRROBasicProtectionSubobjectParser srroBasicParser = new SRROBasicProtectionSubobjectParser();
256 final SRRODynamicProtectionSubobjectParser srroDynamicParser = new SRRODynamicProtectionSubobjectParser();
257 regs.add(context.registerRROSubobjectParser(SRROBasicProtectionSubobjectParser.TYPE, srroBasicParser));
258 regs.add(context.registerRROSubobjectSerializer(org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.rsvp.rev150820.secondary.record.route.object.secondary.record.route.object.subobject.container.subobject.type.BasicProtectionCase.class, srroBasicParser));
259 regs.add(context.registerRROSubobjectSerializer(org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.rsvp.rev150820.secondary.record.route.object.secondary.record.route.object.subobject.container.subobject.type.DynamicControlProtectionCase.class, srroDynamicParser));
262 private void registerXROParsers(final List<AutoCloseable> regs, final RSVPExtensionProviderContext context) {
263 final XROIpv4PrefixSubobjectParser ipv4prefixParser = new XROIpv4PrefixSubobjectParser();
264 regs.add(context.registerXROSubobjectParser(XROIpv4PrefixSubobjectParser.TYPE, ipv4prefixParser));
265 regs.add(context.registerXROSubobjectSerializer(IpPrefixCase.class, ipv4prefixParser));
266 regs.add(context.registerXROSubobjectParser(XROIpv6PrefixSubobjectParser.TYPE, new XROIpv6PrefixSubobjectParser()));
268 final XROAsNumberSubobjectParser asNumberParser = new XROAsNumberSubobjectParser();
269 regs.add(context.registerXROSubobjectParser(XROAsNumberSubobjectParser.TYPE, asNumberParser));
270 regs.add(context.registerXROSubobjectSerializer(AsNumberCase.class, asNumberParser));
272 final XROSRLGSubobjectParser srlgParser = new XROSRLGSubobjectParser();
273 regs.add(context.registerXROSubobjectParser(XROSRLGSubobjectParser.TYPE, srlgParser));
274 regs.add(context.registerXROSubobjectSerializer(SrlgCase.class, srlgParser));
276 final XROUnnumberedInterfaceSubobjectParser unnumberedParser = new XROUnnumberedInterfaceSubobjectParser();
277 regs.add(context.registerXROSubobjectParser(XROUnnumberedInterfaceSubobjectParser.TYPE, unnumberedParser));
278 regs.add(context.registerXROSubobjectSerializer(UnnumberedCase.class, unnumberedParser));
280 final XROPathKey32SubobjectParser pathKeyParser = new XROPathKey32SubobjectParser();
281 regs.add(context.registerXROSubobjectParser(XROPathKey32SubobjectParser.TYPE, pathKeyParser));
282 regs.add(context.registerXROSubobjectParser(XROPathKey128SubobjectParser.TYPE, new XROPathKey128SubobjectParser()));
283 regs.add(context.registerXROSubobjectSerializer(PathKeyCase.class, pathKeyParser));
286 private void registerEROParsers(final List<AutoCloseable> regs, final RSVPExtensionProviderContext context, final LabelRegistry labelReg) {
287 final EROIpv4PrefixSubobjectParser ipv4prefixParser = new EROIpv4PrefixSubobjectParser();
288 regs.add(context.registerEROSubobjectParser(EROIpv4PrefixSubobjectParser.TYPE, ipv4prefixParser));
289 regs.add(context.registerEROSubobjectSerializer(IpPrefixCase.class, ipv4prefixParser));
290 regs.add(context.registerEROSubobjectParser(EROIpv6PrefixSubobjectParser.TYPE, new EROIpv6PrefixSubobjectParser()));
292 final EROAsNumberSubobjectParser asNumberParser = new EROAsNumberSubobjectParser();
293 regs.add(context.registerEROSubobjectParser(EROAsNumberSubobjectParser.TYPE, asNumberParser));
294 regs.add(context.registerEROSubobjectSerializer(AsNumberCase.class, asNumberParser));
296 final EROUnnumberedInterfaceSubobjectParser unnumberedParser = new EROUnnumberedInterfaceSubobjectParser();
297 regs.add(context.registerEROSubobjectParser(EROUnnumberedInterfaceSubobjectParser.TYPE, unnumberedParser));
298 regs.add(context.registerEROSubobjectSerializer(UnnumberedCase.class, unnumberedParser));
300 final EROPathKey32SubobjectParser pathKeyParser = new EROPathKey32SubobjectParser();
301 regs.add(context.registerEROSubobjectParser(EROPathKey32SubobjectParser.TYPE, pathKeyParser));
302 regs.add(context.registerEROSubobjectParser(EROPathKey128SubobjectParser.TYPE, new EROPathKey128SubobjectParser()));
303 regs.add(context.registerEROSubobjectSerializer(PathKeyCase.class, pathKeyParser));
305 final EROLabelSubobjectParser labelParser = new EROLabelSubobjectParser(labelReg);
306 regs.add(context.registerEROSubobjectParser(EROLabelSubobjectParser.TYPE, labelParser));
307 regs.add(context.registerEROSubobjectSerializer(LabelCase.class, labelParser));
309 final SERODynamicProtectionSubobjectParser seroDynamicParser = new SERODynamicProtectionSubobjectParser();
310 final SEROBasicProtectionSubobjectParser seroBasicParser = new SEROBasicProtectionSubobjectParser();
311 regs.add(context.registerEROSubobjectParser(SERODynamicProtectionSubobjectParser.TYPE, seroBasicParser));
312 regs.add(context.registerEROSubobjectSerializer(DynamicControlProtectionCase.class, seroDynamicParser));
313 regs.add(context.registerEROSubobjectSerializer(BasicProtectionCase.class, seroBasicParser));