blob: 0181cd48760b7b7e70d71a05adc33c4dd9369e48 [file] [log] [blame]
Sho SHIMIZUbdc17e72015-01-27 17:46:41 -08001/*
Brian O'Connor5ab426f2016-04-09 01:19:45 -07002 * Copyright 2015-present Open Networking Laboratory
Sho SHIMIZUbdc17e72015-01-27 17:46:41 -08003 *
4 * Licensed under the Apache License, Version 2.0 (the "License");
5 * you may not use this file except in compliance with the License.
6 * You may obtain a copy of the License at
7 *
8 * http://www.apache.org/licenses/LICENSE-2.0
9 *
10 * Unless required by applicable law or agreed to in writing, software
11 * distributed under the License is distributed on an "AS IS" BASIS,
12 * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
13 * See the License for the specific language governing permissions and
14 * limitations under the License.
15 */
Sho SHIMIZU36a8a6e2015-02-13 15:38:45 -080016package org.onosproject.net.intent.impl.phase;
Sho SHIMIZUbdc17e72015-01-27 17:46:41 -080017
Brian O'Connor0e271dc2015-02-04 18:20:25 -080018import org.onosproject.net.intent.IntentData;
Sho SHIMIZUbdc17e72015-01-27 17:46:41 -080019
Sho SHIMIZU62808d12015-02-03 18:54:39 -080020import java.util.Optional;
Sho SHIMIZUbdc17e72015-01-27 17:46:41 -080021
22/**
Sho SHIMIZU36a8a6e2015-02-13 15:38:45 -080023 * Represents a final phase of processing an intent.
Sho SHIMIZUbdc17e72015-01-27 17:46:41 -080024 */
Sho SHIMIZU36a8a6e2015-02-13 15:38:45 -080025public abstract class FinalIntentProcessPhase implements IntentProcessPhase {
Sho SHIMIZUbdc17e72015-01-27 17:46:41 -080026
Sho SHIMIZU62808d12015-02-03 18:54:39 -080027 @Override
Sho SHIMIZU36a8a6e2015-02-13 15:38:45 -080028 public final Optional<IntentProcessPhase> execute() {
Sho SHIMIZUee2aa652015-02-25 18:56:43 -080029 preExecute();
Sho SHIMIZU62808d12015-02-03 18:54:39 -080030 return Optional.empty();
31 }
Brian O'Connor0e271dc2015-02-04 18:20:25 -080032
Sho SHIMIZUee2aa652015-02-25 18:56:43 -080033 /**
34 * Executes operations that must take place before the phase starts.
35 */
36 protected void preExecute() {}
37
38 /**
39 * Returns the IntentData object being acted on by this phase.
40 *
41 * @return intent data object for the phase
42 */
Sho SHIMIZUd2d99742015-02-05 15:55:14 -080043 public abstract IntentData data();
Sho SHIMIZUbdc17e72015-01-27 17:46:41 -080044}