[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/RouteAttributeDst.java b/apps/routing/fpm/app/src/main/java/org/onosproject/routing/fpm/protocol/RouteAttributeDst.java
index 2962c0b..f7e3d3b 100644
--- a/apps/routing/fpm/app/src/main/java/org/onosproject/routing/fpm/protocol/RouteAttributeDst.java
+++ b/apps/routing/fpm/app/src/main/java/org/onosproject/routing/fpm/protocol/RouteAttributeDst.java
@@ -38,7 +38,7 @@
* @param type type
* @param dstAddress destination address
*/
- public RouteAttributeDst(int length, int type, IpAddress dstAddress) {
+ private RouteAttributeDst(int length, int type, IpAddress dstAddress) {
super(length, type);
this.dstAddress = dstAddress;
@@ -91,8 +91,7 @@
@Override
public void encode(ChannelBuffer cb) {
- cb.writeShort(Short.reverseBytes((short) length()));
- cb.writeShort(Short.reverseBytes((short) type()));
+ super.encode(cb);
ChannelBuffer buffer = ChannelBuffers.copiedBuffer(dstAddress.toOctets());
if (length() == Ip6Address.BYTE_LENGTH +
@@ -105,4 +104,54 @@
throw new IllegalArgumentException("Dst address length incorrect!");
}
}
+
+ /**
+ * Returns a new RouteAttributeDst builder.
+ *
+ * @return RouteAttributeDst builder
+ */
+ public static Builder builder() {
+ return new Builder();
+ }
+
+ /**
+ * RouteAttributeDst Builder.
+ */
+ public static final class Builder extends RouteAttribute.Builder<Builder> {
+
+ private IpAddress dstAddress = null;
+
+ /**
+ * Hide class constructor.
+ */
+ private Builder() {}
+
+ /**
+ * Override abstract method.
+ */
+ @Override
+ public Builder getThis() {
+ return this;
+ }
+
+ /**
+ * Sets dstAddress for RouteAttributeDst that will be built.
+ *
+ * @param dstAddress to use for built RouteAttributeDst
+ * @return this builder
+ */
+ public Builder dstAddress(IpAddress dstAddress) {
+ this.dstAddress = dstAddress;
+ return this;
+ }
+
+ /**
+ * Builds the RouteAttributeDst.
+ *
+ * @return RouteAttributeDst reference
+ */
+ public RouteAttributeDst build() {
+ return new RouteAttributeDst(length, type, dstAddress);
+ }
+ }
}