Fix the bug of rerouting and state transition problem

Change-Id: I1f5df326fa3f24b02981991fe7ff51b4269eb256
diff --git a/src/main/java/net/onrc/onos/intent/runtime/PathCalcRuntimeModule.java b/src/main/java/net/onrc/onos/intent/runtime/PathCalcRuntimeModule.java
index 3dfdc84..042f08b 100755
--- a/src/main/java/net/onrc/onos/intent/runtime/PathCalcRuntimeModule.java
+++ b/src/main/java/net/onrc/onos/intent/runtime/PathCalcRuntimeModule.java
@@ -62,8 +62,12 @@
 			return;
 
 		IntentOperationList reroutingOperation = new IntentOperationList();
-		for (Intent pathIntent : oldPaths) {
-			reroutingOperation.add(Operator.ADD, ((PathIntent) pathIntent).getParentIntent());
+		for (Intent intent : oldPaths) {
+			PathIntent pathIntent = (PathIntent) intent;
+			if (pathIntent.getState().equals(IntentState.INST_ACK) &&
+					!reroutingOperation.contains(pathIntent)) {
+				reroutingOperation.add(Operator.ADD, pathIntent.getParentIntent());
+			}
 		}
 		executeIntentOperations(reroutingOperation);
 	}
@@ -276,8 +280,10 @@
 
 			IntentState state = entry.getValue();
 			switch (state) {
+			case INST_REQ:
 			case INST_ACK:
 			case INST_NACK:
+			case DEL_REQ:
 			case DEL_ACK:
 			case DEL_PENDING:
 				parentStates.put(parentIntent.getId(), state);