Committed by
Gerrit Code Review
Refactoring to eliminate duplicate DefaultTopology and DefaultTopologyGraph; eli…
…minating a few fixmes. Change-Id: I4461b6f1c8ae60d39f5da909bf6995294cbfa84d
Showing
8 changed files
with
80 additions
and
150 deletions
... | @@ -15,10 +15,8 @@ | ... | @@ -15,10 +15,8 @@ |
15 | */ | 15 | */ |
16 | package org.onosproject.net.topology; | 16 | package org.onosproject.net.topology; |
17 | 17 | ||
18 | -import static org.slf4j.LoggerFactory.getLogger; | 18 | +import com.google.common.collect.ImmutableSet; |
19 | - | 19 | +import com.google.common.collect.Maps; |
20 | -import java.util.Map; | ||
21 | - | ||
22 | import org.onosproject.net.AbstractDescription; | 20 | import org.onosproject.net.AbstractDescription; |
23 | import org.onosproject.net.ConnectPoint; | 21 | import org.onosproject.net.ConnectPoint; |
24 | import org.onosproject.net.Device; | 22 | import org.onosproject.net.Device; |
... | @@ -27,14 +25,15 @@ import org.onosproject.net.Link; | ... | @@ -27,14 +25,15 @@ import org.onosproject.net.Link; |
27 | import org.onosproject.net.SparseAnnotations; | 25 | import org.onosproject.net.SparseAnnotations; |
28 | import org.slf4j.Logger; | 26 | import org.slf4j.Logger; |
29 | 27 | ||
30 | -import com.google.common.collect.ImmutableSet; | 28 | +import java.util.Map; |
31 | -import com.google.common.collect.Maps; | 29 | + |
30 | +import static org.slf4j.LoggerFactory.getLogger; | ||
32 | 31 | ||
33 | /** | 32 | /** |
34 | * Default implementation of an immutable topology graph data carrier. | 33 | * Default implementation of an immutable topology graph data carrier. |
35 | */ | 34 | */ |
36 | public class DefaultGraphDescription extends AbstractDescription | 35 | public class DefaultGraphDescription extends AbstractDescription |
37 | -implements GraphDescription { | 36 | + implements GraphDescription { |
38 | 37 | ||
39 | private static final Logger log = getLogger(DefaultGraphDescription.class); | 38 | private static final Logger log = getLogger(DefaultGraphDescription.class); |
40 | 39 | ||
... | @@ -43,26 +42,22 @@ implements GraphDescription { | ... | @@ -43,26 +42,22 @@ implements GraphDescription { |
43 | private final ImmutableSet<TopologyVertex> vertexes; | 42 | private final ImmutableSet<TopologyVertex> vertexes; |
44 | private final ImmutableSet<TopologyEdge> edges; | 43 | private final ImmutableSet<TopologyEdge> edges; |
45 | 44 | ||
46 | - private final Map<DeviceId, TopologyVertex> vertexesById = Maps | 45 | + private final Map<DeviceId, TopologyVertex> vertexesById = Maps.newHashMap(); |
47 | - .newHashMap(); | ||
48 | 46 | ||
49 | /** | 47 | /** |
50 | * Creates a minimal topology graph description to allow core to construct | 48 | * Creates a minimal topology graph description to allow core to construct |
51 | * and process the topology graph. | 49 | * and process the topology graph. |
52 | * | 50 | * |
53 | - * @param nanos time in nanos of when the topology description was created | 51 | + * @param nanos time in nanos of when the topology description was created |
54 | - * | 52 | + * @param devices collection of infrastructure devices |
55 | - * @param devices collection of infrastructure devices | 53 | + * @param links collection of infrastructure links |
56 | - * | ||
57 | - * @param links collection of infrastructure links | ||
58 | - * | ||
59 | * @param annotations optional key/value annotations map | 54 | * @param annotations optional key/value annotations map |
60 | * @deprecated in Cardinal Release | 55 | * @deprecated in Cardinal Release |
61 | */ | 56 | */ |
62 | @Deprecated | 57 | @Deprecated |
63 | public DefaultGraphDescription(long nanos, Iterable<Device> devices, | 58 | public DefaultGraphDescription(long nanos, Iterable<Device> devices, |
64 | - Iterable<Link> links, | 59 | + Iterable<Link> links, |
65 | - SparseAnnotations... annotations) { | 60 | + SparseAnnotations... annotations) { |
66 | this(nanos, System.currentTimeMillis(), devices, links, annotations); | 61 | this(nanos, System.currentTimeMillis(), devices, links, annotations); |
67 | } | 62 | } |
68 | 63 | ||
... | @@ -70,21 +65,16 @@ implements GraphDescription { | ... | @@ -70,21 +65,16 @@ implements GraphDescription { |
70 | * Creates a minimal topology graph description to allow core to construct | 65 | * Creates a minimal topology graph description to allow core to construct |
71 | * and process the topology graph. | 66 | * and process the topology graph. |
72 | * | 67 | * |
73 | - * @param nanos time in nanos of when the topology description was created | 68 | + * @param nanos time in nanos of when the topology description was created |
74 | - * | 69 | + * @param millis time in millis of when the topology description was created |
75 | - * @param millis time in millis of when the topology description was created | 70 | + * @param devices collection of infrastructure devices |
76 | - * | 71 | + * @param links collection of infrastructure links |
77 | - * @param devices collection of infrastructure devices | ||
78 | - * | ||
79 | - * @param links collection of infrastructure links | ||
80 | - * | ||
81 | * @param annotations optional key/value annotations map | 72 | * @param annotations optional key/value annotations map |
82 | - * | ||
83 | */ | 73 | */ |
84 | public DefaultGraphDescription(long nanos, long millis, | 74 | public DefaultGraphDescription(long nanos, long millis, |
85 | - Iterable<Device> devices, | 75 | + Iterable<Device> devices, |
86 | - Iterable<Link> links, | 76 | + Iterable<Link> links, |
87 | - SparseAnnotations... annotations) { | 77 | + SparseAnnotations... annotations) { |
88 | super(annotations); | 78 | super(annotations); |
89 | this.nanos = nanos; | 79 | this.nanos = nanos; |
90 | this.creationTime = millis; | 80 | this.creationTime = millis; |
... | @@ -114,8 +104,7 @@ implements GraphDescription { | ... | @@ -114,8 +104,7 @@ implements GraphDescription { |
114 | } | 104 | } |
115 | 105 | ||
116 | // Builds a set of topology vertexes from the specified list of devices | 106 | // Builds a set of topology vertexes from the specified list of devices |
117 | - private ImmutableSet<TopologyVertex> | 107 | + private ImmutableSet<TopologyVertex> buildVertexes(Iterable<Device> devices) { |
118 | - buildVertexes(Iterable<Device> devices) { | ||
119 | ImmutableSet.Builder<TopologyVertex> vertexes = ImmutableSet.builder(); | 108 | ImmutableSet.Builder<TopologyVertex> vertexes = ImmutableSet.builder(); |
120 | for (Device device : devices) { | 109 | for (Device device : devices) { |
121 | TopologyVertex vertex = new DefaultTopologyVertex(device.id()); | 110 | TopologyVertex vertex = new DefaultTopologyVertex(device.id()); | ... | ... |
... | @@ -13,20 +13,14 @@ | ... | @@ -13,20 +13,14 @@ |
13 | * See the License for the specific language governing permissions and | 13 | * See the License for the specific language governing permissions and |
14 | * limitations under the License. | 14 | * limitations under the License. |
15 | */ | 15 | */ |
16 | -package org.onosproject.store.topology.impl; | 16 | +package org.onosproject.common; |
17 | - | ||
18 | -import static com.google.common.base.MoreObjects.toStringHelper; | ||
19 | -import static org.onlab.graph.GraphPathSearch.ALL_PATHS; | ||
20 | -import static org.onosproject.core.CoreService.CORE_PROVIDER_ID; | ||
21 | -import static org.onosproject.net.Link.State.ACTIVE; | ||
22 | -import static org.onosproject.net.Link.State.INACTIVE; | ||
23 | -import static org.onosproject.net.Link.Type.INDIRECT; | ||
24 | - | ||
25 | -import java.util.ArrayList; | ||
26 | -import java.util.List; | ||
27 | -import java.util.Map; | ||
28 | -import java.util.Set; | ||
29 | 17 | ||
18 | +import com.google.common.base.Supplier; | ||
19 | +import com.google.common.base.Suppliers; | ||
20 | +import com.google.common.collect.ImmutableMap; | ||
21 | +import com.google.common.collect.ImmutableSet; | ||
22 | +import com.google.common.collect.ImmutableSetMultimap; | ||
23 | +import com.google.common.collect.ImmutableSetMultimap.Builder; | ||
30 | import org.onlab.graph.DijkstraGraphSearch; | 24 | import org.onlab.graph.DijkstraGraphSearch; |
31 | import org.onlab.graph.GraphPathSearch; | 25 | import org.onlab.graph.GraphPathSearch; |
32 | import org.onlab.graph.GraphPathSearch.Result; | 26 | import org.onlab.graph.GraphPathSearch.Result; |
... | @@ -50,14 +44,18 @@ import org.onosproject.net.topology.TopologyEdge; | ... | @@ -50,14 +44,18 @@ import org.onosproject.net.topology.TopologyEdge; |
50 | import org.onosproject.net.topology.TopologyGraph; | 44 | import org.onosproject.net.topology.TopologyGraph; |
51 | import org.onosproject.net.topology.TopologyVertex; | 45 | import org.onosproject.net.topology.TopologyVertex; |
52 | 46 | ||
53 | -import com.google.common.base.Supplier; | 47 | +import java.util.ArrayList; |
54 | -import com.google.common.base.Suppliers; | 48 | +import java.util.List; |
55 | -import com.google.common.collect.ImmutableMap; | 49 | +import java.util.Map; |
56 | -import com.google.common.collect.ImmutableSet; | 50 | +import java.util.Set; |
57 | -import com.google.common.collect.ImmutableSetMultimap; | 51 | + |
58 | -import com.google.common.collect.ImmutableSetMultimap.Builder; | 52 | +import static com.google.common.base.MoreObjects.toStringHelper; |
53 | +import static org.onlab.graph.GraphPathSearch.ALL_PATHS; | ||
54 | +import static org.onosproject.core.CoreService.CORE_PROVIDER_ID; | ||
55 | +import static org.onosproject.net.Link.State.ACTIVE; | ||
56 | +import static org.onosproject.net.Link.State.INACTIVE; | ||
57 | +import static org.onosproject.net.Link.Type.INDIRECT; | ||
59 | 58 | ||
60 | -// FIXME: Move to onos-core-common when ready | ||
61 | /** | 59 | /** |
62 | * Default implementation of the topology descriptor. This carries the backing | 60 | * Default implementation of the topology descriptor. This carries the backing |
63 | * topology data. | 61 | * topology data. |
... | @@ -83,19 +81,17 @@ public class DefaultTopology extends AbstractModel implements Topology { | ... | @@ -83,19 +81,17 @@ public class DefaultTopology extends AbstractModel implements Topology { |
83 | /** | 81 | /** |
84 | * Creates a topology descriptor attributed to the specified provider. | 82 | * Creates a topology descriptor attributed to the specified provider. |
85 | * | 83 | * |
86 | - * @param providerId | 84 | + * @param providerId identity of the provider |
87 | - * identity of the provider | 85 | + * @param description data describing the new topology |
88 | - * @param description | ||
89 | - * data describing the new topology | ||
90 | */ | 86 | */ |
91 | - DefaultTopology(ProviderId providerId, GraphDescription description) { | 87 | + public DefaultTopology(ProviderId providerId, GraphDescription description) { |
92 | super(providerId); | 88 | super(providerId); |
93 | this.time = description.timestamp(); | 89 | this.time = description.timestamp(); |
94 | this.creationTime = description.creationTime(); | 90 | this.creationTime = description.creationTime(); |
95 | 91 | ||
96 | // Build the graph | 92 | // Build the graph |
97 | this.graph = new DefaultTopologyGraph(description.vertexes(), | 93 | this.graph = new DefaultTopologyGraph(description.vertexes(), |
98 | - description.edges()); | 94 | + description.edges()); |
99 | 95 | ||
100 | this.clusterResults = Suppliers.memoize(() -> searchForClusters()); | 96 | this.clusterResults = Suppliers.memoize(() -> searchForClusters()); |
101 | this.clusters = Suppliers.memoize(() -> buildTopologyClusters()); | 97 | this.clusters = Suppliers.memoize(() -> buildTopologyClusters()); |
... | @@ -104,8 +100,7 @@ public class DefaultTopology extends AbstractModel implements Topology { | ... | @@ -104,8 +100,7 @@ public class DefaultTopology extends AbstractModel implements Topology { |
104 | 100 | ||
105 | this.weight = new HopCountLinkWeight(graph.getVertexes().size()); | 101 | this.weight = new HopCountLinkWeight(graph.getVertexes().size()); |
106 | this.broadcastSets = Suppliers.memoize(() -> buildBroadcastSets()); | 102 | this.broadcastSets = Suppliers.memoize(() -> buildBroadcastSets()); |
107 | - this.infrastructurePoints = Suppliers | 103 | + this.infrastructurePoints = Suppliers.memoize(() -> findInfrastructurePoints()); |
108 | - .memoize(() -> findInfrastructurePoints()); | ||
109 | this.computeCost = Math.max(0, System.nanoTime() - time); | 104 | this.computeCost = Math.max(0, System.nanoTime() - time); |
110 | } | 105 | } |
111 | 106 | ||
... | @@ -156,7 +151,7 @@ public class DefaultTopology extends AbstractModel implements Topology { | ... | @@ -156,7 +151,7 @@ public class DefaultTopology extends AbstractModel implements Topology { |
156 | * | 151 | * |
157 | * @return topology graph | 152 | * @return topology graph |
158 | */ | 153 | */ |
159 | - TopologyGraph getGraph() { | 154 | + public TopologyGraph getGraph() { |
160 | return graph; | 155 | return graph; |
161 | } | 156 | } |
162 | 157 | ||
... | @@ -165,7 +160,7 @@ public class DefaultTopology extends AbstractModel implements Topology { | ... | @@ -165,7 +160,7 @@ public class DefaultTopology extends AbstractModel implements Topology { |
165 | * | 160 | * |
166 | * @return set of clusters | 161 | * @return set of clusters |
167 | */ | 162 | */ |
168 | - Set<TopologyCluster> getClusters() { | 163 | + public Set<TopologyCluster> getClusters() { |
169 | return ImmutableSet.copyOf(clusters.get().values()); | 164 | return ImmutableSet.copyOf(clusters.get().values()); |
170 | } | 165 | } |
171 | 166 | ||
... | @@ -173,10 +168,9 @@ public class DefaultTopology extends AbstractModel implements Topology { | ... | @@ -173,10 +168,9 @@ public class DefaultTopology extends AbstractModel implements Topology { |
173 | * Returns the specified topology cluster. | 168 | * Returns the specified topology cluster. |
174 | * | 169 | * |
175 | * @param clusterId cluster identifier | 170 | * @param clusterId cluster identifier |
176 | - * | ||
177 | * @return topology cluster | 171 | * @return topology cluster |
178 | */ | 172 | */ |
179 | - TopologyCluster getCluster(ClusterId clusterId) { | 173 | + public TopologyCluster getCluster(ClusterId clusterId) { |
180 | return clusters.get().get(clusterId); | 174 | return clusters.get().get(clusterId); |
181 | } | 175 | } |
182 | 176 | ||
... | @@ -184,10 +178,9 @@ public class DefaultTopology extends AbstractModel implements Topology { | ... | @@ -184,10 +178,9 @@ public class DefaultTopology extends AbstractModel implements Topology { |
184 | * Returns the topology cluster that contains the given device. | 178 | * Returns the topology cluster that contains the given device. |
185 | * | 179 | * |
186 | * @param deviceId device identifier | 180 | * @param deviceId device identifier |
187 | - * | ||
188 | * @return topology cluster | 181 | * @return topology cluster |
189 | */ | 182 | */ |
190 | - TopologyCluster getCluster(DeviceId deviceId) { | 183 | + public TopologyCluster getCluster(DeviceId deviceId) { |
191 | return clustersByDevice().get(deviceId); | 184 | return clustersByDevice().get(deviceId); |
192 | } | 185 | } |
193 | 186 | ||
... | @@ -195,10 +188,9 @@ public class DefaultTopology extends AbstractModel implements Topology { | ... | @@ -195,10 +188,9 @@ public class DefaultTopology extends AbstractModel implements Topology { |
195 | * Returns the set of cluster devices. | 188 | * Returns the set of cluster devices. |
196 | * | 189 | * |
197 | * @param cluster topology cluster | 190 | * @param cluster topology cluster |
198 | - * | ||
199 | * @return cluster devices | 191 | * @return cluster devices |
200 | */ | 192 | */ |
201 | - Set<DeviceId> getClusterDevices(TopologyCluster cluster) { | 193 | + public Set<DeviceId> getClusterDevices(TopologyCluster cluster) { |
202 | return devicesByCluster().get(cluster); | 194 | return devicesByCluster().get(cluster); |
203 | } | 195 | } |
204 | 196 | ||
... | @@ -206,10 +198,9 @@ public class DefaultTopology extends AbstractModel implements Topology { | ... | @@ -206,10 +198,9 @@ public class DefaultTopology extends AbstractModel implements Topology { |
206 | * Returns the set of cluster links. | 198 | * Returns the set of cluster links. |
207 | * | 199 | * |
208 | * @param cluster topology cluster | 200 | * @param cluster topology cluster |
209 | - * | ||
210 | * @return cluster links | 201 | * @return cluster links |
211 | */ | 202 | */ |
212 | - Set<Link> getClusterLinks(TopologyCluster cluster) { | 203 | + public Set<Link> getClusterLinks(TopologyCluster cluster) { |
213 | return linksByCluster().get(cluster); | 204 | return linksByCluster().get(cluster); |
214 | } | 205 | } |
215 | 206 | ||
... | @@ -217,10 +208,9 @@ public class DefaultTopology extends AbstractModel implements Topology { | ... | @@ -217,10 +208,9 @@ public class DefaultTopology extends AbstractModel implements Topology { |
217 | * Indicates whether the given point is an infrastructure link end-point. | 208 | * Indicates whether the given point is an infrastructure link end-point. |
218 | * | 209 | * |
219 | * @param connectPoint connection point | 210 | * @param connectPoint connection point |
220 | - * | ||
221 | * @return true if infrastructure | 211 | * @return true if infrastructure |
222 | */ | 212 | */ |
223 | - boolean isInfrastructure(ConnectPoint connectPoint) { | 213 | + public boolean isInfrastructure(ConnectPoint connectPoint) { |
224 | return infrastructurePoints.get().contains(connectPoint); | 214 | return infrastructurePoints.get().contains(connectPoint); |
225 | } | 215 | } |
226 | 216 | ||
... | @@ -228,10 +218,9 @@ public class DefaultTopology extends AbstractModel implements Topology { | ... | @@ -228,10 +218,9 @@ public class DefaultTopology extends AbstractModel implements Topology { |
228 | * Indicates whether the given point is part of a broadcast set. | 218 | * Indicates whether the given point is part of a broadcast set. |
229 | * | 219 | * |
230 | * @param connectPoint connection point | 220 | * @param connectPoint connection point |
231 | - * | ||
232 | * @return true if in broadcast set | 221 | * @return true if in broadcast set |
233 | */ | 222 | */ |
234 | - boolean isBroadcastPoint(ConnectPoint connectPoint) { | 223 | + public boolean isBroadcastPoint(ConnectPoint connectPoint) { |
235 | // Any non-infrastructure, i.e. edge points are assumed to be OK. | 224 | // Any non-infrastructure, i.e. edge points are assumed to be OK. |
236 | if (!isInfrastructure(connectPoint)) { | 225 | if (!isInfrastructure(connectPoint)) { |
237 | return true; | 226 | return true; |
... | @@ -241,7 +230,7 @@ public class DefaultTopology extends AbstractModel implements Topology { | ... | @@ -241,7 +230,7 @@ public class DefaultTopology extends AbstractModel implements Topology { |
241 | TopologyCluster cluster = clustersByDevice().get(connectPoint.deviceId()); | 230 | TopologyCluster cluster = clustersByDevice().get(connectPoint.deviceId()); |
242 | if (cluster == null) { | 231 | if (cluster == null) { |
243 | throw new IllegalArgumentException("No cluster found for device " | 232 | throw new IllegalArgumentException("No cluster found for device " |
244 | - + connectPoint.deviceId()); | 233 | + + connectPoint.deviceId()); |
245 | } | 234 | } |
246 | 235 | ||
247 | // If the broadcast set is null or empty, or if the point explicitly | 236 | // If the broadcast set is null or empty, or if the point explicitly |
... | @@ -254,10 +243,9 @@ public class DefaultTopology extends AbstractModel implements Topology { | ... | @@ -254,10 +243,9 @@ public class DefaultTopology extends AbstractModel implements Topology { |
254 | * Returns the size of the cluster broadcast set. | 243 | * Returns the size of the cluster broadcast set. |
255 | * | 244 | * |
256 | * @param clusterId cluster identifier | 245 | * @param clusterId cluster identifier |
257 | - * | ||
258 | * @return size of the cluster broadcast set | 246 | * @return size of the cluster broadcast set |
259 | */ | 247 | */ |
260 | - int broadcastSetSize(ClusterId clusterId) { | 248 | + public int broadcastSetSize(ClusterId clusterId) { |
261 | return broadcastSets.get().get(clusterId).size(); | 249 | return broadcastSets.get().get(clusterId).size(); |
262 | } | 250 | } |
263 | 251 | ||
... | @@ -266,12 +254,10 @@ public class DefaultTopology extends AbstractModel implements Topology { | ... | @@ -266,12 +254,10 @@ public class DefaultTopology extends AbstractModel implements Topology { |
266 | * destination devices. | 254 | * destination devices. |
267 | * | 255 | * |
268 | * @param src source device | 256 | * @param src source device |
269 | - * | ||
270 | * @param dst destination device | 257 | * @param dst destination device |
271 | - * | ||
272 | * @return set of shortest paths | 258 | * @return set of shortest paths |
273 | */ | 259 | */ |
274 | - Set<Path> getPaths(DeviceId src, DeviceId dst) { | 260 | + public Set<Path> getPaths(DeviceId src, DeviceId dst) { |
275 | return getPaths(src, dst, null); | 261 | return getPaths(src, dst, null); |
276 | } | 262 | } |
277 | 263 | ||
... | @@ -279,15 +265,12 @@ public class DefaultTopology extends AbstractModel implements Topology { | ... | @@ -279,15 +265,12 @@ public class DefaultTopology extends AbstractModel implements Topology { |
279 | * Computes on-demand the set of shortest paths between source and | 265 | * Computes on-demand the set of shortest paths between source and |
280 | * destination devices. | 266 | * destination devices. |
281 | * | 267 | * |
282 | - * @param src source device | 268 | + * @param src source device |
283 | - * | 269 | + * @param dst destination device |
284 | - * @param dst destination device | ||
285 | - * | ||
286 | * @param weight link weight function | 270 | * @param weight link weight function |
287 | - * | ||
288 | * @return set of shortest paths | 271 | * @return set of shortest paths |
289 | */ | 272 | */ |
290 | - Set<Path> getPaths(DeviceId src, DeviceId dst, LinkWeight weight) { | 273 | + public Set<Path> getPaths(DeviceId src, DeviceId dst, LinkWeight weight) { |
291 | final DefaultTopologyVertex srcV = new DefaultTopologyVertex(src); | 274 | final DefaultTopologyVertex srcV = new DefaultTopologyVertex(src); |
292 | final DefaultTopologyVertex dstV = new DefaultTopologyVertex(dst); | 275 | final DefaultTopologyVertex dstV = new DefaultTopologyVertex(dst); |
293 | Set<TopologyVertex> vertices = graph.getVertexes(); | 276 | Set<TopologyVertex> vertices = graph.getVertexes(); |
... | @@ -470,10 +453,9 @@ public class DefaultTopology extends AbstractModel implements Topology { | ... | @@ -470,10 +453,9 @@ public class DefaultTopology extends AbstractModel implements Topology { |
470 | final ImmutableSetMultimap<TopologyCluster, DeviceId> devicesByCluster; | 453 | final ImmutableSetMultimap<TopologyCluster, DeviceId> devicesByCluster; |
471 | final ImmutableSetMultimap<TopologyCluster, Link> linksByCluster; | 454 | final ImmutableSetMultimap<TopologyCluster, Link> linksByCluster; |
472 | 455 | ||
473 | - public ClusterIndexes( | 456 | + public ClusterIndexes(ImmutableMap<DeviceId, TopologyCluster> clustersByDevice, |
474 | - ImmutableMap<DeviceId, TopologyCluster> clustersByDevice, | 457 | + ImmutableSetMultimap<TopologyCluster, DeviceId> devicesByCluster, |
475 | - ImmutableSetMultimap<TopologyCluster, DeviceId> devicesByCluster, | 458 | + ImmutableSetMultimap<TopologyCluster, Link> linksByCluster) { |
476 | - ImmutableSetMultimap<TopologyCluster, Link> linksByCluster) { | ||
477 | this.clustersByDevice = clustersByDevice; | 459 | this.clustersByDevice = clustersByDevice; |
478 | this.devicesByCluster = devicesByCluster; | 460 | this.devicesByCluster = devicesByCluster; |
479 | this.linksByCluster = linksByCluster; | 461 | this.linksByCluster = linksByCluster; | ... | ... |
... | @@ -13,7 +13,7 @@ | ... | @@ -13,7 +13,7 @@ |
13 | * See the License for the specific language governing permissions and | 13 | * See the License for the specific language governing permissions and |
14 | * limitations under the License. | 14 | * limitations under the License. |
15 | */ | 15 | */ |
16 | -package org.onosproject.store.trivial; | 16 | +package org.onosproject.common; |
17 | 17 | ||
18 | import org.onlab.graph.AdjacencyListsGraph; | 18 | import org.onlab.graph.AdjacencyListsGraph; |
19 | import org.onosproject.net.topology.TopologyEdge; | 19 | import org.onosproject.net.topology.TopologyEdge; | ... | ... |
... | @@ -13,7 +13,7 @@ | ... | @@ -13,7 +13,7 @@ |
13 | * See the License for the specific language governing permissions and | 13 | * See the License for the specific language governing permissions and |
14 | * limitations under the License. | 14 | * limitations under the License. |
15 | */ | 15 | */ |
16 | -package org.onosproject.store.trivial; | 16 | +package org.onosproject.common; |
17 | 17 | ||
18 | import org.junit.Before; | 18 | import org.junit.Before; |
19 | import org.junit.Test; | 19 | import org.junit.Test; | ... | ... |
This diff is collapsed. Click to expand it.
... | @@ -19,6 +19,7 @@ import org.apache.felix.scr.annotations.Activate; | ... | @@ -19,6 +19,7 @@ import org.apache.felix.scr.annotations.Activate; |
19 | import org.apache.felix.scr.annotations.Component; | 19 | import org.apache.felix.scr.annotations.Component; |
20 | import org.apache.felix.scr.annotations.Deactivate; | 20 | import org.apache.felix.scr.annotations.Deactivate; |
21 | import org.apache.felix.scr.annotations.Service; | 21 | import org.apache.felix.scr.annotations.Service; |
22 | +import org.onosproject.common.DefaultTopology; | ||
22 | import org.onosproject.event.Event; | 23 | import org.onosproject.event.Event; |
23 | import org.onosproject.net.ConnectPoint; | 24 | import org.onosproject.net.ConnectPoint; |
24 | import org.onosproject.net.DeviceId; | 25 | import org.onosproject.net.DeviceId; | ... | ... |
core/store/dist/src/main/java/org/onosproject/store/topology/impl/DefaultTopologyGraph.java
deleted
100644 → 0
1 | -/* | ||
2 | - * Copyright 2014 Open Networking Laboratory | ||
3 | - * | ||
4 | - * Licensed under the Apache License, Version 2.0 (the "License"); | ||
5 | - * you may not use this file except in compliance with the License. | ||
6 | - * You may obtain a copy of the License at | ||
7 | - * | ||
8 | - * http://www.apache.org/licenses/LICENSE-2.0 | ||
9 | - * | ||
10 | - * Unless required by applicable law or agreed to in writing, software | ||
11 | - * distributed under the License is distributed on an "AS IS" BASIS, | ||
12 | - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. | ||
13 | - * See the License for the specific language governing permissions and | ||
14 | - * limitations under the License. | ||
15 | - */ | ||
16 | -package org.onosproject.store.topology.impl; | ||
17 | - | ||
18 | -import org.onlab.graph.AdjacencyListsGraph; | ||
19 | -import org.onosproject.net.topology.TopologyEdge; | ||
20 | -import org.onosproject.net.topology.TopologyGraph; | ||
21 | -import org.onosproject.net.topology.TopologyVertex; | ||
22 | - | ||
23 | -import java.util.Set; | ||
24 | - | ||
25 | -/** | ||
26 | - * Default implementation of an immutable topology graph based on a generic | ||
27 | - * implementation of adjacency lists graph. | ||
28 | - */ | ||
29 | -public class DefaultTopologyGraph | ||
30 | - extends AdjacencyListsGraph<TopologyVertex, TopologyEdge> | ||
31 | - implements TopologyGraph { | ||
32 | - | ||
33 | - /** | ||
34 | - * Creates a topology graph comprising of the specified vertexes and edges. | ||
35 | - * | ||
36 | - * @param vertexes set of graph vertexes | ||
37 | - * @param edges set of graph edges | ||
38 | - */ | ||
39 | - public DefaultTopologyGraph(Set<TopologyVertex> vertexes, Set<TopologyEdge> edges) { | ||
40 | - super(vertexes, edges); | ||
41 | - } | ||
42 | - | ||
43 | -} |
... | @@ -15,6 +15,8 @@ | ... | @@ -15,6 +15,8 @@ |
15 | */ | 15 | */ |
16 | package org.onosproject.store.topology.impl; | 16 | package org.onosproject.store.topology.impl; |
17 | 17 | ||
18 | +import static com.google.common.base.Preconditions.checkArgument; | ||
19 | +import static org.onosproject.net.topology.TopologyEvent.Type.TOPOLOGY_CHANGED; | ||
18 | import static org.slf4j.LoggerFactory.getLogger; | 20 | import static org.slf4j.LoggerFactory.getLogger; |
19 | 21 | ||
20 | import java.util.Collections; | 22 | import java.util.Collections; |
... | @@ -25,6 +27,7 @@ import org.apache.felix.scr.annotations.Activate; | ... | @@ -25,6 +27,7 @@ import org.apache.felix.scr.annotations.Activate; |
25 | import org.apache.felix.scr.annotations.Component; | 27 | import org.apache.felix.scr.annotations.Component; |
26 | import org.apache.felix.scr.annotations.Deactivate; | 28 | import org.apache.felix.scr.annotations.Deactivate; |
27 | import org.apache.felix.scr.annotations.Service; | 29 | import org.apache.felix.scr.annotations.Service; |
30 | +import org.onosproject.common.DefaultTopology; | ||
28 | import org.onosproject.event.Event; | 31 | import org.onosproject.event.Event; |
29 | import org.onosproject.net.ConnectPoint; | 32 | import org.onosproject.net.ConnectPoint; |
30 | import org.onosproject.net.Device; | 33 | import org.onosproject.net.Device; |
... | @@ -48,23 +51,23 @@ import org.slf4j.Logger; | ... | @@ -48,23 +51,23 @@ import org.slf4j.Logger; |
48 | /** | 51 | /** |
49 | * Manages inventory of topology snapshots using trivial in-memory | 52 | * Manages inventory of topology snapshots using trivial in-memory |
50 | * structures implementation. | 53 | * structures implementation. |
51 | - * | 54 | + * <p> |
52 | * Note: This component is not distributed per-se. It runs on every | 55 | * Note: This component is not distributed per-se. It runs on every |
53 | * instance and feeds off of other distributed stores. | 56 | * instance and feeds off of other distributed stores. |
54 | */ | 57 | */ |
55 | @Component(immediate = true) | 58 | @Component(immediate = true) |
56 | @Service | 59 | @Service |
57 | public class DistributedTopologyStore | 60 | public class DistributedTopologyStore |
58 | -extends AbstractStore<TopologyEvent, TopologyStoreDelegate> | 61 | + extends AbstractStore<TopologyEvent, TopologyStoreDelegate> |
59 | -implements TopologyStore { | 62 | + implements TopologyStore { |
60 | 63 | ||
61 | private final Logger log = getLogger(getClass()); | 64 | private final Logger log = getLogger(getClass()); |
62 | 65 | ||
63 | private volatile DefaultTopology current = | 66 | private volatile DefaultTopology current = |
64 | new DefaultTopology(ProviderId.NONE, | 67 | new DefaultTopology(ProviderId.NONE, |
65 | - new DefaultGraphDescription(0L, | 68 | + new DefaultGraphDescription(0L, 0L, |
66 | - Collections.<Device>emptyList(), | 69 | + Collections.<Device>emptyList(), |
67 | - Collections.<Link>emptyList())); | 70 | + Collections.<Link>emptyList())); |
68 | 71 | ||
69 | @Activate | 72 | @Activate |
70 | public void activate() { | 73 | public void activate() { |
... | @@ -75,6 +78,7 @@ implements TopologyStore { | ... | @@ -75,6 +78,7 @@ implements TopologyStore { |
75 | public void deactivate() { | 78 | public void deactivate() { |
76 | log.info("Stopped"); | 79 | log.info("Stopped"); |
77 | } | 80 | } |
81 | + | ||
78 | @Override | 82 | @Override |
79 | public Topology currentTopology() { | 83 | public Topology currentTopology() { |
80 | return current; | 84 | return current; |
... | @@ -118,7 +122,7 @@ implements TopologyStore { | ... | @@ -118,7 +122,7 @@ implements TopologyStore { |
118 | 122 | ||
119 | @Override | 123 | @Override |
120 | public Set<Path> getPaths(Topology topology, DeviceId src, DeviceId dst, | 124 | public Set<Path> getPaths(Topology topology, DeviceId src, DeviceId dst, |
121 | - LinkWeight weight) { | 125 | + LinkWeight weight) { |
122 | return defaultTopology(topology).getPaths(src, dst, weight); | 126 | return defaultTopology(topology).getPaths(src, dst, weight); |
123 | } | 127 | } |
124 | 128 | ||
... | @@ -134,8 +138,8 @@ implements TopologyStore { | ... | @@ -134,8 +138,8 @@ implements TopologyStore { |
134 | 138 | ||
135 | @Override | 139 | @Override |
136 | public TopologyEvent updateTopology(ProviderId providerId, | 140 | public TopologyEvent updateTopology(ProviderId providerId, |
137 | - GraphDescription graphDescription, | 141 | + GraphDescription graphDescription, |
138 | - List<Event> reasons) { | 142 | + List<Event> reasons) { |
139 | // First off, make sure that what we're given is indeed newer than | 143 | // First off, make sure that what we're given is indeed newer than |
140 | // what we already have. | 144 | // what we already have. |
141 | if (current != null && graphDescription.timestamp() < current.time()) { | 145 | if (current != null && graphDescription.timestamp() < current.time()) { |
... | @@ -149,18 +153,15 @@ implements TopologyStore { | ... | @@ -149,18 +153,15 @@ implements TopologyStore { |
149 | // Promote the new topology to current and return a ready-to-send event. | 153 | // Promote the new topology to current and return a ready-to-send event. |
150 | synchronized (this) { | 154 | synchronized (this) { |
151 | current = newTopology; | 155 | current = newTopology; |
152 | - return new TopologyEvent(TopologyEvent.Type.TOPOLOGY_CHANGED, | 156 | + return new TopologyEvent(TOPOLOGY_CHANGED, current, reasons); |
153 | - current, reasons); | ||
154 | } | 157 | } |
155 | } | 158 | } |
156 | 159 | ||
157 | // Validates the specified topology and returns it as a default | 160 | // Validates the specified topology and returns it as a default |
158 | private DefaultTopology defaultTopology(Topology topology) { | 161 | private DefaultTopology defaultTopology(Topology topology) { |
159 | - if (topology instanceof DefaultTopology) { | 162 | + checkArgument(topology instanceof DefaultTopology, |
160 | - return (DefaultTopology) topology; | 163 | + "Topology class %s not supported", topology.getClass()); |
161 | - } | 164 | + return (DefaultTopology) topology; |
162 | - throw new IllegalArgumentException("Topology class " + topology.getClass() + | ||
163 | - " not supported"); | ||
164 | } | 165 | } |
165 | 166 | ||
166 | } | 167 | } | ... | ... |
-
Please register or login to post a comment