From d4fcc5e39b257fed868082fba53da4d4e1113b5a Mon Sep 17 00:00:00 2001 From: Robert Varga Date: Wed, 16 Oct 2013 18:04:59 +0200 Subject: [PATCH] BUG-113: switch BGP to proper activators Change-Id: Ie520cc6e41dd8f83e9207767795ddb2cb29d18aa Signed-off-by: Robert Varga --- bgp/linkstate/pom.xml | 12 +- .../protocol/bgp/linkstate/Activator.java | 37 +++ .../protocol/bgp/linkstate/OSGiActivator.java | 26 ++ ...p.parser.spi.BGPExtensionProviderActivator | 1 + bgp/parser-impl/pom.xml | 29 +- .../{ActivatorImpl.java => Activator.java} | 91 +++--- .../bgp/parser/impl/OSGiActivator.java | 26 ++ .../parser/impl/SingletonProviderContext.java | 80 ------ ...p.parser.spi.BGPExtensionProviderActivator | 1 + .../bgp/parser/impl/BGPParserTest.java | 25 +- .../bgp/parser/impl/ComplementaryTest.java | 5 +- .../parser/impl/PathAttributeParserTest.java | 3 +- bgp/parser-spi/pom.xml | 6 + .../bgp/parser/spi/AddressFamilyRegistry.java | 2 - .../bgp/parser/spi/AttributeRegistry.java | 3 - ...ava => BGPExtensionConsumerActivator.java} | 6 +- ....java => BGPExtensionConsumerContext.java} | 2 +- .../spi/BGPExtensionProviderActivator.java | 13 + .../spi/BGPExtensionProviderContext.java | 35 +++ .../bgp/parser/spi/CapabilityRegistry.java | 3 - .../bgp/parser/spi/MessageRegistry.java | 3 - .../protocol/bgp/parser/spi/NlriRegistry.java | 6 - .../bgp/parser/spi/ParameterRegistry.java | 3 - .../spi/SubsequentAddressFamilyRegistry.java | 2 - ...ractOSGiBGPExtensionConsumerActivator.java | 37 +++ ...ractOSGiBGPExtensionProviderActivator.java | 37 +++ .../osgi/OSGiBGPExtensionConsumerContext.java | 88 ++++++ .../osgi/OSGiBGPExtensionProviderContext.java | 266 ++++++++++++++++++ .../spi/pojo}/AbstractFamilyRegistry.java | 2 +- .../spi/pojo}/AbstractMessageRegistry.java | 2 +- .../pojo/BGPExtensionConsumerContextImpl.java | 174 ++++++++++++ .../pojo}/SimpleAddressFamilyRegistry.java | 7 +- .../spi/pojo}/SimpleAttributeRegistry.java | 10 +- .../spi/pojo}/SimpleCapabilityRegistry.java | 10 +- .../spi/pojo}/SimpleMessageRegistry.java | 10 +- .../parser/spi/pojo}/SimpleNlriRegistry.java | 7 +- .../spi/pojo}/SimpleParameterRegistry.java | 10 +- ...SimpleSubsequentAddressFamilyRegistry.java | 8 +- .../protocol/bgp/rib/impl/ParserTest.java | 4 +- .../protocol/bgp/testtool/Main.java | 4 +- .../protocol/bgp/testtool/BGPSpeakerMock.java | 4 +- pom.xml | 1 + 42 files changed, 866 insertions(+), 235 deletions(-) create mode 100644 bgp/linkstate/src/main/java/org/opendaylight/protocol/bgp/linkstate/Activator.java create mode 100644 bgp/linkstate/src/main/java/org/opendaylight/protocol/bgp/linkstate/OSGiActivator.java create mode 100644 bgp/linkstate/src/main/resources/META-INF/services/org.opendaylight.protocol.bgp.parser.spi.BGPExtensionProviderActivator rename bgp/parser-impl/src/main/java/org/opendaylight/protocol/bgp/parser/impl/{ActivatorImpl.java => Activator.java} (64%) create mode 100644 bgp/parser-impl/src/main/java/org/opendaylight/protocol/bgp/parser/impl/OSGiActivator.java delete mode 100644 bgp/parser-impl/src/main/java/org/opendaylight/protocol/bgp/parser/impl/SingletonProviderContext.java create mode 100644 bgp/parser-impl/src/main/resources/META-INF/services/org.opendaylight.protocol.bgp.parser.spi.BGPExtensionProviderActivator rename bgp/parser-spi/src/main/java/org/opendaylight/protocol/bgp/parser/spi/{ProviderActivator.java => BGPExtensionConsumerActivator.java} (68%) rename bgp/parser-spi/src/main/java/org/opendaylight/protocol/bgp/parser/spi/{ProviderContext.java => BGPExtensionConsumerContext.java} (93%) create mode 100644 bgp/parser-spi/src/main/java/org/opendaylight/protocol/bgp/parser/spi/BGPExtensionProviderActivator.java create mode 100644 bgp/parser-spi/src/main/java/org/opendaylight/protocol/bgp/parser/spi/BGPExtensionProviderContext.java create mode 100644 bgp/parser-spi/src/main/java/org/opendaylight/protocol/bgp/parser/spi/osgi/AbstractOSGiBGPExtensionConsumerActivator.java create mode 100644 bgp/parser-spi/src/main/java/org/opendaylight/protocol/bgp/parser/spi/osgi/AbstractOSGiBGPExtensionProviderActivator.java create mode 100644 bgp/parser-spi/src/main/java/org/opendaylight/protocol/bgp/parser/spi/osgi/OSGiBGPExtensionConsumerContext.java create mode 100644 bgp/parser-spi/src/main/java/org/opendaylight/protocol/bgp/parser/spi/osgi/OSGiBGPExtensionProviderContext.java rename bgp/{parser-impl/src/main/java/org/opendaylight/protocol/bgp/parser/impl => parser-spi/src/main/java/org/opendaylight/protocol/bgp/parser/spi/pojo}/AbstractFamilyRegistry.java (96%) rename bgp/{parser-impl/src/main/java/org/opendaylight/protocol/bgp/parser/impl => parser-spi/src/main/java/org/opendaylight/protocol/bgp/parser/spi/pojo}/AbstractMessageRegistry.java (98%) create mode 100644 bgp/parser-spi/src/main/java/org/opendaylight/protocol/bgp/parser/spi/pojo/BGPExtensionConsumerContextImpl.java rename bgp/{parser-impl/src/main/java/org/opendaylight/protocol/bgp/parser/impl => parser-spi/src/main/java/org/opendaylight/protocol/bgp/parser/spi/pojo}/SimpleAddressFamilyRegistry.java (74%) rename bgp/{parser-impl/src/main/java/org/opendaylight/protocol/bgp/parser/impl => parser-spi/src/main/java/org/opendaylight/protocol/bgp/parser/spi/pojo}/SimpleAttributeRegistry.java (89%) rename bgp/{parser-impl/src/main/java/org/opendaylight/protocol/bgp/parser/impl => parser-spi/src/main/java/org/opendaylight/protocol/bgp/parser/spi/pojo}/SimpleCapabilityRegistry.java (82%) rename bgp/{parser-impl/src/main/java/org/opendaylight/protocol/bgp/parser/impl => parser-spi/src/main/java/org/opendaylight/protocol/bgp/parser/spi/pojo}/SimpleMessageRegistry.java (79%) rename bgp/{parser-impl/src/main/java/org/opendaylight/protocol/bgp/parser/impl => parser-spi/src/main/java/org/opendaylight/protocol/bgp/parser/spi/pojo}/SimpleNlriRegistry.java (95%) rename bgp/{parser-impl/src/main/java/org/opendaylight/protocol/bgp/parser/impl => parser-spi/src/main/java/org/opendaylight/protocol/bgp/parser/spi/pojo}/SimpleParameterRegistry.java (82%) rename bgp/{parser-impl/src/main/java/org/opendaylight/protocol/bgp/parser/impl => parser-spi/src/main/java/org/opendaylight/protocol/bgp/parser/spi/pojo}/SimpleSubsequentAddressFamilyRegistry.java (72%) diff --git a/bgp/linkstate/pom.xml b/bgp/linkstate/pom.xml index 7a64ee8aa9..d097325e86 100644 --- a/bgp/linkstate/pom.xml +++ b/bgp/linkstate/pom.xml @@ -70,6 +70,12 @@ ietf-inet-types 2010.09.24-SNAPSHOT + + org.osgi + org.osgi.core + ${osgi.version} + provided + @@ -118,7 +124,11 @@ ${project.groupId}.${project.artifactId} org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.bgp.linkstate.rev130918.*, - + + + org.opendaylight.protocol.bgp.linkstate + + org.opendaylight.protocol.bgp.linkstate.LinkstateOSGiActivator 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 index 0000000000..7b3e1558bd --- /dev/null +++ b/bgp/linkstate/src/main/java/org/opendaylight/protocol/bgp/linkstate/Activator.java @@ -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 index 0000000000..4bbf1d8034 --- /dev/null +++ b/bgp/linkstate/src/main/java/org/opendaylight/protocol/bgp/linkstate/OSGiActivator.java @@ -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 index 0000000000..a1512a55f6 --- /dev/null +++ b/bgp/linkstate/src/main/resources/META-INF/services/org.opendaylight.protocol.bgp.parser.spi.BGPExtensionProviderActivator @@ -0,0 +1 @@ +org.opendaylight.protocol.bgp.linkstate.Activator diff --git a/bgp/parser-impl/pom.xml b/bgp/parser-impl/pom.xml index 894aea03d6..de615fc472 100644 --- a/bgp/parser-impl/pom.xml +++ b/bgp/parser-impl/pom.xml @@ -27,11 +27,6 @@ ${project.groupId} bgp-concepts - ${project.version} - - - ${project.groupId} - bgp-linkstate ${project.version} @@ -78,6 +73,12 @@ org.opendaylight.yangtools.model ietf-inet-types 2010.09.24-SNAPSHOT + + + org.osgi + org.osgi.core + ${osgi.version} + provided ${project.groupId} @@ -91,6 +92,12 @@ ${junit.version} test + + ${project.groupId} + bgp-linkstate + ${project.version} + test + @@ -103,20 +110,10 @@ ${project.groupId}.${project.artifactId} - - 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, - org.opendaylight.protocol.bgp.parser.impl.* + org.opendaylight.protocol.bgp.parser.impl.OSGiActivator diff --git a/bgp/parser-impl/src/main/java/org/opendaylight/protocol/bgp/parser/impl/ActivatorImpl.java b/bgp/parser-impl/src/main/java/org/opendaylight/protocol/bgp/parser/impl/Activator.java 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 14a2d0ad6f..82162a9130 100644 --- a/bgp/parser-impl/src/main/java/org/opendaylight/protocol/bgp/parser/impl/ActivatorImpl.java +++ b/bgp/parser-impl/src/main/java/org/opendaylight/protocol/bgp/parser/impl/Activator.java @@ -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 registrations; @Override - public synchronized void start(final ProviderContext context) { + public synchronized void start(final BGPExtensionProviderContext context) { Preconditions.checkState(registrations == null); final List 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 index 0000000000..c07792e848 --- /dev/null +++ b/bgp/parser-impl/src/main/java/org/opendaylight/protocol/bgp/parser/impl/OSGiActivator.java @@ -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 index 122e315cf8..0000000000 --- a/bgp/parser-impl/src/main/java/org/opendaylight/protocol/bgp/parser/impl/SingletonProviderContext.java +++ /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 index 0000000000..3288b15a28 --- /dev/null +++ b/bgp/parser-impl/src/main/resources/META-INF/services/org.opendaylight.protocol.bgp.parser.spi.BGPExtensionProviderActivator @@ -0,0 +1 @@ +org.opendaylight.protocol.bgp.parser.impl.Activator diff --git a/bgp/parser-impl/src/test/java/org/opendaylight/protocol/bgp/parser/impl/BGPParserTest.java b/bgp/parser-impl/src/test/java/org/opendaylight/protocol/bgp/parser/impl/BGPParserTest.java index 304b90d724..6be820c666 100644 --- a/bgp/parser-impl/src/test/java/org/opendaylight/protocol/bgp/parser/impl/BGPParserTest.java +++ b/bgp/parser-impl/src/test/java/org/opendaylight/protocol/bgp/parser/impl/BGPParserTest.java @@ -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 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 types = Sets.newHashSet(); for (final BgpParameters param : open.getBgpParameters()) { diff --git a/bgp/parser-impl/src/test/java/org/opendaylight/protocol/bgp/parser/impl/ComplementaryTest.java b/bgp/parser-impl/src/test/java/org/opendaylight/protocol/bgp/parser/impl/ComplementaryTest.java index 551c96c830..a2e72b1b26 100644 --- a/bgp/parser-impl/src/test/java/org/opendaylight/protocol/bgp/parser/impl/ComplementaryTest.java +++ b/bgp/parser-impl/src/test/java/org/opendaylight/protocol/bgp/parser/impl/ComplementaryTest.java @@ -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); diff --git a/bgp/parser-impl/src/test/java/org/opendaylight/protocol/bgp/parser/impl/PathAttributeParserTest.java b/bgp/parser-impl/src/test/java/org/opendaylight/protocol/bgp/parser/impl/PathAttributeParserTest.java index a233d114b7..1b4a458edc 100644 --- a/bgp/parser-impl/src/test/java/org/opendaylight/protocol/bgp/parser/impl/PathAttributeParserTest.java +++ b/bgp/parser-impl/src/test/java/org/opendaylight/protocol/bgp/parser/impl/PathAttributeParserTest.java @@ -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()); diff --git a/bgp/parser-spi/pom.xml b/bgp/parser-spi/pom.xml index 8b0309b1e8..dfc55113ba 100644 --- a/bgp/parser-spi/pom.xml +++ b/bgp/parser-spi/pom.xml @@ -54,6 +54,12 @@ slf4j-api ${slf4j.version} + + org.osgi + org.osgi.core + ${osgi.version} + provided + diff --git a/bgp/parser-spi/src/main/java/org/opendaylight/protocol/bgp/parser/spi/AddressFamilyRegistry.java b/bgp/parser-spi/src/main/java/org/opendaylight/protocol/bgp/parser/spi/AddressFamilyRegistry.java index e6e84a4585..105444ba9d 100644 --- a/bgp/parser-spi/src/main/java/org/opendaylight/protocol/bgp/parser/spi/AddressFamilyRegistry.java +++ b/bgp/parser-spi/src/main/java/org/opendaylight/protocol/bgp/parser/spi/AddressFamilyRegistry.java @@ -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 clazz, int number); - public Class classForFamily(int number); public Integer numberForClass(Class clazz); } diff --git a/bgp/parser-spi/src/main/java/org/opendaylight/protocol/bgp/parser/spi/AttributeRegistry.java b/bgp/parser-spi/src/main/java/org/opendaylight/protocol/bgp/parser/spi/AttributeRegistry.java index ac47995352..60305e06cc 100644 --- a/bgp/parser-spi/src/main/java/org/opendaylight/protocol/bgp/parser/spi/AttributeRegistry.java +++ b/bgp/parser-spi/src/main/java/org/opendaylight/protocol/bgp/parser/spi/AttributeRegistry.java @@ -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 attributeClass, AttributeSerializer serializer); - public PathAttributes parseAttributes(final byte[] bytes) throws BGPDocumentedException, BGPParsingException; public byte[] serializeAttribute(DataObject attribute); } diff --git a/bgp/parser-spi/src/main/java/org/opendaylight/protocol/bgp/parser/spi/ProviderActivator.java b/bgp/parser-spi/src/main/java/org/opendaylight/protocol/bgp/parser/spi/BGPExtensionConsumerActivator.java 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 6b0912c263..29fcdae40f 100644 --- a/bgp/parser-spi/src/main/java/org/opendaylight/protocol/bgp/parser/spi/ProviderActivator.java +++ b/bgp/parser-spi/src/main/java/org/opendaylight/protocol/bgp/parser/spi/BGPExtensionConsumerActivator.java @@ -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 diff --git a/bgp/parser-spi/src/main/java/org/opendaylight/protocol/bgp/parser/spi/ProviderContext.java b/bgp/parser-spi/src/main/java/org/opendaylight/protocol/bgp/parser/spi/BGPExtensionConsumerContext.java 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 4df2143afa..94d09d54ac 100644 --- a/bgp/parser-spi/src/main/java/org/opendaylight/protocol/bgp/parser/spi/ProviderContext.java +++ b/bgp/parser-spi/src/main/java/org/opendaylight/protocol/bgp/parser/spi/BGPExtensionConsumerContext.java @@ -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 index 0000000000..827b9f9173 --- /dev/null +++ b/bgp/parser-spi/src/main/java/org/opendaylight/protocol/bgp/parser/spi/BGPExtensionProviderActivator.java @@ -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 index 0000000000..e9e4fc8e9c --- /dev/null +++ b/bgp/parser-spi/src/main/java/org/opendaylight/protocol/bgp/parser/spi/BGPExtensionProviderContext.java @@ -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 clazz, int number); + public AutoCloseable registerSubsequentAddressFamily(Class clazz, int number); + + public AutoCloseable registerAttributeParser(int attributeType, AttributeParser parser); + public AutoCloseable registerAttributeSerializer(Class attributeClass, AttributeSerializer serializer); + + public AutoCloseable registerCapabilityParser(int capabilityType, CapabilityParser parser); + public AutoCloseable registerCapabilitySerializer(Class capabilityClass, CapabilitySerializer serializer); + + public AutoCloseable registerMessageParser(int messageType, MessageParser parser); + public AutoCloseable registerMessageSerializer(Class messageClass, MessageSerializer serializer); + + public AutoCloseable registerNlriParser(Class afi, Class safi, NlriParser parser); + public AutoCloseable registerNlriSerializer(Class nlriClass, NlriSerializer serializer); + + public AutoCloseable registerParameterParser(int parameterType, ParameterParser parser); + public AutoCloseable registerParameterSerializer(Class paramClass, ParameterSerializer serializer); +} diff --git a/bgp/parser-spi/src/main/java/org/opendaylight/protocol/bgp/parser/spi/CapabilityRegistry.java b/bgp/parser-spi/src/main/java/org/opendaylight/protocol/bgp/parser/spi/CapabilityRegistry.java index 2302ca48f8..5d255c0fb4 100644 --- a/bgp/parser-spi/src/main/java/org/opendaylight/protocol/bgp/parser/spi/CapabilityRegistry.java +++ b/bgp/parser-spi/src/main/java/org/opendaylight/protocol/bgp/parser/spi/CapabilityRegistry.java @@ -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 capabilityClass, CapabilitySerializer serializer); - public CParameters parseCapability(final int type, final byte[] bytes) throws BGPDocumentedException, BGPParsingException; public byte[] serializeCapability(CParameters capability); } diff --git a/bgp/parser-spi/src/main/java/org/opendaylight/protocol/bgp/parser/spi/MessageRegistry.java b/bgp/parser-spi/src/main/java/org/opendaylight/protocol/bgp/parser/spi/MessageRegistry.java index fe8fba38e4..95ba50ef90 100644 --- a/bgp/parser-spi/src/main/java/org/opendaylight/protocol/bgp/parser/spi/MessageRegistry.java +++ b/bgp/parser-spi/src/main/java/org/opendaylight/protocol/bgp/parser/spi/MessageRegistry.java @@ -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 messageClass, MessageSerializer serializer); - public Notification parseMessage(final byte[] bytes) throws BGPDocumentedException, DeserializerException; public byte[] serializeMessage(Notification message); } diff --git a/bgp/parser-spi/src/main/java/org/opendaylight/protocol/bgp/parser/spi/NlriRegistry.java b/bgp/parser-spi/src/main/java/org/opendaylight/protocol/bgp/parser/spi/NlriRegistry.java index 880149437e..d6d7f0bc76 100644 --- a/bgp/parser-spi/src/main/java/org/opendaylight/protocol/bgp/parser/spi/NlriRegistry.java +++ b/bgp/parser-spi/src/main/java/org/opendaylight/protocol/bgp/parser/spi/NlriRegistry.java @@ -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 afi, - Class safi, NlriParser parser); - // public AutoCloseable registerNlriSerializer(Class nlriClass, NlriSerializer serializer); - public MpUnreachNlri parseMpUnreach(final byte[] bytes) throws BGPParsingException; public MpReachNlri parseMpReach(final byte[] bytes) throws BGPParsingException; // public byte[] serializeNlri(DataObject attribute); diff --git a/bgp/parser-spi/src/main/java/org/opendaylight/protocol/bgp/parser/spi/ParameterRegistry.java b/bgp/parser-spi/src/main/java/org/opendaylight/protocol/bgp/parser/spi/ParameterRegistry.java index 7c3c83cb86..f0729b2992 100644 --- a/bgp/parser-spi/src/main/java/org/opendaylight/protocol/bgp/parser/spi/ParameterRegistry.java +++ b/bgp/parser-spi/src/main/java/org/opendaylight/protocol/bgp/parser/spi/ParameterRegistry.java @@ -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 paramClass, ParameterSerializer serializer); - public BgpParameters parseParameter(int parameterType, final byte[] bytes) throws BGPParsingException, BGPDocumentedException; public byte[] serializeParameter(final BgpParameters parameter); } diff --git a/bgp/parser-spi/src/main/java/org/opendaylight/protocol/bgp/parser/spi/SubsequentAddressFamilyRegistry.java b/bgp/parser-spi/src/main/java/org/opendaylight/protocol/bgp/parser/spi/SubsequentAddressFamilyRegistry.java index c017c465d2..4d8e9518cf 100644 --- a/bgp/parser-spi/src/main/java/org/opendaylight/protocol/bgp/parser/spi/SubsequentAddressFamilyRegistry.java +++ b/bgp/parser-spi/src/main/java/org/opendaylight/protocol/bgp/parser/spi/SubsequentAddressFamilyRegistry.java @@ -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 clazz, int number); - public Class classForFamily(int number); public Integer numberForClass(Class 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 index 0000000000..1199ab2220 --- /dev/null +++ b/bgp/parser-spi/src/main/java/org/opendaylight/protocol/bgp/parser/spi/osgi/AbstractOSGiBGPExtensionConsumerActivator.java @@ -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 index 0000000000..8fadaffa51 --- /dev/null +++ b/bgp/parser-spi/src/main/java/org/opendaylight/protocol/bgp/parser/spi/osgi/AbstractOSGiBGPExtensionProviderActivator.java @@ -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 index 0000000000..3954f68800 --- /dev/null +++ b/bgp/parser-spi/src/main/java/org/opendaylight/protocol/bgp/parser/spi/osgi/OSGiBGPExtensionConsumerContext.java @@ -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 AutoCloseable register(final Class clazz, final T object) { + final ServiceRegistration 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 index 0000000000..8776eb1b83 --- /dev/null +++ b/bgp/parser-spi/src/main/java/org/opendaylight/protocol/bgp/parser/spi/osgi/OSGiBGPExtensionProviderContext.java @@ -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 { + public int getRegisteredNumber(); + public Class getRegisteredClass(); + } + + interface ParserRegistration { + public int getRegisteredNumber(); + public Class getRegisteredParserClass(); + public PARSER getRegisteredParserObject(); + } + + interface SerializerRegistration { + public Class getRegisteredObjectClass(); + public Class getRegisteredSerializerClass(); + public SERIALIZER getRegisteredSerializer(); + } + + @Override + public AutoCloseable registerAddressFamily(final Class clazz, final int number) { + return register(ClassRegistration.class, new ClassRegistration() { + @Override + public int getRegisteredNumber() { + return number; + } + @Override + public Class getRegisteredClass() { + return clazz; + } + }); + } + + @Override + public AutoCloseable registerSubsequentAddressFamily(final Class clazz, final int number) { + return register(ClassRegistration.class, new ClassRegistration() { + @Override + public int getRegisteredNumber() { + return number; + } + @Override + public Class getRegisteredClass() { + return clazz; + } + }); + } + + @Override + public AutoCloseable registerAttributeParser(final int attributeType, final AttributeParser parser) { + return register(ParserRegistration.class, new ParserRegistration() { + @Override + public int getRegisteredNumber() { + return attributeType; + } + + @Override + public Class getRegisteredParserClass() { + return AttributeParser.class; + } + + @Override + public AttributeParser getRegisteredParserObject() { + return parser; + } + }); + } + + @Override + public AutoCloseable registerAttributeSerializer(final Class attributeClass, final AttributeSerializer serializer) { + return register(SerializerRegistration.class, new SerializerRegistration() { + @Override + public Class getRegisteredObjectClass() { + return attributeClass; + } + + @Override + public Class 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() { + @Override + public int getRegisteredNumber() { + return capabilityType; + } + + @Override + public Class getRegisteredParserClass() { + return CapabilityParser.class; + } + + @Override + public CapabilityParser getRegisteredParserObject() { + return parser; + } + }); + } + + @Override + public AutoCloseable registerCapabilitySerializer(final Class capabilityClass, final CapabilitySerializer serializer) { + return register(SerializerRegistration.class, new SerializerRegistration() { + @Override + public Class getRegisteredObjectClass() { + return capabilityClass; + } + + @Override + public Class 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() { + @Override + public int getRegisteredNumber() { + return messageType; + } + + @Override + public Class getRegisteredParserClass() { + return MessageParser.class; + } + + @Override + public MessageParser getRegisteredParserObject() { + return parser; + } + }); + } + + @Override + public AutoCloseable registerMessageSerializer(final Class messageClass, final MessageSerializer serializer) { + return register(SerializerRegistration.class, new SerializerRegistration() { + @Override + public Class getRegisteredObjectClass() { + return messageClass; + } + + @Override + public Class getRegisteredSerializerClass() { + return MessageSerializer.class; + } + + @Override + public MessageSerializer getRegisteredSerializer() { + return serializer; + } + }); + } + + @Override + public AutoCloseable registerNlriParser(final Class afi, final Class safi, + final NlriParser parser) { + // TODO Auto-generated method stub + return null; + } + + @Override + public AutoCloseable registerNlriSerializer(final Class nlriClass, final NlriSerializer serializer) { + return register(SerializerRegistration.class, new SerializerRegistration() { + @Override + public Class getRegisteredObjectClass() { + return nlriClass; + } + + @Override + public Class 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() { + @Override + public int getRegisteredNumber() { + return parameterType; + } + + @Override + public Class getRegisteredParserClass() { + return ParameterParser.class; + } + + @Override + public ParameterParser getRegisteredParserObject() { + return parser; + } + }); + } + + @Override + public AutoCloseable registerParameterSerializer(final Class paramClass, final ParameterSerializer serializer) { + return register(SerializerRegistration.class, new SerializerRegistration() { + @Override + public Class getRegisteredObjectClass() { + return paramClass; + } + + @Override + public Class getRegisteredSerializerClass() { + return ParameterSerializer.class; + } + + @Override + public ParameterSerializer getRegisteredSerializer() { + return serializer; + } + }); + } +} diff --git a/bgp/parser-impl/src/main/java/org/opendaylight/protocol/bgp/parser/impl/AbstractFamilyRegistry.java b/bgp/parser-spi/src/main/java/org/opendaylight/protocol/bgp/parser/spi/pojo/AbstractFamilyRegistry.java 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 39116f84f4..871a20a8dc 100644 --- a/bgp/parser-impl/src/main/java/org/opendaylight/protocol/bgp/parser/impl/AbstractFamilyRegistry.java +++ b/bgp/parser-spi/src/main/java/org/opendaylight/protocol/bgp/parser/spi/pojo/AbstractFamilyRegistry.java @@ -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; diff --git a/bgp/parser-impl/src/main/java/org/opendaylight/protocol/bgp/parser/impl/AbstractMessageRegistry.java b/bgp/parser-spi/src/main/java/org/opendaylight/protocol/bgp/parser/spi/pojo/AbstractMessageRegistry.java 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 b7b5fc696a..a1c4ed2c87 100644 --- a/bgp/parser-impl/src/main/java/org/opendaylight/protocol/bgp/parser/impl/AbstractMessageRegistry.java +++ b/bgp/parser-spi/src/main/java/org/opendaylight/protocol/bgp/parser/spi/pojo/AbstractMessageRegistry.java @@ -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 index 0000000000..542124b5d1 --- /dev/null +++ b/bgp/parser-spi/src/main/java/org/opendaylight/protocol/bgp/parser/spi/pojo/BGPExtensionConsumerContextImpl.java @@ -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 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 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 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 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 messageClass, final MessageSerializer serializer) { + return msgReg.registerMessageSerializer(messageClass, serializer); + } + + @Override + public NlriRegistry getNlriRegistry() { + return nlriReg; + } + + @Override + public AutoCloseable registerNlriParser(final Class afi, final Class safi, + final NlriParser parser) { + return nlriReg.registerNlriParser(afi, safi, parser); + } + + @Override + public AutoCloseable registerNlriSerializer(final Class 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 paramClass, final ParameterSerializer serializer) { + return paramReg.registerParameterSerializer(paramClass, serializer); + } + + @Override + public SubsequentAddressFamilyRegistry getSubsequentAddressFamilyRegistry() { + return safiReg; + } + + @Override + public AutoCloseable registerSubsequentAddressFamily(final Class clazz, final int number) { + return safiReg.registerSubsequentAddressFamily(clazz, number); + } +} diff --git a/bgp/parser-impl/src/main/java/org/opendaylight/protocol/bgp/parser/impl/SimpleAddressFamilyRegistry.java b/bgp/parser-spi/src/main/java/org/opendaylight/protocol/bgp/parser/spi/pojo/SimpleAddressFamilyRegistry.java 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 00225385ad..a2e896deb7 100644 --- a/bgp/parser-impl/src/main/java/org/opendaylight/protocol/bgp/parser/impl/SimpleAddressFamilyRegistry.java +++ b/bgp/parser-spi/src/main/java/org/opendaylight/protocol/bgp/parser/spi/pojo/SimpleAddressFamilyRegistry.java @@ -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 implements AddressFamilyRegistry { - @Override - public AutoCloseable registerAddressFamily(final Class clazz, final int number) { +final class SimpleAddressFamilyRegistry extends AbstractFamilyRegistry implements AddressFamilyRegistry { + AutoCloseable registerAddressFamily(final Class clazz, final int number) { Preconditions.checkArgument(number >= 0 && number <= 65535); return super.registerFamily(clazz, number); } diff --git a/bgp/parser-impl/src/main/java/org/opendaylight/protocol/bgp/parser/impl/SimpleAttributeRegistry.java b/bgp/parser-spi/src/main/java/org/opendaylight/protocol/bgp/parser/spi/pojo/SimpleAttributeRegistry.java 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 1480f06ada..f46127c3db 100644 --- a/bgp/parser-impl/src/main/java/org/opendaylight/protocol/bgp/parser/impl/SimpleAttributeRegistry.java +++ b/bgp/parser-spi/src/main/java/org/opendaylight/protocol/bgp/parser/spi/pojo/SimpleAttributeRegistry.java @@ -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 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 paramClass, final AttributeSerializer serializer) { + AutoCloseable registerAttributeSerializer(final Class paramClass, final AttributeSerializer serializer) { return handlers.registerSerializer(paramClass, serializer); } diff --git a/bgp/parser-impl/src/main/java/org/opendaylight/protocol/bgp/parser/impl/SimpleCapabilityRegistry.java b/bgp/parser-spi/src/main/java/org/opendaylight/protocol/bgp/parser/spi/pojo/SimpleCapabilityRegistry.java 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 88127c9f4d..d50dc5900c 100644 --- a/bgp/parser-impl/src/main/java/org/opendaylight/protocol/bgp/parser/impl/SimpleCapabilityRegistry.java +++ b/bgp/parser-spi/src/main/java/org/opendaylight/protocol/bgp/parser/spi/pojo/SimpleCapabilityRegistry.java @@ -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 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 paramClass, final CapabilitySerializer serializer) { + AutoCloseable registerCapabilitySerializer(final Class paramClass, final CapabilitySerializer serializer) { return handlers.registerSerializer(paramClass, serializer); } diff --git a/bgp/parser-impl/src/main/java/org/opendaylight/protocol/bgp/parser/impl/SimpleMessageRegistry.java b/bgp/parser-spi/src/main/java/org/opendaylight/protocol/bgp/parser/spi/pojo/SimpleMessageRegistry.java 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 b49b72e31b..a56b207bfa 100644 --- a/bgp/parser-impl/src/main/java/org/opendaylight/protocol/bgp/parser/impl/SimpleMessageRegistry.java +++ b/bgp/parser-spi/src/main/java/org/opendaylight/protocol/bgp/parser/spi/pojo/SimpleMessageRegistry.java @@ -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 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 messageClass, final MessageSerializer serializer) { + AutoCloseable registerMessageSerializer(final Class messageClass, final MessageSerializer serializer) { return handlers.registerSerializer(messageClass, serializer); } } diff --git a/bgp/parser-impl/src/main/java/org/opendaylight/protocol/bgp/parser/impl/SimpleNlriRegistry.java b/bgp/parser-spi/src/main/java/org/opendaylight/protocol/bgp/parser/spi/pojo/SimpleNlriRegistry.java 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 73f1df7b18..389b777f35 100644 --- a/bgp/parser-impl/src/main/java/org/opendaylight/protocol/bgp/parser/impl/SimpleNlriRegistry.java +++ b/bgp/parser-spi/src/main/java/org/opendaylight/protocol/bgp/parser/spi/pojo/SimpleNlriRegistry.java @@ -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 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 afi, + synchronized AutoCloseable registerNlriParser(final Class afi, final Class safi, final NlriParser parser) { final BgpTableType key = createKey(afi, safi); final NlriParser prev = handlers.get(key); diff --git a/bgp/parser-impl/src/main/java/org/opendaylight/protocol/bgp/parser/impl/SimpleParameterRegistry.java b/bgp/parser-spi/src/main/java/org/opendaylight/protocol/bgp/parser/spi/pojo/SimpleParameterRegistry.java 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 2e3ae5e057..5756713432 100644 --- a/bgp/parser-impl/src/main/java/org/opendaylight/protocol/bgp/parser/impl/SimpleParameterRegistry.java +++ b/bgp/parser-spi/src/main/java/org/opendaylight/protocol/bgp/parser/spi/pojo/SimpleParameterRegistry.java @@ -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 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 paramClass, final ParameterSerializer serializer) { + AutoCloseable registerParameterSerializer(final Class paramClass, final ParameterSerializer serializer) { return handlers.registerSerializer(paramClass, serializer); } diff --git a/bgp/parser-impl/src/main/java/org/opendaylight/protocol/bgp/parser/impl/SimpleSubsequentAddressFamilyRegistry.java b/bgp/parser-spi/src/main/java/org/opendaylight/protocol/bgp/parser/spi/pojo/SimpleSubsequentAddressFamilyRegistry.java similarity index 72% rename from bgp/parser-impl/src/main/java/org/opendaylight/protocol/bgp/parser/impl/SimpleSubsequentAddressFamilyRegistry.java rename to bgp/parser-spi/src/main/java/org/opendaylight/protocol/bgp/parser/spi/pojo/SimpleSubsequentAddressFamilyRegistry.java index 9951ade957..2c88c22d34 100644 --- a/bgp/parser-impl/src/main/java/org/opendaylight/protocol/bgp/parser/impl/SimpleSubsequentAddressFamilyRegistry.java +++ b/bgp/parser-spi/src/main/java/org/opendaylight/protocol/bgp/parser/spi/pojo/SimpleSubsequentAddressFamilyRegistry.java @@ -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 implements SubsequentAddressFamilyRegistry { - @Override - public AutoCloseable registerSubsequentAddressFamily(final Class clazz, final int number) { +final class SimpleSubsequentAddressFamilyRegistry extends AbstractFamilyRegistry implements SubsequentAddressFamilyRegistry { + AutoCloseable registerSubsequentAddressFamily(final Class clazz, final int number) { Preconditions.checkArgument(number >= 0 && number <= 255); return super.registerFamily(clazz, number); } diff --git a/bgp/rib-impl/src/test/java/org/opendaylight/protocol/bgp/rib/impl/ParserTest.java b/bgp/rib-impl/src/test/java/org/opendaylight/protocol/bgp/rib/impl/ParserTest.java index 311f7234b4..4a4e588244 100644 --- a/bgp/rib-impl/src/test/java/org/opendaylight/protocol/bgp/rib/impl/ParserTest.java +++ b/bgp/rib-impl/src/test/java/org/opendaylight/protocol/bgp/rib/impl/ParserTest.java @@ -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 { diff --git a/bgp/testtool/src/main/java/org/opendaylight/protocol/bgp/testtool/Main.java b/bgp/testtool/src/main/java/org/opendaylight/protocol/bgp/testtool/Main.java index fbdb408cd0..bdd196e98e 100644 --- a/bgp/testtool/src/main/java/org/opendaylight/protocol/bgp/testtool/Main.java +++ b/bgp/testtool/src/main/java/org/opendaylight/protocol/bgp/testtool/Main.java @@ -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 { diff --git a/bgp/testtool/src/test/java/org/opendaylight/protocol/bgp/testtool/BGPSpeakerMock.java b/bgp/testtool/src/test/java/org/opendaylight/protocol/bgp/testtool/BGPSpeakerMock.java index 42f135441d..8f85c906bc 100644 --- a/bgp/testtool/src/test/java/org/opendaylight/protocol/bgp/testtool/BGPSpeakerMock.java +++ b/bgp/testtool/src/test/java/org/opendaylight/protocol/bgp/testtool/BGPSpeakerMock.java @@ -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, L extends SessionLi final SessionNegotiatorFactory snf = new BGPSessionNegotiatorFactory(new HashedWheelTimer(), prefs); final BGPSpeakerMock mock = new BGPSpeakerMock<>(snf, - new BGPHandlerFactory(new BGPMessageFactoryImpl(SingletonProviderContext.getInstance().getMessageRegistry())), + new BGPHandlerFactory(new BGPMessageFactoryImpl(BGPExtensionConsumerContextImpl.getSingletonInstance().getMessageRegistry())), new DefaultPromise(GlobalEventExecutor.INSTANCE)); mock.createServer(new InetSocketAddress("127.0.0.2", 12345), f); diff --git a/pom.xml b/pom.xml index c246765acf..1bbcb890c5 100644 --- a/pom.xml +++ b/pom.xml @@ -29,6 +29,7 @@ http://nexus.opendaylight.org/content 1.7.2 2.15 + 5.0.0 0.5.9-SNAPSHOT 0.6.0-SNAPSHOT -- 2.36.6