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.bgp.parser.spi.osgi;
10 import org.opendaylight.protocol.bgp.parser.spi.AttributeParser;
11 import org.opendaylight.protocol.bgp.parser.spi.AttributeSerializer;
12 import org.opendaylight.protocol.bgp.parser.spi.BGPExtensionProviderContext;
13 import org.opendaylight.protocol.bgp.parser.spi.CapabilityParser;
14 import org.opendaylight.protocol.bgp.parser.spi.CapabilitySerializer;
15 import org.opendaylight.protocol.bgp.parser.spi.MessageParser;
16 import org.opendaylight.protocol.bgp.parser.spi.MessageSerializer;
17 import org.opendaylight.protocol.bgp.parser.spi.NlriParser;
18 import org.opendaylight.protocol.bgp.parser.spi.NlriSerializer;
19 import org.opendaylight.protocol.bgp.parser.spi.ParameterParser;
20 import org.opendaylight.protocol.bgp.parser.spi.ParameterSerializer;
21 import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.bgp.message.rev130919.open.BgpParameters;
22 import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.bgp.message.rev130919.open.bgp.parameters.CParameters;
23 import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.bgp.types.rev130919.AddressFamily;
24 import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.bgp.types.rev130919.SubsequentAddressFamily;
25 import org.opendaylight.yangtools.yang.binding.DataObject;
26 import org.opendaylight.yangtools.yang.binding.Notification;
27 import org.osgi.framework.BundleContext;
29 final class OSGiBGPExtensionProviderContext extends OSGiBGPExtensionConsumerContext implements BGPExtensionProviderContext {
31 OSGiBGPExtensionProviderContext(final BundleContext context) {
35 interface ClassRegistration<T> {
36 public int getRegisteredNumber();
37 public Class<? extends T> getRegisteredClass();
40 interface ParserRegistration<PARSER> {
41 public int getRegisteredNumber();
42 public Class<PARSER> getRegisteredParserClass();
43 public PARSER getRegisteredParserObject();
46 interface SerializerRegistration<SERIALIZER> {
47 public Class<?> getRegisteredObjectClass();
48 public Class<SERIALIZER> getRegisteredSerializerClass();
49 public SERIALIZER getRegisteredSerializer();
53 public AutoCloseable registerAddressFamily(final Class<? extends AddressFamily> clazz, final int number) {
54 return register(ClassRegistration.class, new ClassRegistration<AddressFamily>() {
56 public int getRegisteredNumber() {
60 public Class<? extends AddressFamily> getRegisteredClass() {
67 public AutoCloseable registerSubsequentAddressFamily(final Class<? extends SubsequentAddressFamily> clazz, final int number) {
68 return register(ClassRegistration.class, new ClassRegistration<SubsequentAddressFamily>() {
70 public int getRegisteredNumber() {
74 public Class<? extends SubsequentAddressFamily> getRegisteredClass() {
81 public AutoCloseable registerAttributeParser(final int attributeType, final AttributeParser parser) {
82 return register(ParserRegistration.class, new ParserRegistration<AttributeParser>() {
84 public int getRegisteredNumber() {
89 public Class<AttributeParser> getRegisteredParserClass() {
90 return AttributeParser.class;
94 public AttributeParser getRegisteredParserObject() {
101 public AutoCloseable registerAttributeSerializer(final Class<? extends DataObject> attributeClass, final AttributeSerializer serializer) {
102 return register(SerializerRegistration.class, new SerializerRegistration<AttributeSerializer>() {
104 public Class<?> getRegisteredObjectClass() {
105 return attributeClass;
109 public Class<AttributeSerializer> getRegisteredSerializerClass() {
110 return AttributeSerializer.class;
114 public AttributeSerializer getRegisteredSerializer() {
121 public AutoCloseable registerCapabilityParser(final int capabilityType, final CapabilityParser parser) {
122 return register(ParserRegistration.class, new ParserRegistration<CapabilityParser>() {
124 public int getRegisteredNumber() {
125 return capabilityType;
129 public Class<CapabilityParser> getRegisteredParserClass() {
130 return CapabilityParser.class;
134 public CapabilityParser getRegisteredParserObject() {
141 public AutoCloseable registerCapabilitySerializer(final Class<? extends CParameters> capabilityClass, final CapabilitySerializer serializer) {
142 return register(SerializerRegistration.class, new SerializerRegistration<CapabilitySerializer>() {
144 public Class<?> getRegisteredObjectClass() {
145 return capabilityClass;
149 public Class<CapabilitySerializer> getRegisteredSerializerClass() {
150 return CapabilitySerializer.class;
154 public CapabilitySerializer getRegisteredSerializer() {
161 public AutoCloseable registerMessageParser(final int messageType, final MessageParser parser) {
162 return register(ParserRegistration.class, new ParserRegistration<MessageParser>() {
164 public int getRegisteredNumber() {
169 public Class<MessageParser> getRegisteredParserClass() {
170 return MessageParser.class;
174 public MessageParser getRegisteredParserObject() {
181 public AutoCloseable registerMessageSerializer(final Class<? extends Notification> messageClass, final MessageSerializer serializer) {
182 return register(SerializerRegistration.class, new SerializerRegistration<MessageSerializer>() {
184 public Class<?> getRegisteredObjectClass() {
189 public Class<MessageSerializer> getRegisteredSerializerClass() {
190 return MessageSerializer.class;
194 public MessageSerializer getRegisteredSerializer() {
201 public AutoCloseable registerNlriParser(final Class<? extends AddressFamily> afi, final Class<? extends SubsequentAddressFamily> safi,
202 final NlriParser parser) {
203 // TODO Auto-generated method stub
208 public AutoCloseable registerNlriSerializer(final Class<? extends DataObject> nlriClass, final NlriSerializer serializer) {
209 return register(SerializerRegistration.class, new SerializerRegistration<NlriSerializer>() {
211 public Class<?> getRegisteredObjectClass() {
216 public Class<NlriSerializer> getRegisteredSerializerClass() {
217 return NlriSerializer.class;
221 public NlriSerializer getRegisteredSerializer() {
228 public AutoCloseable registerParameterParser(final int parameterType, final ParameterParser parser) {
229 return register(ParserRegistration.class, new ParserRegistration<ParameterParser>() {
231 public int getRegisteredNumber() {
232 return parameterType;
236 public Class<ParameterParser> getRegisteredParserClass() {
237 return ParameterParser.class;
241 public ParameterParser getRegisteredParserObject() {
248 public AutoCloseable registerParameterSerializer(final Class<? extends BgpParameters> paramClass, final ParameterSerializer serializer) {
249 return register(SerializerRegistration.class, new SerializerRegistration<ParameterSerializer>() {
251 public Class<?> getRegisteredObjectClass() {
256 public Class<ParameterSerializer> getRegisteredSerializerClass() {
257 return ParameterSerializer.class;
261 public ParameterSerializer getRegisteredSerializer() {