[ONOS-1959][ONOS-2007][ONOS-2008][ONOS-2009][ONOS-2010][ONOS-2011][ONOS-2016][ONOS-2017][ONOS-2018]
1.fix bug in query subscription command in Tunnel management
2.add RemoveTunnelByIdCommand
3.add UpdateTunnelBandWithCommand
4.add QueryAllTunnelsCommand
5.add queryAllTunnels api in TunnelService and TunnelStore
6.store the Path of the tunnel in the store
7.remove to check parameters iif they are null in the construtors of
DefaultTunnel.e.g
8.add the method of querying in SB
9.Fix the bug that the src/dst end point of Vlan-type tunnel is the
instance of OpticalTunnelEndPoint
10. invert the verb-noun into noun-verb for tunnel commands and label
commands

Change-Id: I90378b37c2bc73b58e6f8f234f009d64f07f758e
diff --git a/incubator/api/src/main/java/org/onosproject/incubator/net/tunnel/DefaultTunnelDescription.java b/incubator/api/src/main/java/org/onosproject/incubator/net/tunnel/DefaultTunnelDescription.java
old mode 100644
new mode 100755
index e4c4d89..347021d
--- a/incubator/api/src/main/java/org/onosproject/incubator/net/tunnel/DefaultTunnelDescription.java
+++ b/incubator/api/src/main/java/org/onosproject/incubator/net/tunnel/DefaultTunnelDescription.java
@@ -13,12 +13,11 @@
  * See the License for the specific language governing permissions and
  * limitations under the License.
  */
-
 package org.onosproject.incubator.net.tunnel;
 
-import static com.google.common.base.Preconditions.checkNotNull;
 import org.onosproject.core.DefaultGroupId;
 import org.onosproject.net.AbstractDescription;
+import org.onosproject.net.Path;
 import org.onosproject.net.SparseAnnotations;
 import org.onosproject.net.provider.ProviderId;
 
@@ -39,6 +38,7 @@
     // tunnel producer
     private final ProviderId producerName; // tunnel producer name
     private final TunnelName tunnelName; // name of a tunnel
+    private final Path path;
 
     /**
      * Creates a tunnel description using the supplied information.
@@ -50,6 +50,7 @@
      * @param groupId groupId
      * @param producerName tunnel producer
      * @param tunnelName tunnel name
+     * @param path the path of tunnel
      * @param annotations optional key/value annotations
      */
     public DefaultTunnelDescription(TunnelId id, TunnelEndPoint src,
@@ -57,12 +58,9 @@
                                     DefaultGroupId groupId,
                                     ProviderId producerName,
                                     TunnelName tunnelName,
+                                    Path path,
                                     SparseAnnotations... annotations) {
         super(annotations);
-        checkNotNull(producerName, "producerName cannot be null");
-        checkNotNull(src, "src cannot be null");
-        checkNotNull(dst, "dst cannot be null");
-        checkNotNull(type, "type cannot be null");
         this.tunnelId = id;
         this.src = src;
         this.dst = dst;
@@ -70,6 +68,7 @@
         this.groupId = groupId;
         this.producerName = producerName;
         this.tunnelName = tunnelName;
+        this.path = path;
     }
 
     @Override
@@ -107,6 +106,12 @@
         return tunnelName;
     }
 
+
+    @Override
+    public Path path() {
+        return path;
+    }
+
     @Override
     public String toString() {
         return MoreObjects.toStringHelper(this)
@@ -117,7 +122,7 @@
                 .add("tunnelName", tunnelName())
                 .add("producerName", producerName())
                 .add("groupId", groupId())
+                .add("path", path)
                 .toString();
     }
-
 }