Sho SHIMIZU
Committed by Brian O'Connor

Avoid unnecessary state transition

Change state from WithdrawRequest to Withdrawn directly when
there is nothing in the store with the key

Change-Id: Ia38d02bcff8df7aad35fbb975843c6741ff540f4
...@@ -17,7 +17,6 @@ package org.onosproject.net.intent.impl; ...@@ -17,7 +17,6 @@ package org.onosproject.net.intent.impl;
17 17
18 import org.onosproject.net.flow.FlowRuleOperations; 18 import org.onosproject.net.flow.FlowRuleOperations;
19 import org.onosproject.net.intent.IntentData; 19 import org.onosproject.net.intent.IntentData;
20 -import org.onosproject.net.intent.IntentState;
21 20
22 import java.util.Optional; 21 import java.util.Optional;
23 22
...@@ -37,14 +36,11 @@ class WithdrawCoordinating implements IntentUpdate { ...@@ -37,14 +36,11 @@ class WithdrawCoordinating implements IntentUpdate {
37 WithdrawCoordinating(IntentManager intentManager, IntentData pending, IntentData current) { 36 WithdrawCoordinating(IntentManager intentManager, IntentData pending, IntentData current) {
38 this.intentManager = checkNotNull(intentManager); 37 this.intentManager = checkNotNull(intentManager);
39 this.pending = checkNotNull(pending); 38 this.pending = checkNotNull(pending);
40 - this.current = current; 39 + this.current = checkNotNull(current);
41 } 40 }
42 41
43 @Override 42 @Override
44 public Optional<IntentUpdate> execute() { 43 public Optional<IntentUpdate> execute() {
45 - if (current == null) { // there's nothing in the store with this key
46 - return Optional.of(new Withdrawn(pending, IntentState.WITHDRAWN));
47 - }
48 FlowRuleOperations flowRules = intentManager.uninstallCoordinate(current, pending); 44 FlowRuleOperations flowRules = intentManager.uninstallCoordinate(current, pending);
49 pending.setInstallables(current.installables()); 45 pending.setInstallables(current.installables());
50 return Optional.of(new Withdrawing(intentManager, pending, flowRules)); 46 return Optional.of(new Withdrawing(intentManager, pending, flowRules));
......
...@@ -20,6 +20,7 @@ import org.onosproject.net.intent.IntentData; ...@@ -20,6 +20,7 @@ import org.onosproject.net.intent.IntentData;
20 import java.util.Optional; 20 import java.util.Optional;
21 21
22 import static com.google.common.base.Preconditions.checkNotNull; 22 import static com.google.common.base.Preconditions.checkNotNull;
23 +import static org.onosproject.net.intent.IntentState.WITHDRAWN;
23 24
24 /** 25 /**
25 * Represents a phase of requesting a withdraw of an intent. 26 * Represents a phase of requesting a withdraw of an intent.
...@@ -39,6 +40,9 @@ class WithdrawRequest implements IntentUpdate { ...@@ -39,6 +40,9 @@ class WithdrawRequest implements IntentUpdate {
39 public Optional<IntentUpdate> execute() { 40 public Optional<IntentUpdate> execute() {
40 //FIXME need store interface 41 //FIXME need store interface
41 IntentData current = intentManager.store.getIntentData(pending.key()); 42 IntentData current = intentManager.store.getIntentData(pending.key());
43 + if (current == null) {
44 + return Optional.of(new Withdrawn(pending, WITHDRAWN));
45 + }
42 //TODO perhaps we want to validate that the pending and current are the 46 //TODO perhaps we want to validate that the pending and current are the
43 // same version i.e. they are the same 47 // same version i.e. they are the same
44 // Note: this call is not just the symmetric version of submit 48 // Note: this call is not just the symmetric version of submit
......