2 * Copyright (c) 2013 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
8 package org.opendaylight.protocol.pcep.spi.pojo;
10 import javax.annotation.concurrent.ThreadSafe;
11 import org.opendaylight.protocol.pcep.spi.EROSubobjectParser;
12 import org.opendaylight.protocol.pcep.spi.EROSubobjectRegistry;
13 import org.opendaylight.protocol.pcep.spi.EROSubobjectSerializer;
14 import org.opendaylight.protocol.pcep.spi.LabelParser;
15 import org.opendaylight.protocol.pcep.spi.LabelRegistry;
16 import org.opendaylight.protocol.pcep.spi.LabelSerializer;
17 import org.opendaylight.protocol.pcep.spi.MessageParser;
18 import org.opendaylight.protocol.pcep.spi.MessageRegistry;
19 import org.opendaylight.protocol.pcep.spi.MessageSerializer;
20 import org.opendaylight.protocol.pcep.spi.ObjectParser;
21 import org.opendaylight.protocol.pcep.spi.ObjectRegistry;
22 import org.opendaylight.protocol.pcep.spi.ObjectSerializer;
23 import org.opendaylight.protocol.pcep.spi.PCEPExtensionProviderContext;
24 import org.opendaylight.protocol.pcep.spi.RROSubobjectParser;
25 import org.opendaylight.protocol.pcep.spi.RROSubobjectRegistry;
26 import org.opendaylight.protocol.pcep.spi.RROSubobjectSerializer;
27 import org.opendaylight.protocol.pcep.spi.TlvParser;
28 import org.opendaylight.protocol.pcep.spi.TlvRegistry;
29 import org.opendaylight.protocol.pcep.spi.TlvSerializer;
30 import org.opendaylight.protocol.pcep.spi.VendorInformationObjectRegistry;
31 import org.opendaylight.protocol.pcep.spi.VendorInformationTlvRegistry;
32 import org.opendaylight.protocol.pcep.spi.XROSubobjectParser;
33 import org.opendaylight.protocol.pcep.spi.XROSubobjectRegistry;
34 import org.opendaylight.protocol.pcep.spi.XROSubobjectSerializer;
35 import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.iana.rev130816.EnterpriseNumber;
36 import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.pcep.types.rev181109.Message;
37 import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.pcep.types.rev181109.Object;
38 import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.pcep.types.rev181109.Tlv;
39 import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.pcep.types.rev181109.vendor.information.EnterpriseSpecificInformation;
40 import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.rsvp.rev150820.basic.explicit.route.subobjects.SubobjectType;
41 import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.rsvp.rev150820.label.subobject.LabelType;
42 import org.opendaylight.yangtools.concepts.Registration;
45 public class SimplePCEPExtensionProviderContext implements PCEPExtensionProviderContext {
46 private final SimpleLabelRegistry labelReg = new SimpleLabelRegistry();
47 private final SimpleMessageRegistry msgReg = new SimpleMessageRegistry();
48 private final SimpleVendorInformationObjectRegistry viObjReg = new SimpleVendorInformationObjectRegistry();
49 private final SimpleObjectRegistry objReg = new SimpleObjectRegistry(this.viObjReg);
50 private final SimpleEROSubobjectRegistry eroSubReg = new SimpleEROSubobjectRegistry();
51 private final SimpleRROSubobjectRegistry rroSubReg = new SimpleRROSubobjectRegistry();
52 private final SimpleXROSubobjectRegistry xroSubReg = new SimpleXROSubobjectRegistry();
53 private final SimpleTlvRegistry tlvReg = new SimpleTlvRegistry();
54 private final SimpleVendorInformationTlvRegistry viTlvReg = new SimpleVendorInformationTlvRegistry();
57 public final LabelRegistry getLabelHandlerRegistry() {
62 public final MessageRegistry getMessageHandlerRegistry() {
67 public final ObjectRegistry getObjectHandlerRegistry() {
72 public final EROSubobjectRegistry getEROSubobjectHandlerRegistry() {
73 return this.eroSubReg;
77 public final RROSubobjectRegistry getRROSubobjectHandlerRegistry() {
78 return this.rroSubReg;
82 public final XROSubobjectRegistry getXROSubobjectHandlerRegistry() {
83 return this.xroSubReg;
87 public final TlvRegistry getTlvHandlerRegistry() {
92 public VendorInformationTlvRegistry getVendorInformationTlvRegistry() {
97 public final Registration registerLabelSerializer(final Class<? extends LabelType> labelClass,
98 final LabelSerializer serializer) {
99 return this.labelReg.registerLabelSerializer(labelClass, serializer);
103 public final Registration registerLabelParser(final int ctype, final LabelParser parser) {
104 return this.labelReg.registerLabelParser(ctype, parser);
108 public final Registration registerEROSubobjectParser(final int subobjectType, final EROSubobjectParser parser) {
109 return this.eroSubReg.registerSubobjectParser(subobjectType, parser);
113 public final Registration registerEROSubobjectSerializer(final Class<? extends SubobjectType> subobjectClass,
114 final EROSubobjectSerializer serializer) {
115 return this.eroSubReg.registerSubobjectSerializer(subobjectClass, serializer);
119 public final Registration registerMessageParser(final int messageType, final MessageParser parser) {
120 return this.msgReg.registerMessageParser(messageType, parser);
124 public final Registration registerMessageSerializer(final Class<? extends Message> msgClass,
125 final MessageSerializer serializer) {
126 return this.msgReg.registerMessageSerializer(msgClass, serializer);
130 public final Registration registerObjectParser(final int objectClass, final int objectType,
131 final ObjectParser parser) {
132 return this.objReg.registerObjectParser(objectClass, objectType, parser);
136 public final Registration registerObjectParser(final ObjectParser parser) {
137 return this.objReg.registerObjectParser(parser.getObjectClass(), parser.getObjectType(), parser);
141 public final Registration registerObjectSerializer(final Class<? extends Object> objClass,
142 final ObjectSerializer serializer) {
143 return this.objReg.registerObjectSerializer(objClass, serializer);
147 public final Registration registerRROSubobjectParser(final int subobjectType, final RROSubobjectParser parser) {
148 return this.rroSubReg.registerSubobjectParser(subobjectType, parser);
152 public final Registration registerRROSubobjectSerializer(final Class<? extends org.opendaylight.yang.gen.v1.urn
153 .opendaylight.params.xml.ns.yang.rsvp.rev150820.record.route.subobjects.SubobjectType> subobjectClass,
154 final RROSubobjectSerializer serializer) {
155 return this.rroSubReg.registerSubobjectSerializer(subobjectClass, serializer);
159 public Registration registerTlvParser(final int tlvType, final TlvParser parser) {
160 return this.tlvReg.registerTlvParser(tlvType, parser);
164 public final Registration registerTlvSerializer(final Class<? extends Tlv> tlvClass,
165 final TlvSerializer serializer) {
166 return this.tlvReg.registerTlvSerializer(tlvClass, serializer);
170 public final Registration registerXROSubobjectParser(final int subobjectType, final XROSubobjectParser parser) {
171 return this.xroSubReg.registerSubobjectParser(subobjectType, parser);
175 public final Registration registerXROSubobjectSerializer(final Class<? extends SubobjectType> subobjectClass,
176 final XROSubobjectSerializer serializer) {
177 return this.xroSubReg.registerSubobjectSerializer(subobjectClass, serializer);
181 public Registration registerVendorInformationTlvSerializer(final
182 Class<? extends EnterpriseSpecificInformation> esInformationClass, final TlvSerializer serializer) {
183 return this.viTlvReg.registerVendorInformationTlvSerializer(esInformationClass, serializer);
187 public Registration registerVendorInformationTlvParser(final EnterpriseNumber enterpriseNumber,
188 final TlvParser parser) {
189 return this.viTlvReg.registerVendorInformationTlvParser(enterpriseNumber, parser);
193 public Registration registerVendorInformationObjectSerializer(
194 final Class<? extends EnterpriseSpecificInformation> esInformationClass,
195 final ObjectSerializer serializer) {
196 return this.viObjReg.registerVendorInformationObjectSerializer(esInformationClass, serializer);
200 public Registration registerVendorInformationObjectParser(final EnterpriseNumber enterpriseNumber,
201 final ObjectParser parser) {
202 return this.viObjReg.registerVendorInformationObjectParser(enterpriseNumber, parser);
206 public VendorInformationObjectRegistry getVendorInformationObjectRegistry() {
207 return this.viObjReg;