HIGUCHI Yuta
Committed by Gerrit Code Review

Add hasBehaviour to DriverHandler

Change-Id: I2bcfb06795b923de4356937a0baee35b37c7d979
...@@ -92,7 +92,7 @@ public interface Driver extends Annotations { ...@@ -92,7 +92,7 @@ public interface Driver extends Annotations {
92 92
93 /** 93 /**
94 * Indicates whether or not the driver, or any of its parents, support 94 * Indicates whether or not the driver, or any of its parents, support
95 - * the specified class of behaviour. It 95 + * the specified class of behaviour.
96 * 96 *
97 * @param behaviourClass behaviour class 97 * @param behaviourClass behaviour class
98 * @return true if behaviour is supported 98 * @return true if behaviour is supported
......
...@@ -44,6 +44,17 @@ public interface DriverHandler { ...@@ -44,6 +44,17 @@ public interface DriverHandler {
44 <T extends Behaviour> T behaviour(Class<T> behaviourClass); 44 <T extends Behaviour> T behaviour(Class<T> behaviourClass);
45 45
46 /** 46 /**
47 + * Indicates whether or not the driver, or any of its parents, support
48 + * the specified class of behaviour.
49 + *
50 + * @param behaviourClass behaviour class
51 + * @return true if behaviour is supported
52 + */
53 + default boolean hasBehaviour(Class<? extends Behaviour> behaviourClass) {
54 + return driver().hasBehaviour(behaviourClass);
55 + }
56 +
57 + /**
47 * Returns the reference to the implementation of the specified service. 58 * Returns the reference to the implementation of the specified service.
48 * Provides access to run-time context. 59 * Provides access to run-time context.
49 * 60 *
......
...@@ -32,7 +32,6 @@ import org.onosproject.net.behaviour.VlanQuery; ...@@ -32,7 +32,6 @@ import org.onosproject.net.behaviour.VlanQuery;
32 import org.onosproject.net.device.DeviceEvent; 32 import org.onosproject.net.device.DeviceEvent;
33 import org.onosproject.net.device.DeviceListener; 33 import org.onosproject.net.device.DeviceListener;
34 import org.onosproject.net.device.DeviceService; 34 import org.onosproject.net.device.DeviceService;
35 -import org.onosproject.net.driver.Driver;
36 import org.onosproject.net.driver.DriverHandler; 35 import org.onosproject.net.driver.DriverHandler;
37 import org.onosproject.net.driver.DriverService; 36 import org.onosproject.net.driver.DriverService;
38 import org.onosproject.net.newresource.ResourceAdminService; 37 import org.onosproject.net.newresource.ResourceAdminService;
...@@ -162,14 +161,8 @@ final class ResourceDeviceListener implements DeviceListener { ...@@ -162,14 +161,8 @@ final class ResourceDeviceListener implements DeviceListener {
162 161
163 private Set<OchSignal> queryLambdas(DeviceId did, PortNumber port) { 162 private Set<OchSignal> queryLambdas(DeviceId did, PortNumber port) {
164 try { 163 try {
165 - // DriverHandler does not provide a way to check if a
166 - // behaviour is supported.
167 - Driver driver = driverService.getDriver(did);
168 - if (driver == null || !driver.hasBehaviour(LambdaQuery.class)) {
169 - return Collections.emptySet();
170 - }
171 DriverHandler handler = driverService.createHandler(did); 164 DriverHandler handler = driverService.createHandler(did);
172 - if (handler == null) { 165 + if (handler == null || !handler.hasBehaviour(LambdaQuery.class)) {
173 return Collections.emptySet(); 166 return Collections.emptySet();
174 } 167 }
175 LambdaQuery query = handler.behaviour(LambdaQuery.class); 168 LambdaQuery query = handler.behaviour(LambdaQuery.class);
...@@ -187,16 +180,8 @@ final class ResourceDeviceListener implements DeviceListener { ...@@ -187,16 +180,8 @@ final class ResourceDeviceListener implements DeviceListener {
187 180
188 private Set<VlanId> queryVlanIds(DeviceId device, PortNumber port) { 181 private Set<VlanId> queryVlanIds(DeviceId device, PortNumber port) {
189 try { 182 try {
190 - // DriverHandler does not provide a way to check if a
191 - // behaviour is supported.
192 - Driver driver = driverService.getDriver(device);
193 - if (driver == null || !driver.hasBehaviour(VlanQuery.class)) {
194 - // device does not support this
195 - return ImmutableSet.of();
196 - }
197 -
198 DriverHandler handler = driverService.createHandler(device); 183 DriverHandler handler = driverService.createHandler(device);
199 - if (handler == null) { 184 + if (handler == null || !handler.hasBehaviour(VlanQuery.class)) {
200 return ImmutableSet.of(); 185 return ImmutableSet.of();
201 } 186 }
202 187
...@@ -212,15 +197,8 @@ final class ResourceDeviceListener implements DeviceListener { ...@@ -212,15 +197,8 @@ final class ResourceDeviceListener implements DeviceListener {
212 197
213 private Set<MplsLabel> queryMplsLabels(DeviceId device, PortNumber port) { 198 private Set<MplsLabel> queryMplsLabels(DeviceId device, PortNumber port) {
214 try { 199 try {
215 - // DriverHandler does not provide a way to check if a
216 - // behaviour is supported.
217 - Driver driver = driverService.getDriver(device);
218 - if (driver == null || !driver.hasBehaviour(MplsQuery.class)) {
219 - // device does not support this
220 - return ImmutableSet.of();
221 - }
222 DriverHandler handler = driverService.createHandler(device); 200 DriverHandler handler = driverService.createHandler(device);
223 - if (handler == null) { 201 + if (handler == null || !handler.hasBehaviour(MplsQuery.class)) {
224 return ImmutableSet.of(); 202 return ImmutableSet.of();
225 } 203 }
226 204
...@@ -236,14 +214,8 @@ final class ResourceDeviceListener implements DeviceListener { ...@@ -236,14 +214,8 @@ final class ResourceDeviceListener implements DeviceListener {
236 214
237 private Set<TributarySlot> queryTributarySlots(DeviceId device, PortNumber port) { 215 private Set<TributarySlot> queryTributarySlots(DeviceId device, PortNumber port) {
238 try { 216 try {
239 - // DriverHandler does not provide a way to check if a
240 - // behaviour is supported.
241 - Driver driver = driverService.getDriver(device);
242 - if (driver == null || !driver.hasBehaviour(TributarySlotQuery.class)) {
243 - return Collections.emptySet();
244 - }
245 DriverHandler handler = driverService.createHandler(device); 217 DriverHandler handler = driverService.createHandler(device);
246 - if (handler == null) { 218 + if (handler == null || !handler.hasBehaviour(TributarySlotQuery.class)) {
247 return Collections.emptySet(); 219 return Collections.emptySet();
248 } 220 }
249 TributarySlotQuery query = handler.behaviour(TributarySlotQuery.class); 221 TributarySlotQuery query = handler.behaviour(TributarySlotQuery.class);
......