ONOS-2724
Fix bug of apply flowrule and remove flowrule

Change-Id: Ia7dec83206c3f5e24f912f111bd87dab6eab4610
diff --git a/core/api/src/main/java/org/onosproject/net/behaviour/BridgeConfig.java b/core/api/src/main/java/org/onosproject/net/behaviour/BridgeConfig.java
index 96397ea..7f157e9 100644
--- a/core/api/src/main/java/org/onosproject/net/behaviour/BridgeConfig.java
+++ b/core/api/src/main/java/org/onosproject/net/behaviour/BridgeConfig.java
@@ -1,78 +1,87 @@
-/*

- * Copyright 2015 Open Networking Laboratory

- *

- * Licensed under the Apache License, Version 2.0 (the "License");

- * you may not use this file except in compliance with the License.

- * You may obtain a copy of the License at

- *

- *     http://www.apache.org/licenses/LICENSE-2.0

- *

- * Unless required by applicable law or agreed to in writing, software

- * distributed under the License is distributed on an "AS IS" BASIS,

- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.

- * See the License for the specific language governing permissions and

- * limitations under the License.

- */

-package org.onosproject.net.behaviour;

-

-import java.util.Collection;

-import java.util.Set;

-

-import org.onosproject.net.PortNumber;

-import org.onosproject.net.device.PortDescription;

-import org.onosproject.net.driver.HandlerBehaviour;

-

-/**

- * Behaviour for handling various drivers for bridge configurations.

- */

-public interface BridgeConfig extends HandlerBehaviour {

-

-    /**

-     * Add a bridge.

-     *

-     * @param bridgeName bridge name

-     */

-    void addBridge(BridgeName bridgeName);

-

-    /**

-     * Remove a bridge.

-     *

-     * @param bridgeName bridge name

-     */

-    void deleteBridge(BridgeName bridgeName);

-

-    /**

-     * Remove a bridge.

-     *

-     * @return bridge collection

-     */

-    Collection<BridgeDescription> getBridges();

-

-    /**

-     * Add a logical/virtual port.

-     *

-     * @param port port number

-     */

-    void addPort(PortDescription port);

-

-    /**

-     * Delete a logical/virtual port.

-     *

-     * @param port port number

-     */

-    void deletePort(PortDescription port);

-

-    /**

-     * Delete a logical/virtual port.

-     *

-     * @return collection of port

-     */

-    Collection<PortDescription> getPorts();

-

-    /**

-     * Get a collection of port.

-     *

-     * @return portNumbers set of PortNumber

-     */

-    Set<PortNumber> getPortNumbers();

-}

+/*
+ * Copyright 2015 Open Networking Laboratory
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *     http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+package org.onosproject.net.behaviour;
+
+import java.util.Collection;
+import java.util.List;
+import java.util.Set;
+
+import org.onosproject.net.PortNumber;
+import org.onosproject.net.device.PortDescription;
+import org.onosproject.net.driver.HandlerBehaviour;
+
+/**
+ * Behaviour for handling various drivers for bridge configurations.
+ */
+public interface BridgeConfig extends HandlerBehaviour {
+
+    /**
+     * Add a bridge.
+     *
+     * @param bridgeName bridge name
+     */
+    void addBridge(BridgeName bridgeName);
+
+    /**
+     * Remove a bridge.
+     *
+     * @param bridgeName bridge name
+     */
+    void deleteBridge(BridgeName bridgeName);
+
+    /**
+     * Remove a bridge.
+     *
+     * @return bridge collection
+     */
+    Collection<BridgeDescription> getBridges();
+
+    /**
+     * Add a logical/virtual port.
+     *
+     * @param port port number
+     */
+    void addPort(PortDescription port);
+
+    /**
+     * Delete a logical/virtual port.
+     *
+     * @param port port number
+     */
+    void deletePort(PortDescription port);
+
+    /**
+     * Delete a logical/virtual port.
+     *
+     * @return collection of port
+     */
+    Collection<PortDescription> getPorts();
+
+    /**
+     * Get a collection of port.
+     *
+     * @return portNumbers set of PortNumber
+     */
+    Set<PortNumber> getPortNumbers();
+
+    /**
+     * Get logical/virtual ports by ifaceIds.
+     *
+     * @param ifaceIds the ifaceid that needed
+     * @return list of PortNumber
+     */
+    List<PortNumber> getLocalPorts(Iterable<String> ifaceIds);
+}
diff --git a/core/api/src/main/java/org/onosproject/net/driver/DefaultDriver.java b/core/api/src/main/java/org/onosproject/net/driver/DefaultDriver.java
index 5c6a08b..b7a9f2b 100644
--- a/core/api/src/main/java/org/onosproject/net/driver/DefaultDriver.java
+++ b/core/api/src/main/java/org/onosproject/net/driver/DefaultDriver.java
@@ -153,8 +153,8 @@
     // Creates an instance of behaviour primed with the specified driver data.
     private <T extends Behaviour> T createBehaviour(DriverData data, DriverHandler handler,
                                                     Class<T> behaviourClass) {
-        checkArgument(handler != null || !HandlerBehaviour.class.isAssignableFrom(behaviourClass),
-                      "{} is applicable only to handler context", behaviourClass.getName());
+        //checkArgument(handler != null || !HandlerBehaviour.class.isAssignableFrom(behaviourClass),
+        //              "{} is applicable only to handler context", behaviourClass.getName());
 
         // Locate the implementation of the requested behaviour.
         Class<? extends Behaviour> implementation = behaviours.get(behaviourClass);