Merge "Add EPL license declaration"
[bgpcep.git] / bgp / rib-mock / src / main / java / org / opendaylight / protocol / bgp / rib / mock / BGPMock.java
index a132d49ccf9a6428ece7b3a4116f1de920afa5d9..d07f5fdf994e8a32e643ae07f0f944722d02da5d 100644 (file)
@@ -15,19 +15,20 @@ import java.util.List;
 import javax.annotation.concurrent.GuardedBy;
 import javax.annotation.concurrent.ThreadSafe;
 
+import org.opendaylight.protocol.bgp.parser.BGPDocumentedException;
 import org.opendaylight.protocol.bgp.parser.BGPError;
+import org.opendaylight.protocol.bgp.parser.BGPParsingException;
 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.MessageRegistry;
 import org.opendaylight.protocol.bgp.rib.impl.BGP;
 import org.opendaylight.protocol.concepts.ListenerRegistration;
-import org.opendaylight.protocol.framework.DeserializerException;
-import org.opendaylight.protocol.framework.DocumentedException;
-import org.opendaylight.protocol.framework.ProtocolMessageFactory;
 import org.opendaylight.protocol.framework.ReconnectStrategy;
+import org.opendaylight.protocol.framework.ReconnectStrategyFactory;
 import org.opendaylight.protocol.util.ByteArray;
-import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.bgp.message.rev130918.NotifyBuilder;
+import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.bgp.message.rev130919.NotifyBuilder;
 import org.opendaylight.yangtools.yang.binding.Notification;
+import org.slf4j.Logger;
+import org.slf4j.LoggerFactory;
 
 import com.google.common.collect.Lists;
 import com.google.common.eventbus.EventBus;
@@ -39,52 +40,42 @@ import com.google.common.eventbus.EventBus;
  */
 @ThreadSafe
 public final class BGPMock implements BGP, Closeable {
-       static final Notification connectionLostMagicMessage = new NotifyBuilder().setErrorCode(BGPError.CEASE.getCode()).build();
+
+       private static final Logger LOG = LoggerFactory.getLogger(BGPMock.class);
+
+       static final Notification CONNECTION_LOST_MAGIC_MSG = new NotifyBuilder().setErrorCode(BGPError.CEASE.getCode()).build();
 
        @GuardedBy("this")
        private final List<byte[]> allPreviousByteMessages;
        private final List<Notification> allPreviousBGPMessages;
        private final EventBus eventBus;
+
        @GuardedBy("this")
        private final List<EventBusRegistration> openRegistrations = Lists.newLinkedList();
 
-       public BGPMock(final EventBus eventBus, final List<byte[]> bgpMessages) {
+       public BGPMock(final EventBus eventBus, final MessageRegistry registry, final List<byte[]> bgpMessages) {
                this.allPreviousByteMessages = Lists.newLinkedList(bgpMessages);
                this.eventBus = eventBus;
-               this.allPreviousBGPMessages = this.parsePrevious(this.allPreviousByteMessages);
+               this.allPreviousBGPMessages = this.parsePrevious(registry, this.allPreviousByteMessages);
        }
 
-       private List<Notification> parsePrevious(final List<byte[]> msgs) {
+       private List<Notification> parsePrevious(final MessageRegistry registry, final List<byte[]> msgs) {
                final List<Notification> messages = Lists.newArrayList();
-               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(registry.parseMessage(body));
                        }
-               } catch (final DeserializerException e) {
-                       e.printStackTrace();
-               } catch (final DocumentedException e) {
-                       e.printStackTrace();
+               } catch (final BGPDocumentedException | BGPParsingException e) {
+                       LOG.warn("Failed to parse message {}", e);
                }
                return messages;
        }
 
-       /**
-        * @param listener BGPListener
-        * @return ListenerRegistration
-        */
-       @Override
-       public synchronized ListenerRegistration<BGPSessionListener> registerUpdateListener(final BGPSessionListener listener,
-                       final ReconnectStrategy strategy) {
-               return EventBusRegistration.createAndRegister(this.eventBus, listener, this.allPreviousBGPMessages);
-       }
-
        public synchronized void insertConnectionLostEvent() {
-               this.insertMessage(connectionLostMagicMessage);
+               this.insertMessage(CONNECTION_LOST_MAGIC_MSG);
        }
 
        public synchronized void insertMessages(final List<Notification> messages) {
@@ -124,4 +115,12 @@ public final class BGPMock implements BGP, Closeable {
        public EventBus getEventBus() {
                return this.eventBus;
        }
+
+       @Override
+       public ListenerRegistration<BGPSessionListener> registerUpdateListener(
+                       final BGPSessionListener listener,
+                       final ReconnectStrategyFactory tcpStrategyFactory,
+                       final ReconnectStrategy sessionStrategy) {
+               return EventBusRegistration.createAndRegister(this.eventBus, listener, this.allPreviousBGPMessages);
+       }
 }