Revert "[ONOS-5187] Compute path with Explicit path objects"

This reverts commit a32f6da9cea107b5a2c8d95c2566e1f1af1a7cce.

Change-Id: Ic023d701d18f0ae7af2579bc43777714a0e701dc
diff --git a/apps/pce/app/pom.xml b/apps/pce/app/pom.xml
index 83ab7f2..abd61b6 100644
--- a/apps/pce/app/pom.xml
+++ b/apps/pce/app/pom.xml
@@ -105,10 +105,5 @@
             <groupId>org.onosproject</groupId>
             <artifactId>onos-app-pcep-api</artifactId>
         </dependency>
-       <dependency>
-           <groupId>org.easymock</groupId>
-           <artifactId>easymock</artifactId>
-           <scope>test</scope>
-       </dependency>
-   </dependencies>
+    </dependencies>
 </project>
diff --git a/apps/pce/app/src/main/java/org/onosproject/pce/cli/PceQueryPathCommand.java b/apps/pce/app/src/main/java/org/onosproject/pce/cli/PceQueryPathCommand.java
index 8994f47..09a396e 100644
--- a/apps/pce/app/src/main/java/org/onosproject/pce/cli/PceQueryPathCommand.java
+++ b/apps/pce/app/src/main/java/org/onosproject/pce/cli/PceQueryPathCommand.java
@@ -24,13 +24,10 @@
 import org.onosproject.incubator.net.tunnel.Tunnel;
 import org.onosproject.incubator.net.tunnel.TunnelId;
 import org.onosproject.net.AnnotationKeys;
-import org.onosproject.pce.pceservice.ExplicitPathInfo;
 import org.onosproject.pce.pceservice.api.PceService;
 
 import org.slf4j.Logger;
 
-import java.util.List;
-
 /**
  * Supports quering PCE path.
  */
@@ -75,28 +72,17 @@
      * @param tunnel pce tunnel
      */
     void display(Tunnel tunnel) {
-        List<ExplicitPathInfo> explicitPathInfoList = AbstractShellCommand.get(PceService.class)
-                .explicitPathInfoList(tunnel.tunnelName().value());
-
-        print("\npath-id                  : %s \n" +
-                "source                   : %s \n" +
-                "destination              : %s \n" +
-                "path-type                : %s \n" +
-                "symbolic-path-name       : %s \n" +
+        print("\npath-id            : %s \n" +
+                "source             : %s \n" +
+                "destination        : %s \n" +
+                "path-type          : %s \n" +
+                "symbolic-path-name : %s \n" +
                 "constraints:            \n" +
-                "   cost                  : %s \n" +
-                "   bandwidth             : %s",
+                "   cost            : %s \n" +
+                "   bandwidth       : %s",
                 tunnel.tunnelId().id(), tunnel.path().src().deviceId().toString(),
                 tunnel.path().dst().deviceId().toString(),
                 tunnel.type().name(), tunnel.tunnelName(), tunnel.annotations().value(COST_TYPE),
                 tunnel.annotations().value(AnnotationKeys.BANDWIDTH));
-        if (explicitPathInfoList != null) {
-            for (ExplicitPathInfo e : explicitPathInfoList) {
-                print("explicitPathObjects      : \n" +
-                      "    type                 : %s \n" +
-                      "    value                : %s ",
-                      String.valueOf(e.type().type()), e.value().toString());
-            }
-        }
     }
 }
diff --git a/apps/pce/app/src/main/java/org/onosproject/pce/cli/PceSetupPathCommand.java b/apps/pce/app/src/main/java/org/onosproject/pce/cli/PceSetupPathCommand.java
index 149b37a..7bd7970 100644
--- a/apps/pce/app/src/main/java/org/onosproject/pce/cli/PceSetupPathCommand.java
+++ b/apps/pce/app/src/main/java/org/onosproject/pce/cli/PceSetupPathCommand.java
@@ -15,35 +15,27 @@
  */
 package org.onosproject.pce.cli;
 
-import static org.onosproject.net.Link.State.ACTIVE;
-import static org.onosproject.net.Link.Type.DIRECT;
 import static org.slf4j.LoggerFactory.getLogger;
 
 import java.util.Collection;
 import java.util.List;
 import java.util.LinkedList;
 
-import com.google.common.collect.Lists;
-
 import org.apache.karaf.shell.commands.Argument;
 import org.apache.karaf.shell.commands.Command;
 import org.apache.karaf.shell.commands.Option;
+
 import org.onlab.util.DataRateUnit;
 import org.onosproject.cli.AbstractShellCommand;
 import org.onosproject.incubator.net.tunnel.Tunnel;
 import org.onosproject.incubator.net.tunnel.TunnelService;
-import org.onosproject.net.ConnectPoint;
-import org.onosproject.net.DefaultLink;
 import org.onosproject.net.DeviceId;
-import org.onosproject.net.NetworkResource;
-import org.onosproject.net.PortNumber;
 import org.onosproject.net.intent.constraint.BandwidthConstraint;
 import org.onosproject.net.intent.Constraint;
-import org.onosproject.net.provider.ProviderId;
-import org.onosproject.pce.pceservice.ExplicitPathInfo;
 import org.onosproject.pce.pceservice.constraint.CostConstraint;
 import org.onosproject.pce.pceservice.LspType;
 import org.onosproject.pce.pceservice.api.PceService;
+
 import org.slf4j.Logger;
 
 /**
@@ -52,16 +44,6 @@
 @Command(scope = "onos", name = "pce-setup-path", description = "Supports creating pce path.")
 public class PceSetupPathCommand extends AbstractShellCommand {
     private final Logger log = getLogger(getClass());
-    public static final byte SUBTYPE_DEVICEID = 0;
-    public static final byte SUBTYPE_LINK = 1;
-    public static final byte SUBTYPE_INDEX = 1;
-    public static final byte TYPE_INDEX = 0;
-
-    public static final byte DEVICEID_INDEX = 2;
-    public static final byte SOURCE_DEVICEID_INDEX = 2;
-    public static final byte SOURCE_PORTNO_INDEX = 3;
-    public static final byte DESTINATION_DEVICEID_INDEX = 4;
-    public static final byte DESTINATION_PORTNO_INDEX = 5;
 
     @Argument(index = 0, name = "src", description = "source device.", required = true, multiValued = false)
     String src = null;
@@ -87,15 +69,6 @@
             + "Data rate unit is in BPS.", required = false, multiValued = false)
     double bandwidth = 0.0;
 
-    @Option(name = "-e", aliases = "--explicitPathObjects", description = "List of strict and loose hopes",
-            required = false, multiValued = true)
-    String[] explicitPathInfoStrings;
-
-    //explicitPathInfo format : Type/SubType/Value(DeviceId or Link info)
-    //If Value is Device : Type/SubType/deviceId
-    //If Value is Link : Type/SubType/SourceDeviceId/SourcePortNo/DestinationDeviceId/DestinationPortNo
-    List<ExplicitPathInfo> explicitPathInfo = Lists.newLinkedList();
-
     @Override
     protected void execute() {
         log.info("executing pce-setup-path");
@@ -141,50 +114,7 @@
         CostConstraint.Type costType = CostConstraint.Type.values()[cost - 1];
         listConstrnt.add(CostConstraint.of(costType));
 
-        if (explicitPathInfoStrings != null)  {
-            for (String str : explicitPathInfoStrings) {
-                String[] splitted = str.split("/");
-                DeviceId deviceId;
-                NetworkResource res = null;
-                PortNumber portNo;
-                int explicitPathType = Integer.parseInt(splitted[TYPE_INDEX]);
-                if ((explicitPathType < 0) || (explicitPathType > 1)) {
-                    error("Explicit path validation failed");
-                    return;
-                }
-
-                //subtype 0 = deviceId, 1 = link
-                //subtype is required to store either as deviceId or Link
-                if (splitted[DEVICEID_INDEX] != null && Integer.parseInt(splitted[SUBTYPE_INDEX]) == SUBTYPE_DEVICEID) {
-                    res = DeviceId.deviceId(splitted[DEVICEID_INDEX]);
-                } else if (Integer.parseInt(splitted[SUBTYPE_INDEX]) == SUBTYPE_LINK
-                        && splitted[SOURCE_DEVICEID_INDEX] != null
-                        && splitted[SOURCE_PORTNO_INDEX] != null
-                        && splitted[DESTINATION_DEVICEID_INDEX] != null
-                        && splitted[DESTINATION_PORTNO_INDEX] != null) {
-
-                    deviceId = DeviceId.deviceId(splitted[SOURCE_DEVICEID_INDEX]);
-                    portNo = PortNumber.portNumber(splitted[SOURCE_PORTNO_INDEX]);
-                    ConnectPoint cpSrc = new ConnectPoint(deviceId, portNo);
-                    deviceId = DeviceId.deviceId(splitted[DESTINATION_DEVICEID_INDEX]);
-                    portNo = PortNumber.portNumber(splitted[DESTINATION_PORTNO_INDEX]);
-                    ConnectPoint cpDst = new ConnectPoint(deviceId, portNo);
-                    res = DefaultLink.builder()
-                            .providerId(ProviderId.NONE)
-                            .src(cpSrc)
-                            .dst(cpDst)
-                            .type(DIRECT)
-                            .state(ACTIVE)
-                            .build();
-                } else {
-                    error("Explicit path validation failed");
-                    return;
-                }
-                ExplicitPathInfo obj = new ExplicitPathInfo(ExplicitPathInfo.Type.values()[explicitPathType], res);
-                explicitPathInfo.add(obj);
-            }
-        }
-        if (!service.setupPath(srcDevice, dstDevice, name, listConstrnt, lspType, explicitPathInfo)) {
+        if (!service.setupPath(srcDevice, dstDevice, name, listConstrnt, lspType)) {
             error("Path creation failed.");
         }
     }
diff --git a/apps/pce/app/src/main/java/org/onosproject/pce/pceservice/DefaultPcePath.java b/apps/pce/app/src/main/java/org/onosproject/pce/pceservice/DefaultPcePath.java
index bcc12ec..10acd0a 100644
--- a/apps/pce/app/src/main/java/org/onosproject/pce/pceservice/DefaultPcePath.java
+++ b/apps/pce/app/src/main/java/org/onosproject/pce/pceservice/DefaultPcePath.java
@@ -18,18 +18,14 @@
 
 import static com.google.common.base.MoreObjects.toStringHelper;
 
-import java.util.Collection;
-import java.util.List;
 import java.util.Objects;
 
-import org.onlab.rest.BaseResource;
 import org.onlab.util.DataRateUnit;
 import org.onosproject.incubator.net.tunnel.Tunnel;
 import org.onosproject.incubator.net.tunnel.TunnelId;
 import org.onosproject.net.intent.constraint.BandwidthConstraint;
 import org.onosproject.net.intent.Constraint;
 import org.onosproject.pce.pceservice.constraint.CostConstraint;
-import org.onosproject.pce.pcestore.api.PceStore;
 
 /**
  * Implementation of an entity which provides functionalities of pce path.
@@ -43,7 +39,6 @@
     private String name; // symbolic-path-name
     private Constraint costConstraint; // cost constraint
     private Constraint bandwidthConstraint; // bandwidth constraint
-    private Collection<ExplicitPathInfo> explicitPathInfo; //list of explicit path info
 
     /**
      * Initializes PCE path attributes.
@@ -55,11 +50,10 @@
      * @param name symbolic-path-name
      * @param costConstrnt cost constraint
      * @param bandwidthConstrnt bandwidth constraint
-     * @param explicitPathInfo list of explicit path info
      */
     private DefaultPcePath(TunnelId id, String src, String dst, LspType lspType,
-                           String name, Constraint costConstrnt, Constraint bandwidthConstrnt,
-                           Collection<ExplicitPathInfo> explicitPathInfo) {
+                           String name, Constraint costConstrnt, Constraint bandwidthConstrnt) {
+
         this.id = id;
         this.source = src;
         this.destination = dst;
@@ -67,7 +61,6 @@
         this.name = name;
         this.costConstraint = costConstrnt;
         this.bandwidthConstraint = bandwidthConstrnt;
-        this.explicitPathInfo = explicitPathInfo;
     }
 
     @Override
@@ -121,11 +114,6 @@
     }
 
     @Override
-    public Collection<ExplicitPathInfo> explicitPathInfo() {
-        return explicitPathInfo;
-    }
-
-    @Override
     public PcePath copy(PcePath path) {
         if (null != path.source()) {
             this.source = path.source();
@@ -150,8 +138,7 @@
 
     @Override
     public int hashCode() {
-        return Objects.hash(id, source, destination, lspType, name, costConstraint, bandwidthConstraint,
-                explicitPathInfo);
+        return Objects.hash(id, source, destination, lspType, name, costConstraint, bandwidthConstraint);
     }
 
     @Override
@@ -167,8 +154,7 @@
                     && Objects.equals(lspType, that.lspType)
                     && Objects.equals(name, that.name)
                     && Objects.equals(costConstraint, that.costConstraint)
-                    && Objects.equals(bandwidthConstraint, that.bandwidthConstraint)
-                    && Objects.equals(explicitPathInfo, that.explicitPathInfo);
+                    && Objects.equals(bandwidthConstraint, that.bandwidthConstraint);
         }
         return false;
     }
@@ -184,7 +170,6 @@
                 .add("name", name)
                 .add("costConstraint", costConstraint)
                 .add("bandwidthConstraint", bandwidthConstraint)
-                .add("explicitPathInfo", explicitPathInfo)
                 .toString();
     }
 
@@ -200,7 +185,7 @@
     /**
      * Builder class for pce path.
      */
-    public static final class Builder extends BaseResource implements PcePath.Builder {
+    public static final class Builder implements PcePath.Builder {
         private TunnelId id;
         private String source;
         private String destination;
@@ -208,7 +193,6 @@
         private String name;
         private Constraint costConstraint;
         private Constraint bandwidthConstraint;
-        private Collection<ExplicitPathInfo> explicitPathInfo;
 
         @Override
         public Builder id(String id) {
@@ -256,12 +240,6 @@
         }
 
         @Override
-        public Builder explicitPathInfo(Collection<ExplicitPathInfo> explicitPathInfo) {
-            this.explicitPathInfo = explicitPathInfo;
-            return this;
-        }
-
-        @Override
         public Builder of(Tunnel tunnel) {
             this.id = TunnelId.valueOf(tunnel.tunnelId().id());
             this.source = tunnel.path().src().deviceId().toString();
@@ -286,20 +264,13 @@
                                                                   DataRateUnit.valueOf("BPS"));
             }
 
-            PceStore pceStore = get(PceStore.class);
-            List<ExplicitPathInfo> explicitPathInfoList = pceStore
-                    .getTunnelNameExplicitPathInfoMap(tunnel.tunnelName().value());
-            if (explicitPathInfoList != null) {
-                this.explicitPathInfo = explicitPathInfoList;
-            }
-
             return this;
         }
 
         @Override
         public PcePath build() {
             return new DefaultPcePath(id, source, destination, lspType, name,
-                                      costConstraint, bandwidthConstraint, explicitPathInfo);
+                                      costConstraint, bandwidthConstraint);
         }
     }
 }
diff --git a/apps/pce/app/src/main/java/org/onosproject/pce/pceservice/ExplicitPathInfo.java b/apps/pce/app/src/main/java/org/onosproject/pce/pceservice/ExplicitPathInfo.java
deleted file mode 100644
index 52ef270..0000000
--- a/apps/pce/app/src/main/java/org/onosproject/pce/pceservice/ExplicitPathInfo.java
+++ /dev/null
@@ -1,113 +0,0 @@
-/*
- * Copyright 2016-present 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.pce.pceservice;
-
-import org.onosproject.net.NetworkResource;
-
-import com.google.common.annotations.Beta;
-
-import java.util.Objects;
-
-/**
- * Representation of explicit path info consists of contraints (strict / loose) to compute path.
- */
-@Beta
-public final class ExplicitPathInfo {
-
-    private final Type type;
-
-    //Can be Link or DeviceId
-    private final NetworkResource value;
-
-    public enum Type {
-        /**
-         * Signifies that path includes strict node or link.
-         */
-        STRICT(0),
-
-        /**
-         * Signifies that path includes loose node or link.
-         */
-        LOOSE(1);
-
-        int value;
-
-        /**
-         * Assign val with the value as the type.
-         *
-         * @param val type
-         */
-        Type(int val) {
-            value = val;
-        }
-
-        /**
-         * Returns value of type.
-         *
-         * @return type
-         */
-        public byte type() {
-            return (byte) value;
-        }
-    }
-
-    /**
-     * Creates instance of explicit path object.
-     *
-     * @param type specifies whether strict or loose node/link
-     * @param value specifies deviceId or link
-     */
-    public ExplicitPathInfo(Type type, NetworkResource value) {
-        this.type = type;
-        this.value = value;
-    }
-
-    /**
-     * Returns explicit path type.
-     *
-     * @return explicit path type as strict/loose
-     */
-    public Type type() {
-        return type;
-    }
-
-    /**
-     * Returns deviceId or link.
-     *
-     * @return deviceId or link
-     */
-    public NetworkResource value() {
-        return value;
-    }
-
-    @Override
-    public int hashCode() {
-        return Objects.hash(type, value);
-    }
-
-    @Override
-    public boolean equals(Object obj) {
-        if (this == obj) {
-            return true;
-        }
-        if (obj instanceof ExplicitPathInfo) {
-            final ExplicitPathInfo other = (ExplicitPathInfo) obj;
-            return Objects.equals(this.type, other.type)
-                    && Objects.equals(this.value, other.value);
-        }
-        return false;
-    }
-}
diff --git a/apps/pce/app/src/main/java/org/onosproject/pce/pceservice/PceManager.java b/apps/pce/app/src/main/java/org/onosproject/pce/pceservice/PceManager.java
index 9267dc2..a4c2aa6 100644
--- a/apps/pce/app/src/main/java/org/onosproject/pce/pceservice/PceManager.java
+++ b/apps/pce/app/src/main/java/org/onosproject/pce/pceservice/PceManager.java
@@ -24,7 +24,6 @@
 import java.util.List;
 import java.util.Optional;
 import java.util.Set;
-
 import org.apache.felix.scr.annotations.Activate;
 import org.apache.felix.scr.annotations.Component;
 import org.apache.felix.scr.annotations.Deactivate;
@@ -49,11 +48,9 @@
 import org.onosproject.net.config.NetworkConfigService;
 import org.onosproject.net.DefaultAnnotations;
 import org.onosproject.net.DefaultAnnotations.Builder;
-import org.onosproject.net.DefaultPath;
 import org.onosproject.net.Device;
 import org.onosproject.net.DeviceId;
 import org.onosproject.net.Link;
-import org.onosproject.net.NetworkResource;
 import org.onosproject.net.Path;
 import org.onosproject.net.device.DeviceService;
 import org.onosproject.net.intent.Constraint;
@@ -89,7 +86,6 @@
 
 import com.google.common.collect.ImmutableList;
 import com.google.common.collect.ImmutableSet;
-import com.google.common.collect.Sets;
 
 import static org.onosproject.incubator.net.tunnel.Tunnel.State.INIT;
 import static org.onosproject.incubator.net.tunnel.Tunnel.State.UNSTABLE;
@@ -234,177 +230,10 @@
         return ImmutableSet.of();
     }
 
-    //Computes the partial path from partial computed path to specified dst.
-    private List<Path> computePartialPath(List<Path> computedPath, DeviceId src, DeviceId dst,
-                                    List<Constraint> constraints) {
-        int size = computedPath.size();
-        Path path = null;
-        DeviceId deviceId = size == 0 ? src :
-                computedPath.get(size - 1).dst().deviceId();
-
-        Set<Path> tempComputePath = computePath(deviceId, dst, constraints);
-        if (tempComputePath.isEmpty()) {
-            return null;
-        }
-
-        //if path validation fails return null
-        //Validate computed path to avoid loop in the path
-        for (Path p : tempComputePath) {
-            if (pathValidation(computedPath, p)) {
-                path = p;
-                break;
-            }
-        }
-        if (path == null) {
-            return null;
-        }
-
-        //Store the partial path result in a list
-        computedPath.add(path);
-        return computedPath;
-    }
-
-    private List<DeviceId> createListOfDeviceIds(List<? extends NetworkResource> list) {
-        List<Link> links = new LinkedList<>();
-        if (!list.isEmpty() && list.iterator().next() instanceof Path) {
-            for (Path path : (List<Path>) list) {
-                links.addAll(path.links());
-            }
-        } else if (!list.isEmpty() && list.iterator().next() instanceof Link) {
-            links.addAll((List<Link>) list);
-        }
-
-        //List of devices for new path computed
-        DeviceId source = null;
-        DeviceId destination = null;
-        List<DeviceId> devList = new LinkedList<>();
-
-        for (Link l : links) {
-            if (!devList.contains(l.src().deviceId())) {
-                devList.add(l.src().deviceId());
-            }
-            if (!devList.contains(l.dst().deviceId())) {
-                devList.add(l.dst().deviceId());
-            }
-        }
-
-        return devList;
-    }
-
-    //To dectect loops in the path i.e if the partial paths has intersection node avoid it.
-    private boolean pathValidation(List<Path> partialPath, Path path) {
-
-        //List of devices in new path computed
-        List<DeviceId> newPartialPathDevList;
-        newPartialPathDevList = createListOfDeviceIds(path.links());
-
-        //List of devices in partial computed path
-        List<DeviceId> partialComputedPathDevList;
-        partialComputedPathDevList = createListOfDeviceIds(partialPath);
-
-        for (DeviceId deviceId : newPartialPathDevList) {
-            for (DeviceId devId : partialComputedPathDevList) {
-                if (!newPartialPathDevList.get(0).equals(deviceId) &&
-                        !partialComputedPathDevList.get(partialComputedPathDevList.size() - 1).equals(devId)
-                        && deviceId.equals(devId)) {
-                    return false;
-                }
-            }
-        }
-
-        return true;
-    }
-
-    //Returns final computed explicit path (list of partial computed paths).
-    private List<Path> computeExplicitPath(List<ExplicitPathInfo> explicitPathInfo, DeviceId src, DeviceId dst,
-            List<Constraint> constraints) {
-        List<Path> finalComputedPath = new LinkedList<>();
-        for (ExplicitPathInfo info : explicitPathInfo) {
-            /*
-             * If explicit path object is LOOSE,
-             * 1) If specified as DeviceId (node) :
-             * If it is source , compute from source to destination (partial computation not required),
-             * otherwise compute from specified source to specified device
-             * 2) If specified as Link :
-             * Compute partial path from source to link's source , if path exists compute from link's source to dst
-             */
-            if (info.type().equals(ExplicitPathInfo.Type.LOOSE)) {
-                if (info.value() instanceof DeviceId) {
-                    // If deviceId is source no need to compute
-                    if (!(info.value()).equals(src)) {
-                        finalComputedPath = computePartialPath(finalComputedPath, src, (DeviceId) info.value(),
-                                constraints);
-                    }
-
-                } else if (info.value() instanceof Link) {
-                    if ((((Link) info.value()).src().deviceId().equals(src))
-                            || (!finalComputedPath.isEmpty()
-                            && finalComputedPath.get(finalComputedPath.size() - 1).dst().equals(
-                                    ((Link) info.value()).src().deviceId()))) {
-
-                        finalComputedPath = computePartialPath(finalComputedPath, src, ((Link) info.value()).dst()
-                                .deviceId(), constraints);
-                    } else {
-
-                        finalComputedPath = computePartialPath(finalComputedPath, src, ((Link) info.value()).src()
-                                .deviceId(), constraints) != null ? computePartialPath(finalComputedPath, src,
-                                ((Link) info.value()).dst().deviceId(), constraints) : null;
-                    }
-                }
-                /*
-                 * If explicit path object is STRICT,
-                 * 1) If specified as DeviceId (node) :
-                 * Check whether partial computed path has reachable to strict specified node or
-                 * strict node is the source, if no set path as null else do nothing
-                 * 2) If specified as Link :
-                 * Check whether partial computed path has reachable to strict link's src, if yes compute
-                 * path from strict link's src to link's dst (to include specified link)
-                 */
-            } else if (info.type().equals(ExplicitPathInfo.Type.STRICT)) {
-                if (info.value() instanceof DeviceId) {
-                    if (!(!finalComputedPath.isEmpty() && finalComputedPath.get(finalComputedPath.size() - 1).dst()
-                            .deviceId().equals(info.value()))
-                            && !info.value().equals(src)) {
-                        finalComputedPath = null;
-                    }
-
-                } else if (info.value() instanceof Link) {
-
-                    finalComputedPath = ((Link) info.value()).src().deviceId().equals(src)
-                            || !finalComputedPath.isEmpty()
-                            && finalComputedPath.get(finalComputedPath.size() - 1).dst().deviceId()
-                                    .equals(((Link) info.value()).src().deviceId()) ? computePartialPath(
-                            finalComputedPath, src, ((Link) info.value()).dst().deviceId(), constraints) : null;
-
-                }
-            }
-            if (finalComputedPath == null) {
-                return null;
-            }
-        }
-        // Destination is not reached in Partial computed path then compute till destination
-        if (finalComputedPath.isEmpty() || !finalComputedPath.isEmpty()
-                && !finalComputedPath.get(finalComputedPath.size() - 1).dst().deviceId().equals(dst)) {
-
-            finalComputedPath = computePartialPath(finalComputedPath, src, dst, constraints);
-            if (finalComputedPath == null) {
-                return null;
-            }
-        }
-
-        return finalComputedPath;
-    }
-
-    @Override
-    public boolean setupPath(DeviceId src, DeviceId dst, String tunnelName, List<Constraint> constraints,
-                             LspType lspType) {
-        return setupPath(src, dst, tunnelName, constraints, lspType, null);
-    }
-
     //[TODO:] handle requests in queue
     @Override
     public boolean setupPath(DeviceId src, DeviceId dst, String tunnelName, List<Constraint> constraints,
-                             LspType lspType, List<ExplicitPathInfo> explicitPathInfo) {
+                             LspType lspType) {
         checkNotNull(src);
         checkNotNull(dst);
         checkNotNull(tunnelName);
@@ -416,7 +245,7 @@
 
         if (srcDevice == null || dstDevice == null) {
             // Device is not known.
-            pceStore.addFailedPathInfo(new PcePathInfo(src, dst, tunnelName, constraints, lspType, explicitPathInfo));
+            pceStore.addFailedPathInfo(new PcePathInfo(src, dst, tunnelName, constraints, lspType));
             return false;
         }
 
@@ -426,7 +255,7 @@
 
         if (srcLsrId == null || dstLsrId == null) {
             // LSR id is not known.
-            pceStore.addFailedPathInfo(new PcePathInfo(src, dst, tunnelName, constraints, lspType, explicitPathInfo));
+            pceStore.addFailedPathInfo(new PcePathInfo(src, dst, tunnelName, constraints, lspType));
             return false;
         }
 
@@ -434,7 +263,7 @@
         DeviceCapability cfg = netCfgService.getConfig(DeviceId.deviceId(srcLsrId), DeviceCapability.class);
         if (cfg == null) {
             log.debug("No session to ingress.");
-            pceStore.addFailedPathInfo(new PcePathInfo(src, dst, tunnelName, constraints, lspType, explicitPathInfo));
+            pceStore.addFailedPathInfo(new PcePathInfo(src, dst, tunnelName, constraints, lspType));
             return false;
         }
 
@@ -470,30 +299,12 @@
             constraints = new LinkedList<>();
             constraints.add(CapabilityConstraint.of(CapabilityType.valueOf(lspType.name())));
         }
-        Set<Path> computedPathSet = Sets.newLinkedHashSet();
 
-        if (explicitPathInfo != null && !explicitPathInfo.isEmpty()) {
-            List<Path> finalComputedPath = computeExplicitPath(explicitPathInfo, src, dst, constraints);
-            if (finalComputedPath == null) {
-                return false;
-            }
-
-            pceStore.tunnelNameExplicitPathInfoMap(tunnelName, explicitPathInfo);
-            List<Link> links = new LinkedList<>();
-            double totalCost = 0;
-            // Add all partial computed paths
-            for (Path path : finalComputedPath) {
-                links.addAll(path.links());
-                totalCost = totalCost + path.cost();
-            }
-            computedPathSet.add(new DefaultPath(finalComputedPath.iterator().next().providerId(), links, totalCost));
-        } else {
-            computedPathSet = computePath(src, dst, constraints);
-        }
+        Set<Path> computedPathSet = computePath(src, dst, constraints);
 
         // NO-PATH
         if (computedPathSet.isEmpty()) {
-            pceStore.addFailedPathInfo(new PcePathInfo(src, dst, tunnelName, constraints, lspType, explicitPathInfo));
+            pceStore.addFailedPathInfo(new PcePathInfo(src, dst, tunnelName, constraints, lspType));
             return false;
         }
 
@@ -528,15 +339,14 @@
         if (bwConstraintValue != 0) {
             consumerId = reserveBandwidth(computedPath, bwConstraintValue, null);
             if (consumerId == null) {
-                pceStore.addFailedPathInfo(new PcePathInfo(src, dst, tunnelName, constraints,
-                        lspType, explicitPathInfo));
+                pceStore.addFailedPathInfo(new PcePathInfo(src, dst, tunnelName, constraints, lspType));
                 return false;
             }
         }
 
         TunnelId tunnelId = tunnelService.setupTunnel(appId, src, tunnel, computedPath);
         if (tunnelId == null) {
-            pceStore.addFailedPathInfo(new PcePathInfo(src, dst, tunnelName, constraints, lspType, explicitPathInfo));
+            pceStore.addFailedPathInfo(new PcePathInfo(src, dst, tunnelName, constraints, lspType));
             if (consumerId != null) {
                 resourceService.release(consumerId);
             }
@@ -553,7 +363,7 @@
     @Override
     public boolean updatePath(TunnelId tunnelId, List<Constraint> constraints) {
         checkNotNull(tunnelId);
-        Set<Path> computedPathSet = Sets.newLinkedHashSet();
+        Set<Path> computedPathSet = null;
         Tunnel tunnel = tunnelService.queryTunnel(tunnelId);
 
         if (tunnel == null) {
@@ -631,30 +441,8 @@
             constraints.add(costConstraint);
         }
 
-        List<ExplicitPathInfo> explicitPathInfo = pceStore
-                .getTunnelNameExplicitPathInfoMap(tunnel.tunnelName().value());
-        if (explicitPathInfo != null) {
-            List<Path> finalComputedPath = computeExplicitPath(explicitPathInfo,
-                    tunnel.path().src().deviceId(), tunnel.path().dst().deviceId(),
-                    constraints);
-
-            if (finalComputedPath == null) {
-                return false;
-            }
-
-            List<Link> totalLinks = new LinkedList<>();
-            double totalCost = 0;
-            //Add all partial computed paths
-            for (Path path : finalComputedPath) {
-                totalLinks.addAll(path.links());
-                totalCost = totalCost + path.cost();
-            }
-            computedPathSet.add(new DefaultPath(finalComputedPath.iterator().next().providerId(),
-                    totalLinks, totalCost));
-        } else {
-            computedPathSet = computePath(tunnel.path().src().deviceId(), tunnel.path().dst().deviceId(),
-                    constraints);
-        }
+        computedPathSet = computePath(links.get(0).src().deviceId(), links.get(links.size() - 1).dst().deviceId(),
+                                      constraints);
 
         // NO-PATH
         if (computedPathSet.isEmpty()) {
@@ -848,8 +636,7 @@
                 // then PCInitiate (Remove)
                 pceStore.addFailedPathInfo(new PcePathInfo(tunnel.path().src().deviceId(), tunnel
                         .path().dst().deviceId(), tunnel.tunnelName().value(), constraintList,
-                        LspType.valueOf(tunnel.annotations().value(LSP_SIG_TYPE)),
-                         pceStore.getTunnelNameExplicitPathInfoMap(tunnel.tunnelName().value())));
+                        LspType.valueOf(tunnel.annotations().value(LSP_SIG_TYPE))));
                 //Release that tunnel calling PCInitiate
                 releasePath(tunnel.tunnelId());
             }
@@ -1045,9 +832,7 @@
                     List<Link> links = tunnel.path().links();
                     pceStore.addFailedPathInfo(new PcePathInfo(links.get(0).src().deviceId(),
                                                                   links.get(links.size() - 1).dst().deviceId(),
-                                                                  tunnel.tunnelName().value(), constraints, lspType,
-                                                                  pceStore.getTunnelNameExplicitPathInfoMap(tunnel
-                                                                          .tunnelName().value())));
+                                                                  tunnel.tunnelName().value(), constraints, lspType));
                 }
 
                 break;
@@ -1076,11 +861,6 @@
         }
     }
 
-    @Override
-    public List<ExplicitPathInfo> explicitPathInfoList(String tunnelName) {
-        return pceStore.getTunnelNameExplicitPathInfoMap(tunnelName);
-    }
-
     //Computes path from tunnel store and also path failed to setup.
     private void callForOptimization() {
         //Recompute the LSPs which it was delegated [LSPs stored in PCE store (failed paths)]
@@ -1100,7 +880,7 @@
          */
         if (mastershipService.isLocalMaster(failedPathInfo.src())) {
             if (setupPath(failedPathInfo.src(), failedPathInfo.dst(), failedPathInfo.name(),
-                    failedPathInfo.constraints(), failedPathInfo.lspType(), failedPathInfo.explicitPathInfo())) {
+                    failedPathInfo.constraints(), failedPathInfo.lspType())) {
                 // If computation is success remove that path
                 pceStore.removeFailedPathInfo(failedPathInfo);
                 return true;
diff --git a/apps/pce/app/src/main/java/org/onosproject/pce/pceservice/PcePath.java b/apps/pce/app/src/main/java/org/onosproject/pce/pceservice/PcePath.java
index 19e9ce2..807b233 100644
--- a/apps/pce/app/src/main/java/org/onosproject/pce/pceservice/PcePath.java
+++ b/apps/pce/app/src/main/java/org/onosproject/pce/pceservice/PcePath.java
@@ -19,8 +19,7 @@
 import org.onosproject.incubator.net.tunnel.Tunnel;
 import org.onosproject.incubator.net.tunnel.TunnelId;
 import org.onosproject.net.intent.Constraint;
-
-import java.util.Collection;
+import org.onosproject.pce.pceservice.DefaultPcePath.Builder;
 
 /**
  * Abstraction of an entity which provides functionalities of pce path.
@@ -98,13 +97,6 @@
     Constraint bandwidthConstraint();
 
     /**
-     * Returns the list of explicit path objects.
-     *
-     * @return list of explicit path objects
-     */
-    Collection<ExplicitPathInfo> explicitPathInfo();
-
-    /**
      * Copies only non-null or non-zero member variables.
      *
      * @param id path-id
@@ -182,14 +174,6 @@
         Builder of(Tunnel tunnel);
 
         /**
-         * Returns the builder object of ExplicitPathInfo.
-         *
-         * @param explicitPathInfo list of explicit path obj
-         * @return builder object of ExplicitPathInfo
-         */
-        Builder explicitPathInfo(Collection<ExplicitPathInfo> explicitPathInfo);
-
-        /**
          * Builds object of pce path.
          *
          * @return object of pce path.
diff --git a/apps/pce/app/src/main/java/org/onosproject/pce/pceservice/api/PceService.java b/apps/pce/app/src/main/java/org/onosproject/pce/pceservice/api/PceService.java
index fdfdb73..f2d3622 100644
--- a/apps/pce/app/src/main/java/org/onosproject/pce/pceservice/api/PceService.java
+++ b/apps/pce/app/src/main/java/org/onosproject/pce/pceservice/api/PceService.java
@@ -19,7 +19,6 @@
 
 import org.onosproject.net.DeviceId;
 import org.onosproject.net.intent.Constraint;
-import org.onosproject.pce.pceservice.ExplicitPathInfo;
 import org.onosproject.pce.pceservice.LspType;
 import org.onosproject.incubator.net.tunnel.Tunnel;
 import org.onosproject.incubator.net.tunnel.TunnelId;
@@ -43,20 +42,6 @@
     boolean setupPath(DeviceId src, DeviceId dst, String tunnelName, List<Constraint> constraints, LspType lspType);
 
     /**
-     * Creates new path based on constraints and LSP type.
-     *
-     * @param src source device
-     * @param dst destination device
-     * @param tunnelName name of the tunnel
-     * @param constraints list of constraints to be applied on path
-     * @param lspType type of path to be setup
-     * @param explicitPathInfo list of explicit path info
-     * @return false on failure and true on successful path creation
-     */
-    boolean setupPath(DeviceId src, DeviceId dst, String tunnelName, List<Constraint> constraints, LspType lspType,
-                      List<ExplicitPathInfo> explicitPathInfo);
-
-    /**
      * Updates an existing path.
      *
      * @param tunnelId tunnel identifier
@@ -87,12 +72,4 @@
      * @return tunnel if path exists, otherwise null
      */
     Tunnel queryPath(TunnelId tunnelId);
-
-    /**
-     * Returns list of explicit path info.
-     *
-     * @param tunnelName tunnel name
-     * @return list of explicit path info
-     */
-    List<ExplicitPathInfo> explicitPathInfoList(String tunnelName);
 }
\ No newline at end of file
diff --git a/apps/pce/app/src/main/java/org/onosproject/pce/pcestore/DistributedPceStore.java b/apps/pce/app/src/main/java/org/onosproject/pce/pcestore/DistributedPceStore.java
index 78e46f6..9b2941f 100644
--- a/apps/pce/app/src/main/java/org/onosproject/pce/pcestore/DistributedPceStore.java
+++ b/apps/pce/app/src/main/java/org/onosproject/pce/pcestore/DistributedPceStore.java
@@ -19,7 +19,6 @@
 
 import com.google.common.collect.ImmutableSet;
 
-import java.util.List;
 import java.util.Map;
 import java.util.stream.Collectors;
 
@@ -34,7 +33,6 @@
 import org.onosproject.incubator.net.tunnel.TunnelId;
 import org.onosproject.net.intent.constraint.BandwidthConstraint;
 import org.onosproject.net.resource.ResourceConsumer;
-import org.onosproject.pce.pceservice.ExplicitPathInfo;
 import org.onosproject.pce.pceservice.constraint.CapabilityConstraint;
 import org.onosproject.pce.pceservice.constraint.CostConstraint;
 import org.onosproject.pce.pceservice.TunnelConsumerId;
@@ -71,9 +69,6 @@
     // List of Failed path info
     private DistributedSet<PcePathInfo> failedPathSet;
 
-    // Maintains tunnel name mapped to explicit path info
-    private ConsistentMap<String, List<ExplicitPathInfo>> tunnelNameExplicitPathInfoMap;
-
     private static final Serializer SERIALIZER = Serializer
             .using(new KryoNamespace.Builder().register(KryoNamespaces.API)
                     .register(PcePathInfo.class)
@@ -104,16 +99,6 @@
                 .build()
                 .asDistributedSet();
 
-        tunnelNameExplicitPathInfoMap = storageService.<String, List<ExplicitPathInfo>>consistentMapBuilder()
-                .withName("onos-pce-explicitpathinfo")
-                .withSerializer(Serializer.using(
-                        new KryoNamespace.Builder()
-                                .register(KryoNamespaces.API)
-                                .register(ExplicitPathInfo.class)
-                                .register(ExplicitPathInfo.Type.class)
-                                .build()))
-                .build();
-
         log.info("Started");
     }
 
@@ -196,18 +181,4 @@
         }
         return true;
     }
-
-    @Override
-    public boolean tunnelNameExplicitPathInfoMap(String tunnelName, List<ExplicitPathInfo> explicitPathInfo) {
-        checkNotNull(tunnelName);
-        checkNotNull(explicitPathInfo);
-        return tunnelNameExplicitPathInfoMap.put(tunnelName, explicitPathInfo) != null ? true : false;
-    }
-
-    @Override
-    public List<ExplicitPathInfo> getTunnelNameExplicitPathInfoMap(String tunnelName) {
-        checkNotNull(tunnelName);
-        return tunnelNameExplicitPathInfoMap.get(tunnelName).value();
-    }
-
 }
diff --git a/apps/pce/app/src/main/java/org/onosproject/pce/pcestore/PcePathInfo.java b/apps/pce/app/src/main/java/org/onosproject/pce/pcestore/PcePathInfo.java
index 6497e36..3b7b47e 100644
--- a/apps/pce/app/src/main/java/org/onosproject/pce/pcestore/PcePathInfo.java
+++ b/apps/pce/app/src/main/java/org/onosproject/pce/pcestore/PcePathInfo.java
@@ -22,7 +22,6 @@
 
 import org.onosproject.net.DeviceId;
 import org.onosproject.net.intent.Constraint;
-import org.onosproject.pce.pceservice.ExplicitPathInfo;
 import org.onosproject.pce.pceservice.LspType;
 
 /**
@@ -41,8 +40,6 @@
 
     private LspType lspType; // lsp type
 
-    private List<ExplicitPathInfo> explicitPathInfo; //Explicit path info to compute explicit path
-
     /**
      * Initialization of member variables.
      *
@@ -51,20 +48,17 @@
      * @param name tunnel name
      * @param constraints list of constraints
      * @param lspType lsp type
-     * @param explicitPathInfo explicit path info
      */
     public PcePathInfo(DeviceId src,
                     DeviceId dst,
                     String name,
                     List<Constraint> constraints,
-                    LspType lspType,
-                    List<ExplicitPathInfo> explicitPathInfo) {
+                    LspType lspType) {
        this.src = src;
        this.dst = dst;
        this.name = name;
        this.constraints = constraints;
        this.lspType = lspType;
-       this.explicitPathInfo = explicitPathInfo;
     }
 
     /**
@@ -76,7 +70,6 @@
        this.name = null;
        this.constraints = null;
        this.lspType = null;
-       this.explicitPathInfo = null;
     }
 
     /**
@@ -169,27 +162,9 @@
         this.lspType = lspType;
     }
 
-    /**
-     * Returns list of explicit path info.
-     *
-     * @return list of explicit path info
-     */
-    public List<ExplicitPathInfo> explicitPathInfo() {
-        return explicitPathInfo;
-    }
-
-    /**
-     * Sets list of explicit path info.
-     *
-     * @param explicitPathInfo list of explicit path info
-     */
-    public void explicitPathInfo(List<ExplicitPathInfo> explicitPathInfo) {
-        this.explicitPathInfo = explicitPathInfo;
-    }
-
     @Override
     public int hashCode() {
-        return Objects.hash(src, dst, name, constraints, lspType, explicitPathInfo);
+        return Objects.hash(src, dst, name, constraints, lspType);
     }
 
     @Override
@@ -203,8 +178,7 @@
                     Objects.equals(this.dst, other.dst) &&
                     Objects.equals(this.name, other.name) &&
                     Objects.equals(this.constraints, other.constraints) &&
-                    Objects.equals(this.lspType, other.lspType) &&
-                    Objects.equals(this.explicitPathInfo, other.explicitPathInfo);
+                    Objects.equals(this.lspType, other.lspType);
         }
         return false;
     }
@@ -213,12 +187,11 @@
     public String toString() {
         return MoreObjects.toStringHelper(getClass())
                 .omitNullValues()
-                .add("Source", src)
-                .add("Destination", dst)
-                .add("Name", name)
-                .add("Constraints", constraints)
-                .add("explicitPathInfo", explicitPathInfo)
-                .add("LspType", lspType)
+                .add("Source", src.toString())
+                .add("Destination", dst.toString())
+                .add("Name", name.toString())
+                .add("Constraints", constraints.toString())
+                .add("LspType", lspType.toString())
                 .toString();
     }
 }
diff --git a/apps/pce/app/src/main/java/org/onosproject/pce/pcestore/api/PceStore.java b/apps/pce/app/src/main/java/org/onosproject/pce/pcestore/api/PceStore.java
index 0a7fa94..3fdef15 100644
--- a/apps/pce/app/src/main/java/org/onosproject/pce/pcestore/api/PceStore.java
+++ b/apps/pce/app/src/main/java/org/onosproject/pce/pcestore/api/PceStore.java
@@ -15,11 +15,8 @@
  */
 package org.onosproject.pce.pcestore.api;
 
-import java.util.List;
-
 import org.onosproject.incubator.net.tunnel.TunnelId;
 import org.onosproject.net.resource.ResourceConsumer;
-import org.onosproject.pce.pceservice.ExplicitPathInfo;
 import org.onosproject.pce.pcestore.PcePathInfo;
 
 import java.util.Map;
@@ -110,21 +107,4 @@
      * @return success or failure
      */
     boolean removeFailedPathInfo(PcePathInfo failedPathInfo);
-
-    /**
-     * Adds explicit path info to the map with corresponding tunnel name.
-     *
-     * @param tunnelName tunnel name as key
-     * @param explicitPathInfo list of explicit path objects
-     * @return whether it is added to map
-     */
-    boolean tunnelNameExplicitPathInfoMap(String tunnelName, List<ExplicitPathInfo> explicitPathInfo);
-
-    /**
-     * Gets explicit path info based on tunnel name.
-     *
-     * @param tunnelName tunnel name as key
-     * @return list of explicit path info
-     */
-    List<ExplicitPathInfo> getTunnelNameExplicitPathInfoMap(String tunnelName);
 }
diff --git a/apps/pce/app/src/test/java/org/onosproject/pce/pceservice/DefaultPcePathTest.java b/apps/pce/app/src/test/java/org/onosproject/pce/pceservice/DefaultPcePathTest.java
index 9040485..455e36a 100644
--- a/apps/pce/app/src/test/java/org/onosproject/pce/pceservice/DefaultPcePathTest.java
+++ b/apps/pce/app/src/test/java/org/onosproject/pce/pceservice/DefaultPcePathTest.java
@@ -16,47 +16,21 @@
 
 package org.onosproject.pce.pceservice;
 
-import com.google.common.collect.Lists;
-
-import org.junit.After;
-import org.junit.Before;
 import org.junit.Test;
 
 import static org.hamcrest.MatcherAssert.assertThat;
 import static org.hamcrest.Matchers.is;
-import static org.onosproject.pce.pceservice.PathComputationTest.D2;
-import static org.easymock.EasyMock.createMock;
 
 import com.google.common.testing.EqualsTester;
 
-
-import org.onlab.osgi.ServiceDirectory;
-import org.onlab.osgi.TestServiceDirectory;
-import org.onlab.rest.BaseResource;
 import org.onosproject.incubator.net.tunnel.TunnelId;
 import org.onosproject.pce.pceservice.constraint.CostConstraint;
-import org.onosproject.pce.pcestore.api.PceStore;
 import org.onosproject.net.intent.constraint.BandwidthConstraint;
 
-import java.util.List;
-
 /**
  * Unit tests for DefaultPcePath class.
  */
 public class DefaultPcePathTest {
-    private PceStore pceStore = createMock(PceStore.class);
-
-    @Before
-    public void setup() {
-
-       ServiceDirectory testDirectory = new TestServiceDirectory()
-                   .add(PceStore.class, pceStore);
-       BaseResource.setServiceDirectory(testDirectory);
-    }
-
-    @After
-    public void tearDownTest() {
-    }
     /**
      * Checks the operation of equals() methods.
      */
@@ -69,9 +43,7 @@
         final String dst1 = "bee";
         final String type1 = "1";
         final String name1 = "pcc";
-        final List<ExplicitPathInfo> explicitPathInfoList = Lists.newLinkedList();
-        ExplicitPathInfo obj = new ExplicitPathInfo(ExplicitPathInfo.Type.LOOSE, D2.deviceId());
-        explicitPathInfoList.add(obj);
+
         PcePath path1 = DefaultPcePath.builder()
                 .source(src1)
                 .destination(dst1)
@@ -79,7 +51,6 @@
                 .name(name1)
                 .costConstraint(cost1)
                 .bandwidthConstraint(bandwidth1)
-                .explicitPathInfo(explicitPathInfoList)
                 .build();
         path1.id(TunnelId.valueOf("1"));
 
@@ -91,7 +62,6 @@
                 .name(name1)
                 .costConstraint(cost1)
                 .bandwidthConstraint(bandwidth1)
-                .explicitPathInfo(explicitPathInfoList)
                 .build();
         samePath1.id(TunnelId.valueOf("1"));
 
@@ -110,7 +80,6 @@
                 .name(name2)
                 .costConstraint(cost2)
                 .bandwidthConstraint(bandwidth2)
-                .explicitPathInfo(explicitPathInfoList)
                 .build();
         path2.id(TunnelId.valueOf("2"));
 
@@ -128,9 +97,7 @@
         final String dst = "deccan";
         final String type = "2";
         final String name = "pcc4";
-        final List<ExplicitPathInfo> explicitPathInfoList = Lists.newLinkedList();
-        ExplicitPathInfo obj = new ExplicitPathInfo(ExplicitPathInfo.Type.LOOSE, D2.deviceId());
-        explicitPathInfoList.add(obj);
+
         PcePath path = DefaultPcePath.builder()
                 .source(src)
                 .destination(dst)
@@ -138,7 +105,6 @@
                 .name(name)
                 .costConstraint(cost)
                 .bandwidthConstraint(bandwidth)
-                .explicitPathInfo(explicitPathInfoList)
                 .build();
 
         assertThat(path.source(), is(src));
diff --git a/apps/pce/app/src/test/java/org/onosproject/pce/pceservice/PceManagerTest.java b/apps/pce/app/src/test/java/org/onosproject/pce/pceservice/PceManagerTest.java
index d71c2c5..fa52fa0 100644
--- a/apps/pce/app/src/test/java/org/onosproject/pce/pceservice/PceManagerTest.java
+++ b/apps/pce/app/src/test/java/org/onosproject/pce/pceservice/PceManagerTest.java
@@ -14,12 +14,10 @@
 import static org.onosproject.pce.pceservice.PathComputationTest.D2;
 import static org.onosproject.pce.pceservice.PathComputationTest.D3;
 import static org.onosproject.pce.pceservice.PathComputationTest.D4;
-import static org.onosproject.pce.pceservice.PathComputationTest.D5;
 import static org.onosproject.pce.pceservice.PathComputationTest.DEVICE1;
 import static org.onosproject.pce.pceservice.PathComputationTest.DEVICE2;
 import static org.onosproject.pce.pceservice.PathComputationTest.DEVICE3;
 import static org.onosproject.pce.pceservice.PathComputationTest.DEVICE4;
-import static org.onosproject.pce.pceservice.PathComputationTest.DEVICE5;
 import static org.onosproject.pce.pceservice.PcepAnnotationKeys.LOCAL_LSP_ID;
 import static org.onosproject.pce.pceservice.PcepAnnotationKeys.PLSP_ID;
 import static org.onosproject.pce.pceservice.constraint.CostConstraint.Type.COST;
@@ -34,8 +32,6 @@
 import java.util.Set;
 import java.util.concurrent.atomic.AtomicLong;
 
-import com.google.common.collect.Lists;
-
 import org.junit.After;
 import org.junit.Before;
 import org.junit.Test;
@@ -124,9 +120,9 @@
     private static final String LABEL_STACK_CAPABILITY = "labelStackCapability";
 
     private TopologyGraph graph = null;
-    private Device deviceD1, deviceD2, deviceD3, deviceD4, deviceD5;
+    private Device deviceD1, deviceD2, deviceD3, deviceD4;
     private Device pcepDeviceD1, pcepDeviceD2, pcepDeviceD3, pcepDeviceD4;
-    private Link link1, link2, link3, link4, link5, link6;
+    private Link link1, link2, link3, link4;
     protected static int flowsDownloaded;
     private TunnelListener tunnelListener;
     private TopologyListener listener;
@@ -168,15 +164,12 @@
         link2 = PathComputationTest.addLink(DEVICE2, 30, DEVICE4, 40, setCost, 20);
         link3 = PathComputationTest.addLink(DEVICE1, 80, DEVICE3, 70, setCost, 100);
         link4 = PathComputationTest.addLink(DEVICE3, 60, DEVICE4, 50, setCost, 80);
-        link5 = PathComputationTest.addLink(DEVICE2, 60, DEVICE5, 50, setCost, 80);
-        link6 = PathComputationTest.addLink(DEVICE4, 60, DEVICE5, 50, setCost, 80);
 
         Set<TopologyVertex> vertexes = new HashSet<TopologyVertex>();
         vertexes.add(D1);
         vertexes.add(D2);
         vertexes.add(D3);
         vertexes.add(D4);
-        vertexes.add(D5);
 
         this.vertexes = vertexes;
 
@@ -193,12 +186,6 @@
         TopologyEdge edge4 = new DefaultTopologyEdge(D3, D4, link4);
         edges.add(edge4);
 
-        TopologyEdge edge5 = new DefaultTopologyEdge(D2, D5, link5);
-        edges.add(edge5);
-
-        TopologyEdge edge6 = new DefaultTopologyEdge(D4, D5, link6);
-        edges.add(edge6);
-
         this.edges = edges;
 
         graph = new DefaultTopologyGraph(vertexes, edges);
@@ -207,7 +194,6 @@
         DefaultAnnotations.Builder builderDev2 = DefaultAnnotations.builder();
         DefaultAnnotations.Builder builderDev3 = DefaultAnnotations.builder();
         DefaultAnnotations.Builder builderDev4 = DefaultAnnotations.builder();
-        DefaultAnnotations.Builder builderDev5 = DefaultAnnotations.builder();
 
         // Making L3 devices
         builderDev1.set(AnnotationKeys.TYPE, L3);
@@ -222,20 +208,15 @@
         builderDev4.set(AnnotationKeys.TYPE, L3);
         builderDev4.set(LSRID, "4.4.4.4");
 
-        builderDev5.set(AnnotationKeys.TYPE, L3);
-        builderDev5.set(LSRID, "5.5.5.5");
-
         deviceD1 = new MockDevice(D1.deviceId(), builderDev1.build());
         deviceD2 = new MockDevice(D2.deviceId(), builderDev2.build());
         deviceD3 = new MockDevice(D3.deviceId(), builderDev3.build());
         deviceD4 = new MockDevice(D4.deviceId(), builderDev4.build());
-        deviceD5 = new MockDevice(D5.deviceId(), builderDev5.build());
 
         deviceService.addDevice(deviceD1);
         deviceService.addDevice(deviceD2);
         deviceService.addDevice(deviceD3);
         deviceService.addDevice(deviceD4);
-        deviceService.addDevice(deviceD5);
 
         DeviceCapability device1Cap = netConfigRegistry.addConfig(DeviceId.deviceId("1.1.1.1"), DeviceCapability.class);
         device1Cap.setLabelStackCap(setLabelStackCap)
@@ -261,25 +242,17 @@
         .setSrCap(setSrCap)
         .apply();
 
-        DeviceCapability device5Cap = netConfigRegistry.addConfig(DeviceId.deviceId("5.5.5.5"), DeviceCapability.class);
-        device4Cap.setLabelStackCap(setLabelStackCap)
-                .setLocalLabelCap(setPceccCap)
-                .setSrCap(setSrCap)
-                .apply();
-
         if (bandwidth != 0) {
             List<Resource> resources = new LinkedList<>();
             resources.add(continuous(link1.src().deviceId(), link1.src().port(), Bandwidth.class).resource(bandwidth));
             resources.add(continuous(link2.src().deviceId(), link2.src().port(), Bandwidth.class).resource(bandwidth));
             resources.add(continuous(link3.src().deviceId(), link3.src().port(), Bandwidth.class).resource(bandwidth));
             resources.add(continuous(link4.src().deviceId(), link4.src().port(), Bandwidth.class).resource(bandwidth));
-            resources.add(continuous(link5.src().deviceId(), link5.src().port(), Bandwidth.class).resource(bandwidth));
 
             resources.add(continuous(link1.dst().deviceId(), link1.dst().port(), Bandwidth.class).resource(bandwidth));
             resources.add(continuous(link2.dst().deviceId(), link2.dst().port(), Bandwidth.class).resource(bandwidth));
             resources.add(continuous(link3.dst().deviceId(), link3.dst().port(), Bandwidth.class).resource(bandwidth));
             resources.add(continuous(link4.dst().deviceId(), link4.dst().port(), Bandwidth.class).resource(bandwidth));
-            resources.add(continuous(link5.dst().deviceId(), link5.dst().port(), Bandwidth.class).resource(bandwidth));
 
             resourceService.allocate(IntentId.valueOf(bandwidth), resources);
         }
@@ -295,7 +268,7 @@
         CostConstraint costConstraint = new CostConstraint(COST);
         constraints.add(costConstraint);
 
-        boolean result = pceManager.setupPath(D1.deviceId(), D2.deviceId(), "T123", constraints, WITH_SIGNALLING, null);
+        boolean result = pceManager.setupPath(D1.deviceId(), D2.deviceId(), "T123", constraints, WITH_SIGNALLING);
         assertThat(result, is(true));
     }
 
@@ -309,7 +282,7 @@
         CostConstraint costConstraint = new CostConstraint(COST);
         constraints.add(costConstraint);
 
-        boolean result = pceManager.setupPath(D1.deviceId(), D2.deviceId(), "T123", constraints, WITH_SIGNALLING, null);
+        boolean result = pceManager.setupPath(D1.deviceId(), D2.deviceId(), "T123", constraints, WITH_SIGNALLING);
         assertThat(result, is(false));
     }
 
@@ -324,7 +297,7 @@
         CostConstraint costConstraint = new CostConstraint(TE_COST);
         constraints.add(costConstraint);
 
-        boolean result = pceManager.setupPath(D1.deviceId(), D2.deviceId(), "T123", constraints, WITH_SIGNALLING, null);
+        boolean result = pceManager.setupPath(D1.deviceId(), D2.deviceId(), "T123", constraints, WITH_SIGNALLING);
         assertThat(result, is(true));
     }
 
@@ -339,7 +312,7 @@
         CostConstraint costConstraint = new CostConstraint(TE_COST);
         constraints.add(costConstraint);
 
-        boolean result = pceManager.setupPath(D1.deviceId(), D2.deviceId(), "T123", constraints, WITH_SIGNALLING, null);
+        boolean result = pceManager.setupPath(D1.deviceId(), D2.deviceId(), "T123", constraints, WITH_SIGNALLING);
         assertThat(result, is(false));
     }
 
@@ -355,7 +328,7 @@
         constraints.add(costConstraint);
 
         boolean result = pceManager.setupPath(D1.deviceId(), D2.deviceId(), "T123", constraints,
-                                              WITHOUT_SIGNALLING_AND_WITHOUT_SR, null);
+                                              WITHOUT_SIGNALLING_AND_WITHOUT_SR);
         assertThat(result, is(true));
     }
 
@@ -371,7 +344,7 @@
         constraints.add(costConstraint);
 
         boolean result = pceManager.setupPath(D1.deviceId(), D2.deviceId(), "T123", constraints,
-                                              WITHOUT_SIGNALLING_AND_WITHOUT_SR, null);
+                                              WITHOUT_SIGNALLING_AND_WITHOUT_SR);
         assertThat(result, is(true));
     }
 
@@ -387,7 +360,7 @@
         constraints.add(costConstraint);
 
         boolean result = pceManager.setupPath(D1.deviceId(), D2.deviceId(), "T123", constraints,
-                                              WITHOUT_SIGNALLING_AND_WITHOUT_SR, null);
+                                              WITHOUT_SIGNALLING_AND_WITHOUT_SR);
         assertThat(result, is(false));
     }
 
@@ -404,8 +377,7 @@
         constraints.add(costConstraint);
         constraints.add(bwConstraint);
 
-        boolean result = pceManager.setupPath(D1.deviceId(), D2.deviceId(), "T123", constraints,
-                WITH_SIGNALLING, null);
+        boolean result = pceManager.setupPath(D1.deviceId(), D2.deviceId(), "T123", constraints, WITH_SIGNALLING);
         assertThat(result, is(false));
     }
 
@@ -422,8 +394,7 @@
         constraints.add(costConstraint);
         constraints.add(bwConstraint);
 
-        boolean result = pceManager.setupPath(D1.deviceId(), D2.deviceId(), "T123",
-                constraints, WITH_SIGNALLING, null);
+        boolean result = pceManager.setupPath(D1.deviceId(), D2.deviceId(), "T123", constraints, WITH_SIGNALLING);
         assertThat(result, is(false));
     }
 
@@ -437,8 +408,7 @@
         CostConstraint costConstraint = new CostConstraint(TE_COST);
         constraints.add(costConstraint);
 
-        boolean result = pceManager.setupPath(D1.deviceId(), D2.deviceId(), "T123", constraints,
-             SR_WITHOUT_SIGNALLING, null);
+        boolean result = pceManager.setupPath(D1.deviceId(), D2.deviceId(), "T123", constraints, SR_WITHOUT_SIGNALLING);
         assertThat(result, is(false));
     }
 
@@ -455,8 +425,7 @@
         constraints.add(costConstraint);
         constraints.add(bwConstraint);
 
-        boolean result = pceManager.setupPath(D1.deviceId(), D2.deviceId(), "T123",
-                constraints, SR_WITHOUT_SIGNALLING, null);
+        boolean result = pceManager.setupPath(D1.deviceId(), D2.deviceId(), "T123", constraints, SR_WITHOUT_SIGNALLING);
         assertThat(result, is(true));
     }
 
@@ -467,144 +436,11 @@
     public void setupPathTest13() {
         build4RouterTopo(false, false, false, false, 0);
 
-        boolean result = pceManager.setupPath(D1.deviceId(), D2.deviceId(), "T123", null, WITH_SIGNALLING, null);
+        boolean result = pceManager.setupPath(D1.deviceId(), D2.deviceId(), "T123", null, WITH_SIGNALLING);
         assertThat(result, is(true));
     }
 
     /**
-     * Tests path setup with explicit path with loose node D2.
-     */
-   @Test
-    public void setupPathTest14() {
-        build4RouterTopo(false, false, false, false, 0);
-
-        List<ExplicitPathInfo> explicitPathInfoList = Lists.newLinkedList();
-        ExplicitPathInfo obj = new ExplicitPathInfo(ExplicitPathInfo.Type.LOOSE, D2.deviceId());
-        explicitPathInfoList.add(obj);
-
-        boolean result = pceManager.setupPath(D1.deviceId(), D4.deviceId(), "T123", null, WITH_SIGNALLING,
-                explicitPathInfoList);
-
-        Tunnel tunnel = pceManager.queryAllPath().iterator().next();
-        List<Link> links = new LinkedList<>();
-        links.add(link1);
-        links.add(link2);
-
-        assertThat(result, is(true));
-        assertThat(tunnel.path().links().equals(links), is(true));
-    }
-
-    /**
-     * Tests path setup with explicit path with loose node D3.
-     */
-   @Test
-   public void setupPathTest15() {
-       build4RouterTopo(false, false, false, false, 0);
-
-       List<ExplicitPathInfo> explicitPathInfoList = Lists.newLinkedList();
-       ExplicitPathInfo obj = new ExplicitPathInfo(ExplicitPathInfo.Type.LOOSE, D3.deviceId());
-       explicitPathInfoList.add(obj);
-
-       boolean result = pceManager.setupPath(D1.deviceId(), D5.deviceId(), "T123", null, WITH_SIGNALLING,
-               explicitPathInfoList);
-
-       Tunnel tunnel = pceManager.queryAllPath().iterator().next();
-       List<Link> links = new LinkedList<>();
-       links.add(link3);
-       links.add(link4);
-       links.add(link6);
-
-       assertThat(result, is(true));
-       assertThat(tunnel.path().links().equals(links), is(true));
-   }
-
-    /**
-     * Tests path setup with explicit path with loose node D4 , D3 - path fails.
-     */
-   @Test
-   public void setupPathTest16() {
-       build4RouterTopo(false, false, false, false, 0);
-
-       List<ExplicitPathInfo> explicitPathInfoList = Lists.newLinkedList();
-       ExplicitPathInfo obj = new ExplicitPathInfo(ExplicitPathInfo.Type.LOOSE, D4.deviceId());
-       explicitPathInfoList.add(obj);
-       obj = new ExplicitPathInfo(ExplicitPathInfo.Type.LOOSE, D3.deviceId());
-       explicitPathInfoList.add(obj);
-
-       boolean result = pceManager.setupPath(D1.deviceId(), D5.deviceId(), "T123", null, WITH_SIGNALLING,
-               explicitPathInfoList);
-
-       assertThat(result, is(false));
-   }
-
-    /**
-     * Tests path setup with explicit path with strict node D2 - without reacble to src - path fails.
-     */
-   @Test
-   public void setupPathTest17() {
-       build4RouterTopo(false, false, false, false, 0);
-
-       List<ExplicitPathInfo> explicitPathInfoList = Lists.newLinkedList();
-       ExplicitPathInfo obj = new ExplicitPathInfo(ExplicitPathInfo.Type.STRICT, D2.deviceId());
-       explicitPathInfoList.add(obj);
-
-       boolean result = pceManager.setupPath(D1.deviceId(), D5.deviceId(), "T123", null, WITH_SIGNALLING,
-               explicitPathInfoList);
-
-       assertThat(result, is(false));
-   }
-
-    /**
-     * Tests path setup with explicit path with loose node D2, strict D2.
-     */
-   @Test
-   public void setupPathTest18() {
-       build4RouterTopo(false, false, false, false, 0);
-
-       List<ExplicitPathInfo> explicitPathInfoList = Lists.newLinkedList();
-       ExplicitPathInfo obj = new ExplicitPathInfo(ExplicitPathInfo.Type.LOOSE, D2.deviceId());
-       explicitPathInfoList.add(obj);
-       obj = new ExplicitPathInfo(ExplicitPathInfo.Type.STRICT, D2.deviceId());
-       explicitPathInfoList.add(obj);
-
-       boolean result = pceManager.setupPath(D1.deviceId(), D5.deviceId(), "T123", null, WITH_SIGNALLING,
-               explicitPathInfoList);
-
-       Tunnel tunnel = pceManager.queryAllPath().iterator().next();
-       List<Link> links = new LinkedList<>();
-       links.add(link1);
-       links.add(link5);
-
-       assertThat(result, is(true));
-       assertThat(tunnel.path().links().equals(links), is(true));
-   }
-
-    /**
-     * Tests path setup with explicit path with loose D1-D2, strict D2.
-     */
-   @Test
-   public void setupPathTest19() {
-       build4RouterTopo(false, false, false, false, 0);
-
-       List<ExplicitPathInfo> explicitPathInfoList = Lists.newLinkedList();
-       ExplicitPathInfo obj = new ExplicitPathInfo(ExplicitPathInfo.Type.LOOSE, link1);
-       explicitPathInfoList.add(obj);
-       obj = new ExplicitPathInfo(ExplicitPathInfo.Type.STRICT, D2.deviceId());
-       explicitPathInfoList.add(obj);
-
-       boolean result = pceManager.setupPath(D1.deviceId(), D5.deviceId(), "T123", null, WITH_SIGNALLING,
-               explicitPathInfoList);
-
-       Tunnel tunnel = pceManager.queryAllPath().iterator().next();
-       List<Link> links = new LinkedList<>();
-       links.add(link1);
-       links.add(link5);
-
-       assertThat(result, is(true));
-       assertThat(tunnel.path().links().equals(links), is(true));
-   }
-
-    /**
      * Tests path update with increase in bandwidth.
      */
     @Test
@@ -618,8 +454,7 @@
         CostConstraint costConstraint = new CostConstraint(TE_COST);
         constraints.add(costConstraint);
 
-        boolean result = pceManager.setupPath(D1.deviceId(), D4.deviceId(), "T123",
-                constraints, WITH_SIGNALLING, null);
+        boolean result = pceManager.setupPath(D1.deviceId(), D4.deviceId(), "T123", constraints, WITH_SIGNALLING);
         assertThat(result, is(true));
 
         // Change constraint and update it.
@@ -657,8 +492,7 @@
         CostConstraint costConstraint = new CostConstraint(TE_COST);
         constraints.add(costConstraint);
 
-        boolean result = pceManager.setupPath(D1.deviceId(), D2.deviceId(), "T123",
-                constraints, SR_WITHOUT_SIGNALLING, null);
+        boolean result = pceManager.setupPath(D1.deviceId(), D2.deviceId(), "T123", constraints, SR_WITHOUT_SIGNALLING);
         assertThat(result, is(true));
 
         // Change constraint and update it.
@@ -689,8 +523,7 @@
         List<Constraint> constraints = new LinkedList<Constraint>();
         CostConstraint costConstraint = new CostConstraint(TE_COST);
         constraints.add(costConstraint);
-        boolean result = pceManager.setupPath(D1.deviceId(), D2.deviceId(), "T123",
-                constraints, WITH_SIGNALLING, null);
+        boolean result = pceManager.setupPath(D1.deviceId(), D2.deviceId(), "T123", constraints, WITH_SIGNALLING);
         assertThat(result, is(true));
 
         Collection<Tunnel> tunnels = (Collection<Tunnel>) pceManager.queryAllPath();
@@ -706,51 +539,6 @@
     }
 
     /**
-     * Tests path update without cost/bandwidth constraints and with explicit path object.
-     */
-    @Test
-    public void updatePathTest4() {
-        build4RouterTopo(false, true, true, true, 100);
-
-        // Setup tunnel.
-        List<Constraint> constraints = new LinkedList<>();
-        BandwidthConstraint bwConstraint = new BandwidthConstraint(Bandwidth.bps(60.0));
-        constraints.add(bwConstraint);
-        CostConstraint costConstraint = new CostConstraint(TE_COST);
-        constraints.add(costConstraint);
-
-        List<ExplicitPathInfo> explicitPathInfoList = Lists.newLinkedList();
-        ExplicitPathInfo obj = new ExplicitPathInfo(ExplicitPathInfo.Type.LOOSE, link1);
-        explicitPathInfoList.add(obj);
-        obj = new ExplicitPathInfo(ExplicitPathInfo.Type.STRICT, D2.deviceId());
-        explicitPathInfoList.add(obj);
-
-        boolean result = pceManager.setupPath(D1.deviceId(), D4.deviceId(), "T123",
-                constraints, WITH_SIGNALLING, explicitPathInfoList);
-        assertThat(result, is(true));
-
-        // Change constraint and update it.
-        constraints = new LinkedList<>();
-        bwConstraint = new BandwidthConstraint(Bandwidth.bps(50.0));
-        constraints.add(bwConstraint);
-        constraints.add(costConstraint);
-
-        Collection<Tunnel> tunnels = (Collection<Tunnel>) pceManager.queryAllPath();
-        assertThat(tunnels.size(), is(1));
-
-        Tunnel tunnel = tunnels.iterator().next();
-
-        // Stimulate the effect of LSP ids from protocol msg.
-        tunnelService.updateTunnelWithLspIds(tunnel, "123", "1", State.ACTIVE);
-
-        result = pceManager.updatePath(tunnel.tunnelId(), constraints);
-        assertThat(result, is(true));
-
-        tunnels = (Collection<Tunnel>) pceManager.queryAllPath();
-        assertThat(tunnels.size(), is(2));
-    }
-
-    /**
      * Tests path release.
      */
     @Test
@@ -762,13 +550,7 @@
         constraints.add(bwConst);
         constraints.add(costConstraint);
 
-        List<ExplicitPathInfo> explicitPathInfoList = Lists.newLinkedList();
-        ExplicitPathInfo obj = new ExplicitPathInfo(ExplicitPathInfo.Type.LOOSE, link1);
-        explicitPathInfoList.add(obj);
-        obj = new ExplicitPathInfo(ExplicitPathInfo.Type.STRICT, D2.deviceId());
-        explicitPathInfoList.add(obj);
-
-        pceManager.setupPath(D1.deviceId(), D2.deviceId(), "T123", constraints, WITH_SIGNALLING, explicitPathInfoList);
+        pceManager.setupPath(D1.deviceId(), D2.deviceId(), "T123", constraints, WITH_SIGNALLING);
 
         Collection<Tunnel> tunnels = (Collection<Tunnel>) pceManager.queryAllPath();
         assertThat(tunnels.size(), is(1));
@@ -791,7 +573,7 @@
         CostConstraint costConstraint = new CostConstraint(TE_COST);
         constraints.add(costConstraint);
 
-        pceManager.setupPath(D1.deviceId(), D2.deviceId(), "T123", constraints, WITH_SIGNALLING, null);
+        pceManager.setupPath(D1.deviceId(), D2.deviceId(), "T123", constraints, WITH_SIGNALLING);
 
         Collection<Tunnel> tunnels = (Collection<Tunnel>) pceManager.queryAllPath();
         assertThat(tunnels.size(), is(1));
@@ -805,31 +587,6 @@
     }
 
     /**
-     * Tests path release failure.
-     */
-    @Test
-    public void releasePathTest3() {
-        build4RouterTopo(false, false, false, false, 5);
-        List<Constraint> constraints = new LinkedList<Constraint>();
-        CostConstraint costConstraint = new CostConstraint(TE_COST);
-        BandwidthConstraint bwConst = new BandwidthConstraint(Bandwidth.bps(3));
-        constraints.add(bwConst);
-        constraints.add(costConstraint);
-
-        pceManager.setupPath(D1.deviceId(), D2.deviceId(), "T123", constraints, WITH_SIGNALLING, null);
-
-        Collection<Tunnel> tunnels = (Collection<Tunnel>) pceManager.queryAllPath();
-        assertThat(tunnels.size(), is(1));
-        boolean result;
-        for (Tunnel tunnel : tunnels) {
-            result = pceManager.releasePath(tunnel.tunnelId());
-            assertThat(result, is(true));
-        }
-        tunnels = (Collection<Tunnel>) pceManager.queryAllPath();
-        assertThat(tunnels.size(), is(0));
-    }
-
-    /**
      * Tests tunnel events added and removed.
      */
     @Test
@@ -842,7 +599,7 @@
         constraints.add(costConstraint);
         constraints.add(bwConstraint);
 
-        pceManager.setupPath(D1.deviceId(), D2.deviceId(), "T1", constraints, SR_WITHOUT_SIGNALLING, null);
+        pceManager.setupPath(D1.deviceId(), D2.deviceId(), "T1", constraints, SR_WITHOUT_SIGNALLING);
         assertThat(pceStore.getTunnelInfoCount(), is(1));
 
         Collection<Tunnel> tunnels = (Collection<Tunnel>) pceManager.queryAllPath();
@@ -873,8 +630,7 @@
         constraints.add(costConstraint);
         constraints.add(bwConstraint);
 
-        pceManager.setupPath(D1.deviceId(), D2.deviceId(), "T2", constraints,
-                WITHOUT_SIGNALLING_AND_WITHOUT_SR, null);
+        pceManager.setupPath(D1.deviceId(), D2.deviceId(), "T2", constraints, WITHOUT_SIGNALLING_AND_WITHOUT_SR);
         assertThat(pceStore.getTunnelInfoCount(), is(1));
 
         TunnelEvent event;
@@ -914,8 +670,7 @@
         constraints.add(costConstraint);
         constraints.add(bwConstraint);
 
-        pceManager.setupPath(D1.deviceId(), D2.deviceId(), "T2", constraints,
-                WITHOUT_SIGNALLING_AND_WITHOUT_SR, null);
+        pceManager.setupPath(D1.deviceId(), D2.deviceId(), "T2", constraints, WITHOUT_SIGNALLING_AND_WITHOUT_SR);
         assertThat(pceStore.getTunnelInfoCount(), is(1));
         assertThat(pceStore.getFailedPathInfoCount(), is(0));
 
@@ -953,8 +708,7 @@
         constraints.add(localBwConst);
 
         //Setup the path , tunnel created
-        boolean result = pceManager.setupPath(D1.deviceId(), D4.deviceId(), "T123",
-                constraints, WITH_SIGNALLING, null);
+        boolean result = pceManager.setupPath(D1.deviceId(), D4.deviceId(), "T123", constraints, WITH_SIGNALLING);
         assertThat(result, is(true));
         assertThat(pceStore.getTunnelInfoCount(), is(1));
         assertThat(pceStore.getFailedPathInfoCount(), is(0));
@@ -996,8 +750,7 @@
         constraints.add(localBwConst);
 
         //Setup the path , tunnel created
-        boolean result = pceManager.setupPath(D1.deviceId(), D4.deviceId(), "T123",
-                constraints, WITH_SIGNALLING, null);
+        boolean result = pceManager.setupPath(D1.deviceId(), D4.deviceId(), "T123", constraints, WITH_SIGNALLING);
         assertThat(result, is(true));
 
         List<Event> reasons = new LinkedList<>();
@@ -1035,8 +788,7 @@
         constraints.add(localBwConst);
 
         //Setup the path , tunnel created
-        boolean result = pceManager.setupPath(D1.deviceId(), D4.deviceId(), "T123",
-                constraints, WITH_SIGNALLING, null);
+        boolean result = pceManager.setupPath(D1.deviceId(), D4.deviceId(), "T123", constraints, WITH_SIGNALLING);
         assertThat(result, is(true));
 
         List<Event> reasons = new LinkedList<>();
@@ -1079,8 +831,7 @@
         constraints.add(localBwConst);
 
         //Setup the path , tunnel created
-        boolean result = pceManager.setupPath(D1.deviceId(), D4.deviceId(), "T123",
-                constraints, WITH_SIGNALLING, null);
+        boolean result = pceManager.setupPath(D1.deviceId(), D4.deviceId(), "T123", constraints, WITH_SIGNALLING);
         assertThat(result, is(true));
 
         List<Event> reasons = new LinkedList<>();
@@ -1118,8 +869,7 @@
         constraints.add(localBwConst);
 
         //Setup the path , tunnel created
-        boolean result = pceManager.setupPath(D1.deviceId(), D4.deviceId(), "T123",
-                constraints, WITH_SIGNALLING, null);
+        boolean result = pceManager.setupPath(D1.deviceId(), D4.deviceId(), "T123", constraints, WITH_SIGNALLING);
         assertThat(result, is(true));
 
         List<Event> reasons = new LinkedList<>();
@@ -1167,8 +917,7 @@
         constraints.add(localBwConst);
 
         //Setup the path , tunnel created
-        boolean result = pceManager.setupPath(D1.deviceId(), D4.deviceId(), "T123",
-                constraints, WITH_SIGNALLING, null);
+        boolean result = pceManager.setupPath(D1.deviceId(), D4.deviceId(), "T123", constraints, WITH_SIGNALLING);
         assertThat(result, is(true));
 
         List<Event> reasons = new LinkedList<>();
@@ -1209,8 +958,7 @@
         constraints.add(localBwConst);
 
         //Setup the path , tunnel created
-        boolean result = pceManager.setupPath(D1.deviceId(), D4.deviceId(), "T123",
-                constraints, WITH_SIGNALLING, null);
+        boolean result = pceManager.setupPath(D1.deviceId(), D4.deviceId(), "T123", constraints, WITH_SIGNALLING);
         assertThat(result, is(true));
 
         List<Event> reasons = new LinkedList<>();
@@ -1251,8 +999,7 @@
         constraints.add(localBwConst);
 
         //Setup the path , tunnel created
-        boolean result = pceManager.setupPath(D1.deviceId(), D4.deviceId(), "T123",
-                constraints, WITH_SIGNALLING, null);
+        boolean result = pceManager.setupPath(D1.deviceId(), D4.deviceId(), "T123", constraints, WITH_SIGNALLING);
         assertThat(result, is(true));
 
         List<Event> reasons = new LinkedList<>();
@@ -1298,8 +1045,7 @@
         constraints.add(localBwConst);
 
         //Setup the path , tunnel created
-        boolean result = pceManager.setupPath(D1.deviceId(), D4.deviceId(), "T123",
-                constraints, WITH_SIGNALLING, null);
+        boolean result = pceManager.setupPath(D1.deviceId(), D4.deviceId(), "T123", constraints, WITH_SIGNALLING);
         assertThat(result, is(true));
 
         List<Event> reasons = new LinkedList<>();
@@ -1331,54 +1077,6 @@
         assertThat(pathService.paths().iterator().next().cost(), is((double) 180));
     }
 
-    /**
-     * Tests resilency when link2 availability is changed.
-     */
-    @Test
-    public void resilencyTest12() {
-        build4RouterTopo(true, false, false, false, 10);
-
-        List<Constraint> constraints = new LinkedList<Constraint>();
-        CostConstraint costConstraint = new CostConstraint(COST);
-        constraints.add(costConstraint);
-        BandwidthConstraint localBwConst = new BandwidthConstraint(Bandwidth.bps(10));
-        constraints.add(localBwConst);
-
-        List<ExplicitPathInfo> explicitPathInfoList = Lists.newLinkedList();
-        ExplicitPathInfo obj = new ExplicitPathInfo(ExplicitPathInfo.Type.LOOSE, link1);
-        explicitPathInfoList.add(obj);
-        obj = new ExplicitPathInfo(ExplicitPathInfo.Type.STRICT, D2.deviceId());
-        explicitPathInfoList.add(obj);
-
-        //Setup the path , tunnel created
-        boolean result = pceManager.setupPath(D1.deviceId(), D4.deviceId(), "T123",
-                constraints, WITH_SIGNALLING, explicitPathInfoList);
-        assertThat(result, is(true));
-        assertThat(pceStore.getTunnelInfoCount(), is(1));
-        assertThat(pceStore.getFailedPathInfoCount(), is(0));
-
-        List<Event> reasons = new LinkedList<>();
-        final LinkEvent linkEvent = new LinkEvent(LinkEvent.Type.LINK_REMOVED, link2);
-        reasons.add(linkEvent);
-        final TopologyEvent event = new TopologyEvent(
-                TopologyEvent.Type.TOPOLOGY_CHANGED,
-                topology,
-                reasons);
-
-        //Change Topology : remove link2
-        Set<TopologyEdge> tempEdges = new HashSet<>();
-        tempEdges.add(new DefaultTopologyEdge(D2, D4, link2));
-        topologyService.changeInTopology(getGraph(null,  tempEdges));
-        listener.event(event);
-
-        List<Link> links = new LinkedList<>();
-        links.add(link3);
-        links.add(link4);
-
-        //Path fails - no alternate path
-        assertThat(pathService.paths().iterator().hasNext(), is(false));
-    }
-
     @After
     public void tearDown() {
         pceManager.deactivate();
diff --git a/apps/pce/app/src/test/java/org/onosproject/pce/pcestore/DistributedPceStoreTest.java b/apps/pce/app/src/test/java/org/onosproject/pce/pcestore/DistributedPceStoreTest.java
index c7e6ac9..e0916a8 100644
--- a/apps/pce/app/src/test/java/org/onosproject/pce/pcestore/DistributedPceStoreTest.java
+++ b/apps/pce/app/src/test/java/org/onosproject/pce/pcestore/DistributedPceStoreTest.java
@@ -120,7 +120,7 @@
        Constraint bandwidth1 = BandwidthConstraint.of(200, DataRateUnit.BPS);
        constraints1.add(bandwidth1);
 
-       failedPathInfo1 = new PcePathInfo(src1, dst1, name1, constraints1, lspType1, null);
+       failedPathInfo1 = new PcePathInfo(src1, dst1, name1, constraints1, lspType1);
 
        // Creates failedPathInfo2
        DeviceId src2 = DeviceId.deviceId("foo2");
@@ -131,7 +131,7 @@
        Constraint bandwidth2 = BandwidthConstraint.of(400, DataRateUnit.BPS);
        constraints2.add(bandwidth2);
 
-       failedPathInfo2 = new PcePathInfo(src2, dst2, name2, constraints2, lspType2, null);
+       failedPathInfo2 = new PcePathInfo(src2, dst2, name2, constraints2, lspType2);
 
        // Creates failedPathInfo3
        DeviceId src3 = DeviceId.deviceId("foo3");
@@ -142,7 +142,7 @@
        Constraint bandwidth3 = BandwidthConstraint.of(500, DataRateUnit.BPS);
        constraints3.add(bandwidth3);
 
-       failedPathInfo3 = new PcePathInfo(src3, dst3, name3, constraints3, lspType3, null);
+       failedPathInfo3 = new PcePathInfo(src3, dst3, name3, constraints3, lspType3);
 
        // Creates failedPathInfo4
        DeviceId src4 = DeviceId.deviceId("foo4");
@@ -153,7 +153,7 @@
        Constraint bandwidth4 = BandwidthConstraint.of(600, DataRateUnit.BPS);
        constraints4.add(bandwidth4);
 
-       failedPathInfo4 = new PcePathInfo(src4, dst4, name4, constraints4, lspType4, null);
+       failedPathInfo4 = new PcePathInfo(src4, dst4, name4, constraints4, lspType4);
     }
 
     @After
diff --git a/apps/pce/app/src/test/java/org/onosproject/pce/pcestore/PcePathInfoTest.java b/apps/pce/app/src/test/java/org/onosproject/pce/pcestore/PcePathInfoTest.java
index a13c634..09b60ab 100644
--- a/apps/pce/app/src/test/java/org/onosproject/pce/pcestore/PcePathInfoTest.java
+++ b/apps/pce/app/src/test/java/org/onosproject/pce/pcestore/PcePathInfoTest.java
@@ -53,10 +53,10 @@
         Constraint bandwidth13 = BandwidthConstraint.of(300, DataRateUnit.BPS);
         constraints1.add(bandwidth13);
 
-        PcePathInfo pathInfo1 = new PcePathInfo(src1, dst1, name1, constraints1, lspType1, null);
+        PcePathInfo pathInfo1 = new PcePathInfo(src1, dst1, name1, constraints1, lspType1);
 
         // create same object as above object
-        PcePathInfo samePathInfo1 = new PcePathInfo(src1, dst1, name1, constraints1, lspType1, null);
+        PcePathInfo samePathInfo1 = new PcePathInfo(src1, dst1, name1, constraints1, lspType1);
 
         // Create different object.
         DeviceId src2 = DeviceId.deviceId("foo2");
@@ -69,7 +69,7 @@
         Constraint bandwidth22 = BandwidthConstraint.of(800, DataRateUnit.BPS);
         constraints2.add(bandwidth22);
 
-        PcePathInfo pathInfo2 = new PcePathInfo(src2, dst2, name2, constraints2, lspType2, null);
+        PcePathInfo pathInfo2 = new PcePathInfo(src2, dst2, name2, constraints2, lspType2);
 
         new EqualsTester().addEqualityGroup(pathInfo1, samePathInfo1)
                           .addEqualityGroup(pathInfo2)
@@ -93,7 +93,7 @@
         Constraint bandwidth3 = BandwidthConstraint.of(300, DataRateUnit.BPS);
         constraints.add(bandwidth3);
 
-        PcePathInfo pathInfo = new PcePathInfo(src, dst, name, constraints, lspType, null);
+        PcePathInfo pathInfo = new PcePathInfo(src, dst, name, constraints, lspType);
 
         assertThat(src, is(pathInfo.src()));
         assertThat(dst, is(pathInfo.dst()));
diff --git a/apps/pce/app/src/test/java/org/onosproject/pce/util/PceStoreAdapter.java b/apps/pce/app/src/test/java/org/onosproject/pce/util/PceStoreAdapter.java
index cba8801..80f62a5 100644
--- a/apps/pce/app/src/test/java/org/onosproject/pce/util/PceStoreAdapter.java
+++ b/apps/pce/app/src/test/java/org/onosproject/pce/util/PceStoreAdapter.java
@@ -22,14 +22,13 @@
 
 import java.util.HashMap;
 import java.util.HashSet;
-import java.util.List;
 import java.util.Map;
 import java.util.Set;
 import java.util.stream.Collectors;
 
 import org.onosproject.incubator.net.tunnel.TunnelId;
+import org.onosproject.net.DeviceId;
 import org.onosproject.net.resource.ResourceConsumer;
-import org.onosproject.pce.pceservice.ExplicitPathInfo;
 import org.onosproject.pce.pcestore.PcePathInfo;
 import org.onosproject.pce.pcestore.api.PceStore;
 
@@ -44,8 +43,8 @@
     // Set of Path info
     private Set<PcePathInfo> failedPathInfoSet = new HashSet<>();
 
-    // Locally maintain with tunnel name as key and corresponding list of explicit path object
-    private Map<String, List<ExplicitPathInfo>> tunnelNameExplicitPathInfoMap = new HashMap<>();
+    // Locally maintain LSRID to device id mapping for better performance.
+    private Map<String, DeviceId> lsrIdDeviceIdMap = new HashMap<>();
 
     @Override
     public boolean existsTunnelInfo(TunnelId tunnelId) {
@@ -109,15 +108,4 @@
         }
         return true;
     }
-
-    @Override
-    public boolean tunnelNameExplicitPathInfoMap(String tunnelName, List<ExplicitPathInfo> explicitPathInfo) {
-        tunnelNameExplicitPathInfoMap.put(tunnelName, explicitPathInfo);
-        return false;
-    }
-
-    @Override
-    public List<ExplicitPathInfo> getTunnelNameExplicitPathInfoMap(String tunnelName) {
-        return tunnelNameExplicitPathInfoMap.get(tunnelName);
-    }
 }