Committed by
Gerrit Code Review
ONOS-3829 Fixed bug with inconsistent parent's behaviours when merging drivers
Change-Id: If7b1924b034b0d8ce806410bb9efa4f5258c14f6
Showing
1 changed file
with
14 additions
and
1 deletions
... | @@ -20,6 +20,7 @@ import com.google.common.collect.Lists; | ... | @@ -20,6 +20,7 @@ import com.google.common.collect.Lists; |
20 | import com.google.common.collect.Maps; | 20 | import com.google.common.collect.Maps; |
21 | import org.slf4j.Logger; | 21 | import org.slf4j.Logger; |
22 | 22 | ||
23 | +import java.util.ArrayList; | ||
23 | import java.util.List; | 24 | import java.util.List; |
24 | import java.util.Map; | 25 | import java.util.Map; |
25 | import java.util.Objects; | 26 | import java.util.Objects; |
... | @@ -110,8 +111,20 @@ public class DefaultDriver implements Driver { | ... | @@ -110,8 +111,20 @@ public class DefaultDriver implements Driver { |
110 | // Merge the properties. | 111 | // Merge the properties. |
111 | ImmutableMap.Builder<String, String> properties = ImmutableMap.builder(); | 112 | ImmutableMap.Builder<String, String> properties = ImmutableMap.builder(); |
112 | properties.putAll(this.properties).putAll(other.properties()); | 113 | properties.putAll(this.properties).putAll(other.properties()); |
114 | + List<Driver> completeParents = new ArrayList<>(); | ||
113 | 115 | ||
114 | - return new DefaultDriver(name, other.parents(), | 116 | + if (parents != null) { |
117 | + parents.forEach(parent -> other.parents().forEach(otherParent -> { | ||
118 | + if (otherParent.name().equals(parent.name())) { | ||
119 | + completeParents.add(parent.merge(otherParent)); | ||
120 | + } else if (!completeParents.contains(otherParent)) { | ||
121 | + completeParents.add(otherParent); | ||
122 | + } else if (!completeParents.contains(parent)) { | ||
123 | + completeParents.add(parent); | ||
124 | + } | ||
125 | + })); | ||
126 | + } | ||
127 | + return new DefaultDriver(name, completeParents.size() > 0 ? completeParents : other.parents(), | ||
115 | manufacturer, hwVersion, swVersion, | 128 | manufacturer, hwVersion, swVersion, |
116 | ImmutableMap.copyOf(behaviours), properties.build()); | 129 | ImmutableMap.copyOf(behaviours), properties.build()); |
117 | } | 130 | } | ... | ... |
-
Please register or login to post a comment