Implement copyData as copy constructor on IntentData.
Cleaned up javadocs.
Change-Id: I90e6350244991d4f30180fe501fec9e6fd180d43
diff --git a/core/api/src/main/java/org/onosproject/net/intent/IntentData.java b/core/api/src/main/java/org/onosproject/net/intent/IntentData.java
index 1bfa0dc..a71b20e 100644
--- a/core/api/src/main/java/org/onosproject/net/intent/IntentData.java
+++ b/core/api/src/main/java/org/onosproject/net/intent/IntentData.java
@@ -23,13 +23,15 @@
import java.util.List;
import java.util.Objects;
+import static com.google.common.base.Preconditions.checkNotNull;
+
/**
* A wrapper class that contains an intents, its state, and other metadata for
* internal use.
*/
public class IntentData { //FIXME need to make this "immutable"
// manager should be able to mutate a local copy while processing
- private Intent intent;
+ private final Intent intent;
private IntentState state;
private Timestamp version;
@@ -37,34 +39,77 @@
private List<Intent> installables;
+ /**
+ * Creates a new intent data object.
+ *
+ * @param intent intent this metadata references
+ * @param state intent state
+ * @param version version of the intent for this key
+ */
public IntentData(Intent intent, IntentState state, Timestamp version) {
this.intent = intent;
this.state = state;
this.version = version;
}
- // kryo constructor
- protected IntentData() {
+ /**
+ * Copy constructor.
+ *
+ * @param intentData intent data to copy
+ */
+ public IntentData(IntentData intentData) {
+ checkNotNull(intentData);
+
+ intent = intentData.intent;
+ state = intentData.state;
+ version = intentData.version;
+ origin = intentData.origin;
+ installables = intentData.installables;
}
+ // kryo constructor
+ protected IntentData() {
+ intent = null;
+ }
+
+ /**
+ * Returns the intent this metadata references.
+ *
+ * @return intent
+ */
public Intent intent() {
return intent;
}
+ /**
+ * Returns the state of the intent.
+ *
+ * @return intent state
+ */
public IntentState state() {
return state;
}
+ /**
+ * Returns the intent key.
+ *
+ * @return intent key
+ */
public Key key() {
return intent.key();
}
+ /**
+ * Returns the version of the intent for this key.
+ *
+ * @return intent version
+ */
public Timestamp version() {
return version;
}
/**
- * Sets the origin, which is the node that created the instance.
+ * Sets the origin, which is the node that created the intent.
*
* @param origin origin instance
*/
@@ -72,10 +117,20 @@
this.origin = origin;
}
+ /**
+ * Returns the origin node that created this intent.
+ *
+ * @return origin node ID
+ */
public NodeId origin() {
return origin;
}
+ /**
+ * Updates the state of the intent to the given new state.
+ *
+ * @param newState new state of the intent
+ */
public void setState(IntentState newState) {
this.state = newState;
}
@@ -94,10 +149,20 @@
this.version = version;
}
+ /**
+ * Sets the intent installables to the given list of intents.
+ *
+ * @param installables list of installables for this intent
+ */
public void setInstallables(List<Intent> installables) {
this.installables = ImmutableList.copyOf(installables);
}
+ /**
+ * Returns the installables associated with this intent.
+ *
+ * @return list of installable intents
+ */
public List<Intent> installables() {
return installables;
}
@@ -120,12 +185,14 @@
&& Objects.equals(this.version, other.version);
}
+ @Override
public String toString() {
return MoreObjects.toStringHelper(getClass())
.add("key", key())
.add("state", state())
.add("version", version())
.add("intent", intent())
+ .add("origin", origin())
.add("installables", installables())
.toString();
}