Fixed cyclic dependency in bgp-rib-impl. 90/24690/2
authorDana Kutenicsova <dkutenic@cisco.com>
Fri, 31 Jul 2015 08:15:08 +0000 (10:15 +0200)
committerDana Kutenicsova <dkutenic@cisco.com>
Tue, 4 Aug 2015 11:51:02 +0000 (13:51 +0200)
Introduced interface for Codecs class.

Change-Id: Ie50cdaf76f56e162202b664a4e427733a6f39feb
Signed-off-by: Dana Kutenicsova <dkutenic@cisco.com>
bgp/rib-impl/src/main/java/org/opendaylight/protocol/bgp/rib/impl/AdjRibOutListener.java
bgp/rib-impl/src/main/java/org/opendaylight/protocol/bgp/rib/impl/CodecsImpl.java [moved from bgp/rib-impl/src/main/java/org/opendaylight/protocol/bgp/rib/impl/Codecs.java with 93% similarity]
bgp/rib-impl/src/main/java/org/opendaylight/protocol/bgp/rib/impl/CodecsRegistryImpl.java
bgp/rib-impl/src/main/java/org/opendaylight/protocol/bgp/rib/impl/RIBSupportContextImpl.java
bgp/rib-impl/src/main/java/org/opendaylight/protocol/bgp/rib/impl/spi/Codecs.java [new file with mode: 0644]
bgp/rib-impl/src/main/java/org/opendaylight/protocol/bgp/rib/impl/spi/CodecsRegistry.java

index f0a967548dabc33655007bb56cbc0894ddf00de3..d1fcc0ba0e8ec4837b77d92c1b4aa488ebcbdd2c 100644 (file)
@@ -18,6 +18,7 @@ import org.opendaylight.controller.md.sal.common.api.data.LogicalDatastoreType;
 import org.opendaylight.controller.md.sal.dom.api.DOMDataTreeChangeListener;
 import org.opendaylight.controller.md.sal.dom.api.DOMDataTreeChangeService;
 import org.opendaylight.controller.md.sal.dom.api.DOMDataTreeIdentifier;
+import org.opendaylight.protocol.bgp.rib.impl.spi.Codecs;
 import org.opendaylight.protocol.bgp.rib.impl.spi.CodecsRegistry;
 import org.opendaylight.protocol.bgp.rib.spi.RIBSupport;
 import org.opendaylight.protocol.bgp.rib.spi.RibSupportUtils;
similarity index 93%
rename from bgp/rib-impl/src/main/java/org/opendaylight/protocol/bgp/rib/impl/Codecs.java
rename to bgp/rib-impl/src/main/java/org/opendaylight/protocol/bgp/rib/impl/CodecsImpl.java
index 298e26791a7d0764cd16648fdd4f8176c6ffefac..865f2834edae2e3e3843de9cf528679371d01e62 100644 (file)
@@ -11,6 +11,7 @@ import com.google.common.base.Preconditions;
 import com.google.common.collect.ImmutableSet;
 import com.google.common.collect.ImmutableSet.Builder;
 import java.util.Set;
+import org.opendaylight.protocol.bgp.rib.impl.spi.Codecs;
 import org.opendaylight.protocol.bgp.rib.spi.RIBSupport;
 import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.bgp.message.rev130919.ClusterId;
 import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.bgp.message.rev130919.OriginatorId;
@@ -46,7 +47,7 @@ import org.opendaylight.yangtools.yang.binding.InstanceIdentifier;
 import org.opendaylight.yangtools.yang.data.api.schema.ContainerNode;
 import org.opendaylight.yangtools.yang.data.api.schema.NormalizedNode;
 
-public final class Codecs {
+public final class CodecsImpl implements Codecs {
 
     private static final Set<Class<? extends DataObject>> ATTRIBUTE_CACHEABLES;
     private static final InstanceIdentifier<Tables> TABLE_BASE_II = InstanceIdentifier.builder(BgpRib.class)
@@ -88,7 +89,7 @@ public final class Codecs {
 
     private final RIBSupport ribSupport;
 
-    public Codecs(final RIBSupport ribSupport) {
+    public CodecsImpl(final RIBSupport ribSupport) {
         this.ribSupport = Preconditions.checkNotNull(ribSupport);
         final Builder<Class<? extends DataObject>> acb = ImmutableSet.builder();
         acb.addAll(ATTRIBUTE_CACHEABLES);
@@ -96,8 +97,9 @@ public final class Codecs {
         this.cacheableAttributes = acb.build();
     }
 
+    @Override
     @SuppressWarnings("unchecked")
-    void onCodecTreeUpdated(final BindingCodecTree tree) {
+    public void onCodecTreeUpdated(final BindingCodecTree tree) {
 
         @SuppressWarnings("rawtypes")
         final BindingCodecTreeNode tableCodecContext = tree.getSubtreeCodec(TABLE_BASE_II);
@@ -112,22 +114,26 @@ public final class Codecs {
         this.unreachNlriCodec = tree.getSubtreeCodec(MP_UNREACH_NLRI_II).createCachingCodec(this.ribSupport.cacheableNlriObjects());
     }
 
-    ContainerNode serializeUnreachNlri(final MpUnreachNlri nlri) {
+    @Override
+    public ContainerNode serializeUnreachNlri(final MpUnreachNlri nlri) {
         Preconditions.checkState(this.unreachNlriCodec != null, "MpReachNlri codec not available");
         return (ContainerNode) this.unreachNlriCodec.serialize(nlri);
     }
 
-    ContainerNode serializeReachNlri(final MpReachNlri nlri) {
+    @Override
+    public ContainerNode serializeReachNlri(final MpReachNlri nlri) {
         Preconditions.checkState(this.reachNlriCodec != null, "MpReachNlri codec not available");
         return (ContainerNode) this.reachNlriCodec.serialize(nlri);
     }
 
-    Attributes deserializeAttributes(final NormalizedNode<?,?> attributes) {
+    @Override
+    public Attributes deserializeAttributes(final NormalizedNode<?,?> attributes) {
         Preconditions.checkState(this.attributesCodec != null, "Attributes codec not available");
         return this.attributesCodec.deserialize(attributes);
     }
 
-    ContainerNode serializeAttributes(final Attributes pathAttr) {
+    @Override
+    public ContainerNode serializeAttributes(final Attributes pathAttr) {
         Preconditions.checkState(this.attributesCodec != null, "Attributes codec not available");
         final AttributesBuilder a = new AttributesBuilder(pathAttr);
         a.addAugmentation(Attributes1.class, null);
index 189bf01a3eaacf6fb2ba3bdfe6f63b04bcb5aff6..25fe2588af69d54819741fb13ed18201a8a0bf10 100644 (file)
@@ -11,6 +11,7 @@ import com.google.common.base.Preconditions;
 import com.google.common.cache.CacheBuilder;
 import com.google.common.cache.CacheLoader;
 import com.google.common.cache.LoadingCache;
+import org.opendaylight.protocol.bgp.rib.impl.spi.Codecs;
 import org.opendaylight.protocol.bgp.rib.impl.spi.CodecsRegistry;
 import org.opendaylight.protocol.bgp.rib.spi.RIBSupport;
 import org.opendaylight.yangtools.binding.data.codec.api.BindingCodecTree;
@@ -47,7 +48,7 @@ final class CodecsRegistryImpl implements CodecsRegistry {
     }
 
     private Codecs createContext(final RIBSupport ribSupport) {
-        final Codecs codecs = new Codecs(ribSupport);
+        final Codecs codecs = new CodecsImpl(ribSupport);
         if (this.latestCodecTree != null) {
             // FIXME: Do we need to recalculate latestCodecTree? E.g. new rib support was added
             // after bgp was started.
index 9d1f75c434f0186a58d8b6f8bb9e1c16a5abaeb9..747305e2bdf881195ce4799ef1fb9feb3d6401f2 100644 (file)
@@ -12,6 +12,7 @@ import com.google.common.base.Verify;
 import java.util.Map.Entry;
 import org.opendaylight.controller.md.sal.common.api.data.LogicalDatastoreType;
 import org.opendaylight.controller.md.sal.dom.api.DOMDataWriteTransaction;
+import org.opendaylight.protocol.bgp.rib.impl.spi.Codecs;
 import org.opendaylight.protocol.bgp.rib.impl.spi.CodecsRegistry;
 import org.opendaylight.protocol.bgp.rib.impl.spi.RIBSupportContext;
 import org.opendaylight.protocol.bgp.rib.spi.RIBSupport;
diff --git a/bgp/rib-impl/src/main/java/org/opendaylight/protocol/bgp/rib/impl/spi/Codecs.java b/bgp/rib-impl/src/main/java/org/opendaylight/protocol/bgp/rib/impl/spi/Codecs.java
new file mode 100644 (file)
index 0000000..ddd906d
--- /dev/null
@@ -0,0 +1,37 @@
+/*
+ * Copyright (c) 2015 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.rib.impl.spi;
+
+import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.bgp.message.rev130919.path.attributes.Attributes;
+import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.bgp.multiprotocol.rev130919.update.attributes.MpReachNlri;
+import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.bgp.multiprotocol.rev130919.update.attributes.MpUnreachNlri;
+import org.opendaylight.yangtools.binding.data.codec.api.BindingCodecTree;
+import org.opendaylight.yangtools.yang.data.api.schema.ContainerNode;
+import org.opendaylight.yangtools.yang.data.api.schema.NormalizedNode;
+
+/**
+ * Common interface for Codecs classes.
+ *
+ */
+public interface Codecs {
+    /**
+     * Called when Codec tree is updated. Implementations should
+     * refresh codec context.
+     *
+     * @param tree BindingCodecTree
+     */
+    void onCodecTreeUpdated(final BindingCodecTree tree);
+
+    ContainerNode serializeUnreachNlri(final MpUnreachNlri nlri);
+
+    ContainerNode serializeReachNlri(final MpReachNlri nlri);
+
+    Attributes deserializeAttributes(final NormalizedNode<?,?> attributes);
+
+    ContainerNode serializeAttributes(final Attributes pathAttr);
+}
index e86379fcc2d2750603b00c6fb6dfb62beb54bbba..1a2267261ea9f65ded0acda5a864ad2c0b230659 100644 (file)
@@ -7,7 +7,6 @@
  */
 package org.opendaylight.protocol.bgp.rib.impl.spi;
 
-import org.opendaylight.protocol.bgp.rib.impl.Codecs;
 import org.opendaylight.protocol.bgp.rib.spi.RIBSupport;
 
 /**