Some class of constraints should not be used for link cost evaluation.

ONOS-6021

Current ConnectivityIntentCompiler simply picks first non-negative cost as Link cost value.

Some class of constraints are used to express Path viability or IntentCompiler's behavior.
Those constraints tend to returns fixed arbitrary non-negative link cost, which probably is not the best option to be used as Link cost during path computation.

This patch will:
- Introduce base class for constraints which should not influence Link cost.
- Introduce base class for constraints which should not influence Link cost or Path viability.
- Exclude above classes from link cost computation in ConnectivityIntentCompiler

MarkerConstraint
 base class for Constraints,
 which is not meant to influence Link cost or Path viability.

PathViablityConstraint
 base class for Constraints,
 which is not meant to influence Link cost.

Change-Id: Ice8b83a18cfe3bf5a68c25a853667bfaedb2b1a1
diff --git a/core/api/src/main/java/org/onosproject/net/intent/constraint/PartialFailureConstraint.java b/core/api/src/main/java/org/onosproject/net/intent/constraint/PartialFailureConstraint.java
index 787d126..9be6809 100644
--- a/core/api/src/main/java/org/onosproject/net/intent/constraint/PartialFailureConstraint.java
+++ b/core/api/src/main/java/org/onosproject/net/intent/constraint/PartialFailureConstraint.java
@@ -15,30 +15,15 @@
  */
 package org.onosproject.net.intent.constraint;
 
-import org.onosproject.net.Link;
-import org.onosproject.net.Path;
 import org.onosproject.net.intent.ConnectivityIntent;
-import org.onosproject.net.intent.Constraint;
 import org.onosproject.net.intent.Intent;
-import org.onosproject.net.intent.ResourceContext;
 
 /**
  * A constraint that allows intents that can only be partially compiled
  * (i.e. MultiPointToSinglePointIntent or SinglePointToMultiPointIntent)
  * to be installed when some endpoints or paths are not found.
  */
-public class PartialFailureConstraint implements Constraint {
-    // doesn't use LinkResourceService
-    @Override
-    public double cost(Link link, ResourceContext context) {
-        return 1;
-    }
-
-    // doesn't use LinkResourceService
-    @Override
-    public boolean validate(Path path, ResourceContext context) {
-        return true;
-    }
+public final class PartialFailureConstraint extends MarkerConstraint {
 
     public static boolean intentAllowsPartialFailure(Intent intent) {
         if (intent instanceof ConnectivityIntent) {
@@ -50,22 +35,6 @@
     }
 
     @Override
-    public int hashCode() {
-        return 1;
-    }
-
-    @Override
-    public boolean equals(Object obj) {
-        if (this == obj) {
-            return true;
-        }
-        if (obj == null || getClass() != obj.getClass()) {
-            return false;
-        }
-        return true;
-    }
-
-    @Override
     public String toString() {
         return "PartialFailureConstraint";
     }