Add new revision for pcep types model
[bgpcep.git] / pcep / spi / src / main / java / org / opendaylight / protocol / pcep / spi / pojo / SimplePCEPExtensionProviderContext.java
1 /*
2  * Copyright (c) 2013 Cisco Systems, Inc. and others.  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.pcep.spi.pojo;
9
10 import javax.annotation.concurrent.ThreadSafe;
11
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.rev181109.Message;
38 import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.pcep.types.rev181109.Object;
39 import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.pcep.types.rev181109.Tlv;
40 import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.pcep.types.rev181109.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;
43
44 /**
45  *
46  */
47 @ThreadSafe
48 public class SimplePCEPExtensionProviderContext implements PCEPExtensionProviderContext {
49     private final SimpleLabelRegistry labelReg = new SimpleLabelRegistry();
50     private final SimpleMessageRegistry msgReg = new SimpleMessageRegistry();
51     private final SimpleVendorInformationObjectRegistry viObjReg = new SimpleVendorInformationObjectRegistry();
52     private final SimpleObjectRegistry objReg = new SimpleObjectRegistry(this.viObjReg);
53     private final SimpleEROSubobjectRegistry eroSubReg = new SimpleEROSubobjectRegistry();
54     private final SimpleRROSubobjectRegistry rroSubReg = new SimpleRROSubobjectRegistry();
55     private final SimpleXROSubobjectRegistry xroSubReg = new SimpleXROSubobjectRegistry();
56     private final SimpleTlvRegistry tlvReg = new SimpleTlvRegistry();
57     private final SimpleVendorInformationTlvRegistry viTlvReg = new SimpleVendorInformationTlvRegistry();
58
59     @Override
60     public final LabelRegistry getLabelHandlerRegistry() {
61         return this.labelReg;
62     }
63
64     @Override
65     public final MessageRegistry getMessageHandlerRegistry() {
66         return this.msgReg;
67     }
68
69     @Override
70     public final ObjectRegistry getObjectHandlerRegistry() {
71         return this.objReg;
72     }
73
74     @Override
75     public final EROSubobjectRegistry getEROSubobjectHandlerRegistry() {
76         return this.eroSubReg;
77     }
78
79     @Override
80     public final RROSubobjectRegistry getRROSubobjectHandlerRegistry() {
81         return this.rroSubReg;
82     }
83
84     @Override
85     public final XROSubobjectRegistry getXROSubobjectHandlerRegistry() {
86         return this.xroSubReg;
87     }
88
89     @Override
90     public final TlvRegistry getTlvHandlerRegistry() {
91         return this.tlvReg;
92     }
93
94     @Override
95     public VendorInformationTlvRegistry getVendorInformationTlvRegistry() {
96         return this.viTlvReg;
97     }
98
99     @Override
100     public final AutoCloseable registerLabelSerializer(final Class<? extends LabelType> labelClass, final LabelSerializer serializer) {
101         return this.labelReg.registerLabelSerializer(labelClass, serializer);
102     }
103
104     @Override
105     public final AutoCloseable registerLabelParser(final int cType, final LabelParser parser) {
106         return this.labelReg.registerLabelParser(cType, parser);
107     }
108
109     @Override
110     public final AutoCloseable registerEROSubobjectParser(final int subobjectType, final EROSubobjectParser parser) {
111         return this.eroSubReg.registerSubobjectParser(subobjectType, parser);
112     }
113
114     @Override
115     public final AutoCloseable registerEROSubobjectSerializer(final Class<? extends SubobjectType> subobjectClass,
116             final EROSubobjectSerializer serializer) {
117         return this.eroSubReg.registerSubobjectSerializer(subobjectClass, serializer);
118     }
119
120     @Override
121     public final AutoCloseable registerMessageParser(final int messageType, final MessageParser parser) {
122         return this.msgReg.registerMessageParser(messageType, parser);
123     }
124
125     @Override
126     public final AutoCloseable registerMessageSerializer(final Class<? extends Message> msgClass, final MessageSerializer serializer) {
127         return this.msgReg.registerMessageSerializer(msgClass, serializer);
128     }
129
130     @Override
131     public final AutoCloseable registerObjectParser(final int objectClass, final int objectType, final ObjectParser parser) {
132         return this.objReg.registerObjectParser(objectClass, objectType, parser);
133     }
134
135     @Override
136     public final AutoCloseable registerObjectParser(final ObjectParser parser) {
137         return this.objReg.registerObjectParser(parser.getObjectClass(), parser.getObjectType(), parser);
138     }
139
140     @Override
141     public final AutoCloseable registerObjectSerializer(final Class<? extends Object> objClass, final ObjectSerializer serializer) {
142         return this.objReg.registerObjectSerializer(objClass, serializer);
143     }
144
145     @Override
146     public final AutoCloseable registerRROSubobjectParser(final int subobjectType, final RROSubobjectParser parser) {
147         return this.rroSubReg.registerSubobjectParser(subobjectType, parser);
148     }
149
150     @Override
151     public final AutoCloseable registerRROSubobjectSerializer(
152             final Class<? extends org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.rsvp.rev150820.record.route.subobjects.SubobjectType> subobjectClass,
153             final RROSubobjectSerializer serializer) {
154         return this.rroSubReg.registerSubobjectSerializer(subobjectClass, serializer);
155     }
156
157     @Override
158     public AutoCloseable registerTlvParser(final int tlvType, final TlvParser parser) {
159         return this.tlvReg.registerTlvParser(tlvType, parser);
160     }
161
162     @Override
163     public final AutoCloseable registerTlvSerializer(final Class<? extends Tlv> tlvClass, final TlvSerializer serializer) {
164         return this.tlvReg.registerTlvSerializer(tlvClass, serializer);
165     }
166
167     @Override
168     public final AutoCloseable registerXROSubobjectParser(final int subobjectType, final XROSubobjectParser parser) {
169         return this.xroSubReg.registerSubobjectParser(subobjectType, parser);
170     }
171
172     @Override
173     public final AutoCloseable registerXROSubobjectSerializer(final Class<? extends SubobjectType> subobjectClass,
174             final XROSubobjectSerializer serializer) {
175         return this.xroSubReg.registerSubobjectSerializer(subobjectClass, serializer);
176     }
177
178     @Override
179     public AutoCloseable registerVendorInformationTlvSerializer(final
180             Class<? extends EnterpriseSpecificInformation> esInformationClass, final TlvSerializer serializer) {
181         return this.viTlvReg.registerVendorInformationTlvSerializer(esInformationClass, serializer);
182     }
183
184     @Override
185     public AutoCloseable registerVendorInformationTlvParser(final EnterpriseNumber enterpriseNumber, final TlvParser parser) {
186         return this.viTlvReg.registerVendorInformationTlvParser(enterpriseNumber, parser);
187     }
188
189     @Override
190     public AutoCloseable registerVendorInformationObjectSerializer(
191             final Class<? extends EnterpriseSpecificInformation> esInformationClass, final ObjectSerializer serializer) {
192         return this.viObjReg.registerVendorInformationObjectSerializer(esInformationClass, serializer);
193     }
194
195     @Override
196     public AutoCloseable registerVendorInformationObjectParser(final EnterpriseNumber enterpriseNumber, final ObjectParser parser) {
197         return this.viObjReg.registerVendorInformationObjectParser(enterpriseNumber, parser);
198     }
199
200     @Override
201     public VendorInformationObjectRegistry getVendorInformationObjectRegistry() {
202         return this.viObjReg;
203     }
204 }