Committed by
Gerrit Code Review
Initial cut for UI topo model implementation.
- also moved existing classes down a package (to util). Change-Id: Ie6c99ff10a3f4255795217a93f7028b5d8717d21
Showing
12 changed files
with
237 additions
and
68 deletions
... | @@ -63,7 +63,7 @@ import org.onosproject.net.topology.TopologyService; | ... | @@ -63,7 +63,7 @@ import org.onosproject.net.topology.TopologyService; |
63 | import org.onosproject.ui.JsonUtils; | 63 | import org.onosproject.ui.JsonUtils; |
64 | import org.onosproject.ui.UiConnection; | 64 | import org.onosproject.ui.UiConnection; |
65 | import org.onosproject.ui.UiMessageHandler; | 65 | import org.onosproject.ui.UiMessageHandler; |
66 | -import org.onosproject.ui.impl.topo.ServicesBundle; | 66 | +import org.onosproject.ui.impl.topo.util.ServicesBundle; |
67 | import org.onosproject.ui.topo.PropertyPanel; | 67 | import org.onosproject.ui.topo.PropertyPanel; |
68 | import org.slf4j.Logger; | 68 | import org.slf4j.Logger; |
69 | import org.slf4j.LoggerFactory; | 69 | import org.slf4j.LoggerFactory; | ... | ... |
... | @@ -37,12 +37,12 @@ import org.onosproject.net.intent.OpticalConnectivityIntent; | ... | @@ -37,12 +37,12 @@ import org.onosproject.net.intent.OpticalConnectivityIntent; |
37 | import org.onosproject.net.intent.OpticalPathIntent; | 37 | import org.onosproject.net.intent.OpticalPathIntent; |
38 | import org.onosproject.net.intent.PathIntent; | 38 | import org.onosproject.net.intent.PathIntent; |
39 | import org.onosproject.net.statistic.Load; | 39 | import org.onosproject.net.statistic.Load; |
40 | -import org.onosproject.ui.impl.topo.IntentSelection; | 40 | +import org.onosproject.ui.impl.topo.util.IntentSelection; |
41 | -import org.onosproject.ui.impl.topo.ServicesBundle; | 41 | +import org.onosproject.ui.impl.topo.util.ServicesBundle; |
42 | -import org.onosproject.ui.impl.topo.TopoIntentFilter; | 42 | +import org.onosproject.ui.impl.topo.util.TopoIntentFilter; |
43 | -import org.onosproject.ui.impl.topo.TrafficLink; | 43 | +import org.onosproject.ui.impl.topo.util.TrafficLink; |
44 | -import org.onosproject.ui.impl.topo.TrafficLink.StatsType; | 44 | +import org.onosproject.ui.impl.topo.util.TrafficLink.StatsType; |
45 | -import org.onosproject.ui.impl.topo.TrafficLinkMap; | 45 | +import org.onosproject.ui.impl.topo.util.TrafficLinkMap; |
46 | import org.onosproject.ui.topo.DeviceHighlight; | 46 | import org.onosproject.ui.topo.DeviceHighlight; |
47 | import org.onosproject.ui.topo.Highlights; | 47 | import org.onosproject.ui.topo.Highlights; |
48 | import org.onosproject.ui.topo.Highlights.Amount; | 48 | import org.onosproject.ui.topo.Highlights.Amount; |
... | @@ -66,7 +66,9 @@ import java.util.Timer; | ... | @@ -66,7 +66,9 @@ import java.util.Timer; |
66 | import java.util.TimerTask; | 66 | import java.util.TimerTask; |
67 | 67 | ||
68 | import static org.onosproject.net.DefaultEdgeLink.createEdgeLink; | 68 | import static org.onosproject.net.DefaultEdgeLink.createEdgeLink; |
69 | -import static org.onosproject.ui.impl.TrafficMonitor.Mode.*; | 69 | +import static org.onosproject.ui.impl.TrafficMonitor.Mode.IDLE; |
70 | +import static org.onosproject.ui.impl.TrafficMonitor.Mode.RELATED_INTENTS; | ||
71 | +import static org.onosproject.ui.impl.TrafficMonitor.Mode.SELECTED_INTENT; | ||
70 | 72 | ||
71 | /** | 73 | /** |
72 | * Encapsulates the behavior of monitoring specific traffic patterns. | 74 | * Encapsulates the behavior of monitoring specific traffic patterns. | ... | ... |
1 | +/* | ||
2 | + * Copyright 2016 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 | + | ||
17 | +package org.onosproject.ui.impl.topo.model; | ||
18 | + | ||
19 | +import org.slf4j.Logger; | ||
20 | +import org.slf4j.LoggerFactory; | ||
21 | + | ||
22 | +/** | ||
23 | + * A lazily-initialized Singleton that creates and maintains the UI-model | ||
24 | + * of the network topology. | ||
25 | + */ | ||
26 | +public final class UiSharedTopologyModel { | ||
27 | + | ||
28 | + private static final Logger log = | ||
29 | + LoggerFactory.getLogger(UiSharedTopologyModel.class); | ||
30 | + | ||
31 | + private static UiSharedTopologyModel singleton = null; | ||
32 | + | ||
33 | + private UiSharedTopologyModel() { | ||
34 | + // TODO: set up core model listeners and build the state of the model | ||
35 | + } | ||
36 | + | ||
37 | + public void register(UiTopoLayout layout) { | ||
38 | + log.info("Registering topology layout {}", layout); | ||
39 | + // TODO: register the view | ||
40 | + } | ||
41 | + | ||
42 | + public void unregister(UiTopoLayout layout) { | ||
43 | + log.info("Unregistering topology layout {}", layout); | ||
44 | + // TODO: unregister the view | ||
45 | + } | ||
46 | + | ||
47 | + /** | ||
48 | + * Returns a reference to the Singleton UI network topology model. | ||
49 | + * | ||
50 | + * @return the singleton topology model | ||
51 | + */ | ||
52 | + public static synchronized UiSharedTopologyModel instance() { | ||
53 | + if (singleton == null) { | ||
54 | + log.info("Instantiating Singleton."); | ||
55 | + singleton = new UiSharedTopologyModel(); | ||
56 | + } | ||
57 | + return singleton; | ||
58 | + } | ||
59 | +} |
1 | +/* | ||
2 | + * Copyright 2016 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 | + | ||
17 | +package org.onosproject.ui.impl.topo.model; | ||
18 | + | ||
19 | +import org.slf4j.Logger; | ||
20 | +import org.slf4j.LoggerFactory; | ||
21 | + | ||
22 | +/** | ||
23 | + * Base class for modeling the Topology View layout. | ||
24 | + * <p> | ||
25 | + * Note that an instance of this class will be created for each | ||
26 | + * {@link org.onosproject.ui.impl.UiWebSocket} connection, and will contain | ||
27 | + * the state of how the topology is laid out for the logged-in user. | ||
28 | + */ | ||
29 | +public class UiTopoLayout { | ||
30 | + private final Logger log = LoggerFactory.getLogger(getClass()); | ||
31 | + | ||
32 | + private final String username; | ||
33 | + private final UiSharedTopologyModel sharedModel; | ||
34 | + | ||
35 | + private boolean registered = false; | ||
36 | + | ||
37 | + /** | ||
38 | + * Creates a new topology layout. | ||
39 | + */ | ||
40 | + public UiTopoLayout(String username) { | ||
41 | + this.username = username; | ||
42 | + this.sharedModel = UiSharedTopologyModel.instance(); | ||
43 | + } | ||
44 | + | ||
45 | + /** | ||
46 | + * Initializes the layout; registering with the shared model. | ||
47 | + */ | ||
48 | + public void init() { | ||
49 | + if (!registered) { | ||
50 | + sharedModel.register(this); | ||
51 | + registered = true; | ||
52 | + } else { | ||
53 | + log.warn("already registered"); | ||
54 | + } | ||
55 | + } | ||
56 | + | ||
57 | + /** | ||
58 | + * Destroys the layout; unregistering from the shared model. | ||
59 | + */ | ||
60 | + public void destroy() { | ||
61 | + if (!registered) { | ||
62 | + sharedModel.unregister(this); | ||
63 | + } else { | ||
64 | + log.warn("already unregistered"); | ||
65 | + } | ||
66 | + } | ||
67 | + | ||
68 | + @Override | ||
69 | + public String toString() { | ||
70 | + return String.format("{UiTopoLayout for user <%s>}", username); | ||
71 | + } | ||
72 | +} |
1 | +/* | ||
2 | + * Copyright 2016 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 | + | ||
17 | +/** | ||
18 | + * Server-side modeling of the Topology View. | ||
19 | + */ | ||
20 | +package org.onosproject.ui.impl.topo.model; |
1 | /* | 1 | /* |
2 | - * Copyright 2015 Open Networking Laboratory | 2 | + * Copyright 2016 Open Networking Laboratory |
3 | * | 3 | * |
4 | - * Licensed under the Apache License, Version 2.0 (the "License"); | 4 | + * Licensed under the Apache License, Version 2.0 (the "License"); |
5 | - * you may not use this file except in compliance with 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 | 6 | + * You may obtain a copy of the License at |
7 | * | 7 | * |
8 | - * http://www.apache.org/licenses/LICENSE-2.0 | 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 | * | 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. | ||
16 | */ | 15 | */ |
17 | 16 | ||
18 | -package org.onosproject.ui.impl.topo; | 17 | +package org.onosproject.ui.impl.topo.util; |
19 | 18 | ||
20 | import org.onosproject.net.intent.Intent; | 19 | import org.onosproject.net.intent.Intent; |
21 | import org.onosproject.ui.topo.NodeSelection; | 20 | import org.onosproject.ui.topo.NodeSelection; | ... | ... |
1 | /* | 1 | /* |
2 | - * Copyright 2015 Open Networking Laboratory | 2 | + * Copyright 2016 Open Networking Laboratory |
3 | * | 3 | * |
4 | - * Licensed under the Apache License, Version 2.0 (the "License"); | 4 | + * Licensed under the Apache License, Version 2.0 (the "License"); |
5 | - * you may not use this file except in compliance with 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 | 6 | + * You may obtain a copy of the License at |
7 | * | 7 | * |
8 | - * http://www.apache.org/licenses/LICENSE-2.0 | 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 | * | 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. | ||
16 | */ | 15 | */ |
17 | 16 | ||
18 | -package org.onosproject.ui.impl.topo; | 17 | +package org.onosproject.ui.impl.topo.util; |
19 | 18 | ||
20 | import org.onosproject.incubator.net.PortStatisticsService; | 19 | import org.onosproject.incubator.net.PortStatisticsService; |
21 | import org.onosproject.net.device.DeviceService; | 20 | import org.onosproject.net.device.DeviceService; | ... | ... |
1 | /* | 1 | /* |
2 | - * Copyright 2014-2015 Open Networking Laboratory | 2 | + * Copyright 2016 Open Networking Laboratory |
3 | * | 3 | * |
4 | - * Licensed under the Apache License, Version 2.0 (the "License"); | 4 | + * Licensed under the Apache License, Version 2.0 (the "License"); |
5 | - * you may not use this file except in compliance with 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 | 6 | + * You may obtain a copy of the License at |
7 | * | 7 | * |
8 | - * http://www.apache.org/licenses/LICENSE-2.0 | 8 | + * http://www.apache.org/licenses/LICENSE-2.0 |
9 | * | 9 | * |
10 | - * Unless required by applicable law or agreed to in writing, software | 10 | + * Unless required by applicable law or agreed to in writing, software |
11 | - * distributed under the License is distributed on an "AS IS" BASIS, | 11 | + * distributed under the License is distributed on an "AS IS" BASIS, |
12 | - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. | 12 | + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. |
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.ui.impl.topo; | 16 | +package org.onosproject.ui.impl.topo.util; |
17 | 17 | ||
18 | import org.onosproject.net.ConnectPoint; | 18 | import org.onosproject.net.ConnectPoint; |
19 | import org.onosproject.net.Device; | 19 | import org.onosproject.net.Device; | ... | ... |
1 | /* | 1 | /* |
2 | - * Copyright 2015 Open Networking Laboratory | 2 | + * Copyright 2016 Open Networking Laboratory |
3 | * | 3 | * |
4 | - * Licensed under the Apache License, Version 2.0 (the "License"); | 4 | + * Licensed under the Apache License, Version 2.0 (the "License"); |
5 | - * you may not use this file except in compliance with 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 | 6 | + * You may obtain a copy of the License at |
7 | * | 7 | * |
8 | - * http://www.apache.org/licenses/LICENSE-2.0 | 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 | * | 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. | ||
16 | */ | 15 | */ |
17 | 16 | ||
18 | -package org.onosproject.ui.impl.topo; | 17 | +package org.onosproject.ui.impl.topo.util; |
19 | 18 | ||
20 | import org.onosproject.net.Link; | 19 | import org.onosproject.net.Link; |
21 | import org.onosproject.net.LinkKey; | 20 | import org.onosproject.net.LinkKey; | ... | ... |
1 | /* | 1 | /* |
2 | - * Copyright 2015 Open Networking Laboratory | 2 | + * Copyright 2016 Open Networking Laboratory |
3 | * | 3 | * |
4 | - * Licensed under the Apache License, Version 2.0 (the "License"); | 4 | + * Licensed under the Apache License, Version 2.0 (the "License"); |
5 | - * you may not use this file except in compliance with 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 | 6 | + * You may obtain a copy of the License at |
7 | * | 7 | * |
8 | - * http://www.apache.org/licenses/LICENSE-2.0 | 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 | * | 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. | ||
16 | */ | 15 | */ |
17 | 16 | ||
18 | -package org.onosproject.ui.impl.topo; | 17 | +package org.onosproject.ui.impl.topo.util; |
19 | 18 | ||
20 | import org.onosproject.net.Link; | 19 | import org.onosproject.net.Link; |
21 | import org.onosproject.net.LinkKey; | 20 | import org.onosproject.net.LinkKey; | ... | ... |
1 | +/* | ||
2 | + * Copyright 2016 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 | + | ||
17 | +/** | ||
18 | + * Topology resources for the ONOS GUI. | ||
19 | + */ | ||
20 | +package org.onosproject.ui.impl.topo.util; |
-
Please register or login to post a comment