[CORD-2583] Change Fpm protocol classes to use Builder pattern

Change-Id: Ia91b5c07529dabddb7d828bb0352143d4a6083a9
diff --git a/apps/routing/fpm/app/src/main/java/org/onosproject/routing/fpm/protocol/RouteAttributePriority.java b/apps/routing/fpm/app/src/main/java/org/onosproject/routing/fpm/protocol/RouteAttributePriority.java
index 2c45db0..89dad43 100644
--- a/apps/routing/fpm/app/src/main/java/org/onosproject/routing/fpm/protocol/RouteAttributePriority.java
+++ b/apps/routing/fpm/app/src/main/java/org/onosproject/routing/fpm/protocol/RouteAttributePriority.java
@@ -38,7 +38,7 @@
      * @param type type
      * @param priority priority
      */
-    public RouteAttributePriority(int length, int type, long priority) {
+    private RouteAttributePriority(int length, int type, long priority) {
         super(length, type);
 
         this.priority = priority;
@@ -87,8 +87,57 @@
     @Override
     public void encode(ChannelBuffer cb) {
 
-        cb.writeShort(Short.reverseBytes((short) length()));
-        cb.writeShort(Short.reverseBytes((short) type()));
+        super.encode(cb);
         cb.writeInt(Integer.reverseBytes((int) priority));
     }
+
+    /**
+     * Returns a new RouteAttributePriority builder.
+     *
+     * @return RouteAttributePriority builder
+     */
+    public static Builder builder() {
+        return new Builder();
+    }
+
+    /**
+     * RouteAttributePriority Builder.
+     */
+    public static final class Builder extends RouteAttribute.Builder<Builder> {
+
+        private long priority = 0;
+
+        /**
+        * Hide class constructor.
+        */
+        private Builder() {}
+
+        /**
+         * Override abstract method.
+         */
+        @Override
+        public Builder getThis() {
+            return this;
+        }
+
+        /**
+         * Sets priority for RouteAttributePriority that will be built.
+         *
+         * @param priority to use for built RouteAttributePriority
+         * @return this builder
+         */
+        public Builder priority(long priority) {
+            this.priority = priority;
+            return this;
+        }
+
+        /**
+         * Builds the RouteAttributePriority.
+         *
+         * @return RouteAttributePriority reference
+         */
+        public RouteAttributePriority build() {
+            return new RouteAttributePriority(length, type, priority);
+        }
+    }
 }