BUG-2982 : moved path-attributes container to grouping
[bgpcep.git] / bgp / rib-impl / src / main / java / org / opendaylight / protocol / bgp / rib / impl / BestPathState.java
index eeecaccb02e8883ccc598fd041c1414630c4e861..1aa5b83f0597a6c7d37937fd5f43a46757a4b31c 100644 (file)
@@ -14,11 +14,11 @@ import java.util.Collection;
 import java.util.List;
 import javax.annotation.concurrent.NotThreadSafe;
 import org.opendaylight.yang.gen.v1.urn.ietf.params.xml.ns.yang.ietf.inet.types.rev100924.AsNumber;
-import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.bgp.message.rev130919.path.attributes.AsPath;
-import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.bgp.message.rev130919.path.attributes.LocalPref;
-import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.bgp.message.rev130919.path.attributes.MultiExitDisc;
-import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.bgp.message.rev130919.path.attributes.Origin;
-import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.bgp.message.rev130919.path.attributes.as.path.Segments;
+import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.bgp.message.rev130919.path.attributes.attributes.AsPath;
+import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.bgp.message.rev130919.path.attributes.attributes.LocalPref;
+import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.bgp.message.rev130919.path.attributes.attributes.MultiExitDisc;
+import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.bgp.message.rev130919.path.attributes.attributes.Origin;
+import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.bgp.message.rev130919.path.attributes.attributes.as.path.Segments;
 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.as.path.segment.c.segment.AListCase;
 import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.bgp.types.rev130919.as.path.segment.c.segment.ASetCase;
@@ -43,54 +43,54 @@ final class BestPathState {
     private Long localPref;
     private Long multiExitDisc;
     private BgpOrigin origin;
-    private final Long peerAs = 0L;
-    private final int asPathLength = 0;
+    private static final Long peerAs = 0L;
+    private static final int asPathLength = 0;
     private boolean resolved;
 
     BestPathState(final ContainerNode attributes) {
         this.attributes = Preconditions.checkNotNull(attributes);
     }
 
+    private static BgpOrigin fromString(final String originStr) {
+        switch (originStr) {
+        case "igp":
+            return BgpOrigin.Igp;
+        case "egp":
+            return BgpOrigin.Egp;
+        case "incomplete":
+            return BgpOrigin.Incomplete;
+        default:
+            throw new IllegalArgumentException("Unhandleed origin value " + originStr);
+        }
+    }
+
     private void resolveValues() {
-        if (resolved) {
+        if (this.resolved) {
             return;
         }
 
-        final Optional<NormalizedNode<?, ?>> maybeLocalPref = NormalizedNodes.findNode(attributes, LOCAL_PREF);
+        final Optional<NormalizedNode<?, ?>> maybeLocalPref = NormalizedNodes.findNode(this.attributes, LOCAL_PREF);
         if (maybeLocalPref.isPresent()) {
-            localPref = (Long) ((LeafNode<?>)maybeLocalPref.get()).getValue();
+            this.localPref = (Long) ((LeafNode<?>)maybeLocalPref.get()).getValue();
         } else {
-            localPref = null;
+            this.localPref = null;
         }
 
-        final Optional<NormalizedNode<?, ?>> maybeMultiExitDisc = NormalizedNodes.findNode(attributes, MED);
+        final Optional<NormalizedNode<?, ?>> maybeMultiExitDisc = NormalizedNodes.findNode(this.attributes, MED);
         if (maybeMultiExitDisc.isPresent()) {
-            multiExitDisc = (Long) ((LeafNode<?>)maybeMultiExitDisc.get()).getValue();
+            this.multiExitDisc = (Long) ((LeafNode<?>)maybeMultiExitDisc.get()).getValue();
         } else {
-            multiExitDisc = null;
+            this.multiExitDisc = null;
         }
 
-        final Optional<NormalizedNode<?, ?>> maybeOrigin = NormalizedNodes.findNode(attributes, ORIGIN);
+        final Optional<NormalizedNode<?, ?>> maybeOrigin = NormalizedNodes.findNode(this.attributes, ORIGIN);
         if (maybeOrigin.isPresent()) {
-            final String originStr = (String) ((LeafNode<?>)maybeOrigin.get()).getValue();
-            switch (originStr) {
-            case "igp":
-                origin = BgpOrigin.Igp;
-                break;
-            case "egp":
-                origin = BgpOrigin.Egp;
-                break;
-            case "incomplete":
-                origin = BgpOrigin.Incomplete;
-                break;
-            default:
-                throw new IllegalArgumentException("Unhandleed origin value " + originStr);
-            }
+            this.origin = fromString((String) ((LeafNode<?>)maybeOrigin.get()).getValue());
         } else {
-            origin = null;
+            this.origin = null;
         }
 
-        final Optional<NormalizedNode<?, ?>> maybeSegments = NormalizedNodes.findNode(attributes, AS_PATH);
+        final Optional<NormalizedNode<?, ?>> maybeSegments = NormalizedNodes.findNode(this.attributes, AS_PATH);
         if (maybeSegments.isPresent()) {
             final UnkeyedListNode segments = (UnkeyedListNode) maybeSegments.get();
 
@@ -98,34 +98,34 @@ final class BestPathState {
                 // FIXME: peer AS number
 
                 // FIXME: asPathLength = countAsPath(this.bestState.getAsPath().getSegments());
-                boolean haveSegment;
-                for (UnkeyedListEntryNode s : segments.getValue()) {
+                final boolean haveSegment;
+                for (final UnkeyedListEntryNode s : segments.getValue()) {
 
                 }
             }
         }
 
-        resolved = true;
+        this.resolved = true;
     }
 
     Long getLocalPref() {
         resolveValues();
-        return localPref;
+        return this.localPref;
     }
 
     Long getMultiExitDisc() {
         resolveValues();
-        return multiExitDisc;
+        return this.multiExitDisc;
     }
 
     BgpOrigin getOrigin() {
         resolveValues();
-        return origin;
+        return this.origin;
     }
 
     Long getPeerAs() {
         resolveValues();
-        return peerAs;
+        return this.peerAs;
     }
 
     int getAsPathLength() {
@@ -157,4 +157,7 @@ final class BestPathState {
         return first.getAList().getAsSequence().get(0).getAs();
     }
 
+    ContainerNode getAttributes() {
+        return this.attributes;
+    }
 }