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;
12 import org.opendaylight.protocol.pcep.spi.EROSubobjectParser;
13 import org.opendaylight.protocol.pcep.spi.EROSubobjectRegistry;
14 import org.opendaylight.protocol.pcep.spi.EROSubobjectSerializer;
15 import org.opendaylight.protocol.pcep.spi.LabelParser;
16 import org.opendaylight.protocol.pcep.spi.LabelRegistry;
17 import org.opendaylight.protocol.pcep.spi.LabelSerializer;
18 import org.opendaylight.protocol.pcep.spi.MessageParser;
19 import org.opendaylight.protocol.pcep.spi.MessageRegistry;
20 import org.opendaylight.protocol.pcep.spi.MessageSerializer;
21 import org.opendaylight.protocol.pcep.spi.ObjectParser;
22 import org.opendaylight.protocol.pcep.spi.ObjectRegistry;
23 import org.opendaylight.protocol.pcep.spi.ObjectSerializer;
24 import org.opendaylight.protocol.pcep.spi.PCEPExtensionProviderContext;
25 import org.opendaylight.protocol.pcep.spi.RROSubobjectParser;
26 import org.opendaylight.protocol.pcep.spi.RROSubobjectRegistry;
27 import org.opendaylight.protocol.pcep.spi.RROSubobjectSerializer;
28 import org.opendaylight.protocol.pcep.spi.TlvParser;
29 import org.opendaylight.protocol.pcep.spi.TlvRegistry;
30 import org.opendaylight.protocol.pcep.spi.TlvSerializer;
31 import org.opendaylight.protocol.pcep.spi.VendorInformationObjectRegistry;
32 import org.opendaylight.protocol.pcep.spi.VendorInformationTlvRegistry;
33 import org.opendaylight.protocol.pcep.spi.XROSubobjectParser;
34 import org.opendaylight.protocol.pcep.spi.XROSubobjectRegistry;
35 import org.opendaylight.protocol.pcep.spi.XROSubobjectSerializer;
36 import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.iana.rev130816.EnterpriseNumber;
37 import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.pcep.types.rev131005.Message;
38 import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.pcep.types.rev131005.Object;
39 import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.pcep.types.rev131005.Tlv;
40 import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.pcep.types.rev131005.vendor.information.EnterpriseSpecificInformation;
41 import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.rsvp.rev150820.basic.explicit.route.subobjects.SubobjectType;
42 import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.rsvp.rev150820.label.subobject.LabelType;
48 public class SimplePCEPExtensionProviderContext implements PCEPExtensionProviderContext {
49 private final SimpleLabelRegistry labelReg = new SimpleLabelRegistry();
50 private final SimpleMessageRegistry msgReg = new SimpleMessageRegistry();
51 private final SimpleObjectRegistry objReg = new SimpleObjectRegistry();
52 private final SimpleEROSubobjectRegistry eroSubReg = new SimpleEROSubobjectRegistry();
53 private final SimpleRROSubobjectRegistry rroSubReg = new SimpleRROSubobjectRegistry();
54 private final SimpleXROSubobjectRegistry xroSubReg = new SimpleXROSubobjectRegistry();
55 private final SimpleTlvRegistry tlvReg = new SimpleTlvRegistry();
56 private final SimpleVendorInformationTlvRegistry viTlvReg = new SimpleVendorInformationTlvRegistry();
57 private final SimpleVendorInformationObjectRegistry viObjReg = new SimpleVendorInformationObjectRegistry();
60 public final LabelRegistry getLabelHandlerRegistry() {
65 public final MessageRegistry getMessageHandlerRegistry() {
70 public final ObjectRegistry getObjectHandlerRegistry() {
75 public final EROSubobjectRegistry getEROSubobjectHandlerRegistry() {
76 return this.eroSubReg;
80 public final RROSubobjectRegistry getRROSubobjectHandlerRegistry() {
81 return this.rroSubReg;
85 public final XROSubobjectRegistry getXROSubobjectHandlerRegistry() {
86 return this.xroSubReg;
90 public final TlvRegistry getTlvHandlerRegistry() {
95 public VendorInformationTlvRegistry getVendorInformationTlvRegistry() {
100 public final AutoCloseable registerLabelSerializer(final Class<? extends LabelType> labelClass, final LabelSerializer serializer) {
101 return this.labelReg.registerLabelSerializer(labelClass, serializer);
105 public final AutoCloseable registerLabelParser(final int cType, final LabelParser parser) {
106 return this.labelReg.registerLabelParser(cType, parser);
110 public final AutoCloseable registerEROSubobjectParser(final int subobjectType, final EROSubobjectParser parser) {
111 return this.eroSubReg.registerSubobjectParser(subobjectType, parser);
115 public final AutoCloseable registerEROSubobjectSerializer(final Class<? extends SubobjectType> subobjectClass,
116 final EROSubobjectSerializer serializer) {
117 return this.eroSubReg.registerSubobjectSerializer(subobjectClass, serializer);
121 public final AutoCloseable registerMessageParser(final int messageType, final MessageParser parser) {
122 return this.msgReg.registerMessageParser(messageType, parser);
126 public final AutoCloseable registerMessageSerializer(final Class<? extends Message> msgClass, final MessageSerializer serializer) {
127 return this.msgReg.registerMessageSerializer(msgClass, serializer);
131 public final AutoCloseable registerObjectParser(final int objectClass, final int objectType, final ObjectParser parser) {
132 return this.objReg.registerObjectParser(objectClass, objectType, parser);
136 public final AutoCloseable registerObjectSerializer(final Class<? extends Object> objClass, final ObjectSerializer serializer) {
137 return this.objReg.registerObjectSerializer(objClass, serializer);
141 public final AutoCloseable registerRROSubobjectParser(final int subobjectType, final RROSubobjectParser parser) {
142 return this.rroSubReg.registerSubobjectParser(subobjectType, parser);
146 public final AutoCloseable registerRROSubobjectSerializer(
147 final Class<? extends org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.rsvp.rev150820.record.route.subobjects.SubobjectType> subobjectClass,
148 final RROSubobjectSerializer serializer) {
149 return this.rroSubReg.registerSubobjectSerializer(subobjectClass, serializer);
153 public AutoCloseable registerTlvParser(final int tlvType, final TlvParser parser) {
154 return this.tlvReg.registerTlvParser(tlvType, parser);
158 public final AutoCloseable registerTlvSerializer(final Class<? extends Tlv> tlvClass, final TlvSerializer serializer) {
159 return this.tlvReg.registerTlvSerializer(tlvClass, serializer);
163 public final AutoCloseable registerXROSubobjectParser(final int subobjectType, final XROSubobjectParser parser) {
164 return this.xroSubReg.registerSubobjectParser(subobjectType, parser);
168 public final AutoCloseable registerXROSubobjectSerializer(final Class<? extends SubobjectType> subobjectClass,
169 final XROSubobjectSerializer serializer) {
170 return this.xroSubReg.registerSubobjectSerializer(subobjectClass, serializer);
174 public AutoCloseable registerVendorInformationTlvSerializer(final
175 Class<? extends EnterpriseSpecificInformation> esInformationClass, final TlvSerializer serializer) {
176 return this.viTlvReg.registerVendorInformationTlvSerializer(esInformationClass, serializer);
180 public AutoCloseable registerVendorInformationTlvParser(final EnterpriseNumber enterpriseNumber, final TlvParser parser) {
181 return this.viTlvReg.registerVendorInformationTlvParser(enterpriseNumber, parser);
185 public AutoCloseable registerVendorInformationObjectSerializer(
186 final Class<? extends EnterpriseSpecificInformation> esInformationClass, final ObjectSerializer serializer) {
187 return this.viObjReg.registerVendorInformationObjectSerializer(esInformationClass, serializer);
191 public AutoCloseable registerVendorInformationObjectParser(final EnterpriseNumber enterpriseNumber, final ObjectParser parser) {
192 return this.viObjReg.registerVendorInformationObjectParser(enterpriseNumber, parser);
196 public VendorInformationObjectRegistry getVendorInformationObjectRegistry() {
197 return this.viObjReg;