EMMA Coverage Report (generated Thu May 22 12:08:10 CDT 2014)
[all classes][org.springframework.batch.core.job.flow.support.state]

COVERAGE SUMMARY FOR SOURCE FILE [EndState.java]

nameclass, %method, %block, %line, %
EndState.java100% (1/1)83%  (5/6)67%  (66/99)74%  (17/23)

COVERAGE BREAKDOWN BY CLASS AND METHOD

nameclass, %method, %block, %line, %
     
class EndState100% (1/1)83%  (5/6)67%  (66/99)74%  (17/23)
toString (): String 0%   (0/1)0%   (0/15)0%   (0/1)
handle (FlowExecutor): FlowExecutionStatus 100% (1/1)63%  (31/49)58%  (7/12)
EndState (FlowExecutionStatus, String): void 100% (1/1)100% (7/7)100% (2/2)
EndState (FlowExecutionStatus, String, String): void 100% (1/1)100% (7/7)100% (2/2)
EndState (FlowExecutionStatus, String, String, boolean): void 100% (1/1)100% (13/13)100% (5/5)
isEndState (): boolean 100% (1/1)100% (8/8)100% (1/1)

1/*
2 * Copyright 2006-2013 the original author or authors.
3 *
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 */
16 
17package org.springframework.batch.core.job.flow.support.state;
18 
19import org.springframework.batch.core.BatchStatus;
20import org.springframework.batch.core.StepExecution;
21import org.springframework.batch.core.job.flow.FlowExecutionStatus;
22import org.springframework.batch.core.job.flow.FlowExecutor;
23import org.springframework.batch.core.job.flow.State;
24 
25/**
26 * {@link State} implementation for ending a job if it is in progress and
27 * continuing if just starting.
28 *
29 * @author Dave Syer
30 * @since 2.0
31 */
32public class EndState extends AbstractState {
33 
34        private final FlowExecutionStatus status;
35 
36        private final boolean abandon;
37 
38        private final String code;
39 
40        /**
41         * @param status The {@link FlowExecutionStatus} to end with
42         * @param name The name of the state
43         */
44        public EndState(FlowExecutionStatus status, String name) {
45                this(status, status.getName(), name);
46        }
47 
48        /**
49         * @param status The {@link FlowExecutionStatus} to end with
50         * @param name The name of the state
51         */
52        public EndState(FlowExecutionStatus status, String code, String name) {
53                this(status, code, name, false);
54        }
55 
56        /**
57         * @param status The {@link FlowExecutionStatus} to end with
58         * @param name The name of the state
59         * @param abandon flag to indicate that previous step execution can be
60         * marked as abandoned (if there is one)
61         *
62         */
63        public EndState(FlowExecutionStatus status, String code, String name, boolean abandon) {
64                super(name);
65                this.status = status;
66                this.code = code;
67                this.abandon = abandon;
68        }
69 
70        /**
71         * Return the {@link FlowExecutionStatus} stored.
72         *
73         * @see State#handle(FlowExecutor)
74         */
75        @Override
76        public FlowExecutionStatus handle(FlowExecutor executor) throws Exception {
77 
78                synchronized (executor) {
79 
80                        // Special case. If the last step execution could not complete we
81                        // are in an unknown state (possibly unrecoverable).
82                        StepExecution stepExecution = executor.getStepExecution();
83                        if (stepExecution != null && executor.getStepExecution().getStatus() == BatchStatus.UNKNOWN) {
84                                return FlowExecutionStatus.UNKNOWN;
85                        }
86 
87                        if (status.isStop()) {
88                                if (!executor.isRestart()) {
89                                        /*
90                                         * If there are step executions, then we are not at the
91                                         * beginning of a restart.
92                                         */
93                                        if (abandon) {
94                                                /*
95                                                 * Only if instructed to do so, upgrade the status of
96                                                 * last step execution so it is not replayed on a
97                                                 * restart...
98                                                 */
99                                                executor.abandonStepExecution();
100                                        }
101                                }
102                                else {
103                                        /*
104                                         * If we are a stop state and we got this far then it must
105                                         * be a restart, so return COMPLETED.
106                                         */
107                                        return FlowExecutionStatus.COMPLETED;
108                                }
109                        }
110 
111                        executor.addExitStatus(code);
112                        return status;
113 
114                }
115        }
116 
117        /*
118         * (non-Javadoc)
119         *
120         * @see org.springframework.batch.core.job.flow.State#isEndState()
121         */
122        @Override
123        public boolean isEndState() {
124                return !status.isStop();
125        }
126 
127        /*
128         * (non-Javadoc)
129         *
130         * @see java.lang.Object#toString()
131         */
132        @Override
133        public String toString() {
134                return super.toString() + " status=[" + status + "]";
135        }
136}

[all classes][org.springframework.batch.core.job.flow.support.state]
EMMA 2.0.5312 (C) Vladimir Roubtsov