Define a Criterion for OchSignal

Resolve ONOS-1844

Change-Id: I775a64ad6d6d3f1a046a6f7895a412c71c17ff16
diff --git a/core/api/src/main/java/org/onosproject/net/flow/criteria/Criteria.java b/core/api/src/main/java/org/onosproject/net/flow/criteria/Criteria.java
index 58d6c16..7ee17fd 100644
--- a/core/api/src/main/java/org/onosproject/net/flow/criteria/Criteria.java
+++ b/core/api/src/main/java/org/onosproject/net/flow/criteria/Criteria.java
@@ -15,6 +15,8 @@
  */
 package org.onosproject.net.flow.criteria;
 
+import org.onosproject.net.Lambda;
+import org.onosproject.net.OchSignal;
 import org.onosproject.net.PortNumber;
 import org.onosproject.net.flow.criteria.Criterion.Type;
 import org.onlab.packet.IpPrefix;
@@ -362,6 +364,20 @@
     }
 
     /**
+     * Creates a match on lambda using the specified value.
+     *
+     * @param lambda lambda
+     * @return match criterion
+     */
+    public static Criterion matchLambda(Lambda lambda) {
+        if (lambda instanceof OchSignal) {
+            return new OchSignalCriterion((OchSignal) lambda);
+        } else {
+            throw new UnsupportedOperationException(String.format("Unsupported type of Lambda: %s", lambda));
+        }
+    }
+
+    /**
      * Creates a match on optical signal type using the specified value.
      *
      * @param sigType optical signal type (8 bits unsigned integer)