Yuta HIGUCHI
Committed by Yuta HIGUCHI

Fix NPE in LincOELambdaQuery.

- Fix for NPE issue reported by Jimmy Yan

Change-Id: Ie2dfea3fea7dec1bcff73549056f707b9e502b1a
...@@ -15,6 +15,7 @@ ...@@ -15,6 +15,7 @@
15 */ 15 */
16 package org.onosproject.driver.optical.query; 16 package org.onosproject.driver.optical.query;
17 17
18 +import org.onlab.util.GuavaCollectors;
18 import org.onosproject.net.ChannelSpacing; 19 import org.onosproject.net.ChannelSpacing;
19 import org.onosproject.net.GridType; 20 import org.onosproject.net.GridType;
20 import org.onosproject.net.OchSignal; 21 import org.onosproject.net.OchSignal;
...@@ -24,9 +25,9 @@ import org.onosproject.net.behaviour.LambdaQuery; ...@@ -24,9 +25,9 @@ import org.onosproject.net.behaviour.LambdaQuery;
24 import org.onosproject.net.device.DeviceService; 25 import org.onosproject.net.device.DeviceService;
25 import org.onosproject.net.driver.AbstractHandlerBehaviour; 26 import org.onosproject.net.driver.AbstractHandlerBehaviour;
26 27
27 -import java.util.Collections; 28 +import com.google.common.collect.ImmutableSet;
29 +
28 import java.util.Set; 30 import java.util.Set;
29 -import java.util.stream.Collectors;
30 import java.util.stream.IntStream; 31 import java.util.stream.IntStream;
31 32
32 /** 33 /**
...@@ -42,19 +43,26 @@ public class LincOELambdaQuery extends AbstractHandlerBehaviour implements Lambd ...@@ -42,19 +43,26 @@ public class LincOELambdaQuery extends AbstractHandlerBehaviour implements Lambd
42 43
43 private static final int LAMBDA_COUNT = 80; 44 private static final int LAMBDA_COUNT = 80;
44 45
46 + /**
47 + * OMS ports expose 80 fixed grid lambdas of 50GHz width,
48 + * centered around the ITU-T center frequency 193.1 THz.
49 + */
50 + private static final Set<OchSignal> OMS_LAMDAS = IntStream.range(0, LAMBDA_COUNT)
51 + .mapToObj(x -> new OchSignal(GridType.DWDM, ChannelSpacing.CHL_50GHZ, x - (LAMBDA_COUNT / 2), 4))
52 + .collect(GuavaCollectors.toImmutableSet());
53 +
45 @Override 54 @Override
46 public Set<OchSignal> queryLambdas(PortNumber port) { 55 public Set<OchSignal> queryLambdas(PortNumber port) {
47 DeviceService deviceService = this.handler().get(DeviceService.class); 56 DeviceService deviceService = this.handler().get(DeviceService.class);
57 +
48 Port p = deviceService.getPort(this.data().deviceId(), port); 58 Port p = deviceService.getPort(this.data().deviceId(), port);
49 59
50 // OCh ports don't expose lambda resources 60 // OCh ports don't expose lambda resources
51 - if (!p.type().equals(Port.Type.OMS)) { 61 + if (p == null ||
52 - return Collections.emptySet(); 62 + !p.type().equals(Port.Type.OMS)) {
63 + return ImmutableSet.of();
53 } 64 }
54 65
55 - // OMS ports expose 80 fixed grid lambdas of 50GHz width, centered around the ITU-T center frequency 193.1 THz. 66 + return OMS_LAMDAS;
56 - return IntStream.range(0, LAMBDA_COUNT)
57 - .mapToObj(x -> new OchSignal(GridType.DWDM, ChannelSpacing.CHL_50GHZ, x - (LAMBDA_COUNT / 2), 4))
58 - .collect(Collectors.toSet());
59 } 67 }
60 } 68 }
......