Adding first fallback provider for flow rule subsystem.

Fixing onos-check-apps.

Change-Id: Ic8c2bac4403bb7a49813826262706e857932b6c0
diff --git a/core/api/src/main/java/org/onosproject/net/DefaultDevice.java b/core/api/src/main/java/org/onosproject/net/DefaultDevice.java
index 401740a..7d59dbc 100644
--- a/core/api/src/main/java/org/onosproject/net/DefaultDevice.java
+++ b/core/api/src/main/java/org/onosproject/net/DefaultDevice.java
@@ -16,14 +16,16 @@
 package org.onosproject.net;
 
 import org.onlab.packet.ChassisId;
+import org.onosproject.net.driver.Behaviour;
+import org.onosproject.net.driver.DefaultDriverHandler;
 import org.onosproject.net.driver.Driver;
 import org.onosproject.net.driver.DriverData;
+import org.onosproject.net.driver.HandlerBehaviour;
 import org.onosproject.net.provider.ProviderId;
 
 import java.util.Objects;
 
 import static com.google.common.base.MoreObjects.toStringHelper;
-import static org.onlab.util.Tools.nullIsNotFound;
 
 /**
  * Default infrastructure device model implementation.
@@ -108,6 +110,15 @@
         return chassisId;
     }
 
+    @Override
+    public <B extends Behaviour> B as(Class<B> projectionClass) {
+        if (HandlerBehaviour.class.isAssignableFrom(projectionClass)) {
+            bindAndCheckDriver();
+            return driver().createBehaviour(new DefaultDriverHandler(asData()), projectionClass);
+        }
+        return super.as(projectionClass);
+    }
+
     /**
      * Returns self as an immutable driver data instance.
      *
@@ -121,8 +132,7 @@
     protected Driver locateDriver() {
         Driver driver = super.locateDriver();
         return driver != null ? driver :
-                nullIsNotFound(driverService().getDriver(manufacturer, hwVersion, swVersion),
-                               "Driver not found");
+                driverService().getDriver(manufacturer, hwVersion, swVersion);
     }
 
     /**