Sho SHIMIZU

Refactor: move method to get annotated double value

- Move to AnnotationKeys to remove code duplication

Change-Id: Icf8b4322fc88e43ab531402d0e403a38d186f48e
...@@ -28,4 +28,23 @@ public final class AnnotationKeys { ...@@ -28,4 +28,23 @@ public final class AnnotationKeys {
28 * Annotation key for latency. 28 * Annotation key for latency.
29 */ 29 */
30 public static final String LATENCY = "latency"; 30 public static final String LATENCY = "latency";
31 +
32 + /**
33 + * Returns the value annotated object for the specified annotation key.
34 + * The annotated value is expected to be String that can be parsed as double.
35 + * If parsing fails, the returned value will be 1.0.
36 + *
37 + * @param annotated annotated object whose annotated value is obtained
38 + * @param key key of annotation
39 + * @return double value of annotated object for the specified key
40 + */
41 + public static double getAnnotatedValue(Annotated annotated, String key) {
42 + double value;
43 + try {
44 + value = Double.parseDouble(annotated.annotations().value(key));
45 + } catch (NumberFormatException e) {
46 + value = 1.0;
47 + }
48 + return value;
49 + }
31 } 50 }
......
...@@ -21,6 +21,8 @@ import org.onlab.onos.net.resource.LinkResourceService; ...@@ -21,6 +21,8 @@ import org.onlab.onos.net.resource.LinkResourceService;
21 21
22 import java.util.Objects; 22 import java.util.Objects;
23 23
24 +import static org.onlab.onos.net.AnnotationKeys.getAnnotatedValue;
25 +
24 /** 26 /**
25 * Constraint that evaluates an arbitrary link annotated value is under the specified threshold. 27 * Constraint that evaluates an arbitrary link annotated value is under the specified threshold.
26 */ 28 */
...@@ -65,25 +67,6 @@ public class AnnotationConstraint extends BooleanConstraint { ...@@ -65,25 +67,6 @@ public class AnnotationConstraint extends BooleanConstraint {
65 return value <= threshold; 67 return value <= threshold;
66 } 68 }
67 69
68 - /**
69 - * Returns the annotated value of the specified link. The annotated value
70 - * is expected to be String that can be parsed as double. If parsing fails,
71 - * the returned value will be 1.0.
72 - *
73 - * @param link link whose annotated value is obtained
74 - * @param key key of link annotation
75 - * @return double value of link annotation for the specified key
76 - */
77 - private double getAnnotatedValue(Link link, String key) {
78 - double value;
79 - try {
80 - value = Double.parseDouble(link.annotations().value(key));
81 - } catch (NumberFormatException e) {
82 - value = 1.0;
83 - }
84 - return value;
85 - }
86 -
87 @Override 70 @Override
88 public double cost(Link link, LinkResourceService resourceService) { 71 public double cost(Link link, LinkResourceService resourceService) {
89 if (isValid(link, resourceService)) { 72 if (isValid(link, resourceService)) {
......
...@@ -26,6 +26,7 @@ import java.time.temporal.ChronoUnit; ...@@ -26,6 +26,7 @@ import java.time.temporal.ChronoUnit;
26 import java.util.Objects; 26 import java.util.Objects;
27 27
28 import static org.onlab.onos.net.AnnotationKeys.LATENCY; 28 import static org.onlab.onos.net.AnnotationKeys.LATENCY;
29 +import static org.onlab.onos.net.AnnotationKeys.getAnnotatedValue;
29 30
30 /** 31 /**
31 * Constraint that evaluates the latency through a path. 32 * Constraint that evaluates the latency through a path.
...@@ -48,16 +49,7 @@ public class LatencyConstraint implements Constraint { ...@@ -48,16 +49,7 @@ public class LatencyConstraint implements Constraint {
48 49
49 @Override 50 @Override
50 public double cost(Link link, LinkResourceService resourceService) { 51 public double cost(Link link, LinkResourceService resourceService) {
51 - String value = link.annotations().value(LATENCY); 52 + return getAnnotatedValue(link, LATENCY);
52 -
53 - double latencyInMicroSec;
54 - try {
55 - latencyInMicroSec = Double.parseDouble(value);
56 - } catch (NumberFormatException e) {
57 - latencyInMicroSec = 1.0;
58 - }
59 -
60 - return latencyInMicroSec;
61 } 53 }
62 54
63 @Override 55 @Override
......