[ONOS-4718] Implement DefaultLispMapRecord class with interface mod
Change-Id: I1544fd52adc4081614b5471f8ab263efbd6c840b
diff --git a/protocols/lisp/msg/src/main/java/org/onosproject/lisp/msg/protocols/DefaultLispMapRecord.java b/protocols/lisp/msg/src/main/java/org/onosproject/lisp/msg/protocols/DefaultLispMapRecord.java
index c910b43..df9012a 100644
--- a/protocols/lisp/msg/src/main/java/org/onosproject/lisp/msg/protocols/DefaultLispMapRecord.java
+++ b/protocols/lisp/msg/src/main/java/org/onosproject/lisp/msg/protocols/DefaultLispMapRecord.java
@@ -20,79 +20,130 @@
/**
* Default implementation of LispMapRecord.
*/
-public class DefaultLispMapRecord implements LispMapRecord {
+public final class DefaultLispMapRecord implements LispMapRecord {
- private int recordTtl;
- private int locatorCount;
- private byte maskLength;
- private LispMapReplyAction action;
- private boolean authoritative;
- private short mapVersionNumber;
- private LispAfiAddress eidPrefixAfi;
+ private final int recordTtl;
+ private final int locatorCount;
+ private final byte maskLength;
+ private final LispMapReplyAction action;
+ private final boolean authoritative;
+ private final short mapVersionNumber;
+ private final LispAfiAddress eidPrefixAfi;
+ /**
+ * A private constructor that protects object instantiation from external.
+ *
+ * @param recordTtl record time-to-live value
+ * @param locatorCount locator's count number
+ * @param maskLength mask length
+ * @param action lisp map reply action
+ * @param authoritative authoritative flag
+ * @param mapVersionNumber map version number
+ * @param eidPrefixAfi EID prefix AFI address
+ */
+ private DefaultLispMapRecord(int recordTtl, int locatorCount, byte maskLength,
+ LispMapReplyAction action, boolean authoritative,
+ short mapVersionNumber, LispAfiAddress eidPrefixAfi) {
+ this.recordTtl = recordTtl;
+ this.locatorCount = locatorCount;
+ this.maskLength = maskLength;
+ this.action = action;
+ this.authoritative = authoritative;
+ this.mapVersionNumber = mapVersionNumber;
+ this.eidPrefixAfi = eidPrefixAfi;
+ }
+
+ @Override
public int getRecordTtl() {
return recordTtl;
}
+ @Override
public int getLocatorCount() {
return locatorCount;
}
+ @Override
public byte getMaskLength() {
return maskLength;
}
+ @Override
public LispMapReplyAction getAction() {
return action;
}
+ @Override
public boolean isAuthoritative() {
return authoritative;
}
+ @Override
public short getMapVersionNumber() {
return mapVersionNumber;
}
+ @Override
public LispAfiAddress getEidPrefixAfi() {
return eidPrefixAfi;
}
public static final class DefaultMapRecordBuilder implements MapRecordBuilder {
+ private int recordTtl;
+ private int locatorCount;
+ private byte maskLength;
+ private LispMapReplyAction action;
+ private boolean authoritative;
+ private short mapVersionNumber;
+ private LispAfiAddress eidPrefixAfi;
+
@Override
public MapRecordBuilder withRecordTtl(int recordTtl) {
- return null;
+ this.recordTtl = recordTtl;
+ return this;
}
@Override
public MapRecordBuilder withLocatorCount(int locatorCount) {
- return null;
+ this.locatorCount = locatorCount;
+ return this;
}
@Override
public MapRecordBuilder withMaskLength(byte maskLength) {
- return null;
+ this.maskLength = maskLength;
+ return this;
}
@Override
public MapRecordBuilder withAction(LispMapReplyAction action) {
- return null;
+ this.action = action;
+ return this;
}
@Override
public MapRecordBuilder withAuthoritative(boolean authoritative) {
- return null;
+ this.authoritative = authoritative;
+ return this;
}
@Override
public MapRecordBuilder withMapVersionNumber(short mapVersionNumber) {
- return null;
+ this.mapVersionNumber = mapVersionNumber;
+ return this;
}
@Override
public MapRecordBuilder withEidPrefixAfi(LispAfiAddress prefix) {
- return null;
+ this.eidPrefixAfi = prefix;
+ return this;
+ }
+
+ @Override
+ public LispMapRecord build() {
+ return new DefaultLispMapRecord(recordTtl, locatorCount, maskLength,
+ action, authoritative, mapVersionNumber, eidPrefixAfi);
}
}
}
diff --git a/protocols/lisp/msg/src/main/java/org/onosproject/lisp/msg/protocols/LispEidRecord.java b/protocols/lisp/msg/src/main/java/org/onosproject/lisp/msg/protocols/LispEidRecord.java
index f6538a6..9b5e3b2 100644
--- a/protocols/lisp/msg/src/main/java/org/onosproject/lisp/msg/protocols/LispEidRecord.java
+++ b/protocols/lisp/msg/src/main/java/org/onosproject/lisp/msg/protocols/LispEidRecord.java
@@ -20,7 +20,7 @@
/**
* LISP EID record section which is part of LISP map request message.
*/
-public class LispEidRecord {
+public final class LispEidRecord {
private final byte maskLength;
private final LispAfiAddress prefix;
diff --git a/protocols/lisp/msg/src/main/java/org/onosproject/lisp/msg/protocols/LispMapRecord.java b/protocols/lisp/msg/src/main/java/org/onosproject/lisp/msg/protocols/LispMapRecord.java
index 2896e80..6374292 100644
--- a/protocols/lisp/msg/src/main/java/org/onosproject/lisp/msg/protocols/LispMapRecord.java
+++ b/protocols/lisp/msg/src/main/java/org/onosproject/lisp/msg/protocols/LispMapRecord.java
@@ -131,5 +131,12 @@
* @return MapRecordBuilder object
*/
MapRecordBuilder withEidPrefixAfi(LispAfiAddress prefix);
+
+ /**
+ * Builds map record.
+ *
+ * @return map record instance
+ */
+ LispMapRecord build();
}
}