Committed by
Sho Shimizu
Move inner classes to upper level
Rename as follows. - ResourceId.Discrete -> DiscreteResourceId - ResourceId.Continuous -> ContinuousResourceId - Resource.Discrete -> DiscreteResource - Resource.Continuous -> ContinuousResource Change-Id: I80e59d1eec07128743bacc582a8725bd4d5489b4
Showing
9 changed files
with
274 additions
and
183 deletions
... | @@ -34,6 +34,7 @@ import org.onosproject.cli.AbstractShellCommand; | ... | @@ -34,6 +34,7 @@ import org.onosproject.cli.AbstractShellCommand; |
34 | import org.onosproject.net.DeviceId; | 34 | import org.onosproject.net.DeviceId; |
35 | import org.onosproject.net.PortNumber; | 35 | import org.onosproject.net.PortNumber; |
36 | import org.onosproject.net.TributarySlot; | 36 | import org.onosproject.net.TributarySlot; |
37 | +import org.onosproject.net.newresource.ContinuousResource; | ||
37 | import org.onosproject.net.newresource.Resource; | 38 | import org.onosproject.net.newresource.Resource; |
38 | import org.onosproject.net.newresource.ResourceService; | 39 | import org.onosproject.net.newresource.ResourceService; |
39 | 40 | ||
... | @@ -112,10 +113,10 @@ public class ResourcesCommand extends AbstractShellCommand { | ... | @@ -112,10 +113,10 @@ public class ResourcesCommand extends AbstractShellCommand { |
112 | return; | 113 | return; |
113 | } | 114 | } |
114 | 115 | ||
115 | - if (resource instanceof Resource.Continuous) { | 116 | + if (resource instanceof ContinuousResource) { |
116 | print("%s%s: %f", Strings.repeat(" ", level), | 117 | print("%s%s: %f", Strings.repeat(" ", level), |
117 | resource.last(), | 118 | resource.last(), |
118 | - ((Resource.Continuous) resource).value()); | 119 | + ((ContinuousResource) resource).value()); |
119 | // Continuous resource is terminal node, stop here | 120 | // Continuous resource is terminal node, stop here |
120 | return; | 121 | return; |
121 | } else { | 122 | } else { |
... | @@ -144,7 +145,7 @@ public class ResourcesCommand extends AbstractShellCommand { | ... | @@ -144,7 +145,7 @@ public class ResourcesCommand extends AbstractShellCommand { |
144 | List<Resource> nonAggregatable = new ArrayList<>(); | 145 | List<Resource> nonAggregatable = new ArrayList<>(); |
145 | 146 | ||
146 | for (Resource r : children) { | 147 | for (Resource r : children) { |
147 | - if (r instanceof Resource.Continuous) { | 148 | + if (r instanceof ContinuousResource) { |
148 | // non-aggregatable terminal node | 149 | // non-aggregatable terminal node |
149 | nonAggregatable.add(r); | 150 | nonAggregatable.add(r); |
150 | } else if (aggregatableTypes.contains(r.last().getClass())) { | 151 | } else if (aggregatableTypes.contains(r.last().getClass())) { | ... | ... |
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 | +package org.onosproject.net.newresource; | ||
17 | + | ||
18 | +import com.google.common.annotations.Beta; | ||
19 | + | ||
20 | +import java.util.Objects; | ||
21 | + | ||
22 | +/** | ||
23 | + * Represents a resource path which specifies a resource which can be measured | ||
24 | + * as continuous value. Bandwidth of a link is an example of the resource. | ||
25 | + * <p> | ||
26 | + * Note: This class is exposed to the public, but intended to be used in the resource API | ||
27 | + * implementation only. It is not for resource API user. | ||
28 | + */ | ||
29 | +@Beta | ||
30 | +// TODO: consider how to restrict the visibility | ||
31 | +public final class ContinuousResource extends Resource { | ||
32 | + private final double value; | ||
33 | + | ||
34 | + ContinuousResource(ResourceId id, double value) { | ||
35 | + super(id); | ||
36 | + this.value = value; | ||
37 | + } | ||
38 | + | ||
39 | + /** | ||
40 | + * The user of this methods must receive the return value as Double or double. | ||
41 | + * Otherwise, this methods throws an exception. | ||
42 | + * | ||
43 | + * @param <T> type of the return value | ||
44 | + * @return the volume of this resource | ||
45 | + */ | ||
46 | + @SuppressWarnings("unchecked") | ||
47 | + @Override | ||
48 | + public <T> T volume() { | ||
49 | + return (T) Double.valueOf(value); | ||
50 | + } | ||
51 | + | ||
52 | + @Override | ||
53 | + public int hashCode() { | ||
54 | + return Objects.hash(id(), value); | ||
55 | + } | ||
56 | + | ||
57 | + @Override | ||
58 | + public boolean equals(Object obj) { | ||
59 | + if (this == obj) { | ||
60 | + return true; | ||
61 | + } | ||
62 | + if (obj == null || getClass() != obj.getClass()) { | ||
63 | + return false; | ||
64 | + } | ||
65 | + final ContinuousResource other = (ContinuousResource) obj; | ||
66 | + return Objects.equals(this.id(), other.id()) | ||
67 | + && Objects.equals(this.value, other.value); | ||
68 | + } | ||
69 | + | ||
70 | + /** | ||
71 | + * Returns the value of the resource amount. | ||
72 | + * | ||
73 | + * @return the value of the resource amount | ||
74 | + */ | ||
75 | + // FIXME: overlapping a purpose with volume() | ||
76 | + public double value() { | ||
77 | + return value; | ||
78 | + } | ||
79 | +} |
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 | +package org.onosproject.net.newresource; | ||
17 | + | ||
18 | +import com.google.common.annotations.Beta; | ||
19 | +import com.google.common.collect.ImmutableList; | ||
20 | + | ||
21 | +import static com.google.common.base.Preconditions.checkNotNull; | ||
22 | + | ||
23 | +/** | ||
24 | + * ResourceId for {@link ContinuousResource} | ||
25 | + * | ||
26 | + * Note: This class is exposed to the public, but intended to be used in the resource API | ||
27 | + * implementation only. It is not for resource API user. | ||
28 | + */ | ||
29 | +@Beta | ||
30 | +// TODO: consider how to restrict the visibility | ||
31 | +public final class ContinuousResourceId extends ResourceId { | ||
32 | + // for printing purpose only (used in toString() implementation) | ||
33 | + private final String name; | ||
34 | + | ||
35 | + ContinuousResourceId(ImmutableList<Object> components, String name) { | ||
36 | + super(components); | ||
37 | + this.name = checkNotNull(name); | ||
38 | + } | ||
39 | + | ||
40 | + @Override | ||
41 | + public String toString() { | ||
42 | + // due to performance consideration, the value might need to be stored in a field | ||
43 | + return ImmutableList.builder() | ||
44 | + .addAll(components.subList(0, components.size() - 1)) | ||
45 | + .add(name) | ||
46 | + .build().toString(); | ||
47 | + } | ||
48 | +} |
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 | +package org.onosproject.net.newresource; | ||
17 | + | ||
18 | +import com.google.common.annotations.Beta; | ||
19 | + | ||
20 | +import java.util.Objects; | ||
21 | + | ||
22 | +/** | ||
23 | + * Represents a resource path which specifies a resource which can be measured | ||
24 | + * as a discrete unit. A VLAN ID and a MPLS label of a link are examples of the resource. | ||
25 | + * <p> | ||
26 | + * Note: This class is exposed to the public, but intended to be used in the resource API | ||
27 | + * implementation only. It is not for resource API user. | ||
28 | + * </p> | ||
29 | + */ | ||
30 | +@Beta | ||
31 | +// TODO: consider how to restrict the visibility | ||
32 | +public final class DiscreteResource extends Resource { | ||
33 | + protected DiscreteResource() { | ||
34 | + super(); | ||
35 | + } | ||
36 | + | ||
37 | + DiscreteResource(ResourceId id) { | ||
38 | + super(id); | ||
39 | + } | ||
40 | + | ||
41 | + /** | ||
42 | + * The user of this methods must receive the return value as the correct type. | ||
43 | + * Otherwise, this methods throws an exception. | ||
44 | + * | ||
45 | + * @param <T> type of the return value | ||
46 | + * @return the volume of this resource | ||
47 | + */ | ||
48 | + @SuppressWarnings("unchecked") | ||
49 | + @Override | ||
50 | + // TODO: consider receiving Class<T> as an argument. Which approach is convenient? | ||
51 | + public <T> T volume() { | ||
52 | + return (T) last(); | ||
53 | + } | ||
54 | + | ||
55 | + @Override | ||
56 | + public int hashCode() { | ||
57 | + // the value returing from volume() is excluded due to optimization | ||
58 | + return id().hashCode(); | ||
59 | + } | ||
60 | + | ||
61 | + @Override | ||
62 | + public boolean equals(Object obj) { | ||
63 | + if (this == obj) { | ||
64 | + return true; | ||
65 | + } | ||
66 | + if (obj == null || getClass() != obj.getClass()) { | ||
67 | + return false; | ||
68 | + } | ||
69 | + final DiscreteResource other = (DiscreteResource) obj; | ||
70 | + // the value returing from volume() is excluded due to optimization | ||
71 | + return Objects.equals(this.id(), other.id()); | ||
72 | + } | ||
73 | +} |
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 | +package org.onosproject.net.newresource; | ||
17 | + | ||
18 | +import com.google.common.annotations.Beta; | ||
19 | +import com.google.common.collect.ImmutableList; | ||
20 | + | ||
21 | +/** | ||
22 | + * ResourceId for {@link DiscreteResource}. | ||
23 | + * | ||
24 | + * Note: This class is exposed to the public, but intended to be used in the resource API | ||
25 | + * implementation only. It is not for resource API user. | ||
26 | + */ | ||
27 | +@Beta | ||
28 | +// TODO: consider how to restrict the visibility | ||
29 | +public final class DiscreteResourceId extends ResourceId { | ||
30 | + DiscreteResourceId(ImmutableList<Object> components) { | ||
31 | + super(components); | ||
32 | + } | ||
33 | + | ||
34 | + DiscreteResourceId() { | ||
35 | + super(); | ||
36 | + } | ||
37 | +} |
... | @@ -21,7 +21,6 @@ import org.onosproject.net.DeviceId; | ... | @@ -21,7 +21,6 @@ import org.onosproject.net.DeviceId; |
21 | import org.onosproject.net.PortNumber; | 21 | import org.onosproject.net.PortNumber; |
22 | 22 | ||
23 | import java.util.List; | 23 | import java.util.List; |
24 | -import java.util.Objects; | ||
25 | import java.util.Optional; | 24 | import java.util.Optional; |
26 | 25 | ||
27 | import static com.google.common.base.Preconditions.checkArgument; | 26 | import static com.google.common.base.Preconditions.checkArgument; |
... | @@ -47,13 +46,13 @@ import static com.google.common.base.Preconditions.checkState; | ... | @@ -47,13 +46,13 @@ import static com.google.common.base.Preconditions.checkState; |
47 | @Beta | 46 | @Beta |
48 | public abstract class Resource { | 47 | public abstract class Resource { |
49 | 48 | ||
50 | - private final Discrete parent; | 49 | + private final DiscreteResource parent; |
51 | private final ResourceId id; | 50 | private final ResourceId id; |
52 | 51 | ||
53 | - public static final Discrete ROOT = new Discrete(); | 52 | + public static final DiscreteResource ROOT = new DiscreteResource(); |
54 | 53 | ||
55 | public static Resource discrete(DeviceId device) { | 54 | public static Resource discrete(DeviceId device) { |
56 | - return new Discrete(ResourceId.discrete(device)); | 55 | + return new DiscreteResource(ResourceId.discrete(device)); |
57 | } | 56 | } |
58 | 57 | ||
59 | /** | 58 | /** |
... | @@ -64,7 +63,7 @@ public abstract class Resource { | ... | @@ -64,7 +63,7 @@ public abstract class Resource { |
64 | * @return resource path instance | 63 | * @return resource path instance |
65 | */ | 64 | */ |
66 | public static Resource discrete(DeviceId device, Object... components) { | 65 | public static Resource discrete(DeviceId device, Object... components) { |
67 | - return new Discrete(ResourceId.discrete(device, components)); | 66 | + return new DiscreteResource(ResourceId.discrete(device, components)); |
68 | } | 67 | } |
69 | 68 | ||
70 | /** | 69 | /** |
... | @@ -76,7 +75,7 @@ public abstract class Resource { | ... | @@ -76,7 +75,7 @@ public abstract class Resource { |
76 | * @return resource path instance | 75 | * @return resource path instance |
77 | */ | 76 | */ |
78 | public static Resource discrete(DeviceId device, PortNumber port, Object... components) { | 77 | public static Resource discrete(DeviceId device, PortNumber port, Object... components) { |
79 | - return new Discrete(ResourceId.discrete(device, port, components)); | 78 | + return new DiscreteResource(ResourceId.discrete(device, port, components)); |
80 | } | 79 | } |
81 | 80 | ||
82 | /** | 81 | /** |
... | @@ -93,7 +92,7 @@ public abstract class Resource { | ... | @@ -93,7 +92,7 @@ public abstract class Resource { |
93 | checkArgument(components.length > 0, | 92 | checkArgument(components.length > 0, |
94 | "Length of components must be greater thant 0, but " + components.length); | 93 | "Length of components must be greater thant 0, but " + components.length); |
95 | 94 | ||
96 | - return new Continuous(ResourceId.continuous(device, components), value); | 95 | + return new ContinuousResource(ResourceId.continuous(device, components), value); |
97 | } | 96 | } |
98 | 97 | ||
99 | /** | 98 | /** |
... | @@ -108,7 +107,7 @@ public abstract class Resource { | ... | @@ -108,7 +107,7 @@ public abstract class Resource { |
108 | * @return resource path instance | 107 | * @return resource path instance |
109 | */ | 108 | */ |
110 | public static Resource continuous(double value, DeviceId device, PortNumber port, Object... components) { | 109 | public static Resource continuous(double value, DeviceId device, PortNumber port, Object... components) { |
111 | - return new Continuous(ResourceId.continuous(device, port, components), value); | 110 | + return new ContinuousResource(ResourceId.continuous(device, port, components), value); |
112 | } | 111 | } |
113 | 112 | ||
114 | /** | 113 | /** |
... | @@ -123,12 +122,12 @@ public abstract class Resource { | ... | @@ -123,12 +122,12 @@ public abstract class Resource { |
123 | if (id.components.size() == 1) { | 122 | if (id.components.size() == 1) { |
124 | this.parent = ROOT; | 123 | this.parent = ROOT; |
125 | } else { | 124 | } else { |
126 | - this.parent = new Discrete(id.parent()); | 125 | + this.parent = new DiscreteResource(id.parent()); |
127 | } | 126 | } |
128 | } | 127 | } |
129 | 128 | ||
130 | // for serialization | 129 | // for serialization |
131 | - private Resource() { | 130 | + protected Resource() { |
132 | this.parent = null; | 131 | this.parent = null; |
133 | this.id = ResourceId.ROOT; | 132 | this.id = ResourceId.ROOT; |
134 | } | 133 | } |
... | @@ -157,7 +156,7 @@ public abstract class Resource { | ... | @@ -157,7 +156,7 @@ public abstract class Resource { |
157 | * @return the parent resource path of this instance. | 156 | * @return the parent resource path of this instance. |
158 | * If there is no parent, empty instance will be returned. | 157 | * If there is no parent, empty instance will be returned. |
159 | */ | 158 | */ |
160 | - public Optional<Discrete> parent() { | 159 | + public Optional<DiscreteResource> parent() { |
161 | return Optional.ofNullable(parent); | 160 | return Optional.ofNullable(parent); |
162 | } | 161 | } |
163 | 162 | ||
... | @@ -169,9 +168,9 @@ public abstract class Resource { | ... | @@ -169,9 +168,9 @@ public abstract class Resource { |
169 | * @return a child resource path | 168 | * @return a child resource path |
170 | */ | 169 | */ |
171 | public Resource child(Object child) { | 170 | public Resource child(Object child) { |
172 | - checkState(this instanceof Discrete); | 171 | + checkState(this instanceof DiscreteResource); |
173 | 172 | ||
174 | - return new Discrete(id().child(child)); | 173 | + return new DiscreteResource(id().child(child)); |
175 | } | 174 | } |
176 | 175 | ||
177 | /** | 176 | /** |
... | @@ -183,9 +182,9 @@ public abstract class Resource { | ... | @@ -183,9 +182,9 @@ public abstract class Resource { |
183 | * @return a child resource path | 182 | * @return a child resource path |
184 | */ | 183 | */ |
185 | public Resource child(Object child, double value) { | 184 | public Resource child(Object child, double value) { |
186 | - checkState(this instanceof Discrete); | 185 | + checkState(this instanceof DiscreteResource); |
187 | 186 | ||
188 | - return new Continuous(id.child(child), value); | 187 | + return new ContinuousResource(id.child(child), value); |
189 | } | 188 | } |
190 | 189 | ||
191 | /** | 190 | /** |
... | @@ -218,114 +217,4 @@ public abstract class Resource { | ... | @@ -218,114 +217,4 @@ public abstract class Resource { |
218 | .toString(); | 217 | .toString(); |
219 | } | 218 | } |
220 | 219 | ||
221 | - /** | ||
222 | - * Represents a resource path which specifies a resource which can be measured | ||
223 | - * as a discrete unit. A VLAN ID and a MPLS label of a link are examples of the resource. | ||
224 | - * <p> | ||
225 | - * Note: This class is exposed to the public, but intended to be used in the resource API | ||
226 | - * implementation only. It is not for resource API user. | ||
227 | - * </p> | ||
228 | - */ | ||
229 | - @Beta | ||
230 | - public static final class Discrete extends Resource { | ||
231 | - private Discrete() { | ||
232 | - super(); | ||
233 | - } | ||
234 | - | ||
235 | - private Discrete(ResourceId id) { | ||
236 | - super(id); | ||
237 | - } | ||
238 | - | ||
239 | - /** | ||
240 | - * The user of this methods must receive the return value as the correct type. | ||
241 | - * Otherwise, this methods throws an exception. | ||
242 | - * | ||
243 | - * @param <T> type of the return value | ||
244 | - * @return the volume of this resource | ||
245 | - */ | ||
246 | - @SuppressWarnings("unchecked") | ||
247 | - @Override | ||
248 | - // TODO: consider receiving Class<T> as an argument. Which approach is convenient? | ||
249 | - public <T> T volume() { | ||
250 | - return (T) last(); | ||
251 | - } | ||
252 | - | ||
253 | - @Override | ||
254 | - public int hashCode() { | ||
255 | - // the value returing from volume() is excluded due to optimization | ||
256 | - return id().hashCode(); | ||
257 | - } | ||
258 | - | ||
259 | - @Override | ||
260 | - public boolean equals(Object obj) { | ||
261 | - if (this == obj) { | ||
262 | - return true; | ||
263 | - } | ||
264 | - if (obj == null || getClass() != obj.getClass()) { | ||
265 | - return false; | ||
266 | - } | ||
267 | - final Discrete other = (Discrete) obj; | ||
268 | - // the value returing from volume() is excluded due to optimization | ||
269 | - return Objects.equals(this.id(), other.id()); | ||
270 | - } | ||
271 | - } | ||
272 | - | ||
273 | - /** | ||
274 | - * Represents a resource path which specifies a resource which can be measured | ||
275 | - * as continuous value. Bandwidth of a link is an example of the resource. | ||
276 | - * <p> | ||
277 | - * Note: This class is exposed to the public, but intended to be used in the resource API | ||
278 | - * implementation only. It is not for resource API user. | ||
279 | - */ | ||
280 | - @Beta | ||
281 | - public static final class Continuous extends Resource { | ||
282 | - private final double value; | ||
283 | - | ||
284 | - private Continuous(ResourceId id, double value) { | ||
285 | - super(id); | ||
286 | - this.value = value; | ||
287 | - } | ||
288 | - | ||
289 | - /** | ||
290 | - * The user of this methods must receive the return value as Double or double. | ||
291 | - * Otherwise, this methods throws an exception. | ||
292 | - * | ||
293 | - * @param <T> type of the return value | ||
294 | - * @return the volume of this resource | ||
295 | - */ | ||
296 | - @SuppressWarnings("unchecked") | ||
297 | - @Override | ||
298 | - public <T> T volume() { | ||
299 | - return (T) Double.valueOf(value); | ||
300 | - } | ||
301 | - | ||
302 | - @Override | ||
303 | - public int hashCode() { | ||
304 | - return Objects.hash(id(), value); | ||
305 | - } | ||
306 | - | ||
307 | - @Override | ||
308 | - public boolean equals(Object obj) { | ||
309 | - if (this == obj) { | ||
310 | - return true; | ||
311 | - } | ||
312 | - if (obj == null || getClass() != obj.getClass()) { | ||
313 | - return false; | ||
314 | - } | ||
315 | - final Continuous other = (Continuous) obj; | ||
316 | - return Objects.equals(this.id(), other.id()) | ||
317 | - && Objects.equals(this.value, other.value); | ||
318 | - } | ||
319 | - | ||
320 | - /** | ||
321 | - * Returns the value of the resource amount. | ||
322 | - * | ||
323 | - * @return the value of the resource amount | ||
324 | - */ | ||
325 | - // FIXME: overlapping a purpose with volume() | ||
326 | - public double value() { | ||
327 | - return value; | ||
328 | - } | ||
329 | - } | ||
330 | - | ||
331 | } | 220 | } | ... | ... |
... | @@ -33,19 +33,19 @@ import static com.google.common.base.Preconditions.checkState; | ... | @@ -33,19 +33,19 @@ import static com.google.common.base.Preconditions.checkState; |
33 | */ | 33 | */ |
34 | @Beta | 34 | @Beta |
35 | public abstract class ResourceId { | 35 | public abstract class ResourceId { |
36 | - static final ResourceId ROOT = new Discrete(); | 36 | + static final ResourceId ROOT = new DiscreteResourceId(); |
37 | 37 | ||
38 | final ImmutableList<Object> components; | 38 | final ImmutableList<Object> components; |
39 | 39 | ||
40 | static ResourceId discrete(DeviceId device, Object... components) { | 40 | static ResourceId discrete(DeviceId device, Object... components) { |
41 | - return new Discrete(ImmutableList.builder() | 41 | + return new DiscreteResourceId(ImmutableList.builder() |
42 | .add(device) | 42 | .add(device) |
43 | .add(components) | 43 | .add(components) |
44 | .build()); | 44 | .build()); |
45 | } | 45 | } |
46 | 46 | ||
47 | static ResourceId discrete(DeviceId device, PortNumber port, Object... components) { | 47 | static ResourceId discrete(DeviceId device, PortNumber port, Object... components) { |
48 | - return new Discrete(ImmutableList.builder() | 48 | + return new DiscreteResourceId(ImmutableList.builder() |
49 | .add(device) | 49 | .add(device) |
50 | .add(port) | 50 | .add(port) |
51 | .add(components) | 51 | .add(components) |
... | @@ -72,17 +72,17 @@ public abstract class ResourceId { | ... | @@ -72,17 +72,17 @@ public abstract class ResourceId { |
72 | } | 72 | } |
73 | 73 | ||
74 | private static ResourceId continuous(ImmutableList.Builder<Object> parentComponents, Class<?> last) { | 74 | private static ResourceId continuous(ImmutableList.Builder<Object> parentComponents, Class<?> last) { |
75 | - return new Continuous(parentComponents | 75 | + return new ContinuousResourceId(parentComponents |
76 | .add(last.getCanonicalName()) | 76 | .add(last.getCanonicalName()) |
77 | .build(), last.getSimpleName()); | 77 | .build(), last.getSimpleName()); |
78 | } | 78 | } |
79 | 79 | ||
80 | - private ResourceId(ImmutableList<Object> components) { | 80 | + protected ResourceId(ImmutableList<Object> components) { |
81 | this.components = checkNotNull(components); | 81 | this.components = checkNotNull(components); |
82 | } | 82 | } |
83 | 83 | ||
84 | // for serializer | 84 | // for serializer |
85 | - private ResourceId() { | 85 | + protected ResourceId() { |
86 | this.components = ImmutableList.of(); | 86 | this.components = ImmutableList.of(); |
87 | } | 87 | } |
88 | 88 | ||
... | @@ -91,27 +91,27 @@ public abstract class ResourceId { | ... | @@ -91,27 +91,27 @@ public abstract class ResourceId { |
91 | if (components.size() == 1) { | 91 | if (components.size() == 1) { |
92 | return ROOT; | 92 | return ROOT; |
93 | } else { | 93 | } else { |
94 | - return new Discrete(components.subList(0, components.size() - 1)); | 94 | + return new DiscreteResourceId(components.subList(0, components.size() - 1)); |
95 | } | 95 | } |
96 | } | 96 | } |
97 | 97 | ||
98 | /** | 98 | /** |
99 | * Returns a resource ID of a child of this resource based on the specified object. | 99 | * Returns a resource ID of a child of this resource based on the specified object. |
100 | * If the argument is an instance of {@link Class}, this method returns an instance of | 100 | * If the argument is an instance of {@link Class}, this method returns an instance of |
101 | - * {@link Continuous}. Otherwise, it returns an instance of {@link Discrete} | 101 | + * {@link ContinuousResourceId}. Otherwise, it returns an instance of {@link DiscreteResourceId} |
102 | - * This method only work when the receiver is {@link Discrete}. Otherwise, | 102 | + * This method only work when the receiver is {@link DiscreteResourceId}. Otherwise, |
103 | * this method throws an exception. | 103 | * this method throws an exception. |
104 | * | 104 | * |
105 | * @param child the last component of the child | 105 | * @param child the last component of the child |
106 | * @return a child resource ID | 106 | * @return a child resource ID |
107 | */ | 107 | */ |
108 | public ResourceId child(Object child) { | 108 | public ResourceId child(Object child) { |
109 | - checkState(this instanceof Discrete); | 109 | + checkState(this instanceof DiscreteResourceId); |
110 | 110 | ||
111 | if (child instanceof Class<?>) { | 111 | if (child instanceof Class<?>) { |
112 | return continuous(ImmutableList.builder().addAll(components), (Class<?>) child); | 112 | return continuous(ImmutableList.builder().addAll(components), (Class<?>) child); |
113 | } else { | 113 | } else { |
114 | - return new Discrete(ImmutableList.builder() | 114 | + return new DiscreteResourceId(ImmutableList.builder() |
115 | .addAll(components) | 115 | .addAll(components) |
116 | .add(child) | 116 | .add(child) |
117 | .build()); | 117 | .build()); |
... | @@ -140,44 +140,4 @@ public abstract class ResourceId { | ... | @@ -140,44 +140,4 @@ public abstract class ResourceId { |
140 | return components.toString(); | 140 | return components.toString(); |
141 | } | 141 | } |
142 | 142 | ||
143 | - /** | ||
144 | - * ResourceId for {@link Resource.Discrete}. | ||
145 | - * | ||
146 | - * Note: This class is exposed to the public, but intended to be used in the resource API | ||
147 | - * implementation only. It is not for resource API user. | ||
148 | - */ | ||
149 | - public static final class Discrete extends ResourceId { | ||
150 | - private Discrete(ImmutableList<Object> components) { | ||
151 | - super(components); | ||
152 | - } | ||
153 | - | ||
154 | - private Discrete() { | ||
155 | - super(); | ||
156 | - } | ||
157 | - } | ||
158 | - | ||
159 | - /** | ||
160 | - * ResourceId for {@link Resource.Continuous} | ||
161 | - * | ||
162 | - * Note: This class is exposed to the public, but intended to be used in the resource API | ||
163 | - * implementation only. It is not for resource API user. | ||
164 | - */ | ||
165 | - public static final class Continuous extends ResourceId { | ||
166 | - // for printing purpose only (used in toString() implementation) | ||
167 | - private final String name; | ||
168 | - | ||
169 | - private Continuous(ImmutableList<Object> components, String name) { | ||
170 | - super(components); | ||
171 | - this.name = checkNotNull(name); | ||
172 | - } | ||
173 | - | ||
174 | - @Override | ||
175 | - public String toString() { | ||
176 | - // due to performance consideration, the value might need to be stored in a field | ||
177 | - return ImmutableList.builder() | ||
178 | - .addAll(components.subList(0, components.size() - 1)) | ||
179 | - .add(name) | ||
180 | - .build().toString(); | ||
181 | - } | ||
182 | - } | ||
183 | } | 143 | } | ... | ... |
This diff is collapsed. Click to expand it.
... | @@ -172,6 +172,10 @@ import org.onosproject.net.intent.constraint.PartialFailureConstraint; | ... | @@ -172,6 +172,10 @@ import org.onosproject.net.intent.constraint.PartialFailureConstraint; |
172 | import org.onosproject.net.intent.constraint.WaypointConstraint; | 172 | import org.onosproject.net.intent.constraint.WaypointConstraint; |
173 | import org.onosproject.net.link.DefaultLinkDescription; | 173 | import org.onosproject.net.link.DefaultLinkDescription; |
174 | import org.onosproject.net.meter.MeterId; | 174 | import org.onosproject.net.meter.MeterId; |
175 | +import org.onosproject.net.newresource.ContinuousResource; | ||
176 | +import org.onosproject.net.newresource.ContinuousResourceId; | ||
177 | +import org.onosproject.net.newresource.DiscreteResource; | ||
178 | +import org.onosproject.net.newresource.DiscreteResourceId; | ||
175 | import org.onosproject.net.newresource.ResourceAllocation; | 179 | import org.onosproject.net.newresource.ResourceAllocation; |
176 | import org.onosproject.net.newresource.ResourceId; | 180 | import org.onosproject.net.newresource.ResourceId; |
177 | import org.onosproject.net.newresource.Resource; | 181 | import org.onosproject.net.newresource.Resource; |
... | @@ -434,11 +438,11 @@ public final class KryoNamespaces { | ... | @@ -434,11 +438,11 @@ public final class KryoNamespaces { |
434 | BandwidthResourceAllocation.class, | 438 | BandwidthResourceAllocation.class, |
435 | LambdaResourceAllocation.class, | 439 | LambdaResourceAllocation.class, |
436 | Resource.class, | 440 | Resource.class, |
437 | - Resource.Discrete.class, | 441 | + DiscreteResource.class, |
438 | - Resource.Continuous.class, | 442 | + ContinuousResource.class, |
439 | ResourceId.class, | 443 | ResourceId.class, |
440 | - ResourceId.Discrete.class, | 444 | + DiscreteResourceId.class, |
441 | - ResourceId.Continuous.class, | 445 | + ContinuousResourceId.class, |
442 | ResourceAllocation.class, | 446 | ResourceAllocation.class, |
443 | // Constraints | 447 | // Constraints |
444 | LambdaConstraint.class, | 448 | LambdaConstraint.class, | ... | ... |
-
Please register or login to post a comment