FIX for ONOS-5260: METER AppID Display on GET, Precedence Range Issue

Change-Id: Ia82b8d70de0b5d824d808f9593ada64d3c1fbd09
diff --git a/core/api/src/main/java/org/onosproject/net/meter/Band.java b/core/api/src/main/java/org/onosproject/net/meter/Band.java
index 1942876..35a816f 100644
--- a/core/api/src/main/java/org/onosproject/net/meter/Band.java
+++ b/core/api/src/main/java/org/onosproject/net/meter/Band.java
@@ -20,6 +20,10 @@
  */
 public interface Band {
 
+    short MIN_PRECEDENCE = 0;
+    short MAX_PRECEDENCE = 255;
+    String ERR_MSG = "Precedence out of range";
+
     /**
      * Specifies the type of band.
      */
diff --git a/core/api/src/main/java/org/onosproject/net/meter/DefaultBand.java b/core/api/src/main/java/org/onosproject/net/meter/DefaultBand.java
index 236566cb..b0ce738 100644
--- a/core/api/src/main/java/org/onosproject/net/meter/DefaultBand.java
+++ b/core/api/src/main/java/org/onosproject/net/meter/DefaultBand.java
@@ -34,6 +34,9 @@
     public DefaultBand(Type type, long rate,
                        Long burstSize, Short prec) {
         this.type = type;
+        if (type == Type.REMARK) {
+            checkArgument(prec <= MAX_PRECEDENCE && prec >= MIN_PRECEDENCE, ERR_MSG);
+        }
         this.rate = rate;
         this.burstSize = burstSize;
         this.prec = prec;
diff --git a/core/api/src/test/java/org/onosproject/net/meter/DefaultMeterTest.java b/core/api/src/test/java/org/onosproject/net/meter/DefaultMeterTest.java
index e66e5a6..3dcb62f 100644
--- a/core/api/src/test/java/org/onosproject/net/meter/DefaultMeterTest.java
+++ b/core/api/src/test/java/org/onosproject/net/meter/DefaultMeterTest.java
@@ -35,6 +35,7 @@
     private Meter m1;
     private Meter sameAsm1;
     private Meter m2;
+    private Meter m3;
 
     @Before
     public void setup() {
@@ -44,6 +45,12 @@
                 .withRate(500)
                 .build();
 
+        Band band1 = DefaultBand.builder()
+                .ofType(Band.Type.REMARK)
+                .withRate(500)
+                .dropPrecedence((short) 1)
+                .build();
+
         m1 = DefaultMeter.builder()
                 .forDevice(did("1"))
                 .fromApp(APP_ID)
@@ -68,13 +75,23 @@
                 .withBands(Collections.singletonList(band))
                 .build();
 
+        m3 = DefaultMeter.builder()
+                .forDevice(did("3"))
+                .fromApp(APP_ID)
+                .withId(MeterId.meterId(3))
+                .withUnit(Meter.Unit.KB_PER_SEC)
+                .withBands(Collections.singletonList(band1))
+                .build();
+
+
     }
 
     @Test
     public void testEquality() {
         new EqualsTester()
                 .addEqualityGroup(m1, sameAsm1)
-                .addEqualityGroup(m2).testEquals();
+                .addEqualityGroup(m2)
+                .addEqualityGroup(m3).testEquals();
     }
 
     @Test
diff --git a/core/common/src/main/java/org/onosproject/codec/impl/MeterCodec.java b/core/common/src/main/java/org/onosproject/codec/impl/MeterCodec.java
index 5b7df81..0f67dd9 100644
--- a/core/common/src/main/java/org/onosproject/codec/impl/MeterCodec.java
+++ b/core/common/src/main/java/org/onosproject/codec/impl/MeterCodec.java
@@ -61,7 +61,7 @@
                 .put(DEVICE_ID, meter.deviceId().toString());
 
         if (meter.appId() != null) {
-            result.put(APP_ID, meter.appId().toString());
+            result.put(APP_ID, meter.appId().name());
         }
 
         if (meter.state() != null) {
diff --git a/web/api/src/main/resources/definitions/Meter.json b/web/api/src/main/resources/definitions/Meter.json
index e8fefe5..d34b7e0 100644
--- a/web/api/src/main/resources/definitions/Meter.json
+++ b/web/api/src/main/resources/definitions/Meter.json
@@ -21,7 +21,7 @@
     },
     "appId": {
       "type": "string",
-      "example": "1"
+      "example": "org.onosproject.rest"
     },
     "deviceId": {
       "type": "string",
@@ -110,4 +110,4 @@
       }
     }
   }
-}
\ No newline at end of file
+}
diff --git a/web/api/src/main/resources/definitions/Meters.json b/web/api/src/main/resources/definitions/Meters.json
index 46e8727..d5f6d70 100644
--- a/web/api/src/main/resources/definitions/Meters.json
+++ b/web/api/src/main/resources/definitions/Meters.json
@@ -34,7 +34,7 @@
           },
           "appId": {
             "type": "string",
-            "example": "1"
+            "example": "org.onosproject.rest"
           },
           "deviceId": {
             "type": "string",
@@ -126,4 +126,4 @@
       }
     }
   }
-}
\ No newline at end of file
+}
diff --git a/web/api/src/test/java/org/onosproject/rest/resources/MetersResourceTest.java b/web/api/src/test/java/org/onosproject/rest/resources/MetersResourceTest.java
index bcf5d17..a23ca8c 100644
--- a/web/api/src/test/java/org/onosproject/rest/resources/MetersResourceTest.java
+++ b/web/api/src/test/java/org/onosproject/rest/resources/MetersResourceTest.java
@@ -263,9 +263,9 @@
 
             // check application id
             final String jsonAppId = jsonMeter.get("appId").asString();
-            final String appId = meter.appId().toString();
+            final String appId = meter.appId().name();
             if (!jsonAppId.equals(appId)) {
-                reason = "appId " + meter.appId().toString();
+                reason = "appId " + meter.appId().name();
                 return false;
             }