1. fix javadoc mistakes
2. add path state proverty to tunnel
3. fix bugs in tunnel creation and query commands.

Change-Id: I69b992e47630effe45764c887864d59d3a1eb870
diff --git a/apps/pcep-api/src/main/java/org/onosproject/pcep/api/PcepTunnel.java b/apps/pcep-api/src/main/java/org/onosproject/pcep/api/PcepTunnel.java
index c66a6cc..a0d892d 100644
--- a/apps/pcep-api/src/main/java/org/onosproject/pcep/api/PcepTunnel.java
+++ b/apps/pcep-api/src/main/java/org/onosproject/pcep/api/PcepTunnel.java
@@ -19,9 +19,9 @@
 import java.util.List;
 
 /**
- * Abstraction of a generalized  PCEP Tunnel entity (bandwidth pipe) for
- * L2 networks or L1/L0 networks, representation of e.g., VLAN, L1 ODUk
- * connection, WDM OCH, etc..
+ * Abstraction of a generalized PCEP Tunnel entity (bandwidth pipe) for L2
+ * networks or L1/L0 networks, representation of e.g., VLAN, L1 ODUk connection,
+ * WDM OCH, etc..
  */
 public interface PcepTunnel extends PcepOperator {
 
@@ -72,96 +72,111 @@
     public static enum PATHTYPE {
 
         /**
-         * the preferred path.
+         * Indicates path is the preferred path.
          */
         FIRST,
 
         /**
-         * the alternate path.
+         * Indicates path is the alternate path.
          */
         SECOND
     }
 
     /**
-     * Get the type of a tunnel.
+     * Represents state of the path, work normally or broken down.
+     *
+     */
+    public static enum PathState {
+        NORMAL, BROKEN
+    }
+
+    /**
+     * Returns the type of a tunnel.
      *
      * @return tunnel type
      */
     public Type type();
 
     /**
-     * Get the name of a tunnel.
+     * Returns the name of a tunnel.
      *
      * @return tunnel name
      */
     public String name();
 
     /**
-     * Get the device id of destination endpoint of a tunnel.
+     * Returns the device id of destination endpoint of a tunnel.
      *
      * @return device id
      */
     public PcepDpid srcDeviceID();
 
     /**
-     * Get the device id of source endpoint of a tunnel.
+     * Returns the device id of source endpoint of a tunnel.
      *
      * @return device id
      */
     public PcepDpid dstDeviceId();
 
     /**
-     * Get source port of a tunnel.
+     * Returns source port of a tunnel.
      *
      * @return port number
      */
     public long srcPort();
 
     /**
-     * Get destination port of a tunnel.
+     * Returns destination port of a tunnel.
      *
      * @return port number
      */
     public long dstPort();
 
     /**
-     * Get the bandwidth of a tunnel.
+     * Returns the bandwidth of a tunnel.
      *
      * @return bandwidth
      */
     public long bandWidth();
 
     /**
-     * Get the tunnel id.
+     * Returns the tunnel id.
      *
      * @return id of the PCEP tunnel
      */
     public long id();
 
     /**
-     * Get the detail hop list of a tunnel.
+     * Returns the detail hop list of a tunnel.
      *
      * @return hop list
      */
     public List<PcepHopNodeDescription> getHopList();
 
     /**
-     * Get the instance of a pcep tunnel,a instance is used to mark the times of a tunnel created.
-     * instance and id identify a tunnel together.
+     * Returns the instance of a pcep tunnel,a instance is used to mark the times of
+     * a tunnel created. instance and id identify a tunnel together.
      *
      * @return the instance of a tunnel.
      */
     public int getInstance();
 
     /**
-     * Get the ability of a tunnel.NOPROTECTED,SILVER,or DIAMOND.
+     * Returns the state of a path.
+     *
+     * @return normal or broken
+     */
+    public PathState getPathState();
+
+    /**
+     * Returns the ability of a tunnel.
      *
      * @return ability of the tunenl
      */
     public Ability getSla();
 
     /**
-     * Get the path type of a path if the tunnel's ability is diamond .
+     * Returns the path type of a path if the tunnel's ability is diamond .
      *
      * @return the type of a path, the preferred or alternate.
      */
@@ -172,6 +187,6 @@
      *
      * @return the tunnel id of a OCH tunnel under lay of a VLAN tunnel.
      */
-    public long underLayTunnelId();
+    public long underlayTunnelId();
 
 }
diff --git a/cli/src/main/java/org/onosproject/cli/net/TunnelCreateCommand.java b/cli/src/main/java/org/onosproject/cli/net/TunnelCreateCommand.java
index eb20b95..1bb8afe 100644
--- a/cli/src/main/java/org/onosproject/cli/net/TunnelCreateCommand.java
+++ b/cli/src/main/java/org/onosproject/cli/net/TunnelCreateCommand.java
@@ -72,7 +72,7 @@
 
     @Option(name = "-b", aliases = "--bandwidth",
             description = "The bandwidth attribute of tunnel", required = false, multiValued = false)
-    String bandwidth = null;
+    String bandwidth = "1024";
 
     private static final String FMT = "The tunnel identity is %s";
 
@@ -181,7 +181,7 @@
 
         SparseAnnotations annotations = DefaultAnnotations
                 .builder()
-                .set("bandwidth", bandwidth == null && "".equals(bandwidth) ? "0" : bandwidth)
+                .set("bandwidth", bandwidth == null || "".equals(bandwidth) ? "0" : bandwidth)
                 .build();
         TunnelDescription tunnel = new DefaultTunnelDescription(
                                                                 null,
@@ -197,6 +197,10 @@
                                                                         null,
                                                                 annotations);
         TunnelId tunnelId = service.tunnelAdded(tunnel);
+        if (tunnelId == null) {
+            error("Create tunnel failed.");
+            return;
+        }
         print(FMT, tunnelId.id());
     }
 
diff --git a/cli/src/main/java/org/onosproject/cli/net/TunnelQueryCommand.java b/cli/src/main/java/org/onosproject/cli/net/TunnelQueryCommand.java
index e1bf52a..6a4da17 100644
--- a/cli/src/main/java/org/onosproject/cli/net/TunnelQueryCommand.java
+++ b/cli/src/main/java/org/onosproject/cli/net/TunnelQueryCommand.java
@@ -205,7 +205,7 @@
 
     private String showPath(Path path) {
         if (path == null) {
-            return "";
+            return "null";
         }
         StringBuilder builder = new StringBuilder("(");
         for (Link link : path.links()) {
diff --git a/providers/pcep/tunnel/src/main/java/org/onosproject/provider/pcep/tunnel/impl/PcepTunnelProvider.java b/providers/pcep/tunnel/src/main/java/org/onosproject/provider/pcep/tunnel/impl/PcepTunnelProvider.java
index 766715f..4a7cbca 100644
--- a/providers/pcep/tunnel/src/main/java/org/onosproject/provider/pcep/tunnel/impl/PcepTunnelProvider.java
+++ b/providers/pcep/tunnel/src/main/java/org/onosproject/provider/pcep/tunnel/impl/PcepTunnelProvider.java
@@ -60,6 +60,7 @@
 import org.onosproject.pcep.api.PcepHopNodeDescription;
 import org.onosproject.pcep.api.PcepOperator.OperationType;
 import org.onosproject.pcep.api.PcepTunnel;
+import org.onosproject.pcep.api.PcepTunnel.PathState;
 import org.onosproject.pcep.api.PcepTunnel.PATHTYPE;
 import org.onosproject.pcep.api.PcepTunnelListener;
 import org.slf4j.Logger;
@@ -199,7 +200,7 @@
         Tunnel tunnelOld = tunnelQueryById(tunnel.id());
         checkNotNull(tunnelOld, "The tunnel id is not exsited.");
         if (tunnelOld.type() != Tunnel.Type.VLAN) {
-            error("Llegal tunnel type. Only support VLAN tunnel deletion.");
+            error("Illegal tunnel type. Only support VLAN tunnel deletion.");
             return;
         }
         String pcepTunnelId = getPCEPTunnelKey(tunnel.id());
@@ -217,7 +218,7 @@
 
         Tunnel tunnelOld = tunnelQueryById(tunnel.id());
         if (tunnelOld.type() != Tunnel.Type.VLAN) {
-            error("Llegal tunnel type. Only support VLAN tunnel update.");
+            error("Illegal tunnel type. Only support VLAN tunnel update.");
             return;
         }
         long bandwidth = Long
@@ -256,7 +257,7 @@
 
     // Creates a path that leads through the given devices.
     private Path createPath(List<PcepHopNodeDescription> hopList,
-                            PATHTYPE pathtype) {
+                            PATHTYPE pathtype, PathState pathState) {
         if (hopList == null || hopList.size() == 0) {
             return null;
         }
@@ -270,6 +271,7 @@
         int hopNum = hopList.size() - 2;
         DefaultAnnotations extendAnnotations = DefaultAnnotations.builder()
                 .set("pathNum", String.valueOf(hopNum))
+                .set("pathState", String.valueOf(pathState))
                 .set("pathType", String.valueOf(pathtype)).build();
         return new DefaultPath(id(), links, hopNum, extendAnnotations);
     }
@@ -299,7 +301,8 @@
 
         // add path after codes of tunnel's path merged
         Path path = createPath(pcepTunnel.getHopList(),
-                               pcepTunnel.getPathType());
+                               pcepTunnel.getPathType(),
+                               pcepTunnel.getPathState());
 
         OpticalTunnelEndPoint.Type endPointType = null;
         switch (pcepTunnel.type()) {
@@ -347,11 +350,11 @@
 
         // a VLAN tunnel always carry OCH tunnel, this annotation is the index
         // of a OCH tunnel.
-        if (pcepTunnel.underLayTunnelId() != 0) {
+        if (pcepTunnel.underlayTunnelId() != 0) {
             DefaultAnnotations extendAnnotations = DefaultAnnotations
                     .builder()
                     .set("underLayTunnelIndex",
-                         String.valueOf(pcepTunnel.underLayTunnelId())).build();
+                         String.valueOf(pcepTunnel.underlayTunnelId())).build();
             annotations = DefaultAnnotations.merge(annotations,
                                                    extendAnnotations);