Committed by
Gerrit Code Review
Remove dependency on IntentData and IntentStore from IntentWorker
- Make createInitialPhase() static and move it to IntentProcessPhase - Additionally, rename to newInitialPhase() - IntentWorker's constructor receives an initial intent process phase Change-Id: I4774493230a008fc5530d9d90b262e1eb441f946
Showing
3 changed files
with
42 additions
and
38 deletions
| ... | @@ -42,6 +42,7 @@ import org.onosproject.net.intent.IntentStore; | ... | @@ -42,6 +42,7 @@ import org.onosproject.net.intent.IntentStore; |
| 42 | import org.onosproject.net.intent.IntentStoreDelegate; | 42 | import org.onosproject.net.intent.IntentStoreDelegate; |
| 43 | import org.onosproject.net.intent.Key; | 43 | import org.onosproject.net.intent.Key; |
| 44 | import org.onosproject.net.intent.impl.phase.FinalIntentProcessPhase; | 44 | import org.onosproject.net.intent.impl.phase.FinalIntentProcessPhase; |
| 45 | +import org.onosproject.net.intent.impl.phase.IntentProcessPhase; | ||
| 45 | import org.onosproject.net.intent.impl.phase.IntentWorker; | 46 | import org.onosproject.net.intent.impl.phase.IntentWorker; |
| 46 | import org.slf4j.Logger; | 47 | import org.slf4j.Logger; |
| 47 | 48 | ||
| ... | @@ -61,6 +62,7 @@ import static org.onlab.util.Tools.groupedThreads; | ... | @@ -61,6 +62,7 @@ import static org.onlab.util.Tools.groupedThreads; |
| 61 | import static org.onosproject.net.intent.IntentState.FAILED; | 62 | import static org.onosproject.net.intent.IntentState.FAILED; |
| 62 | import static org.onosproject.net.intent.IntentState.INSTALL_REQ; | 63 | import static org.onosproject.net.intent.IntentState.INSTALL_REQ; |
| 63 | import static org.onosproject.net.intent.IntentState.WITHDRAW_REQ; | 64 | import static org.onosproject.net.intent.IntentState.WITHDRAW_REQ; |
| 65 | +import static org.onosproject.net.intent.impl.phase.IntentProcessPhase.newInitialPhase; | ||
| 64 | import static org.slf4j.LoggerFactory.getLogger; | 66 | import static org.slf4j.LoggerFactory.getLogger; |
| 65 | 67 | ||
| 66 | /** | 68 | /** |
| ... | @@ -278,7 +280,8 @@ public class IntentManager | ... | @@ -278,7 +280,8 @@ public class IntentManager |
| 278 | 280 | ||
| 279 | private Future<FinalIntentProcessPhase> submitIntentData(IntentData data) { | 281 | private Future<FinalIntentProcessPhase> submitIntentData(IntentData data) { |
| 280 | IntentData current = store.getIntentData(data.key()); | 282 | IntentData current = store.getIntentData(data.key()); |
| 281 | - return workerExecutor.submit(new IntentWorker(processor, data, current)); | 283 | + IntentProcessPhase initial = newInitialPhase(processor, data, current); |
| 284 | + return workerExecutor.submit(new IntentWorker(initial)); | ||
| 282 | } | 285 | } |
| 283 | 286 | ||
| 284 | private class IntentBatchPreprocess implements Runnable { | 287 | private class IntentBatchPreprocess implements Runnable { | ... | ... |
| ... | @@ -15,8 +15,14 @@ | ... | @@ -15,8 +15,14 @@ |
| 15 | */ | 15 | */ |
| 16 | package org.onosproject.net.intent.impl.phase; | 16 | package org.onosproject.net.intent.impl.phase; |
| 17 | 17 | ||
| 18 | +import org.onosproject.net.intent.IntentData; | ||
| 19 | +import org.onosproject.net.intent.impl.IntentProcessor; | ||
| 20 | + | ||
| 18 | import java.util.Optional; | 21 | import java.util.Optional; |
| 19 | 22 | ||
| 23 | +import static org.onlab.util.Tools.isNullOrEmpty; | ||
| 24 | +import static org.onosproject.net.intent.IntentState.WITHDRAWN; | ||
| 25 | + | ||
| 20 | /** | 26 | /** |
| 21 | * Represents a phase of processing an intent. | 27 | * Represents a phase of processing an intent. |
| 22 | */ | 28 | */ |
| ... | @@ -29,4 +35,31 @@ public interface IntentProcessPhase { | ... | @@ -29,4 +35,31 @@ public interface IntentProcessPhase { |
| 29 | * @return next update | 35 | * @return next update |
| 30 | */ | 36 | */ |
| 31 | Optional<IntentProcessPhase> execute(); | 37 | Optional<IntentProcessPhase> execute(); |
| 38 | + | ||
| 39 | + /** | ||
| 40 | + * Create a starting intent process phase according to intent data this class holds. | ||
| 41 | + * | ||
| 42 | + * @param processor intent processor to be passed to intent process phases | ||
| 43 | + * generated while this instance is working | ||
| 44 | + * @param data intent data to be processed | ||
| 45 | + * @param current intent date that is stored in the store | ||
| 46 | + * @return starting intent process phase | ||
| 47 | + */ | ||
| 48 | + static IntentProcessPhase newInitialPhase(IntentProcessor processor, | ||
| 49 | + IntentData data, IntentData current) { | ||
| 50 | + switch (data.state()) { | ||
| 51 | + case INSTALL_REQ: | ||
| 52 | + return new InstallRequest(processor, data, Optional.ofNullable(current)); | ||
| 53 | + case WITHDRAW_REQ: | ||
| 54 | + if (current == null || isNullOrEmpty(current.installables())) { | ||
| 55 | + return new Withdrawn(data, WITHDRAWN); | ||
| 56 | + } else { | ||
| 57 | + return new WithdrawRequest(processor, data, current); | ||
| 58 | + } | ||
| 59 | + default: | ||
| 60 | + // illegal state | ||
| 61 | + return new CompilingFailed(data); | ||
| 62 | + } | ||
| 63 | + } | ||
| 64 | + | ||
| 32 | } | 65 | } | ... | ... |
| ... | @@ -15,42 +15,31 @@ | ... | @@ -15,42 +15,31 @@ |
| 15 | */ | 15 | */ |
| 16 | package org.onosproject.net.intent.impl.phase; | 16 | package org.onosproject.net.intent.impl.phase; |
| 17 | 17 | ||
| 18 | -import org.onosproject.net.intent.IntentData; | ||
| 19 | -import org.onosproject.net.intent.impl.IntentProcessor; | ||
| 20 | 18 | ||
| 21 | import java.util.Optional; | 19 | import java.util.Optional; |
| 22 | import java.util.concurrent.Callable; | 20 | import java.util.concurrent.Callable; |
| 23 | 21 | ||
| 24 | import static com.google.common.base.Preconditions.checkNotNull; | 22 | import static com.google.common.base.Preconditions.checkNotNull; |
| 25 | -import static org.onlab.util.Tools.isNullOrEmpty; | ||
| 26 | -import static org.onosproject.net.intent.IntentState.WITHDRAWN; | ||
| 27 | 23 | ||
| 28 | /** | 24 | /** |
| 29 | * Worker to process a submitted intent. {@link #call()} method generates | 25 | * Worker to process a submitted intent. {@link #call()} method generates |
| 30 | */ | 26 | */ |
| 31 | public final class IntentWorker implements Callable<FinalIntentProcessPhase> { | 27 | public final class IntentWorker implements Callable<FinalIntentProcessPhase> { |
| 32 | 28 | ||
| 33 | - private final IntentProcessor processor; | 29 | + private final IntentProcessPhase initial; |
| 34 | - private final IntentData data; | ||
| 35 | - private final IntentData current; | ||
| 36 | 30 | ||
| 37 | /** | 31 | /** |
| 38 | * Create an instance with the specified arguments. | 32 | * Create an instance with the specified arguments. |
| 39 | * | 33 | * |
| 40 | - * @param processor intent processor to be passed to intent process phases | 34 | + * @param initial initial intent process phase |
| 41 | - * generated while this instance is working | ||
| 42 | - * @param data intent data to be processed | ||
| 43 | - * @param current intent date that is stored in the store | ||
| 44 | */ | 35 | */ |
| 45 | - public IntentWorker(IntentProcessor processor, IntentData data, IntentData current) { | 36 | + public IntentWorker(IntentProcessPhase initial) { |
| 46 | - this.processor = checkNotNull(processor); | 37 | + this.initial = checkNotNull(initial); |
| 47 | - this.data = checkNotNull(data); | ||
| 48 | - this.current = current; | ||
| 49 | } | 38 | } |
| 50 | 39 | ||
| 51 | @Override | 40 | @Override |
| 52 | public FinalIntentProcessPhase call() throws Exception { | 41 | public FinalIntentProcessPhase call() throws Exception { |
| 53 | - IntentProcessPhase update = createInitialPhase(); | 42 | + IntentProcessPhase update = initial; |
| 54 | Optional<IntentProcessPhase> currentPhase = Optional.of(update); | 43 | Optional<IntentProcessPhase> currentPhase = Optional.of(update); |
| 55 | IntentProcessPhase previousPhase = update; | 44 | IntentProcessPhase previousPhase = update; |
| 56 | 45 | ||
| ... | @@ -60,25 +49,4 @@ public final class IntentWorker implements Callable<FinalIntentProcessPhase> { | ... | @@ -60,25 +49,4 @@ public final class IntentWorker implements Callable<FinalIntentProcessPhase> { |
| 60 | } | 49 | } |
| 61 | return (FinalIntentProcessPhase) previousPhase; | 50 | return (FinalIntentProcessPhase) previousPhase; |
| 62 | } | 51 | } |
| 63 | - | ||
| 64 | - /** | ||
| 65 | - * Create a starting intent process phase according to intent data this class holds. | ||
| 66 | - * | ||
| 67 | - * @return starting intent process phase | ||
| 68 | - */ | ||
| 69 | - private IntentProcessPhase createInitialPhase() { | ||
| 70 | - switch (data.state()) { | ||
| 71 | - case INSTALL_REQ: | ||
| 72 | - return new InstallRequest(processor, data, Optional.ofNullable(current)); | ||
| 73 | - case WITHDRAW_REQ: | ||
| 74 | - if (current == null || isNullOrEmpty(current.installables())) { | ||
| 75 | - return new Withdrawn(data, WITHDRAWN); | ||
| 76 | - } else { | ||
| 77 | - return new WithdrawRequest(processor, data, current); | ||
| 78 | - } | ||
| 79 | - default: | ||
| 80 | - // illegal state | ||
| 81 | - return new CompilingFailed(data); | ||
| 82 | - } | ||
| 83 | - } | ||
| 84 | } | 52 | } | ... | ... |
-
Please register or login to post a comment