Add logging feature for each Intent instances

Change-Id: I6af9079bb0233c6dab378b056a05ea98aaff5762
diff --git a/src/main/java/net/onrc/onos/intent/Intent.java b/src/main/java/net/onrc/onos/intent/Intent.java
index 9a40325..b6a51cb 100644
--- a/src/main/java/net/onrc/onos/intent/Intent.java
+++ b/src/main/java/net/onrc/onos/intent/Intent.java
@@ -1,5 +1,9 @@
 package net.onrc.onos.intent;
 
+import java.util.LinkedList;
+
+import com.esotericsoftware.kryo.serializers.FieldSerializer.Optional;
+
 /**
  * @author Toshio Koide (t-koide@onlab.us)
  */
@@ -18,19 +22,25 @@
 	private String id;
 	private IntentState state = IntentState.CREATED;
 
+	@Optional(value="logs")
+	private LinkedList<String> logs = new LinkedList<>();
+
 	/**
 	 * Default constructor for Kryo deserialization
 	 */
 	protected Intent() {
+		logs.add(String.format("created, time:%d", System.nanoTime())); // for measurement
 	}
 
 	public Intent(String id) {
+		logs.add(String.format("created, time:%d", System.nanoTime())); // for measurement
 		this.id = id;
 	}
 
 	public Intent(String id, IntentState state) {
+		logs.add(String.format("created, time:%d", System.nanoTime())); // for measurement
+		setState(state);
 		this.id = id;
-		this.state = state;
 	}
 
 	public String getId() {
@@ -42,11 +52,17 @@
 	}
 
 	public IntentState setState(IntentState newState) {
+		logs.add(String.format("setState, oldState:%s, newState:%s, time:%d",
+				state, newState, System.nanoTime())); // for measurement
 		IntentState oldState = state;
 		state = newState;
 		return oldState;
 	}
 
+	public LinkedList<String> getLogs() {
+		return logs;
+	}
+
 	@Override
 	public int hashCode() {
 		return (id == null) ? 0 : id.hashCode();