BUG-64 : initial rewrite, MessageRegistry.
[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.EROSubobjectRegistry;
13 import org.opendaylight.protocol.pcep.spi.EROSubobjectParser;
14 import org.opendaylight.protocol.pcep.spi.EROSubobjectSerializer;
15 import org.opendaylight.protocol.pcep.spi.LabelRegistry;
16 import org.opendaylight.protocol.pcep.spi.LabelParser;
17 import org.opendaylight.protocol.pcep.spi.LabelSerializer;
18 import org.opendaylight.protocol.pcep.spi.MessageRegistry;
19 import org.opendaylight.protocol.pcep.spi.MessageParser;
20 import org.opendaylight.protocol.pcep.spi.MessageSerializer;
21 import org.opendaylight.protocol.pcep.spi.ObjectRegistry;
22 import org.opendaylight.protocol.pcep.spi.ObjectParser;
23 import org.opendaylight.protocol.pcep.spi.ObjectSerializer;
24 import org.opendaylight.protocol.pcep.spi.PCEPExtensionProviderContext;
25 import org.opendaylight.protocol.pcep.spi.RROSubobjectRegistry;
26 import org.opendaylight.protocol.pcep.spi.RROSubobjectParser;
27 import org.opendaylight.protocol.pcep.spi.RROSubobjectSerializer;
28 import org.opendaylight.protocol.pcep.spi.TlvRegistry;
29 import org.opendaylight.protocol.pcep.spi.TlvParser;
30 import org.opendaylight.protocol.pcep.spi.TlvSerializer;
31 import org.opendaylight.protocol.pcep.spi.XROSubobjectRegistry;
32 import org.opendaylight.protocol.pcep.spi.XROSubobjectParser;
33 import org.opendaylight.protocol.pcep.spi.XROSubobjectSerializer;
34 import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.pcep.types.rev131005.Message;
35 import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.pcep.types.rev131005.Object;
36 import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.pcep.types.rev131005.Tlv;
37 import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.rsvp.rev130820.basic.explicit.route.subobjects.SubobjectType;
38 import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.rsvp.rev130820.label.subobject.LabelType;
39
40 /**
41  *
42  */
43 @ThreadSafe
44 public class SimplePCEPExtensionProviderContext implements PCEPExtensionProviderContext {
45         private final SimpleLabelRegistry labelReg = new SimpleLabelRegistry();
46         private final SimpleMessageRegistry msgReg = new SimpleMessageRegistry();
47         private final SimpleObjectRegistry objReg = new SimpleObjectRegistry();
48         private final SimpleEROSubobjectRegistry eroSubReg = new SimpleEROSubobjectRegistry();
49         private final SimpleRROSubobjectRegistry rroSubReg = new SimpleRROSubobjectRegistry();
50         private final SimpleXROSubobjectRegistry xroSubReg = new SimpleXROSubobjectRegistry();
51         private final SimpleTlvRegistry tlvReg = new SimpleTlvRegistry();
52
53         @Override
54         public final LabelRegistry getLabelHandlerRegistry() {
55                 return this.labelReg;
56         }
57
58         @Override
59         public final MessageRegistry getMessageHandlerRegistry() {
60                 return this.msgReg;
61         }
62
63         @Override
64         public final ObjectRegistry getObjectHandlerRegistry() {
65                 return this.objReg;
66         }
67
68         @Override
69         public final EROSubobjectRegistry getEROSubobjectHandlerRegistry() {
70                 return this.eroSubReg;
71         }
72
73         @Override
74         public final RROSubobjectRegistry getRROSubobjectHandlerRegistry() {
75                 return this.rroSubReg;
76         }
77
78         @Override
79         public final XROSubobjectRegistry getXROSubobjectHandlerRegistry() {
80                 return this.xroSubReg;
81         }
82
83         @Override
84         public final TlvRegistry getTlvHandlerRegistry() {
85                 return this.tlvReg;
86         }
87
88         @Override
89         public final AutoCloseable registerLabelSerializer(final Class<? extends LabelType> labelClass, final LabelSerializer serializer) {
90                 return this.labelReg.registerLabelSerializer(labelClass, serializer);
91         }
92
93         @Override
94         public final AutoCloseable registerLabelParser(final int cType, final LabelParser parser) {
95                 return this.labelReg.registerLabelParser(cType, parser);
96         }
97
98         @Override
99         public final AutoCloseable registerEROSubobjectParser(final int subobjectType, final EROSubobjectParser parser) {
100                 return this.eroSubReg.registerSubobjectParser(subobjectType, parser);
101         }
102
103         @Override
104         public final AutoCloseable registerEROSubobjectSerializer(final Class<? extends SubobjectType> subobjectClass,
105                         final EROSubobjectSerializer serializer) {
106                 return this.eroSubReg.registerSubobjectSerializer(subobjectClass, serializer);
107         }
108
109         @Override
110         public final AutoCloseable registerMessageParser(final int messageType, final MessageParser parser) {
111                 return this.msgReg.registerMessageParser(messageType, parser);
112         }
113
114         @Override
115         public final AutoCloseable registerMessageSerializer(final Class<? extends Message> msgClass, final MessageSerializer serializer) {
116                 return this.msgReg.registerMessageSerializer(msgClass, serializer);
117         }
118
119         @Override
120         public final AutoCloseable registerObjectParser(final int objectClass, final int objectType, final ObjectParser parser) {
121                 return this.objReg.registerObjectParser(objectClass, objectType, parser);
122         }
123
124         @Override
125         public final AutoCloseable registerObjectSerializer(final Class<? extends Object> objClass, final ObjectSerializer serializer) {
126                 return this.objReg.registerObjectSerializer(objClass, serializer);
127         }
128
129         @Override
130         public final AutoCloseable registerRROSubobjectParser(final int subobjectType, final RROSubobjectParser parser) {
131                 return this.rroSubReg.registerSubobjectParser(subobjectType, parser);
132         }
133
134         @Override
135         public final AutoCloseable registerRROSubobjectSerializer(
136                         final Class<? extends org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.rsvp.rev130820.record.route.subobjects.SubobjectType> subobjectClass,
137                         final RROSubobjectSerializer serializer) {
138                 return this.rroSubReg.registerSubobjectSerializer(subobjectClass, serializer);
139         }
140
141         @Override
142         public AutoCloseable registerTlvParser(final int tlvType, final TlvParser parser) {
143                 return this.tlvReg.registerTlvParser(tlvType, parser);
144         }
145
146         @Override
147         public final AutoCloseable registerTlvSerializer(final Class<? extends Tlv> tlvClass, final TlvSerializer serializer) {
148                 return this.tlvReg.registerTlvSerializer(tlvClass, serializer);
149         }
150
151         @Override
152         public final AutoCloseable registerXROSubobjectParser(final int subobjectType, final XROSubobjectParser parser) {
153                 return this.xroSubReg.registerSubobjectParser(subobjectType, parser);
154         }
155
156         @Override
157         public final AutoCloseable registerXROSubobjectSerializer(final Class<? extends SubobjectType> subobjectClass,
158                         final XROSubobjectSerializer serializer) {
159                 return this.xroSubReg.registerSubobjectSerializer(subobjectClass, serializer);
160         }
161 }