Parsing now returns only one message instead of a list. 86/1886/1
authorDana Kutenicsova <dkutenic@cisco.com>
Mon, 14 Oct 2013 20:01:27 +0000 (22:01 +0200)
committerDana Kutenicsova <dkutenic@cisco.com>
Mon, 14 Oct 2013 20:01:27 +0000 (22:01 +0200)
Change-Id: I14212a8c9895355a490aebdfebc45211aa5deb88
Signed-off-by: Dana Kutenicsova <dkutenic@cisco.com>
bgp/parser-impl/src/main/java/org/opendaylight/protocol/bgp/parser/impl/BGPMessageFactoryImpl.java
bgp/parser-mock/src/main/java/org/opendaylight/protocol/bgp/parser/mock/BGPMessageParserMock.java
bgp/parser-mock/src/test/java/org/opendaylight/protocol/bgp/parser/mock/BGPMessageParserMockTest.java
bgp/rib-mock/src/main/java/org/opendaylight/protocol/bgp/rib/mock/BGPMock.java
framework/src/main/java/org/opendaylight/protocol/framework/ProtocolMessageDecoder.java
framework/src/main/java/org/opendaylight/protocol/framework/ProtocolMessageFactory.java
framework/src/test/java/org/opendaylight/protocol/framework/MessageFactory.java
framework/src/test/java/org/opendaylight/protocol/framework/SimpleMessage.java
pcep/impl/src/main/java/org/opendaylight/protocol/pcep/impl/PCEPMessageFactory.java

index 852d419682a60cd041198652adcf428ebbce51f3..a67f014e11b26198e6b16ed5a298bbadc95d4273 100644 (file)
@@ -7,8 +7,6 @@
  */
 package org.opendaylight.protocol.bgp.parser.impl;
 
-import java.util.List;
-
 import org.opendaylight.protocol.bgp.parser.BGPMessageFactory;
 import org.opendaylight.protocol.bgp.parser.spi.MessageRegistry;
 import org.opendaylight.protocol.framework.DeserializerException;
@@ -16,7 +14,6 @@ import org.opendaylight.protocol.framework.DocumentedException;
 import org.opendaylight.yangtools.yang.binding.Notification;
 
 import com.google.common.base.Preconditions;
-import com.google.common.collect.Lists;
 
 public final class BGPMessageFactoryImpl implements BGPMessageFactory {
        private final MessageRegistry registry;
@@ -30,12 +27,12 @@ public final class BGPMessageFactoryImpl implements BGPMessageFactory {
         * @see org.opendaylight.protocol.bgp.parser.BGPMessageParser#parse(byte[])
         */
        @Override
-       public final List<Notification> parse(final byte[] bytes) throws DeserializerException, DocumentedException {
-               return Lists.newArrayList(registry.parseMessage(bytes));
+       public final Notification parse(final byte[] bytes) throws DeserializerException, DocumentedException {
+               return this.registry.parseMessage(bytes);
        }
 
        @Override
        public final byte[] put(final Notification msg) {
-               return registry.serializeMessage(msg);
+               return this.registry.serializeMessage(msg);
        }
 }
index 868d4c1b7aaae72b71b46c1d5cf05a4cdb6db4e3..75e4f8816f3c6397cb095d1af98afbb2508648d1 100644 (file)
@@ -7,7 +7,6 @@
  */
 package org.opendaylight.protocol.bgp.parser.mock;
 
-import java.util.List;
 import java.util.Map;
 
 import org.opendaylight.protocol.framework.DeserializerException;
@@ -21,18 +20,18 @@ import org.opendaylight.yangtools.yang.binding.Notification;
  * the map.
  */
 public class BGPMessageParserMock implements ProtocolMessageFactory<Notification> {
-       private final Map<byte[], List<Notification>> messages;
+       private final Map<byte[], Notification> messages;
 
        /**
         * @param updateMessages Map<byte[], BGPUpdateEvent>
         */
-       public BGPMessageParserMock(final Map<byte[], List<Notification>> messages) {
+       public BGPMessageParserMock(final Map<byte[], Notification> messages) {
                this.messages = messages;
        }
 
        @Override
-       public List<Notification> parse(final byte[] bytes) throws DeserializerException, DocumentedException {
-               final List<Notification> ret = this.messages.get(bytes);
+       public Notification parse(final byte[] bytes) throws DeserializerException, DocumentedException {
+               final Notification ret = this.messages.get(bytes);
                if (ret == null) {
                        throw new IllegalArgumentException("Undefined message encountered");
                }
index 71d9c64030c9f7af8a39247263b16fce1800d032..2191dc06510d53cfe09a1d5f690f1efa5d57c089 100644 (file)
@@ -7,18 +7,12 @@
  */
 package org.opendaylight.protocol.bgp.parser.mock;
 
-import static org.hamcrest.core.IsNot.not;
 import static org.junit.Assert.assertEquals;
-import static org.junit.Assert.assertThat;
 
 import java.io.ByteArrayOutputStream;
 import java.io.IOException;
 import java.io.InputStream;
-import java.net.InetAddress;
 import java.net.UnknownHostException;
-import java.util.ArrayList;
-import java.util.Collections;
-import java.util.HashSet;
 import java.util.List;
 import java.util.Map;
 import java.util.Set;
@@ -29,8 +23,6 @@ import org.junit.Test;
 import org.opendaylight.protocol.bgp.parser.BgpTableTypeImpl;
 import org.opendaylight.protocol.framework.DeserializerException;
 import org.opendaylight.protocol.framework.DocumentedException;
-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.Ipv6Address;
 import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.bgp.message.rev130918.Open;
 import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.bgp.message.rev130918.OpenBuilder;
 import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.bgp.message.rev130918.ProtocolVersion;
@@ -39,23 +31,12 @@ import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.bgp.mess
 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.BgpParametersBuilder;
 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.message.rev130918.path.attributes.as.path.SegmentsBuilder;
 import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.bgp.multiprotocol.rev130918.BgpTableType;
 import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.bgp.multiprotocol.rev130918.open.bgp.parameters.c.parameters.CMultiprotocol;
 import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.bgp.multiprotocol.rev130918.open.bgp.parameters.c.parameters.CMultiprotocolBuilder;
 import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.bgp.multiprotocol.rev130918.open.bgp.parameters.c.parameters.c.multiprotocol.MultiprotocolCapabilityBuilder;
-import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.bgp.types.rev130919.AsPathSegment;
-import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.bgp.types.rev130919.BgpOrigin;
-import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.bgp.types.rev130919.Community;
 import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.bgp.types.rev130919.Ipv4AddressFamily;
 import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.bgp.types.rev130919.MplsLabeledVpnSubsequentAddressFamily;
-import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.bgp.types.rev130919.as.path.segment.c.segment.CAListBuilder;
-import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.bgp.types.rev130919.as.path.segment.c.segment.c.a.list.AsSequence;
-import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.bgp.types.rev130919.as.path.segment.c.segment.c.a.list.AsSequenceBuilder;
-import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.bgp.types.rev130919.extended.community.ExtendedCommunity;
-import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.bgp.types.rev130919.next.hop.CNextHop;
-import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.bgp.types.rev130919.next.hop.c.next.hop.CIpv6NextHopBuilder;
-import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.bgp.types.rev130919.next.hop.c.next.hop.c.ipv6.next.hop.Ipv6NextHopBuilder;
 import org.opendaylight.yangtools.yang.binding.Notification;
 
 import com.google.common.collect.Lists;
@@ -85,19 +66,19 @@ public class BGPMessageParserMockTest {
         */
        @Test
        @Ignore
-       //FIXME : BUG-94
+       // FIXME : BUG-94
        public void testGetUpdateMessage() throws DeserializerException, DocumentedException, IOException {
-               final Map<byte[], List<Notification>> updateMap = Maps.newHashMap();
+               final Map<byte[], Notification> updateMap = Maps.newHashMap();
                for (int i = 0; i < this.inputBytes.length; i++) {
-                       updateMap.put(this.inputBytes[i], Lists.newArrayList((Notification) this.messages.get(i)));
+                       updateMap.put(this.inputBytes[i], this.messages.get(i));
                }
 
                final BGPMessageParserMock mockParser = new BGPMessageParserMock(updateMap);
 
                for (int i = 0; i < this.inputBytes.length; i++) {
-                       assertEquals(this.messages.get(i), mockParser.parse(this.inputBytes[i]).get(0));
+                       assertEquals(this.messages.get(i), mockParser.parse(this.inputBytes[i]));
                }
-               //assertThat(this.messages.get(3), not(mockParser.parse(this.inputBytes[8]).get(0)));
+               // assertThat(this.messages.get(3), not(mockParser.parse(this.inputBytes[8]).get(0)));
        }
 
        /**
@@ -109,9 +90,9 @@ public class BGPMessageParserMockTest {
         */
        @Test(expected = IllegalArgumentException.class)
        public void testGetUpdateMessageException() throws DeserializerException, DocumentedException, IOException {
-               final Map<byte[], List<Notification>> updateMap = Maps.newHashMap();
+               final Map<byte[], Notification> updateMap = Maps.newHashMap();
                for (int i = 0; i < this.inputBytes.length; i++) {
-                       updateMap.put(this.inputBytes[i], Lists.newArrayList((Notification) this.messages.get(i)));
+                       updateMap.put(this.inputBytes[i], this.messages.get(i));
                }
 
                final BGPMessageParserMock mockParser = new BGPMessageParserMock(updateMap);
@@ -144,7 +125,7 @@ public class BGPMessageParserMockTest {
         */
        private Update fillMessages(final long asn) throws UnknownHostException {
 
-               //FIXME: to be fixed in testing phase
+               // FIXME: to be fixed in testing phase
                /*final List<AsSequence> asnums = Lists.newArrayList(new AsSequenceBuilder().setAs(new AsNumber(asn)).build());
                final List<AsPathSegment> asPath = Lists.newArrayList();
                asPath.add(new SegmentsBuilder().setCSegment(new CAListBuilder().setAsSequence(asnums).build()).build());
@@ -168,13 +149,13 @@ public class BGPMessageParserMockTest {
                addedObjects.add(route3);
 
                return new BGPUpdateMessageImpl(addedObjects, Collections.<Identifier> emptySet());*/
-               
+
                return new UpdateBuilder().build();
        }
 
        @Test
        public void testGetOpenMessage() throws DeserializerException, DocumentedException, IOException {
-               final Map<byte[], List<Notification>> openMap = Maps.newHashMap();
+               final Map<byte[], Notification> openMap = Maps.newHashMap();
 
                final Set<BgpTableType> type = Sets.newHashSet();
                type.add(new BgpTableTypeImpl(Ipv4AddressFamily.class, MplsLabeledVpnSubsequentAddressFamily.class));
@@ -189,13 +170,12 @@ public class BGPMessageParserMockTest {
 
                openMap.put(
                                input,
-                               Lists.newArrayList((Notification) new OpenBuilder().setMyAsNumber(30).setHoldTimer(30).setBgpParameters(params).setVersion(
-                                               new ProtocolVersion((short) 4)).build()));
+                               new OpenBuilder().setMyAsNumber(30).setHoldTimer(30).setBgpParameters(params).setVersion(new ProtocolVersion((short) 4)).build());
 
                final BGPMessageParserMock mockParser = new BGPMessageParserMock(openMap);
 
                final Set<BgpTableType> result = Sets.newHashSet();
-               for (final BgpParameters p : ((Open) mockParser.parse(input).get(0)).getBgpParameters()) {
+               for (final BgpParameters p : ((Open) mockParser.parse(input)).getBgpParameters()) {
                        final CParameters cp = p.getCParameters();
                        final BgpTableType t = new BgpTableTypeImpl(((CMultiprotocol) cp).getMultiprotocolCapability().getAfi(), ((CMultiprotocol) cp).getMultiprotocolCapability().getSafi());
                        result.add(t);
index a132d49ccf9a6428ece7b3a4116f1de920afa5d9..c4fe9488d60b18e54cf43e294a0dabf039f56bfb 100644 (file)
@@ -56,14 +56,13 @@ public final class BGPMock implements BGP, Closeable {
 
        private List<Notification> parsePrevious(final List<byte[]> msgs) {
                final List<Notification> messages = Lists.newArrayList();
-               final ProtocolMessageFactory<Notification> parser = new BGPMessageFactoryImpl(
-                               SingletonProviderContext.getInstance().getMessageRegistry());
+               final ProtocolMessageFactory<Notification> parser = new BGPMessageFactoryImpl(SingletonProviderContext.getInstance().getMessageRegistry());
                try {
                        for (final byte[] b : msgs) {
 
                                final byte[] body = ByteArray.cutBytes(b, 1);
 
-                               messages.addAll(parser.parse(body));
+                               messages.add(parser.parse(body));
                        }
                } catch (final DeserializerException e) {
                        e.printStackTrace();
index 6f8773dbcb053f8c1b131d19de233f4a82353419..bf700d8a20f73848ae82bb8970d744af28c1d03e 100644 (file)
@@ -38,7 +38,7 @@ public final class ProtocolMessageDecoder<T> extends ByteToMessageDecoder {
                        final byte[] bytes = new byte[in.readableBytes()];
                        in.readBytes(bytes);
                        logger.debug("Received to decode: {}", Arrays.toString(bytes));
-                       out.addAll(this.factory.parse(bytes));
+                       out.add(this.factory.parse(bytes));
                } catch (DeserializerException | DocumentedException e) {
                        logger.debug("Failed to decode protocol message", e);
                        this.exceptionCaught(ctx, e);
index 24737bd38c3f5bada6fb078d27a1e1da89bca07b..b9e186317f6dd550babe1da36fdfb9530a63be4d 100644 (file)
@@ -7,7 +7,6 @@
  */
 package org.opendaylight.protocol.framework;
 
-import java.util.List;
 
 /**
  * Interface for factory for parsing and serializing protocol specific messages. Needs to be implemented by a protocol
@@ -26,7 +25,7 @@ public interface ProtocolMessageFactory<T> {
         * @throws DeserializerException if some parsing error occurs
         * @throws DocumentedException if some documented error occurs
         */
-       public List<T> parse(final byte[] bytes) throws DeserializerException, DocumentedException;
+       public T parse(final byte[] bytes) throws DeserializerException, DocumentedException;
 
        /**
         * Serializes protocol specific message to byte array.
index a4b6088b62df61c7045a20ec2a1ea5434090a16a..be188dd4b591f11b5308c60aa332a04f735723b9 100644 (file)
@@ -8,16 +8,14 @@
 package org.opendaylight.protocol.framework;
 
 import java.nio.ByteBuffer;
-import java.util.List;
 
 import com.google.common.base.Charsets;
-import com.google.common.collect.Lists;
 
 public class MessageFactory implements ProtocolMessageFactory<SimpleMessage> {
 
        @Override
-       public List<SimpleMessage> parse(final byte[] bytes) throws DeserializerException, DocumentedException {
-               return Lists.newArrayList(new SimpleMessage(Charsets.UTF_8.decode(ByteBuffer.wrap(bytes)).toString()));
+       public SimpleMessage parse(final byte[] bytes) throws DeserializerException, DocumentedException {
+               return new SimpleMessage(Charsets.UTF_8.decode(ByteBuffer.wrap(bytes)).toString());
        }
 
        @Override
index 3c7dfd1d6e10db3acd79cbaa3eb4db402e2f4696..1ca7c8b49c4172b482aad1e344b4c483a8d8e4b3 100644 (file)
@@ -9,8 +9,6 @@ package org.opendaylight.protocol.framework;
 
 public class SimpleMessage {
 
-       private static final long serialVersionUID = 1L;
-
        private final String s;
 
        public SimpleMessage(final String s) {
@@ -18,6 +16,6 @@ public class SimpleMessage {
        }
 
        public String getMessage() {
-               return s;
+               return this.s;
        }
 }
index d542190e8bfbb13bb048a905366761b739036398..b7efb0c89701b341d074972aa2842fd682ce34b2 100644 (file)
@@ -10,9 +10,6 @@ package org.opendaylight.protocol.pcep.impl;
 import io.netty.buffer.ByteBuf;
 import io.netty.buffer.UnpooledByteBufAllocator;
 
-import java.util.Arrays;
-import java.util.List;
-
 import org.opendaylight.protocol.framework.DeserializerException;
 import org.opendaylight.protocol.framework.DocumentedException;
 import org.opendaylight.protocol.framework.ProtocolMessageFactory;
@@ -63,7 +60,7 @@ public final class PCEPMessageFactory implements ProtocolMessageFactory<Message>
        }
 
        @Override
-       public List<Message> parse(final byte[] bytes) throws DeserializerException, DocumentedException {
+       public Message parse(final byte[] bytes) throws DeserializerException, DocumentedException {
                Preconditions.checkArgument(bytes != null, "Bytes may not be null");
                Preconditions.checkArgument(bytes.length != 0, "Bytes may not be empty");
 
@@ -92,7 +89,7 @@ public final class PCEPMessageFactory implements ProtocolMessageFactory<Message>
                        throw new DocumentedException(e.getMessage(), e);
                }
                logger.debug("Message was parsed. {}", msg);
-               return Arrays.asList(msg);
+               return msg;
        }
 
        @Override