BUG-113: switch BGP to proper activators 39/1939/4
authorRobert Varga <rovarga@cisco.com>
Wed, 16 Oct 2013 16:04:59 +0000 (18:04 +0200)
committerRobert Varga <rovarga@cisco.com>
Thu, 17 Oct 2013 14:29:51 +0000 (16:29 +0200)
Change-Id: Ie520cc6e41dd8f83e9207767795ddb2cb29d18aa
Signed-off-by: Robert Varga <rovarga@cisco.com>
42 files changed:
bgp/linkstate/pom.xml
bgp/linkstate/src/main/java/org/opendaylight/protocol/bgp/linkstate/Activator.java [new file with mode: 0644]
bgp/linkstate/src/main/java/org/opendaylight/protocol/bgp/linkstate/OSGiActivator.java [new file with mode: 0644]
bgp/linkstate/src/main/resources/META-INF/services/org.opendaylight.protocol.bgp.parser.spi.BGPExtensionProviderActivator [new file with mode: 0644]
bgp/parser-impl/pom.xml
bgp/parser-impl/src/main/java/org/opendaylight/protocol/bgp/parser/impl/Activator.java [moved from bgp/parser-impl/src/main/java/org/opendaylight/protocol/bgp/parser/impl/ActivatorImpl.java with 64% similarity]
bgp/parser-impl/src/main/java/org/opendaylight/protocol/bgp/parser/impl/OSGiActivator.java [new file with mode: 0644]
bgp/parser-impl/src/main/java/org/opendaylight/protocol/bgp/parser/impl/SingletonProviderContext.java [deleted file]
bgp/parser-impl/src/main/resources/META-INF/services/org.opendaylight.protocol.bgp.parser.spi.BGPExtensionProviderActivator [new file with mode: 0644]
bgp/parser-impl/src/test/java/org/opendaylight/protocol/bgp/parser/impl/BGPParserTest.java
bgp/parser-impl/src/test/java/org/opendaylight/protocol/bgp/parser/impl/ComplementaryTest.java
bgp/parser-impl/src/test/java/org/opendaylight/protocol/bgp/parser/impl/PathAttributeParserTest.java
bgp/parser-spi/pom.xml
bgp/parser-spi/src/main/java/org/opendaylight/protocol/bgp/parser/spi/AddressFamilyRegistry.java
bgp/parser-spi/src/main/java/org/opendaylight/protocol/bgp/parser/spi/AttributeRegistry.java
bgp/parser-spi/src/main/java/org/opendaylight/protocol/bgp/parser/spi/BGPExtensionConsumerActivator.java [moved from bgp/parser-spi/src/main/java/org/opendaylight/protocol/bgp/parser/spi/ProviderActivator.java with 68% similarity]
bgp/parser-spi/src/main/java/org/opendaylight/protocol/bgp/parser/spi/BGPExtensionConsumerContext.java [moved from bgp/parser-spi/src/main/java/org/opendaylight/protocol/bgp/parser/spi/ProviderContext.java with 93% similarity]
bgp/parser-spi/src/main/java/org/opendaylight/protocol/bgp/parser/spi/BGPExtensionProviderActivator.java [new file with mode: 0644]
bgp/parser-spi/src/main/java/org/opendaylight/protocol/bgp/parser/spi/BGPExtensionProviderContext.java [new file with mode: 0644]
bgp/parser-spi/src/main/java/org/opendaylight/protocol/bgp/parser/spi/CapabilityRegistry.java
bgp/parser-spi/src/main/java/org/opendaylight/protocol/bgp/parser/spi/MessageRegistry.java
bgp/parser-spi/src/main/java/org/opendaylight/protocol/bgp/parser/spi/NlriRegistry.java
bgp/parser-spi/src/main/java/org/opendaylight/protocol/bgp/parser/spi/ParameterRegistry.java
bgp/parser-spi/src/main/java/org/opendaylight/protocol/bgp/parser/spi/SubsequentAddressFamilyRegistry.java
bgp/parser-spi/src/main/java/org/opendaylight/protocol/bgp/parser/spi/osgi/AbstractOSGiBGPExtensionConsumerActivator.java [new file with mode: 0644]
bgp/parser-spi/src/main/java/org/opendaylight/protocol/bgp/parser/spi/osgi/AbstractOSGiBGPExtensionProviderActivator.java [new file with mode: 0644]
bgp/parser-spi/src/main/java/org/opendaylight/protocol/bgp/parser/spi/osgi/OSGiBGPExtensionConsumerContext.java [new file with mode: 0644]
bgp/parser-spi/src/main/java/org/opendaylight/protocol/bgp/parser/spi/osgi/OSGiBGPExtensionProviderContext.java [new file with mode: 0644]
bgp/parser-spi/src/main/java/org/opendaylight/protocol/bgp/parser/spi/pojo/AbstractFamilyRegistry.java [moved from bgp/parser-impl/src/main/java/org/opendaylight/protocol/bgp/parser/impl/AbstractFamilyRegistry.java with 96% similarity]
bgp/parser-spi/src/main/java/org/opendaylight/protocol/bgp/parser/spi/pojo/AbstractMessageRegistry.java [moved from bgp/parser-impl/src/main/java/org/opendaylight/protocol/bgp/parser/impl/AbstractMessageRegistry.java with 98% similarity]
bgp/parser-spi/src/main/java/org/opendaylight/protocol/bgp/parser/spi/pojo/BGPExtensionConsumerContextImpl.java [new file with mode: 0644]
bgp/parser-spi/src/main/java/org/opendaylight/protocol/bgp/parser/spi/pojo/SimpleAddressFamilyRegistry.java [moved from bgp/parser-impl/src/main/java/org/opendaylight/protocol/bgp/parser/impl/SimpleAddressFamilyRegistry.java with 74% similarity]
bgp/parser-spi/src/main/java/org/opendaylight/protocol/bgp/parser/spi/pojo/SimpleAttributeRegistry.java [moved from bgp/parser-impl/src/main/java/org/opendaylight/protocol/bgp/parser/impl/SimpleAttributeRegistry.java with 89% similarity]
bgp/parser-spi/src/main/java/org/opendaylight/protocol/bgp/parser/spi/pojo/SimpleCapabilityRegistry.java [moved from bgp/parser-impl/src/main/java/org/opendaylight/protocol/bgp/parser/impl/SimpleCapabilityRegistry.java with 82% similarity]
bgp/parser-spi/src/main/java/org/opendaylight/protocol/bgp/parser/spi/pojo/SimpleMessageRegistry.java [moved from bgp/parser-impl/src/main/java/org/opendaylight/protocol/bgp/parser/impl/SimpleMessageRegistry.java with 79% similarity]
bgp/parser-spi/src/main/java/org/opendaylight/protocol/bgp/parser/spi/pojo/SimpleNlriRegistry.java [moved from bgp/parser-impl/src/main/java/org/opendaylight/protocol/bgp/parser/impl/SimpleNlriRegistry.java with 95% similarity]
bgp/parser-spi/src/main/java/org/opendaylight/protocol/bgp/parser/spi/pojo/SimpleParameterRegistry.java [moved from bgp/parser-impl/src/main/java/org/opendaylight/protocol/bgp/parser/impl/SimpleParameterRegistry.java with 82% similarity]
bgp/parser-spi/src/main/java/org/opendaylight/protocol/bgp/parser/spi/pojo/SimpleSubsequentAddressFamilyRegistry.java [moved from bgp/parser-impl/src/main/java/org/opendaylight/protocol/bgp/parser/impl/SimpleSubsequentAddressFamilyRegistry.java with 72% similarity]
bgp/rib-impl/src/test/java/org/opendaylight/protocol/bgp/rib/impl/ParserTest.java
bgp/testtool/src/main/java/org/opendaylight/protocol/bgp/testtool/Main.java
bgp/testtool/src/test/java/org/opendaylight/protocol/bgp/testtool/BGPSpeakerMock.java
pom.xml

index 7a64ee8aa93a0aaa47f842453823f4ea173f4f57..d097325e86b9552bb9552fcbb63ae78b5717e063 100644 (file)
             <artifactId>ietf-inet-types</artifactId>
             <version>2010.09.24-SNAPSHOT</version>
         </dependency>
+        <dependency>
+            <groupId>org.osgi</groupId>
+            <artifactId>org.osgi.core</artifactId>
+            <version>${osgi.version}</version>
+            <scope>provided</scope>
+        </dependency>
        </dependencies>
 
        <build>
                                                <Bundle-Name>${project.groupId}.${project.artifactId}</Bundle-Name>
                                                <Export-Package>
                             org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.bgp.linkstate.rev130918.*,
-                                               </Export-Package>
+                        </Export-Package>
+                        <Private-Package>
+                            org.opendaylight.protocol.bgp.linkstate
+                        </Private-Package>
+                        <Activator>org.opendaylight.protocol.bgp.linkstate.LinkstateOSGiActivator</Activator>
                                        </instructions>
                                </configuration>
                        </plugin>
diff --git a/bgp/linkstate/src/main/java/org/opendaylight/protocol/bgp/linkstate/Activator.java b/bgp/linkstate/src/main/java/org/opendaylight/protocol/bgp/linkstate/Activator.java
new file mode 100644 (file)
index 0000000..7b3e155
--- /dev/null
@@ -0,0 +1,37 @@
+/*
+ * Copyright (c) 2013 Cisco Systems, Inc. and others.  All rights reserved.
+ *
+ * This program and the accompanying materials are made available under the
+ * terms of the Eclipse Public License v1.0 which accompanies this distribution,
+ * and is available at http://www.eclipse.org/legal/epl-v10.html
+ */
+package org.opendaylight.protocol.bgp.linkstate;
+
+import org.opendaylight.protocol.bgp.parser.spi.BGPExtensionProviderActivator;
+import org.opendaylight.protocol.bgp.parser.spi.BGPExtensionProviderContext;
+import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.bgp.linkstate.rev130918.LinkstateAddressFamily;
+import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.bgp.linkstate.rev130918.LinkstateSubsequentAddressFamily;
+import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.bgp.types.rev130919.MplsLabeledVpnSubsequentAddressFamily;
+
+/**
+ *
+ */
+public final class Activator implements BGPExtensionProviderActivator {
+       @Override
+       public void start(final BGPExtensionProviderContext context) throws Exception {
+               context.registerAddressFamily(LinkstateAddressFamily.class, 16388);
+               context.registerSubsequentAddressFamily(LinkstateSubsequentAddressFamily.class, 71);
+
+               context.registerNlriParser(LinkstateAddressFamily.class, LinkstateSubsequentAddressFamily.class,
+                               new LinkstateNlriParser(false));
+               context.registerNlriParser(LinkstateAddressFamily.class, MplsLabeledVpnSubsequentAddressFamily.class,
+                               new LinkstateNlriParser(true));
+
+               context.registerAttributeParser(LinkstateAttributeParser.TYPE, new LinkstateAttributeParser());
+       }
+
+       @Override
+       public void stop() throws Exception {
+               // TODO Auto-generated method stub
+       }
+}
diff --git a/bgp/linkstate/src/main/java/org/opendaylight/protocol/bgp/linkstate/OSGiActivator.java b/bgp/linkstate/src/main/java/org/opendaylight/protocol/bgp/linkstate/OSGiActivator.java
new file mode 100644 (file)
index 0000000..4bbf1d8
--- /dev/null
@@ -0,0 +1,26 @@
+/*
+ * Copyright (c) 2013 Cisco Systems, Inc. and others.  All rights reserved.
+ *
+ * This program and the accompanying materials are made available under the
+ * terms of the Eclipse Public License v1.0 which accompanies this distribution,
+ * and is available at http://www.eclipse.org/legal/epl-v10.html
+ */
+package org.opendaylight.protocol.bgp.linkstate;
+
+import org.opendaylight.protocol.bgp.parser.spi.BGPExtensionProviderActivator;
+import org.opendaylight.protocol.bgp.parser.spi.BGPExtensionProviderContext;
+import org.opendaylight.protocol.bgp.parser.spi.osgi.AbstractOSGiBGPExtensionProviderActivator;
+
+public final class OSGiActivator extends AbstractOSGiBGPExtensionProviderActivator {
+       private final BGPExtensionProviderActivator activator = new Activator();
+
+       @Override
+       public void start(final BGPExtensionProviderContext context) throws Exception {
+               activator.start(context);
+       }
+
+       @Override
+       public void stop() throws Exception {
+               activator.stop();
+       }
+}
diff --git a/bgp/linkstate/src/main/resources/META-INF/services/org.opendaylight.protocol.bgp.parser.spi.BGPExtensionProviderActivator b/bgp/linkstate/src/main/resources/META-INF/services/org.opendaylight.protocol.bgp.parser.spi.BGPExtensionProviderActivator
new file mode 100644 (file)
index 0000000..a1512a5
--- /dev/null
@@ -0,0 +1 @@
+org.opendaylight.protocol.bgp.linkstate.Activator
index 894aea03d6c99bf8d84c418028f7218f6bf8ab02..de615fc472b8756a0d4c50c26de19cbc27b78628 100644 (file)
                <dependency>
                        <groupId>${project.groupId}</groupId>
                        <artifactId>bgp-concepts</artifactId>
-            <version>${project.version}</version>
-               </dependency>
-               <dependency>
-                       <groupId>${project.groupId}</groupId>
-                       <artifactId>bgp-linkstate</artifactId>
             <version>${project.version}</version>
                </dependency>
                <dependency>
             <groupId>org.opendaylight.yangtools.model</groupId>
             <artifactId>ietf-inet-types</artifactId>
             <version>2010.09.24-SNAPSHOT</version>
+        </dependency>
+        <dependency>
+            <groupId>org.osgi</groupId>
+            <artifactId>org.osgi.core</artifactId>
+            <version>${osgi.version}</version>
+            <scope>provided</scope>
         </dependency>
                <dependency>
                        <groupId>${project.groupId}</groupId>
                        <version>${junit.version}</version>
                        <scope>test</scope>
                </dependency>
+               <dependency>
+                       <groupId>${project.groupId}</groupId>
+                       <artifactId>bgp-linkstate</artifactId>
+            <version>${project.version}</version>
+                       <scope>test</scope>
+               </dependency>
        </dependencies>
 
        <build>
                                <configuration>
                                        <instructions>
                                                <Bundle-Name>${project.groupId}.${project.artifactId}</Bundle-Name>
-                                               <Import-Package>
-                                                       org.opendaylight.protocol.bgp.concepts,
-                            org.opendaylight.protocol.bgp.parser,
-                            org.opendaylight.protocol.bgp.util,
-                                                       org.opendaylight.protocol.concepts,
-                                                       org.opendaylight.protocol.framework,
-                            org.opendaylight.protocol.util,
-                            org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.bgp.linkstate.rev130918.*,
-                                                       com.google.common.*,
-                                                       org.slf4j,
-                                               </Import-Package>
                                                <Export-Package>
                                                        org.opendaylight.protocol.bgp.parser.impl.*
                                                </Export-Package>
+                        <Activator>org.opendaylight.protocol.bgp.parser.impl.OSGiActivator</Activator>
                                        </instructions>
                                </configuration>
                        </plugin>
similarity index 64%
rename from bgp/parser-impl/src/main/java/org/opendaylight/protocol/bgp/parser/impl/ActivatorImpl.java
rename to bgp/parser-impl/src/main/java/org/opendaylight/protocol/bgp/parser/impl/Activator.java
index 14a2d0ad6fd66b700a5128cfad0f46aeb441987f..82162a9130866c6d7d336bf60c29dbc53f74c5a6 100644 (file)
@@ -10,8 +10,6 @@ package org.opendaylight.protocol.bgp.parser.impl;
 import java.util.ArrayList;
 import java.util.List;
 
-import org.opendaylight.protocol.bgp.linkstate.LinkstateAttributeParser;
-import org.opendaylight.protocol.bgp.linkstate.LinkstateNlriParser;
 import org.opendaylight.protocol.bgp.parser.impl.message.BGPKeepAliveMessageParser;
 import org.opendaylight.protocol.bgp.parser.impl.message.BGPNotificationMessageParser;
 import org.opendaylight.protocol.bgp.parser.impl.message.BGPOpenMessageParser;
@@ -38,15 +36,12 @@ import org.opendaylight.protocol.bgp.parser.impl.message.update.OriginAttributeP
 import org.opendaylight.protocol.bgp.parser.impl.message.update.OriginatorIdAttributeParser;
 import org.opendaylight.protocol.bgp.parser.spi.AddressFamilyRegistry;
 import org.opendaylight.protocol.bgp.parser.spi.AttributeRegistry;
+import org.opendaylight.protocol.bgp.parser.spi.BGPExtensionProviderActivator;
+import org.opendaylight.protocol.bgp.parser.spi.BGPExtensionProviderContext;
 import org.opendaylight.protocol.bgp.parser.spi.CapabilityRegistry;
-import org.opendaylight.protocol.bgp.parser.spi.MessageRegistry;
 import org.opendaylight.protocol.bgp.parser.spi.NlriRegistry;
 import org.opendaylight.protocol.bgp.parser.spi.ParameterRegistry;
-import org.opendaylight.protocol.bgp.parser.spi.ProviderActivator;
-import org.opendaylight.protocol.bgp.parser.spi.ProviderContext;
 import org.opendaylight.protocol.bgp.parser.spi.SubsequentAddressFamilyRegistry;
-import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.bgp.linkstate.rev130918.LinkstateAddressFamily;
-import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.bgp.linkstate.rev130918.LinkstateSubsequentAddressFamily;
 import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.bgp.message.rev130918.Keepalive;
 import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.bgp.message.rev130918.Notify;
 import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.bgp.message.rev130918.Open;
@@ -62,85 +57,77 @@ import org.slf4j.LoggerFactory;
 
 import com.google.common.base.Preconditions;
 
-public final class ActivatorImpl implements ProviderActivator {
-       private static final Logger logger = LoggerFactory.getLogger(ActivatorImpl.class);
+public final class Activator implements BGPExtensionProviderActivator {
+       private static final Logger logger = LoggerFactory.getLogger(Activator.class);
        private List<AutoCloseable> registrations;
 
        @Override
-       public synchronized void start(final ProviderContext context) {
+       public synchronized void start(final BGPExtensionProviderContext context) {
                Preconditions.checkState(registrations == null);
                final List<AutoCloseable> regs = new ArrayList<>();
 
                final AddressFamilyRegistry afiReg = context.getAddressFamilyRegistry();
-               regs.add(afiReg.registerAddressFamily(Ipv4AddressFamily.class, 1));
-               regs.add(afiReg.registerAddressFamily(Ipv6AddressFamily.class, 2));
-               regs.add(afiReg.registerAddressFamily(LinkstateAddressFamily.class, 16388));
+               regs.add(context.registerAddressFamily(Ipv4AddressFamily.class, 1));
+               regs.add(context.registerAddressFamily(Ipv6AddressFamily.class, 2));
 
                final SubsequentAddressFamilyRegistry safiReg = context.getSubsequentAddressFamilyRegistry();
-               regs.add(safiReg.registerSubsequentAddressFamily(UnicastSubsequentAddressFamily.class, 1));
-               regs.add(safiReg.registerSubsequentAddressFamily(LinkstateSubsequentAddressFamily.class, 71));
-               regs.add(safiReg.registerSubsequentAddressFamily(MplsLabeledVpnSubsequentAddressFamily.class, 128));
+               regs.add(context.registerSubsequentAddressFamily(UnicastSubsequentAddressFamily.class, 1));
+               regs.add(context.registerSubsequentAddressFamily(MplsLabeledVpnSubsequentAddressFamily.class, 128));
 
                final NlriRegistry nlriReg = context.getNlriRegistry();
-               regs.add(nlriReg.registerNlriParser(Ipv4AddressFamily.class, UnicastSubsequentAddressFamily.class,
+               regs.add(context.registerNlriParser(Ipv4AddressFamily.class, UnicastSubsequentAddressFamily.class,
                                new Ipv4NlriParser()));
-               regs.add(nlriReg.registerNlriParser(Ipv6AddressFamily.class, UnicastSubsequentAddressFamily.class,
+               regs.add(context.registerNlriParser(Ipv6AddressFamily.class, UnicastSubsequentAddressFamily.class,
                                new Ipv6NlriParser()));
-               regs.add(nlriReg.registerNlriParser(LinkstateAddressFamily.class, LinkstateSubsequentAddressFamily.class,
-                               new LinkstateNlriParser(false)));
-               regs.add(nlriReg.registerNlriParser(LinkstateAddressFamily.class, MplsLabeledVpnSubsequentAddressFamily.class,
-                               new LinkstateNlriParser(true)));
 
                final AttributeRegistry attrReg = context.getAttributeRegistry();
-               regs.add(attrReg.registerAttributeParser(OriginAttributeParser.TYPE, new OriginAttributeParser()));
-               regs.add(attrReg.registerAttributeParser(AsPathAttributeParser.TYPE, new AsPathAttributeParser()));
-               regs.add(attrReg.registerAttributeParser(NextHopAttributeParser.TYPE, new NextHopAttributeParser()));
-               regs.add(attrReg.registerAttributeParser(MultiExitDiscriminatorAttributeParser.TYPE,
+               regs.add(context.registerAttributeParser(OriginAttributeParser.TYPE, new OriginAttributeParser()));
+               regs.add(context.registerAttributeParser(AsPathAttributeParser.TYPE, new AsPathAttributeParser()));
+               regs.add(context.registerAttributeParser(NextHopAttributeParser.TYPE, new NextHopAttributeParser()));
+               regs.add(context.registerAttributeParser(MultiExitDiscriminatorAttributeParser.TYPE,
                                new MultiExitDiscriminatorAttributeParser()));
-               regs.add(attrReg.registerAttributeParser(LocalPreferenceAttributeParser.TYPE, new LocalPreferenceAttributeParser()));
-               regs.add(attrReg.registerAttributeParser(AtomicAggregateAttributeParser.TYPE, new AtomicAggregateAttributeParser()));
-               regs.add(attrReg.registerAttributeParser(AggregatorAttributeParser.TYPE, new AggregatorAttributeParser()));
-               regs.add(attrReg.registerAttributeParser(CommunitiesAttributeParser.TYPE, new CommunitiesAttributeParser()));
-               regs.add(attrReg.registerAttributeParser(OriginatorIdAttributeParser.TYPE, new OriginatorIdAttributeParser()));
-               regs.add(attrReg.registerAttributeParser(ClusterIdAttributeParser.TYPE, new ClusterIdAttributeParser()));
-               regs.add(attrReg.registerAttributeParser(MPReachAttributeParser.TYPE, new MPReachAttributeParser(nlriReg)));
-               regs.add(attrReg.registerAttributeParser(MPUnreachAttributeParser.TYPE, new MPUnreachAttributeParser(nlriReg)));
-               regs.add(attrReg.registerAttributeParser(ExtendedCommunitiesAttributeParser.TYPE, new ExtendedCommunitiesAttributeParser()));
-               regs.add(attrReg.registerAttributeParser(AS4AggregatorAttributeParser.TYPE, new AS4AggregatorAttributeParser()));
-               regs.add(attrReg.registerAttributeParser(AS4PathAttributeParser.TYPE, new AS4PathAttributeParser()));
-               regs.add(attrReg.registerAttributeParser(LinkstateAttributeParser.TYPE, new LinkstateAttributeParser()));
+               regs.add(context.registerAttributeParser(LocalPreferenceAttributeParser.TYPE, new LocalPreferenceAttributeParser()));
+               regs.add(context.registerAttributeParser(AtomicAggregateAttributeParser.TYPE, new AtomicAggregateAttributeParser()));
+               regs.add(context.registerAttributeParser(AggregatorAttributeParser.TYPE, new AggregatorAttributeParser()));
+               regs.add(context.registerAttributeParser(CommunitiesAttributeParser.TYPE, new CommunitiesAttributeParser()));
+               regs.add(context.registerAttributeParser(OriginatorIdAttributeParser.TYPE, new OriginatorIdAttributeParser()));
+               regs.add(context.registerAttributeParser(ClusterIdAttributeParser.TYPE, new ClusterIdAttributeParser()));
+               regs.add(context.registerAttributeParser(MPReachAttributeParser.TYPE, new MPReachAttributeParser(nlriReg)));
+               regs.add(context.registerAttributeParser(MPUnreachAttributeParser.TYPE, new MPUnreachAttributeParser(nlriReg)));
+               regs.add(context.registerAttributeParser(ExtendedCommunitiesAttributeParser.TYPE, new ExtendedCommunitiesAttributeParser()));
+               regs.add(context.registerAttributeParser(AS4AggregatorAttributeParser.TYPE, new AS4AggregatorAttributeParser()));
+               regs.add(context.registerAttributeParser(AS4PathAttributeParser.TYPE, new AS4PathAttributeParser()));
 
                final CapabilityRegistry capReg = context.getCapabilityRegistry();
                final MultiProtocolCapabilityHandler multi = new MultiProtocolCapabilityHandler(afiReg, safiReg);
-               regs.add(capReg.registerCapabilityParser(MultiProtocolCapabilityHandler.CODE, multi));
-               regs.add(capReg.registerCapabilitySerializer(CMultiprotocol.class, multi));
+               regs.add(context.registerCapabilityParser(MultiProtocolCapabilityHandler.CODE, multi));
+               regs.add(context.registerCapabilitySerializer(CMultiprotocol.class, multi));
 
                final As4CapabilityHandler as4 = new As4CapabilityHandler();
-               regs.add(capReg.registerCapabilityParser(As4CapabilityHandler.CODE, as4));
-               regs.add(capReg.registerCapabilitySerializer(CAs4Bytes.class, as4));
+               regs.add(context.registerCapabilityParser(As4CapabilityHandler.CODE, as4));
+               regs.add(context.registerCapabilitySerializer(CAs4Bytes.class, as4));
 
                final ParameterRegistry paramReg = context.getParameterRegistry();
                final CapabilityParameterParser cpp = new CapabilityParameterParser(capReg);
-               regs.add(paramReg.registerParameterParser(CapabilityParameterParser.TYPE, cpp));
-               regs.add(paramReg.registerParameterSerializer(BgpParameters.class, cpp));
+               regs.add(context.registerParameterParser(CapabilityParameterParser.TYPE, cpp));
+               regs.add(context.registerParameterSerializer(BgpParameters.class, cpp));
 
-               final MessageRegistry msgReg = context.getMessageRegistry();
                final BGPOpenMessageParser omp = new BGPOpenMessageParser(paramReg);
-               regs.add(msgReg.registerMessageParser(BGPOpenMessageParser.TYPE, omp));
-               regs.add(msgReg.registerMessageSerializer(Open.class, omp));
+               regs.add(context.registerMessageParser(BGPOpenMessageParser.TYPE, omp));
+               regs.add(context.registerMessageSerializer(Open.class, omp));
 
                final BGPUpdateMessageParser ump = new BGPUpdateMessageParser(attrReg);
-               regs.add(msgReg.registerMessageParser(BGPUpdateMessageParser.TYPE, ump));
+               regs.add(context.registerMessageParser(BGPUpdateMessageParser.TYPE, ump));
                // Serialization of Update message is not supported
                // regs.add(msgReg.registerMessageSerializer(Update.class, ump));
 
                final BGPNotificationMessageParser nmp = new BGPNotificationMessageParser();
-               regs.add(msgReg.registerMessageParser(BGPNotificationMessageParser.TYPE, nmp));
-               regs.add(msgReg.registerMessageSerializer(Notify.class, nmp));
+               regs.add(context.registerMessageParser(BGPNotificationMessageParser.TYPE, nmp));
+               regs.add(context.registerMessageSerializer(Notify.class, nmp));
 
                final BGPKeepAliveMessageParser kamp = new BGPKeepAliveMessageParser();
-               regs.add(msgReg.registerMessageParser(BGPKeepAliveMessageParser.TYPE, kamp));
-               regs.add(msgReg.registerMessageSerializer(Keepalive.class, kamp));
+               regs.add(context.registerMessageParser(BGPKeepAliveMessageParser.TYPE, kamp));
+               regs.add(context.registerMessageSerializer(Keepalive.class, kamp));
 
                registrations = regs;
        }
diff --git a/bgp/parser-impl/src/main/java/org/opendaylight/protocol/bgp/parser/impl/OSGiActivator.java b/bgp/parser-impl/src/main/java/org/opendaylight/protocol/bgp/parser/impl/OSGiActivator.java
new file mode 100644 (file)
index 0000000..c07792e
--- /dev/null
@@ -0,0 +1,26 @@
+/*
+ * Copyright (c) 2013 Cisco Systems, Inc. and others.  All rights reserved.
+ *
+ * This program and the accompanying materials are made available under the
+ * terms of the Eclipse Public License v1.0 which accompanies this distribution,
+ * and is available at http://www.eclipse.org/legal/epl-v10.html
+ */
+package org.opendaylight.protocol.bgp.parser.impl;
+
+import org.opendaylight.protocol.bgp.parser.spi.BGPExtensionProviderActivator;
+import org.opendaylight.protocol.bgp.parser.spi.BGPExtensionProviderContext;
+import org.opendaylight.protocol.bgp.parser.spi.osgi.AbstractOSGiBGPExtensionProviderActivator;
+
+public final class OSGiActivator extends AbstractOSGiBGPExtensionProviderActivator {
+       private final BGPExtensionProviderActivator activator = new Activator();
+
+       @Override
+       public void start(final BGPExtensionProviderContext context) throws Exception {
+               activator.start(context);
+       }
+
+       @Override
+       public void stop() throws Exception {
+               activator.stop();
+       }
+}
diff --git a/bgp/parser-impl/src/main/java/org/opendaylight/protocol/bgp/parser/impl/SingletonProviderContext.java b/bgp/parser-impl/src/main/java/org/opendaylight/protocol/bgp/parser/impl/SingletonProviderContext.java
deleted file mode 100644 (file)
index 122e315..0000000
+++ /dev/null
@@ -1,80 +0,0 @@
-/*
- * Copyright (c) 2013 Cisco Systems, Inc. and others.  All rights reserved.
- *
- * This program and the accompanying materials are made available under the
- * terms of the Eclipse Public License v1.0 which accompanies this distribution,
- * and is available at http://www.eclipse.org/legal/epl-v10.html
- */
-package org.opendaylight.protocol.bgp.parser.impl;
-
-import org.opendaylight.protocol.bgp.parser.spi.AddressFamilyRegistry;
-import org.opendaylight.protocol.bgp.parser.spi.AttributeRegistry;
-import org.opendaylight.protocol.bgp.parser.spi.CapabilityRegistry;
-import org.opendaylight.protocol.bgp.parser.spi.MessageRegistry;
-import org.opendaylight.protocol.bgp.parser.spi.NlriRegistry;
-import org.opendaylight.protocol.bgp.parser.spi.ParameterRegistry;
-import org.opendaylight.protocol.bgp.parser.spi.ProviderContext;
-import org.opendaylight.protocol.bgp.parser.spi.SubsequentAddressFamilyRegistry;
-
-public final class SingletonProviderContext implements ProviderContext {
-       private static final class Holder {
-               private static final ProviderContext INSTANCE;
-
-               static {
-                       final ProviderContext pc = new SingletonProviderContext();
-                       new ActivatorImpl().start(pc);
-                       INSTANCE = pc;
-               }
-       }
-
-       private final AddressFamilyRegistry afiReg = new SimpleAddressFamilyRegistry();
-       private final AttributeRegistry attrReg = new SimpleAttributeRegistry();
-       private final CapabilityRegistry capReg = new SimpleCapabilityRegistry();
-       private final MessageRegistry msgReg = new SimpleMessageRegistry();
-       private final NlriRegistry nlriReg;
-       private final ParameterRegistry paramReg = new SimpleParameterRegistry();
-       private final SubsequentAddressFamilyRegistry safiReg= new SimpleSubsequentAddressFamilyRegistry();
-
-       private SingletonProviderContext() {
-               nlriReg = new SimpleNlriRegistry(afiReg, safiReg);
-       }
-
-       public static ProviderContext getInstance() {
-               return Holder.INSTANCE;
-       }
-
-       @Override
-       public AddressFamilyRegistry getAddressFamilyRegistry() {
-               return afiReg;
-       }
-
-       @Override
-       public AttributeRegistry getAttributeRegistry() {
-               return attrReg;
-       }
-
-       @Override
-       public CapabilityRegistry getCapabilityRegistry() {
-               return capReg;
-       }
-
-       @Override
-       public MessageRegistry getMessageRegistry() {
-               return msgReg;
-       }
-
-       @Override
-       public NlriRegistry getNlriRegistry() {
-               return nlriReg;
-       }
-
-       @Override
-       public ParameterRegistry getParameterRegistry() {
-               return paramReg;
-       }
-
-       @Override
-       public SubsequentAddressFamilyRegistry getSubsequentAddressFamilyRegistry() {
-               return safiReg;
-       }
-}
diff --git a/bgp/parser-impl/src/main/resources/META-INF/services/org.opendaylight.protocol.bgp.parser.spi.BGPExtensionProviderActivator b/bgp/parser-impl/src/main/resources/META-INF/services/org.opendaylight.protocol.bgp.parser.spi.BGPExtensionProviderActivator
new file mode 100644 (file)
index 0000000..3288b15
--- /dev/null
@@ -0,0 +1 @@
+org.opendaylight.protocol.bgp.parser.impl.Activator
index 304b90d72414a4e35a9ff1a55019a8f9d585bd7f..6be820c6668b1e7b32b78017ae4020cff06e71cc 100644 (file)
@@ -26,6 +26,7 @@ import org.opendaylight.protocol.bgp.parser.BgpTableTypeImpl;
 import org.opendaylight.protocol.bgp.parser.impl.message.BGPUpdateMessageParser;
 import org.opendaylight.protocol.bgp.parser.spi.MessageRegistry;
 import org.opendaylight.protocol.bgp.parser.spi.MessageUtil;
+import org.opendaylight.protocol.bgp.parser.spi.pojo.BGPExtensionConsumerContextImpl;
 import org.opendaylight.protocol.util.ByteArray;
 import org.opendaylight.yang.gen.v1.urn.ietf.params.xml.ns.yang.ietf.inet.types.rev100924.AsNumber;
 import org.opendaylight.yang.gen.v1.urn.ietf.params.xml.ns.yang.ietf.inet.types.rev100924.Ipv4Address;
@@ -84,7 +85,7 @@ public class BGPParserTest {
 
        @BeforeClass
        public static void setUp() throws Exception {
-               updateParser = new BGPUpdateMessageParser(SingletonProviderContext.getInstance().getAttributeRegistry());
+               updateParser = new BGPUpdateMessageParser(BGPExtensionConsumerContextImpl.getSingletonInstance().getAttributeRegistry());
 
                for (int i = 1; i <= COUNTER; i++) {
                        final String name = "/up" + i + ".bin";
@@ -160,7 +161,7 @@ public class BGPParserTest {
                final byte[] body = ByteArray.cutBytes(inputBytes.get(0), MessageUtil.COMMON_HEADER_LENGTH);
                final int messageLength = ByteArray.bytesToInt(ByteArray.subByte(inputBytes.get(0), MessageUtil.MARKER_LENGTH,
                                MessageUtil.LENGTH_FIELD_LENGTH));
-               final Update message = this.updateParser.parseMessageBody(body, messageLength);
+               final Update message = BGPParserTest.updateParser.parseMessageBody(body, messageLength);
 
                // check fields
 
@@ -290,7 +291,7 @@ public class BGPParserTest {
                final byte[] body = ByteArray.cutBytes(inputBytes.get(1), MessageUtil.COMMON_HEADER_LENGTH);
                final int messageLength = ByteArray.bytesToInt(ByteArray.subByte(inputBytes.get(1), MessageUtil.MARKER_LENGTH,
                                MessageUtil.LENGTH_FIELD_LENGTH));
-               final Update message = this.updateParser.parseMessageBody(body, messageLength);
+               final Update message = BGPParserTest.updateParser.parseMessageBody(body, messageLength);
                // check fields
 
                assertNull(message.getWithdrawnRoutes());
@@ -399,7 +400,7 @@ public class BGPParserTest {
                final byte[] body = ByteArray.cutBytes(inputBytes.get(2), MessageUtil.COMMON_HEADER_LENGTH);
                final int messageLength = ByteArray.bytesToInt(ByteArray.subByte(inputBytes.get(2), MessageUtil.MARKER_LENGTH,
                                MessageUtil.LENGTH_FIELD_LENGTH));
-               final Update message = this.updateParser.parseMessageBody(body, messageLength);
+               final Update message = BGPParserTest.updateParser.parseMessageBody(body, messageLength);
 
                // check fields
                assertNull(message.getWithdrawnRoutes());
@@ -505,7 +506,7 @@ public class BGPParserTest {
                final byte[] body = ByteArray.cutBytes(inputBytes.get(3), MessageUtil.COMMON_HEADER_LENGTH);
                final int messageLength = ByteArray.bytesToInt(ByteArray.subByte(inputBytes.get(3), MessageUtil.MARKER_LENGTH,
                                MessageUtil.LENGTH_FIELD_LENGTH));
-               final Update message = this.updateParser.parseMessageBody(body, messageLength);
+               final Update message = BGPParserTest.updateParser.parseMessageBody(body, messageLength);
 
                // check fields
 
@@ -586,7 +587,7 @@ public class BGPParserTest {
                final byte[] body = ByteArray.cutBytes(inputBytes.get(4), MessageUtil.COMMON_HEADER_LENGTH);
                final int messageLength = ByteArray.bytesToInt(ByteArray.subByte(inputBytes.get(4), MessageUtil.MARKER_LENGTH,
                                MessageUtil.LENGTH_FIELD_LENGTH));
-               final Update message = this.updateParser.parseMessageBody(body, messageLength);
+               final Update message = BGPParserTest.updateParser.parseMessageBody(body, messageLength);
 
                // attributes
 
@@ -615,7 +616,7 @@ public class BGPParserTest {
                final byte[] body = ByteArray.cutBytes(inputBytes.get(5), MessageUtil.COMMON_HEADER_LENGTH);
                final int messageLength = ByteArray.bytesToInt(ByteArray.subByte(inputBytes.get(5), MessageUtil.MARKER_LENGTH,
                                MessageUtil.LENGTH_FIELD_LENGTH));
-               final Update message = this.updateParser.parseMessageBody(body, messageLength);
+               final Update message = BGPParserTest.updateParser.parseMessageBody(body, messageLength);
 
                assertEquals(new UpdateBuilder().build(), message);
        }
@@ -641,7 +642,7 @@ public class BGPParserTest {
                final byte[] body = ByteArray.cutBytes(inputBytes.get(6), MessageUtil.COMMON_HEADER_LENGTH);
                final int messageLength = ByteArray.bytesToInt(ByteArray.subByte(inputBytes.get(6), MessageUtil.MARKER_LENGTH,
                                MessageUtil.LENGTH_FIELD_LENGTH));
-               final Update message = this.updateParser.parseMessageBody(body, messageLength);
+               final Update message = BGPParserTest.updateParser.parseMessageBody(body, messageLength);
 
                // check fields
 
@@ -673,7 +674,7 @@ public class BGPParserTest {
                final byte[] body = ByteArray.cutBytes(inputBytes.get(7), MessageUtil.COMMON_HEADER_LENGTH);
                final int messageLength = ByteArray.bytesToInt(ByteArray.subByte(inputBytes.get(7), MessageUtil.MARKER_LENGTH,
                                MessageUtil.LENGTH_FIELD_LENGTH));
-               final Update message = this.updateParser.parseMessageBody(body, messageLength);
+               final Update message = BGPParserTest.updateParser.parseMessageBody(body, messageLength);
 
                final Class<? extends AddressFamily> afi = message.getPathAttributes().getAugmentation(PathAttributes1.class).getMpReachNlri().getAfi();
                final SubsequentAddressFamily safi = message.getPathAttributes().getAugmentation(PathAttributes1.class).getMpReachNlri().getSafi().newInstance();
@@ -838,7 +839,7 @@ public class BGPParserTest {
                final byte[] body = ByteArray.cutBytes(inputBytes.get(8), MessageUtil.COMMON_HEADER_LENGTH);
                final int messageLength = ByteArray.bytesToInt(ByteArray.subByte(inputBytes.get(8), MessageUtil.MARKER_LENGTH,
                                MessageUtil.LENGTH_FIELD_LENGTH));
-               final Update message = this.updateParser.parseMessageBody(body, messageLength);
+               final Update message = BGPParserTest.updateParser.parseMessageBody(body, messageLength);
 
                // check fields
 
@@ -977,7 +978,7 @@ public class BGPParserTest {
                final byte[] body = ByteArray.cutBytes(inputBytes.get(9), MessageUtil.COMMON_HEADER_LENGTH);
                final int messageLength = ByteArray.bytesToInt(ByteArray.subByte(inputBytes.get(9), MessageUtil.MARKER_LENGTH,
                                MessageUtil.LENGTH_FIELD_LENGTH));
-               final Update message = this.updateParser.parseMessageBody(body, messageLength);
+               final Update message = BGPParserTest.updateParser.parseMessageBody(body, messageLength);
 
                // check fields
 
@@ -1057,7 +1058,7 @@ public class BGPParserTest {
         */
        @Test
        public void testOpenMessage() throws Exception {
-               final MessageRegistry msgReg = SingletonProviderContext.getInstance().getMessageRegistry();
+               final MessageRegistry msgReg = BGPExtensionConsumerContextImpl.getSingletonInstance().getMessageRegistry();
                final Open open = (Open) msgReg.parseMessage(inputBytes.get(13));
                final Set<BgpTableType> types = Sets.newHashSet();
                for (final BgpParameters param : open.getBgpParameters()) {
index 551c96c8307991d3d34e648a156a050ea566a4e7..a2e72b1b269d57e35b98f7caa57292766030d60d 100644 (file)
@@ -21,6 +21,7 @@ import org.opendaylight.protocol.bgp.parser.BGPDocumentedException;
 import org.opendaylight.protocol.bgp.parser.BgpTableTypeImpl;
 import org.opendaylight.protocol.bgp.parser.impl.message.update.CommunitiesParser;
 import org.opendaylight.protocol.bgp.parser.spi.MessageRegistry;
+import org.opendaylight.protocol.bgp.parser.spi.pojo.BGPExtensionConsumerContextImpl;
 import org.opendaylight.protocol.framework.DeserializerException;
 import org.opendaylight.protocol.framework.DocumentedException;
 import org.opendaylight.protocol.util.ByteList;
@@ -220,7 +221,7 @@ public class ComplementaryTest {
 
        @Test
        public void testBGPHeaderParser() throws IOException {
-               final MessageRegistry msgReg = SingletonProviderContext.getInstance().getMessageRegistry();
+               final MessageRegistry msgReg = BGPExtensionConsumerContextImpl.getSingletonInstance().getMessageRegistry();
                try {
                        msgReg.parseMessage(new byte[] { (byte) 0, (byte) 0 });
                        fail("Exception should have occured.");
@@ -249,7 +250,7 @@ public class ComplementaryTest {
 
        @Test
        public void testMessageParser() throws IOException {
-               final MessageRegistry msgReg = SingletonProviderContext.getInstance().getMessageRegistry();
+               final MessageRegistry msgReg = BGPExtensionConsumerContextImpl.getSingletonInstance().getMessageRegistry();
                String ex = "";
                try {
                        msgReg.serializeMessage(null);
index a233d114b7fbfaed8372a434b77c81d5ed9bdea6..1b4a458edc36cff4882a6bb01cfde701a82ec814 100644 (file)
@@ -14,6 +14,7 @@ import static org.junit.Assert.fail;
 import org.junit.Test;
 import org.opendaylight.protocol.bgp.parser.BGPDocumentedException;
 import org.opendaylight.protocol.bgp.parser.BGPParsingException;
+import org.opendaylight.protocol.bgp.parser.spi.pojo.BGPExtensionConsumerContextImpl;
 
 /*
  * To test incorrect values.
@@ -22,7 +23,7 @@ public class PathAttributeParserTest {
        @Test
        public void testOriginParser() {
                try {
-                       SingletonProviderContext.getInstance().getAttributeRegistry().parseAttributes(new byte[] { 0x40, 0x01, 0x01, 0x04 });
+                       BGPExtensionConsumerContextImpl.getSingletonInstance().getAttributeRegistry().parseAttributes(new byte[] { 0x40, 0x01, 0x01, 0x04 });
                        fail("This needs to fail.");
                } catch (final BGPDocumentedException e) {
                        assertEquals("Unknown Origin type.", e.getMessage());
index 8b0309b1e8ac2e19744ba543fb77689a9d999455..dfc55113ba5a6a1f5ea78fd5d80cf4f651acaf8c 100644 (file)
                        <artifactId>slf4j-api</artifactId>
                        <version>${slf4j.version}</version>
         </dependency>
+        <dependency>
+            <groupId>org.osgi</groupId>
+            <artifactId>org.osgi.core</artifactId>
+            <version>${osgi.version}</version>
+            <scope>provided</scope>
+        </dependency>
        </dependencies>
 
        <build>
index e6e84a45851d207bf7bfa6eccf4c0d961b50c244..105444ba9d2a1fa3c76a09c71c82c3771f9db520 100644 (file)
@@ -10,8 +10,6 @@ package org.opendaylight.protocol.bgp.parser.spi;
 import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.bgp.types.rev130919.AddressFamily;
 
 public interface AddressFamilyRegistry {
-       public AutoCloseable registerAddressFamily(Class<? extends AddressFamily> clazz, int number);
-
        public Class<? extends AddressFamily> classForFamily(int number);
        public Integer numberForClass(Class<? extends AddressFamily> clazz);
 }
index ac479953528859188ec0e0fab8cff826b8a2ecaf..60305e06cc56825f9ed75ec27c220b40c71e87d0 100644 (file)
@@ -13,9 +13,6 @@ import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.bgp.mess
 import org.opendaylight.yangtools.yang.binding.DataObject;
 
 public interface AttributeRegistry {
-       public AutoCloseable registerAttributeParser(int attributeType, AttributeParser parser);
-       public AutoCloseable registerAttributeSerializer(Class<? extends DataObject> attributeClass, AttributeSerializer serializer);
-
        public PathAttributes parseAttributes(final byte[] bytes) throws BGPDocumentedException, BGPParsingException;
        public byte[] serializeAttribute(DataObject attribute);
 }
similarity index 68%
rename from bgp/parser-spi/src/main/java/org/opendaylight/protocol/bgp/parser/spi/ProviderActivator.java
rename to bgp/parser-spi/src/main/java/org/opendaylight/protocol/bgp/parser/spi/BGPExtensionConsumerActivator.java
index 6b0912c263adb2d56124fd7085c3562115abf2fb..29fcdae40ffd3cae9a8dfc2760b0ea903a32bd5d 100644 (file)
@@ -7,7 +7,7 @@
  */
 package org.opendaylight.protocol.bgp.parser.spi;
 
-public interface ProviderActivator {
-       public void start(ProviderContext context);
-       public void stop();
+public interface BGPExtensionConsumerActivator {
+       public void start(BGPExtensionConsumerContext context) throws Exception;
+       public void stop() throws Exception;
 }
\ No newline at end of file
similarity index 93%
rename from bgp/parser-spi/src/main/java/org/opendaylight/protocol/bgp/parser/spi/ProviderContext.java
rename to bgp/parser-spi/src/main/java/org/opendaylight/protocol/bgp/parser/spi/BGPExtensionConsumerContext.java
index 4df2143afa79cc0906e52f4096a62203eb89616c..94d09d54acb5ed068a7f75b9e61320832bb95b6d 100644 (file)
@@ -7,7 +7,7 @@
  */
 package org.opendaylight.protocol.bgp.parser.spi;
 
-public interface ProviderContext {
+public interface BGPExtensionConsumerContext {
        public AddressFamilyRegistry getAddressFamilyRegistry();
        public AttributeRegistry getAttributeRegistry();
        public CapabilityRegistry getCapabilityRegistry();
diff --git a/bgp/parser-spi/src/main/java/org/opendaylight/protocol/bgp/parser/spi/BGPExtensionProviderActivator.java b/bgp/parser-spi/src/main/java/org/opendaylight/protocol/bgp/parser/spi/BGPExtensionProviderActivator.java
new file mode 100644 (file)
index 0000000..827b9f9
--- /dev/null
@@ -0,0 +1,13 @@
+/*
+ * Copyright (c) 2013 Cisco Systems, Inc. and others.  All rights reserved.
+ *
+ * This program and the accompanying materials are made available under the
+ * terms of the Eclipse Public License v1.0 which accompanies this distribution,
+ * and is available at http://www.eclipse.org/legal/epl-v10.html
+ */
+package org.opendaylight.protocol.bgp.parser.spi;
+
+public interface BGPExtensionProviderActivator {
+       public void start(BGPExtensionProviderContext context) throws Exception;
+       public void stop() throws Exception;
+}
\ No newline at end of file
diff --git a/bgp/parser-spi/src/main/java/org/opendaylight/protocol/bgp/parser/spi/BGPExtensionProviderContext.java b/bgp/parser-spi/src/main/java/org/opendaylight/protocol/bgp/parser/spi/BGPExtensionProviderContext.java
new file mode 100644 (file)
index 0000000..e9e4fc8
--- /dev/null
@@ -0,0 +1,35 @@
+/*
+ * Copyright (c) 2013 Cisco Systems, Inc. and others.  All rights reserved.
+ *
+ * This program and the accompanying materials are made available under the
+ * terms of the Eclipse Public License v1.0 which accompanies this distribution,
+ * and is available at http://www.eclipse.org/legal/epl-v10.html
+ */
+package org.opendaylight.protocol.bgp.parser.spi;
+
+import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.bgp.message.rev130918.open.BgpParameters;
+import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.bgp.message.rev130918.open.bgp.parameters.CParameters;
+import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.bgp.types.rev130919.AddressFamily;
+import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.bgp.types.rev130919.SubsequentAddressFamily;
+import org.opendaylight.yangtools.yang.binding.DataObject;
+import org.opendaylight.yangtools.yang.binding.Notification;
+
+public interface BGPExtensionProviderContext extends BGPExtensionConsumerContext {
+       public AutoCloseable registerAddressFamily(Class<? extends AddressFamily> clazz, int number);
+       public AutoCloseable registerSubsequentAddressFamily(Class<? extends SubsequentAddressFamily> clazz, int number);
+
+       public AutoCloseable registerAttributeParser(int attributeType, AttributeParser parser);
+       public AutoCloseable registerAttributeSerializer(Class<? extends DataObject> attributeClass, AttributeSerializer serializer);
+
+       public AutoCloseable registerCapabilityParser(int capabilityType, CapabilityParser parser);
+       public AutoCloseable registerCapabilitySerializer(Class<? extends CParameters> capabilityClass, CapabilitySerializer serializer);
+
+       public AutoCloseable registerMessageParser(int messageType, MessageParser parser);
+       public AutoCloseable registerMessageSerializer(Class<? extends Notification> messageClass, MessageSerializer serializer);
+
+       public AutoCloseable registerNlriParser(Class<? extends AddressFamily> afi, Class<? extends SubsequentAddressFamily> safi, NlriParser parser);
+       public AutoCloseable registerNlriSerializer(Class<? extends DataObject> nlriClass, NlriSerializer serializer);
+
+       public AutoCloseable registerParameterParser(int parameterType, ParameterParser parser);
+       public AutoCloseable registerParameterSerializer(Class<? extends BgpParameters> paramClass, ParameterSerializer serializer);
+}
index 2302ca48f8d9603c07eba32717e7d50fa781ae33..5d255c0fb497a0747fda6c5eb8309e95202b5c25 100644 (file)
@@ -12,9 +12,6 @@ import org.opendaylight.protocol.bgp.parser.BGPParsingException;
 import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.bgp.message.rev130918.open.bgp.parameters.CParameters;
 
 public interface CapabilityRegistry {
-       public AutoCloseable registerCapabilityParser(int capabilityType, CapabilityParser parser);
-       public AutoCloseable registerCapabilitySerializer(Class<? extends CParameters> capabilityClass, CapabilitySerializer serializer);
-
        public CParameters parseCapability(final int type, final byte[] bytes) throws BGPDocumentedException, BGPParsingException;
        public byte[] serializeCapability(CParameters capability);
 }
index fe8fba38e4477434bf30eca11db2ad3b3bfd4ecc..95ba50ef90bd3f2e32c93f3f867de22677361c19 100644 (file)
@@ -12,9 +12,6 @@ import org.opendaylight.protocol.framework.DeserializerException;
 import org.opendaylight.yangtools.yang.binding.Notification;
 
 public interface MessageRegistry {
-       public AutoCloseable registerMessageParser(int messageType, MessageParser parser);
-       public AutoCloseable registerMessageSerializer(Class<? extends Notification> messageClass, MessageSerializer serializer);
-
        public Notification parseMessage(final byte[] bytes) throws BGPDocumentedException, DeserializerException;
        public byte[] serializeMessage(Notification message);
 }
index 880149437e69869cd7d3fdc18edeedd012ade021..d6d7f0bc76244c51a3501e1b6d22f11ce1871611 100644 (file)
@@ -10,14 +10,8 @@ package org.opendaylight.protocol.bgp.parser.spi;
 import org.opendaylight.protocol.bgp.parser.BGPParsingException;
 import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.bgp.multiprotocol.rev130918.update.path.attributes.MpReachNlri;
 import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.bgp.multiprotocol.rev130918.update.path.attributes.MpUnreachNlri;
-import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.bgp.types.rev130919.AddressFamily;
-import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.bgp.types.rev130919.SubsequentAddressFamily;
 
 public interface NlriRegistry {
-       public AutoCloseable registerNlriParser(Class<? extends AddressFamily> afi,
-                       Class<? extends SubsequentAddressFamily> safi, NlriParser parser);
-       //      public AutoCloseable registerNlriSerializer(Class<? extends DataObject> nlriClass, NlriSerializer serializer);
-
        public MpUnreachNlri parseMpUnreach(final byte[] bytes) throws BGPParsingException;
        public MpReachNlri parseMpReach(final byte[] bytes) throws BGPParsingException;
        //      public byte[] serializeNlri(DataObject attribute);
index 7c3c83cb86178b66f2f0324b4b7646d239577105..f0729b2992e619123bf1d70e009bef12bcb493cd 100644 (file)
@@ -12,9 +12,6 @@ import org.opendaylight.protocol.bgp.parser.BGPParsingException;
 import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.bgp.message.rev130918.open.BgpParameters;
 
 public interface ParameterRegistry {
-       public AutoCloseable registerParameterParser(int parameterType, ParameterParser parser);
-       public AutoCloseable registerParameterSerializer(Class<? extends BgpParameters> paramClass, ParameterSerializer serializer);
-
        public BgpParameters parseParameter(int parameterType, final byte[] bytes) throws BGPParsingException, BGPDocumentedException;
        public byte[] serializeParameter(final BgpParameters parameter);
 }
index c017c465d2b18e3bdb8523db42e89b805e0ce1d6..4d8e9518cfbf7511333689f3631efb91642ccd39 100644 (file)
@@ -10,8 +10,6 @@ package org.opendaylight.protocol.bgp.parser.spi;
 import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.bgp.types.rev130919.SubsequentAddressFamily;
 
 public interface SubsequentAddressFamilyRegistry {
-       public AutoCloseable registerSubsequentAddressFamily(Class<? extends SubsequentAddressFamily> clazz, int number);
-
        public Class<? extends SubsequentAddressFamily> classForFamily(int number);
        public Integer numberForClass(Class<? extends SubsequentAddressFamily> clazz);
 }
diff --git a/bgp/parser-spi/src/main/java/org/opendaylight/protocol/bgp/parser/spi/osgi/AbstractOSGiBGPExtensionConsumerActivator.java b/bgp/parser-spi/src/main/java/org/opendaylight/protocol/bgp/parser/spi/osgi/AbstractOSGiBGPExtensionConsumerActivator.java
new file mode 100644 (file)
index 0000000..1199ab2
--- /dev/null
@@ -0,0 +1,37 @@
+/*
+ * Copyright (c) 2013 Cisco Systems, Inc. and others.  All rights reserved.
+ *
+ * This program and the accompanying materials are made available under the
+ * terms of the Eclipse Public License v1.0 which accompanies this distribution,
+ * and is available at http://www.eclipse.org/legal/epl-v10.html
+ */
+package org.opendaylight.protocol.bgp.parser.spi.osgi;
+
+import org.opendaylight.protocol.bgp.parser.spi.BGPExtensionConsumerActivator;
+import org.opendaylight.protocol.bgp.parser.spi.BGPExtensionConsumerContext;
+import org.osgi.framework.BundleActivator;
+import org.osgi.framework.BundleContext;
+
+import com.google.common.base.Preconditions;
+
+public abstract class AbstractOSGiBGPExtensionConsumerActivator implements BundleActivator, BGPExtensionConsumerActivator {
+       private BGPExtensionConsumerContext consumerContext;
+
+       @Override
+       public final void start(final BundleContext context) throws Exception {
+               Preconditions.checkState(consumerContext == null);
+               final BGPExtensionConsumerContext consumerContext = new OSGiBGPExtensionProviderContext(context);
+               start(consumerContext);
+               this.consumerContext = consumerContext;
+       }
+
+       @Override
+       public final void stop(final BundleContext context) throws Exception {
+               Preconditions.checkState(consumerContext != null);
+               try {
+                       stop();
+               } finally {
+                       consumerContext = null;
+               }
+       }
+}
diff --git a/bgp/parser-spi/src/main/java/org/opendaylight/protocol/bgp/parser/spi/osgi/AbstractOSGiBGPExtensionProviderActivator.java b/bgp/parser-spi/src/main/java/org/opendaylight/protocol/bgp/parser/spi/osgi/AbstractOSGiBGPExtensionProviderActivator.java
new file mode 100644 (file)
index 0000000..8fadaff
--- /dev/null
@@ -0,0 +1,37 @@
+/*
+ * Copyright (c) 2013 Cisco Systems, Inc. and others.  All rights reserved.
+ *
+ * This program and the accompanying materials are made available under the
+ * terms of the Eclipse Public License v1.0 which accompanies this distribution,
+ * and is available at http://www.eclipse.org/legal/epl-v10.html
+ */
+package org.opendaylight.protocol.bgp.parser.spi.osgi;
+
+import org.opendaylight.protocol.bgp.parser.spi.BGPExtensionProviderActivator;
+import org.opendaylight.protocol.bgp.parser.spi.BGPExtensionProviderContext;
+import org.osgi.framework.BundleActivator;
+import org.osgi.framework.BundleContext;
+
+import com.google.common.base.Preconditions;
+
+public abstract class AbstractOSGiBGPExtensionProviderActivator implements BundleActivator, BGPExtensionProviderActivator {
+       private BGPExtensionProviderContext providerContext;
+
+       @Override
+       public final void start(final BundleContext context) throws Exception {
+               Preconditions.checkState(providerContext == null);
+               final BGPExtensionProviderContext providerContext = new OSGiBGPExtensionProviderContext(context);
+               start(providerContext);
+               this.providerContext = providerContext;
+       }
+
+       @Override
+       public final void stop(final BundleContext context) throws Exception {
+               Preconditions.checkState(providerContext != null);
+               try {
+                       stop();
+               } finally {
+                       providerContext = null;
+               }
+       }
+}
diff --git a/bgp/parser-spi/src/main/java/org/opendaylight/protocol/bgp/parser/spi/osgi/OSGiBGPExtensionConsumerContext.java b/bgp/parser-spi/src/main/java/org/opendaylight/protocol/bgp/parser/spi/osgi/OSGiBGPExtensionConsumerContext.java
new file mode 100644 (file)
index 0000000..3954f68
--- /dev/null
@@ -0,0 +1,88 @@
+/*
+ * Copyright (c) 2013 Cisco Systems, Inc. and others.  All rights reserved.
+ *
+ * This program and the accompanying materials are made available under the
+ * terms of the Eclipse Public License v1.0 which accompanies this distribution,
+ * and is available at http://www.eclipse.org/legal/epl-v10.html
+ */
+package org.opendaylight.protocol.bgp.parser.spi.osgi;
+
+import org.opendaylight.protocol.bgp.parser.spi.AddressFamilyRegistry;
+import org.opendaylight.protocol.bgp.parser.spi.AttributeRegistry;
+import org.opendaylight.protocol.bgp.parser.spi.BGPExtensionConsumerContext;
+import org.opendaylight.protocol.bgp.parser.spi.CapabilityRegistry;
+import org.opendaylight.protocol.bgp.parser.spi.MessageRegistry;
+import org.opendaylight.protocol.bgp.parser.spi.NlriRegistry;
+import org.opendaylight.protocol.bgp.parser.spi.ParameterRegistry;
+import org.opendaylight.protocol.bgp.parser.spi.SubsequentAddressFamilyRegistry;
+import org.opendaylight.protocol.concepts.AbstractRegistration;
+import org.osgi.framework.BundleContext;
+import org.osgi.framework.ServiceRegistration;
+
+import com.google.common.base.Preconditions;
+
+class OSGiBGPExtensionConsumerContext implements BGPExtensionConsumerContext {
+       protected final BundleContext bundleContext;
+
+       OSGiBGPExtensionConsumerContext(final BundleContext context) {
+               this.bundleContext = Preconditions.checkNotNull(context);
+       }
+
+       protected <T> AutoCloseable register(final Class<T> clazz, final T object) {
+               final ServiceRegistration<T> reg = bundleContext.registerService(clazz, object, null);
+
+               return new AbstractRegistration() {
+                       @Override
+                       protected void removeRegistration() {
+                               reg.unregister();
+                       }
+               };
+       }
+
+       public BundleContext getBundleContext() {
+               return bundleContext;
+       }
+
+       @Override
+       public AddressFamilyRegistry getAddressFamilyRegistry() {
+               // TODO Auto-generated method stub
+               return null;
+       }
+
+       @Override
+       public AttributeRegistry getAttributeRegistry() {
+               // TODO Auto-generated method stub
+               return null;
+       }
+
+       @Override
+       public CapabilityRegistry getCapabilityRegistry() {
+               // TODO Auto-generated method stub
+               return null;
+       }
+
+       @Override
+       public MessageRegistry getMessageRegistry() {
+               // TODO Auto-generated method stub
+               return null;
+       }
+
+       @Override
+       public NlriRegistry getNlriRegistry() {
+               // TODO Auto-generated method stub
+               return null;
+       }
+
+       @Override
+       public ParameterRegistry getParameterRegistry() {
+               // TODO Auto-generated method stub
+               return null;
+       }
+
+       @Override
+       public SubsequentAddressFamilyRegistry getSubsequentAddressFamilyRegistry() {
+               // TODO Auto-generated method stub
+               return null;
+       }
+
+}
diff --git a/bgp/parser-spi/src/main/java/org/opendaylight/protocol/bgp/parser/spi/osgi/OSGiBGPExtensionProviderContext.java b/bgp/parser-spi/src/main/java/org/opendaylight/protocol/bgp/parser/spi/osgi/OSGiBGPExtensionProviderContext.java
new file mode 100644 (file)
index 0000000..8776eb1
--- /dev/null
@@ -0,0 +1,266 @@
+/*
+ * Copyright (c) 2013 Cisco Systems, Inc. and others.  All rights reserved.
+ *
+ * This program and the accompanying materials are made available under the
+ * terms of the Eclipse Public License v1.0 which accompanies this distribution,
+ * and is available at http://www.eclipse.org/legal/epl-v10.html
+ */
+package org.opendaylight.protocol.bgp.parser.spi.osgi;
+
+import org.opendaylight.protocol.bgp.parser.spi.AttributeParser;
+import org.opendaylight.protocol.bgp.parser.spi.AttributeSerializer;
+import org.opendaylight.protocol.bgp.parser.spi.BGPExtensionProviderContext;
+import org.opendaylight.protocol.bgp.parser.spi.CapabilityParser;
+import org.opendaylight.protocol.bgp.parser.spi.CapabilitySerializer;
+import org.opendaylight.protocol.bgp.parser.spi.MessageParser;
+import org.opendaylight.protocol.bgp.parser.spi.MessageSerializer;
+import org.opendaylight.protocol.bgp.parser.spi.NlriParser;
+import org.opendaylight.protocol.bgp.parser.spi.NlriSerializer;
+import org.opendaylight.protocol.bgp.parser.spi.ParameterParser;
+import org.opendaylight.protocol.bgp.parser.spi.ParameterSerializer;
+import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.bgp.message.rev130918.open.BgpParameters;
+import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.bgp.message.rev130918.open.bgp.parameters.CParameters;
+import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.bgp.types.rev130919.AddressFamily;
+import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.bgp.types.rev130919.SubsequentAddressFamily;
+import org.opendaylight.yangtools.yang.binding.DataObject;
+import org.opendaylight.yangtools.yang.binding.Notification;
+import org.osgi.framework.BundleContext;
+
+final class OSGiBGPExtensionProviderContext extends OSGiBGPExtensionConsumerContext implements BGPExtensionProviderContext {
+
+       OSGiBGPExtensionProviderContext(final BundleContext context) {
+               super(context);
+       }
+
+       interface ClassRegistration<T> {
+               public int getRegisteredNumber();
+               public Class<? extends T> getRegisteredClass();
+       }
+
+       interface ParserRegistration<PARSER> {
+               public int getRegisteredNumber();
+               public Class<PARSER> getRegisteredParserClass();
+               public PARSER getRegisteredParserObject();
+       }
+
+       interface SerializerRegistration<SERIALIZER> {
+               public Class<?> getRegisteredObjectClass();
+               public Class<SERIALIZER> getRegisteredSerializerClass();
+               public SERIALIZER getRegisteredSerializer();
+       }
+
+       @Override
+       public AutoCloseable registerAddressFamily(final Class<? extends AddressFamily> clazz, final int number) {
+               return register(ClassRegistration.class, new ClassRegistration<AddressFamily>() {
+                       @Override
+                       public int getRegisteredNumber() {
+                               return number;
+                       }
+                       @Override
+                       public Class<? extends AddressFamily> getRegisteredClass() {
+                               return clazz;
+                       }
+               });
+       }
+
+       @Override
+       public AutoCloseable registerSubsequentAddressFamily(final Class<? extends SubsequentAddressFamily> clazz, final int number) {
+               return register(ClassRegistration.class, new ClassRegistration<SubsequentAddressFamily>() {
+                       @Override
+                       public int getRegisteredNumber() {
+                               return number;
+                       }
+                       @Override
+                       public Class<? extends SubsequentAddressFamily> getRegisteredClass() {
+                               return clazz;
+                       }
+               });
+       }
+
+       @Override
+       public AutoCloseable registerAttributeParser(final int attributeType, final AttributeParser parser) {
+               return register(ParserRegistration.class, new ParserRegistration<AttributeParser>() {
+                       @Override
+                       public int getRegisteredNumber() {
+                               return attributeType;
+                       }
+
+                       @Override
+                       public Class<AttributeParser> getRegisteredParserClass() {
+                               return AttributeParser.class;
+                       }
+
+                       @Override
+                       public AttributeParser getRegisteredParserObject() {
+                               return parser;
+                       }
+               });
+       }
+
+       @Override
+       public AutoCloseable registerAttributeSerializer(final Class<? extends DataObject> attributeClass, final AttributeSerializer serializer) {
+               return register(SerializerRegistration.class, new SerializerRegistration<AttributeSerializer>() {
+                       @Override
+                       public Class<?> getRegisteredObjectClass() {
+                               return attributeClass;
+                       }
+
+                       @Override
+                       public Class<AttributeSerializer> getRegisteredSerializerClass() {
+                               return AttributeSerializer.class;
+                       }
+
+                       @Override
+                       public AttributeSerializer getRegisteredSerializer() {
+                               return serializer;
+                       }
+               });
+       }
+
+       @Override
+       public AutoCloseable registerCapabilityParser(final int capabilityType, final CapabilityParser parser) {
+               return register(ParserRegistration.class, new ParserRegistration<CapabilityParser>() {
+                       @Override
+                       public int getRegisteredNumber() {
+                               return capabilityType;
+                       }
+
+                       @Override
+                       public Class<CapabilityParser> getRegisteredParserClass() {
+                               return CapabilityParser.class;
+                       }
+
+                       @Override
+                       public CapabilityParser getRegisteredParserObject() {
+                               return parser;
+                       }
+               });
+       }
+
+       @Override
+       public AutoCloseable registerCapabilitySerializer(final Class<? extends CParameters> capabilityClass, final CapabilitySerializer serializer) {
+               return register(SerializerRegistration.class, new SerializerRegistration<CapabilitySerializer>() {
+                       @Override
+                       public Class<?> getRegisteredObjectClass() {
+                               return capabilityClass;
+                       }
+
+                       @Override
+                       public Class<CapabilitySerializer> getRegisteredSerializerClass() {
+                               return CapabilitySerializer.class;
+                       }
+
+                       @Override
+                       public CapabilitySerializer getRegisteredSerializer() {
+                               return serializer;
+                       }
+               });
+       }
+
+       @Override
+       public AutoCloseable registerMessageParser(final int messageType, final MessageParser parser) {
+               return register(ParserRegistration.class, new ParserRegistration<MessageParser>() {
+                       @Override
+                       public int getRegisteredNumber() {
+                               return messageType;
+                       }
+
+                       @Override
+                       public Class<MessageParser> getRegisteredParserClass() {
+                               return MessageParser.class;
+                       }
+
+                       @Override
+                       public MessageParser getRegisteredParserObject() {
+                               return parser;
+                       }
+               });
+       }
+
+       @Override
+       public AutoCloseable registerMessageSerializer(final Class<? extends Notification> messageClass, final MessageSerializer serializer) {
+               return register(SerializerRegistration.class, new SerializerRegistration<MessageSerializer>() {
+                       @Override
+                       public Class<?> getRegisteredObjectClass() {
+                               return messageClass;
+                       }
+
+                       @Override
+                       public Class<MessageSerializer> getRegisteredSerializerClass() {
+                               return MessageSerializer.class;
+                       }
+
+                       @Override
+                       public MessageSerializer getRegisteredSerializer() {
+                               return serializer;
+                       }
+               });
+       }
+
+       @Override
+       public AutoCloseable registerNlriParser(final Class<? extends AddressFamily> afi, final Class<? extends SubsequentAddressFamily> safi,
+                       final NlriParser parser) {
+               // TODO Auto-generated method stub
+               return null;
+       }
+
+       @Override
+       public AutoCloseable registerNlriSerializer(final Class<? extends DataObject> nlriClass, final NlriSerializer serializer) {
+               return register(SerializerRegistration.class, new SerializerRegistration<NlriSerializer>() {
+                       @Override
+                       public Class<?> getRegisteredObjectClass() {
+                               return nlriClass;
+                       }
+
+                       @Override
+                       public Class<NlriSerializer> getRegisteredSerializerClass() {
+                               return NlriSerializer.class;
+                       }
+
+                       @Override
+                       public NlriSerializer getRegisteredSerializer() {
+                               return serializer;
+                       }
+               });
+       }
+
+       @Override
+       public AutoCloseable registerParameterParser(final int parameterType, final ParameterParser parser) {
+               return register(ParserRegistration.class, new ParserRegistration<ParameterParser>() {
+                       @Override
+                       public int getRegisteredNumber() {
+                               return parameterType;
+                       }
+
+                       @Override
+                       public Class<ParameterParser> getRegisteredParserClass() {
+                               return ParameterParser.class;
+                       }
+
+                       @Override
+                       public ParameterParser getRegisteredParserObject() {
+                               return parser;
+                       }
+               });
+       }
+
+       @Override
+       public AutoCloseable registerParameterSerializer(final Class<? extends BgpParameters> paramClass, final ParameterSerializer serializer) {
+               return register(SerializerRegistration.class, new SerializerRegistration<ParameterSerializer>() {
+                       @Override
+                       public Class<?> getRegisteredObjectClass() {
+                               return paramClass;
+                       }
+
+                       @Override
+                       public Class<ParameterSerializer> getRegisteredSerializerClass() {
+                               return ParameterSerializer.class;
+                       }
+
+                       @Override
+                       public ParameterSerializer getRegisteredSerializer() {
+                               return serializer;
+                       }
+               });
+       }
+}
similarity index 96%
rename from bgp/parser-impl/src/main/java/org/opendaylight/protocol/bgp/parser/impl/AbstractFamilyRegistry.java
rename to bgp/parser-spi/src/main/java/org/opendaylight/protocol/bgp/parser/spi/pojo/AbstractFamilyRegistry.java
index 39116f84f455f63b96d2cb6c2c6c7d12458198b6..871a20a8dca7ff441053cc6248ff518bd3101122 100644 (file)
@@ -5,7 +5,7 @@
  * terms of the Eclipse Public License v1.0 which accompanies this distribution,
  * and is available at http://www.eclipse.org/legal/epl-v10.html
  */
-package org.opendaylight.protocol.bgp.parser.impl;
+package org.opendaylight.protocol.bgp.parser.spi.pojo;
 
 import java.util.Map;
 import java.util.concurrent.ConcurrentHashMap;
similarity index 98%
rename from bgp/parser-impl/src/main/java/org/opendaylight/protocol/bgp/parser/impl/AbstractMessageRegistry.java
rename to bgp/parser-spi/src/main/java/org/opendaylight/protocol/bgp/parser/spi/pojo/AbstractMessageRegistry.java
index b7b5fc696a1b0912f7d9bdbf86b5e13f7c7979d0..a1c4ed2c870f9635fe5507086b770a5db34c6cf1 100644 (file)
@@ -5,7 +5,7 @@
  * terms of the Eclipse Public License v1.0 which accompanies this distribution,
  * and is available at http://www.eclipse.org/legal/epl-v10.html
  */
-package org.opendaylight.protocol.bgp.parser.impl;
+package org.opendaylight.protocol.bgp.parser.spi.pojo;
 
 import java.util.Arrays;
 
diff --git a/bgp/parser-spi/src/main/java/org/opendaylight/protocol/bgp/parser/spi/pojo/BGPExtensionConsumerContextImpl.java b/bgp/parser-spi/src/main/java/org/opendaylight/protocol/bgp/parser/spi/pojo/BGPExtensionConsumerContextImpl.java
new file mode 100644 (file)
index 0000000..542124b
--- /dev/null
@@ -0,0 +1,174 @@
+/*
+ * Copyright (c) 2013 Cisco Systems, Inc. and others.  All rights reserved.
+ *
+ * This program and the accompanying materials are made available under the
+ * terms of the Eclipse Public License v1.0 which accompanies this distribution,
+ * and is available at http://www.eclipse.org/legal/epl-v10.html
+ */
+package org.opendaylight.protocol.bgp.parser.spi.pojo;
+
+import java.util.ServiceLoader;
+
+import org.opendaylight.protocol.bgp.parser.spi.AddressFamilyRegistry;
+import org.opendaylight.protocol.bgp.parser.spi.AttributeParser;
+import org.opendaylight.protocol.bgp.parser.spi.AttributeRegistry;
+import org.opendaylight.protocol.bgp.parser.spi.AttributeSerializer;
+import org.opendaylight.protocol.bgp.parser.spi.BGPExtensionConsumerContext;
+import org.opendaylight.protocol.bgp.parser.spi.BGPExtensionProviderActivator;
+import org.opendaylight.protocol.bgp.parser.spi.BGPExtensionProviderContext;
+import org.opendaylight.protocol.bgp.parser.spi.CapabilityParser;
+import org.opendaylight.protocol.bgp.parser.spi.CapabilityRegistry;
+import org.opendaylight.protocol.bgp.parser.spi.CapabilitySerializer;
+import org.opendaylight.protocol.bgp.parser.spi.MessageParser;
+import org.opendaylight.protocol.bgp.parser.spi.MessageRegistry;
+import org.opendaylight.protocol.bgp.parser.spi.MessageSerializer;
+import org.opendaylight.protocol.bgp.parser.spi.NlriParser;
+import org.opendaylight.protocol.bgp.parser.spi.NlriRegistry;
+import org.opendaylight.protocol.bgp.parser.spi.NlriSerializer;
+import org.opendaylight.protocol.bgp.parser.spi.ParameterParser;
+import org.opendaylight.protocol.bgp.parser.spi.ParameterRegistry;
+import org.opendaylight.protocol.bgp.parser.spi.ParameterSerializer;
+import org.opendaylight.protocol.bgp.parser.spi.SubsequentAddressFamilyRegistry;
+import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.bgp.message.rev130918.open.BgpParameters;
+import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.bgp.message.rev130918.open.bgp.parameters.CParameters;
+import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.bgp.types.rev130919.AddressFamily;
+import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.bgp.types.rev130919.SubsequentAddressFamily;
+import org.opendaylight.yangtools.yang.binding.DataObject;
+import org.opendaylight.yangtools.yang.binding.Notification;
+
+public final class BGPExtensionConsumerContextImpl implements BGPExtensionProviderContext {
+       private static final class Holder {
+               private static final BGPExtensionConsumerContext INSTANCE;
+
+               static {
+                       try {
+                               INSTANCE = BGPExtensionConsumerContextImpl.create();
+                       } catch (Exception e) {
+                               throw new ExceptionInInitializerError(e);
+                       }
+               }
+       }
+
+       private final SimpleAddressFamilyRegistry afiReg = new SimpleAddressFamilyRegistry();
+       private final SimpleAttributeRegistry attrReg = new SimpleAttributeRegistry();
+       private final SimpleCapabilityRegistry capReg = new SimpleCapabilityRegistry();
+       private final SimpleMessageRegistry msgReg = new SimpleMessageRegistry();
+       private final SimpleSubsequentAddressFamilyRegistry safiReg = new SimpleSubsequentAddressFamilyRegistry();
+       private final SimpleParameterRegistry paramReg = new SimpleParameterRegistry();
+       private final SimpleNlriRegistry nlriReg = new SimpleNlriRegistry(afiReg, safiReg);
+
+       private BGPExtensionConsumerContextImpl() {
+
+       }
+
+       public static BGPExtensionConsumerContext getSingletonInstance() {
+               return Holder.INSTANCE;
+       }
+
+       public static BGPExtensionConsumerContext create() throws Exception {
+               final BGPExtensionConsumerContextImpl ctx = new BGPExtensionConsumerContextImpl();
+
+               final ServiceLoader<BGPExtensionProviderActivator> loader = ServiceLoader.load(BGPExtensionProviderActivator.class);
+               for (BGPExtensionProviderActivator a : loader) {
+                       a.start(ctx);
+               }
+
+               return ctx;
+       }
+
+       @Override
+       public AddressFamilyRegistry getAddressFamilyRegistry() {
+               return afiReg;
+       }
+
+       @Override
+       public AutoCloseable registerAddressFamily(final Class<? extends AddressFamily> clazz, final int number) {
+               return afiReg.registerAddressFamily(clazz, number);
+       }
+
+       @Override
+       public AttributeRegistry getAttributeRegistry() {
+               return attrReg;
+       }
+
+       @Override
+       public AutoCloseable registerAttributeParser(final int attributeType, final AttributeParser parser) {
+               return attrReg.registerAttributeParser(attributeType, parser);
+       }
+
+       @Override
+       public AutoCloseable registerAttributeSerializer(final Class<? extends DataObject> attributeClass, final AttributeSerializer serializer) {
+               return attrReg.registerAttributeSerializer(attributeClass, serializer);
+       }
+
+       @Override
+       public CapabilityRegistry getCapabilityRegistry() {
+               return capReg;
+       }
+
+       @Override
+       public AutoCloseable registerCapabilityParser(final int capabilityType, final CapabilityParser parser) {
+               return capReg.registerCapabilityParser(capabilityType, parser);
+       }
+
+       @Override
+       public AutoCloseable registerCapabilitySerializer(final Class<? extends CParameters> capabilityClass, final CapabilitySerializer serializer) {
+               return capReg.registerCapabilitySerializer(capabilityClass, serializer);
+       }
+
+       @Override
+       public MessageRegistry getMessageRegistry() {
+               return msgReg;
+       }
+
+       @Override
+       public AutoCloseable registerMessageParser(final int messageType, final MessageParser parser) {
+               return msgReg.registerMessageParser(messageType, parser);
+       }
+
+       @Override
+       public AutoCloseable registerMessageSerializer(final Class<? extends Notification> messageClass, final MessageSerializer serializer) {
+               return msgReg.registerMessageSerializer(messageClass, serializer);
+       }
+
+       @Override
+       public NlriRegistry getNlriRegistry() {
+               return nlriReg;
+       }
+
+       @Override
+       public AutoCloseable registerNlriParser(final Class<? extends AddressFamily> afi, final Class<? extends SubsequentAddressFamily> safi,
+                       final NlriParser parser) {
+               return nlriReg.registerNlriParser(afi, safi, parser);
+       }
+
+       @Override
+       public AutoCloseable registerNlriSerializer(final Class<? extends DataObject> nlriClass, final NlriSerializer serializer) {
+               throw new UnsupportedOperationException("NLRI serialization not implemented");
+       }
+
+       @Override
+       public ParameterRegistry getParameterRegistry() {
+               return paramReg;
+       }
+
+       @Override
+       public AutoCloseable registerParameterParser(final int parameterType, final ParameterParser parser) {
+               return paramReg.registerParameterParser(parameterType, parser);
+       }
+
+       @Override
+       public AutoCloseable registerParameterSerializer(final Class<? extends BgpParameters> paramClass, final ParameterSerializer serializer) {
+               return paramReg.registerParameterSerializer(paramClass, serializer);
+       }
+
+       @Override
+       public SubsequentAddressFamilyRegistry getSubsequentAddressFamilyRegistry() {
+               return safiReg;
+       }
+
+       @Override
+       public AutoCloseable registerSubsequentAddressFamily(final Class<? extends SubsequentAddressFamily> clazz, final int number) {
+               return safiReg.registerSubsequentAddressFamily(clazz, number);
+       }
+}
similarity index 74%
rename from bgp/parser-impl/src/main/java/org/opendaylight/protocol/bgp/parser/impl/SimpleAddressFamilyRegistry.java
rename to bgp/parser-spi/src/main/java/org/opendaylight/protocol/bgp/parser/spi/pojo/SimpleAddressFamilyRegistry.java
index 00225385ad1def5eb4b74229cbcc88351bef33fa..a2e896deb76c016a2fc8129faa6444a0d1557815 100644 (file)
@@ -5,16 +5,15 @@
  * terms of the Eclipse Public License v1.0 which accompanies this distribution,
  * and is available at http://www.eclipse.org/legal/epl-v10.html
  */
-package org.opendaylight.protocol.bgp.parser.impl;
+package org.opendaylight.protocol.bgp.parser.spi.pojo;
 
 import org.opendaylight.protocol.bgp.parser.spi.AddressFamilyRegistry;
 import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.bgp.types.rev130919.AddressFamily;
 
 import com.google.common.base.Preconditions;
 
-public final class SimpleAddressFamilyRegistry extends AbstractFamilyRegistry<AddressFamily, Integer> implements AddressFamilyRegistry {
-       @Override
-       public AutoCloseable registerAddressFamily(final Class<? extends AddressFamily> clazz, final int number) {
+final class SimpleAddressFamilyRegistry extends AbstractFamilyRegistry<AddressFamily, Integer> implements AddressFamilyRegistry {
+       AutoCloseable registerAddressFamily(final Class<? extends AddressFamily> clazz, final int number) {
                Preconditions.checkArgument(number >= 0 && number <= 65535);
                return super.registerFamily(clazz, number);
        }
similarity index 89%
rename from bgp/parser-impl/src/main/java/org/opendaylight/protocol/bgp/parser/impl/SimpleAttributeRegistry.java
rename to bgp/parser-spi/src/main/java/org/opendaylight/protocol/bgp/parser/spi/pojo/SimpleAttributeRegistry.java
index 1480f06adacfec0b65c2fe6a3bce45991945c887..f46127c3db3efb38eff97416c08411266fdf2c9a 100644 (file)
@@ -5,7 +5,7 @@
  * terms of the Eclipse Public License v1.0 which accompanies this distribution,
  * and is available at http://www.eclipse.org/legal/epl-v10.html
  */
-package org.opendaylight.protocol.bgp.parser.impl;
+package org.opendaylight.protocol.bgp.parser.spi.pojo;
 
 import org.opendaylight.protocol.bgp.parser.BGPDocumentedException;
 import org.opendaylight.protocol.bgp.parser.BGPError;
@@ -23,17 +23,15 @@ import org.opendaylight.yangtools.yang.binding.DataObject;
 import com.google.common.base.Preconditions;
 import com.google.common.primitives.UnsignedBytes;
 
-public final class SimpleAttributeRegistry implements AttributeRegistry {
+final class SimpleAttributeRegistry implements AttributeRegistry {
        private final HandlerRegistry<DataContainer, AttributeParser, AttributeSerializer> handlers = new HandlerRegistry<>();
 
-       @Override
-       public AutoCloseable registerAttributeParser(final int attributeType, final AttributeParser parser) {
+       AutoCloseable registerAttributeParser(final int attributeType, final AttributeParser parser) {
                Preconditions.checkArgument(attributeType >= 0 && attributeType <= 255);
                return handlers.registerParser(attributeType, parser);
        }
 
-       @Override
-       public AutoCloseable registerAttributeSerializer(final Class<? extends DataObject> paramClass, final AttributeSerializer serializer) {
+       AutoCloseable registerAttributeSerializer(final Class<? extends DataObject> paramClass, final AttributeSerializer serializer) {
                return handlers.registerSerializer(paramClass, serializer);
        }
 
similarity index 82%
rename from bgp/parser-impl/src/main/java/org/opendaylight/protocol/bgp/parser/impl/SimpleCapabilityRegistry.java
rename to bgp/parser-spi/src/main/java/org/opendaylight/protocol/bgp/parser/spi/pojo/SimpleCapabilityRegistry.java
index 88127c9f4de24021e6c0522a4a949e7a07e9bad8..d50dc5900c1fda499472456973fea99145e60876 100644 (file)
@@ -5,7 +5,7 @@
  * terms of the Eclipse Public License v1.0 which accompanies this distribution,
  * and is available at http://www.eclipse.org/legal/epl-v10.html
  */
-package org.opendaylight.protocol.bgp.parser.impl;
+package org.opendaylight.protocol.bgp.parser.spi.pojo;
 
 import org.opendaylight.protocol.bgp.parser.BGPDocumentedException;
 import org.opendaylight.protocol.bgp.parser.BGPParsingException;
@@ -18,17 +18,15 @@ import org.opendaylight.yangtools.yang.binding.DataContainer;
 
 import com.google.common.base.Preconditions;
 
-public final class SimpleCapabilityRegistry implements CapabilityRegistry {
+final class SimpleCapabilityRegistry implements CapabilityRegistry {
        private final HandlerRegistry<DataContainer, CapabilityParser, CapabilitySerializer> handlers = new HandlerRegistry<>();
 
-       @Override
-       public AutoCloseable registerCapabilityParser(final int messageType, final CapabilityParser parser) {
+       AutoCloseable registerCapabilityParser(final int messageType, final CapabilityParser parser) {
                Preconditions.checkArgument(messageType >= 0 && messageType <= 255);
                return handlers.registerParser(messageType, parser);
        }
 
-       @Override
-       public AutoCloseable registerCapabilitySerializer(final Class<? extends CParameters> paramClass, final CapabilitySerializer serializer) {
+       AutoCloseable registerCapabilitySerializer(final Class<? extends CParameters> paramClass, final CapabilitySerializer serializer) {
                return handlers.registerSerializer(paramClass, serializer);
        }
 
similarity index 79%
rename from bgp/parser-impl/src/main/java/org/opendaylight/protocol/bgp/parser/impl/SimpleMessageRegistry.java
rename to bgp/parser-spi/src/main/java/org/opendaylight/protocol/bgp/parser/spi/pojo/SimpleMessageRegistry.java
index b49b72e31bcf548be5e0d5d65ca12d4d4140c9a0..a56b207bfa019a1fa1ed95cd3ff1ee033fdb1c22 100644 (file)
@@ -5,7 +5,7 @@
  * terms of the Eclipse Public License v1.0 which accompanies this distribution,
  * and is available at http://www.eclipse.org/legal/epl-v10.html
  */
-package org.opendaylight.protocol.bgp.parser.impl;
+package org.opendaylight.protocol.bgp.parser.spi.pojo;
 
 import org.opendaylight.protocol.bgp.parser.BGPDocumentedException;
 import org.opendaylight.protocol.bgp.parser.spi.MessageParser;
@@ -14,7 +14,7 @@ import org.opendaylight.protocol.concepts.HandlerRegistry;
 import org.opendaylight.yangtools.yang.binding.DataContainer;
 import org.opendaylight.yangtools.yang.binding.Notification;
 
-public final class SimpleMessageRegistry extends AbstractMessageRegistry {
+final class SimpleMessageRegistry extends AbstractMessageRegistry {
        private final HandlerRegistry<DataContainer, MessageParser, MessageSerializer> handlers = new HandlerRegistry<>();
 
        @Override
@@ -37,13 +37,11 @@ public final class SimpleMessageRegistry extends AbstractMessageRegistry {
                return serializer.serializeMessage(message);
        }
 
-       @Override
-       public AutoCloseable registerMessageParser(final int messageType, final MessageParser parser) {
+       AutoCloseable registerMessageParser(final int messageType, final MessageParser parser) {
                return handlers.registerParser(messageType, parser);
        }
 
-       @Override
-       public AutoCloseable registerMessageSerializer(final Class<? extends Notification> messageClass, final MessageSerializer serializer) {
+       AutoCloseable registerMessageSerializer(final Class<? extends Notification> messageClass, final MessageSerializer serializer) {
                return handlers.registerSerializer(messageClass, serializer);
        }
 }
similarity index 95%
rename from bgp/parser-impl/src/main/java/org/opendaylight/protocol/bgp/parser/impl/SimpleNlriRegistry.java
rename to bgp/parser-spi/src/main/java/org/opendaylight/protocol/bgp/parser/spi/pojo/SimpleNlriRegistry.java
index 73f1df7b18e3a6b65dc987c72a1915806129d93f..389b777f358b35096b8c0680a3d52ea202a65322 100644 (file)
@@ -5,7 +5,7 @@
  * terms of the Eclipse Public License v1.0 which accompanies this distribution,
  * and is available at http://www.eclipse.org/legal/epl-v10.html
  */
-package org.opendaylight.protocol.bgp.parser.impl;
+package org.opendaylight.protocol.bgp.parser.spi.pojo;
 
 import java.util.concurrent.ConcurrentHashMap;
 import java.util.concurrent.ConcurrentMap;
@@ -29,7 +29,7 @@ import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.bgp.type
 import com.google.common.base.Preconditions;
 import com.google.common.primitives.UnsignedBytes;
 
-public final class SimpleNlriRegistry implements NlriRegistry {
+final class SimpleNlriRegistry implements NlriRegistry {
        private final ConcurrentMap<BgpTableType, NlriParser> handlers = new ConcurrentHashMap<>();
        private final SubsequentAddressFamilyRegistry safiReg;
        private final AddressFamilyRegistry afiReg;
@@ -46,8 +46,7 @@ public final class SimpleNlriRegistry implements NlriRegistry {
                return new BgpTableTypeImpl(afi, safi);
        }
 
-       @Override
-       public synchronized AutoCloseable registerNlriParser(final Class<? extends AddressFamily> afi,
+       synchronized AutoCloseable registerNlriParser(final Class<? extends AddressFamily> afi,
                        final Class<? extends SubsequentAddressFamily> safi, final NlriParser parser) {
                final BgpTableType key = createKey(afi, safi);
                final NlriParser prev = handlers.get(key);
similarity index 82%
rename from bgp/parser-impl/src/main/java/org/opendaylight/protocol/bgp/parser/impl/SimpleParameterRegistry.java
rename to bgp/parser-spi/src/main/java/org/opendaylight/protocol/bgp/parser/spi/pojo/SimpleParameterRegistry.java
index 2e3ae5e05747e82efe0c372af2533d5951b64228..57567134323f0f9a7654e0911e715eeed371a53a 100644 (file)
@@ -5,7 +5,7 @@
  * terms of the Eclipse Public License v1.0 which accompanies this distribution,
  * and is available at http://www.eclipse.org/legal/epl-v10.html
  */
-package org.opendaylight.protocol.bgp.parser.impl;
+package org.opendaylight.protocol.bgp.parser.spi.pojo;
 
 import org.opendaylight.protocol.bgp.parser.BGPDocumentedException;
 import org.opendaylight.protocol.bgp.parser.BGPParsingException;
@@ -18,17 +18,15 @@ import org.opendaylight.yangtools.yang.binding.DataContainer;
 
 import com.google.common.base.Preconditions;
 
-public final class SimpleParameterRegistry implements ParameterRegistry {
+final class SimpleParameterRegistry implements ParameterRegistry {
        private final HandlerRegistry<DataContainer, ParameterParser, ParameterSerializer> handlers = new HandlerRegistry<>();
 
-       @Override
-       public AutoCloseable registerParameterParser(final int messageType, final ParameterParser parser) {
+       AutoCloseable registerParameterParser(final int messageType, final ParameterParser parser) {
                Preconditions.checkArgument(messageType >= 0 && messageType <= 255);
                return handlers.registerParser(messageType, parser);
        }
 
-       @Override
-       public AutoCloseable registerParameterSerializer(final Class<? extends BgpParameters> paramClass, final ParameterSerializer serializer) {
+       AutoCloseable registerParameterSerializer(final Class<? extends BgpParameters> paramClass, final ParameterSerializer serializer) {
                return handlers.registerSerializer(paramClass, serializer);
        }
 
@@ -5,17 +5,15 @@
  * terms of the Eclipse Public License v1.0 which accompanies this distribution,
  * and is available at http://www.eclipse.org/legal/epl-v10.html
  */
-package org.opendaylight.protocol.bgp.parser.impl;
+package org.opendaylight.protocol.bgp.parser.spi.pojo;
 
 import org.opendaylight.protocol.bgp.parser.spi.SubsequentAddressFamilyRegistry;
 import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.bgp.types.rev130919.SubsequentAddressFamily;
 
 import com.google.common.base.Preconditions;
 
-public final class SimpleSubsequentAddressFamilyRegistry extends
-AbstractFamilyRegistry<SubsequentAddressFamily, Integer> implements SubsequentAddressFamilyRegistry {
-       @Override
-       public AutoCloseable registerSubsequentAddressFamily(final Class<? extends SubsequentAddressFamily> clazz, final int number) {
+final class SimpleSubsequentAddressFamilyRegistry extends AbstractFamilyRegistry<SubsequentAddressFamily, Integer> implements SubsequentAddressFamilyRegistry {
+       AutoCloseable registerSubsequentAddressFamily(final Class<? extends SubsequentAddressFamily> clazz, final int number) {
                Preconditions.checkArgument(number >= 0 && number <= 255);
                return super.registerFamily(clazz, number);
        }
index 311f7234b4927592ebf8be871ceff0743cff30d9..4a4e5882448b47127316982f6e83fc8ae9464787 100644 (file)
@@ -24,8 +24,8 @@ import org.junit.Test;
 import org.opendaylight.protocol.bgp.parser.BGPDocumentedException;
 import org.opendaylight.protocol.bgp.parser.BGPError;
 import org.opendaylight.protocol.bgp.parser.BgpTableTypeImpl;
-import org.opendaylight.protocol.bgp.parser.impl.SingletonProviderContext;
 import org.opendaylight.protocol.bgp.parser.spi.MessageRegistry;
+import org.opendaylight.protocol.bgp.parser.spi.pojo.BGPExtensionConsumerContextImpl;
 import org.opendaylight.protocol.framework.DeserializerException;
 import org.opendaylight.protocol.framework.DocumentedException;
 import org.opendaylight.protocol.util.ByteArray;
@@ -81,7 +81,7 @@ public class ParserTest {
                (byte) 0x01, (byte) 0x00, (byte) 0x01 };
 
        final MessageRegistry factory =
-                       SingletonProviderContext.getInstance().getMessageRegistry();
+                       BGPExtensionConsumerContextImpl.getSingletonInstance().getMessageRegistry();
 
        @Test
        public void testHeaderErrors() throws DeserializerException, DocumentedException {
index fbdb408cd079d96f0740c11b2923ff936be8ca06..bdd196e98e87ec032ea2bc6a85d343ce8ae04811 100644 (file)
@@ -15,7 +15,7 @@ import java.net.InetSocketAddress;
 
 import org.opendaylight.protocol.bgp.parser.BGPSessionListener;
 import org.opendaylight.protocol.bgp.parser.impl.BGPMessageFactoryImpl;
-import org.opendaylight.protocol.bgp.parser.impl.SingletonProviderContext;
+import org.opendaylight.protocol.bgp.parser.spi.pojo.BGPExtensionConsumerContextImpl;
 import org.opendaylight.protocol.bgp.rib.impl.BGPDispatcherImpl;
 import org.opendaylight.protocol.bgp.rib.impl.BGPSessionProposalImpl;
 import org.opendaylight.protocol.bgp.rib.impl.spi.BGPSessionPreferences;
@@ -50,7 +50,7 @@ public class Main {
        BGPDispatcherImpl dispatcher;
 
        public Main() throws IOException {
-               this.dispatcher = new BGPDispatcherImpl(new BGPMessageFactoryImpl(SingletonProviderContext.getInstance().getMessageRegistry()));
+               this.dispatcher = new BGPDispatcherImpl(new BGPMessageFactoryImpl(BGPExtensionConsumerContextImpl.getSingletonInstance().getMessageRegistry()));
        }
 
        public static void main(final String[] args) throws NumberFormatException, IOException {
index 42f135441da038a1eb4de31df29b985fc67da117..8f85c906bc0d487e6e008f863cfc284c7eccd600 100644 (file)
@@ -18,7 +18,7 @@ import java.net.InetSocketAddress;
 
 import org.opendaylight.protocol.bgp.parser.BGPSessionListener;
 import org.opendaylight.protocol.bgp.parser.impl.BGPMessageFactoryImpl;
-import org.opendaylight.protocol.bgp.parser.impl.SingletonProviderContext;
+import org.opendaylight.protocol.bgp.parser.spi.pojo.BGPExtensionConsumerContextImpl;
 import org.opendaylight.protocol.bgp.rib.impl.BGPHandlerFactory;
 import org.opendaylight.protocol.bgp.rib.impl.BGPSessionImpl;
 import org.opendaylight.protocol.bgp.rib.impl.BGPSessionNegotiatorFactory;
@@ -73,7 +73,7 @@ public class BGPSpeakerMock<M, S extends ProtocolSession<M>, L extends SessionLi
                final SessionNegotiatorFactory<Notification, BGPSessionImpl, BGPSessionListener> snf = new BGPSessionNegotiatorFactory(new HashedWheelTimer(), prefs);
 
                final BGPSpeakerMock<Notification, BGPSessionImpl, BGPSessionListener> mock = new BGPSpeakerMock<>(snf,
-                               new BGPHandlerFactory(new BGPMessageFactoryImpl(SingletonProviderContext.getInstance().getMessageRegistry())),
+                               new BGPHandlerFactory(new BGPMessageFactoryImpl(BGPExtensionConsumerContextImpl.getSingletonInstance().getMessageRegistry())),
                                new DefaultPromise<BGPSessionImpl>(GlobalEventExecutor.INSTANCE));
 
                mock.createServer(new InetSocketAddress("127.0.0.2", 12345), f);
diff --git a/pom.xml b/pom.xml
index c246765acfdf2a187675d9f8ae7df04b528ac767..1bbcb890c570869057e153c339586d685fd069bf 100644 (file)
--- a/pom.xml
+++ b/pom.xml
@@ -29,6 +29,7 @@
                <nexusproxy>http://nexus.opendaylight.org/content</nexusproxy>
                <slf4j.version>1.7.2</slf4j.version>
                <surefire.version>2.15</surefire.version>
+               <osgi.version>5.0.0</osgi.version>
 
                <yangtools.version>0.5.9-SNAPSHOT</yangtools.version>
                <yang.binding.version>0.6.0-SNAPSHOT</yang.binding.version>