1313 * See the License for the specific language governing permissions and
1414 * limitations under the License.
1515 */
16- package io .flamingock .internal .core .operation . execute ;
16+ package io .flamingock .internal .core .operation ;
1717
1818import io .flamingock .internal .common .core .error .FlamingockException ;
1919import io .flamingock .internal .common .core .error .PendingChangesException ;
2727import io .flamingock .internal .core .event .model .impl .StageCompletedEvent ;
2828import io .flamingock .internal .core .event .model .impl .StageFailedEvent ;
2929import io .flamingock .internal .core .event .model .impl .StageStartedEvent ;
30- import io .flamingock .internal .core .operation .Operation ;
31- import io .flamingock .internal .core .operation .OperationException ;
30+ import io .flamingock .internal .core .operation .execute . ExecuteArgs ;
31+ import io .flamingock .internal .core .operation .execute . ExecuteResult ;
3232import io .flamingock .internal .core .operation .result .ExecutionResultBuilder ;
3333import io .flamingock .internal .core .pipeline .execution .ExecutableStage ;
3434import io .flamingock .internal .core .pipeline .execution .ExecutionContext ;
4949import java .util .List ;
5050
5151/**
52- * Executes the pipeline and returns structured result data.
52+ * Common execution flow for Apply and Validate operations
5353 */
54- public class ExecuteOperation implements Operation <ExecuteArgs , ExecuteResult > {
54+ public abstract class AbstractPipelineTraverseOperation implements Operation <ExecuteArgs , ExecuteResult > {
5555
5656 private static final Logger logger = FlamingockLoggerFactory .getLogger ("PipelineRunner" );
5757
@@ -69,13 +69,13 @@ public class ExecuteOperation implements Operation<ExecuteArgs, ExecuteResult> {
6969
7070 protected final Runnable finalizer ;
7171
72- public ExecuteOperation (RunnerId runnerId ,
73- ExecutionPlanner executionPlanner ,
74- StageExecutor stageExecutor ,
75- OrphanExecutionContext orphanExecutionContext ,
76- EventPublisher eventPublisher ,
77- boolean throwExceptionIfCannotObtainLock ,
78- Runnable finalizer ) {
72+ public AbstractPipelineTraverseOperation (RunnerId runnerId ,
73+ ExecutionPlanner executionPlanner ,
74+ StageExecutor stageExecutor ,
75+ OrphanExecutionContext orphanExecutionContext ,
76+ EventPublisher eventPublisher ,
77+ boolean throwExceptionIfCannotObtainLock ,
78+ Runnable finalizer ) {
7979 this .runnerId = runnerId ;
8080 this .executionPlanner = executionPlanner ;
8181 this .stageExecutor = stageExecutor ;
@@ -85,23 +85,6 @@ public ExecuteOperation(RunnerId runnerId,
8585 this .finalizer = finalizer ;
8686 }
8787
88-
89- @ Override
90- public ExecuteResult execute (ExecuteArgs args ) {
91- ExecuteResponseData result ;
92- try {
93- result = this .execute (args .getPipeline (), false );
94- } catch (OperationException operationException ) {
95- result = operationException .getResult ();
96- throw operationException ;
97- } catch (Throwable throwable ) {
98- throw processAndGetFlamingockException (throwable , null );
99- } finally {
100- finalizer .run ();
101- }
102- return new ExecuteResult (result );
103- }
104-
10588 private static List <AbstractLoadedStage > validateAndGetExecutableStages (LoadedPipeline pipeline ) {
10689 pipeline .validate ();
10790 List <AbstractLoadedStage > stages = new ArrayList <>();
@@ -193,7 +176,7 @@ private StageResult startStage(String executionId, Lock lock, ExecutableStage ex
193176 return executionOutput .getResult ();
194177 }
195178
196- private FlamingockException processAndGetFlamingockException (Throwable exception , ExecutionResultBuilder resultBuilder ) throws FlamingockException {
179+ protected FlamingockException processAndGetFlamingockException (Throwable exception , ExecutionResultBuilder resultBuilder ) throws FlamingockException {
197180 FlamingockException flamingockException ;
198181 if (exception instanceof OperationException ) {
199182 OperationException pipelineException = (OperationException ) exception ;
@@ -212,5 +195,4 @@ private FlamingockException processAndGetFlamingockException(Throwable exception
212195 eventPublisher .publish (new PipelineFailedEvent (flamingockException ));
213196 return flamingockException ;
214197 }
215-
216198}
0 commit comments