Example usage for org.springframework.batch.core ExitStatus FAILED

List of usage examples for org.springframework.batch.core ExitStatus FAILED

Introduction

In this page you can find the example usage for org.springframework.batch.core ExitStatus FAILED.

Prototype

ExitStatus FAILED

To view the source code for org.springframework.batch.core ExitStatus FAILED.

Click Source Link

Document

Convenient constant value representing finished processing with an error.

Usage

From source file:org.emonocot.job.common.GetResourceClientTest.java

/**
 *
  @throws IOException//from  w  ww. j ava2s .co  m
 *             if a temporary file cannot be created or if there is a http
 *             protocol error.
 */
@Test
public final void testGetDocumentAnyOtherStatus() throws IOException {
    File tempFile = File.createTempFile("test", "zip");
    tempFile.deleteOnExit();
    httpResponse
            .setStatusLine(new BasicStatusLine(HttpVersion.HTTP_1_0, HttpStatus.SC_BAD_REQUEST, "Bad Request"));

    EasyMock.expect(httpClient.getParams()).andReturn(new BasicHttpParams());
    EasyMock.expect(httpClient.execute(EasyMock.isA(HttpGet.class))).andReturn(httpResponse).anyTimes();
    EasyMock.replay(httpClient);

    ExitStatus exitStatus = getResourceClient.getResource(testzip, Long.toString(new Date().getTime()),
            tempFile.getAbsolutePath());

    EasyMock.verify(httpClient);

    assertNotNull("ExitStatus should not be null", exitStatus);
    assertEquals("ExitStatus should be FAILED", exitStatus, ExitStatus.FAILED);
}

From source file:es.fcs.batch.integration.chunk.MyChunkMessageChannelItemWriter.java

@Override
public ExitStatus afterStep(StepExecution stepExecution) {
    if (!(stepExecution.getStatus() == BatchStatus.COMPLETED)) {
        return ExitStatus.EXECUTING;
    }/* w  w w.  java 2 s  . c o  m*/
    long expecting = localState.getExpecting();
    boolean timedOut;
    try {
        logger.debug("Waiting for results in step listener...");
        timedOut = !waitForResults();
        logger.debug("Finished waiting for results in step listener.");
    } catch (RuntimeException e) {
        logger.debug("Detected failure waiting for results in step listener.", e);
        stepExecution.setStatus(BatchStatus.FAILED);
        return ExitStatus.FAILED.addExitDescription(e.getClass().getName() + ": " + e.getMessage());
    } finally {
        for (StepContribution contribution : getStepContributions()) {
            stepExecution.apply(contribution);
        }
    }
    if (timedOut) {
        stepExecution.setStatus(BatchStatus.FAILED);
        throw new ItemStreamException("Timed out waiting for back log at end of step");
    }
    return ExitStatus.COMPLETED.addExitDescription("Waited for " + expecting + " results.");
}

From source file:uk.ac.ebi.eva.pipeline.jobs.steps.VariantLoaderStepTest.java

@Test
public void loaderStepShouldFailBecauseOpenCGAHomeIsWrong() throws JobExecutionException {
    String inputFile = VariantLoaderStepTest.class.getResource(input).getFile();

    Config.setOpenCGAHome("");

    jobOptions.getPipelineOptions().put("input.vcf", inputFile);
    jobOptions.getVariantOptions().put(VariantStorageManager.DB_NAME, dbName);

    VariantSource source = (VariantSource) jobOptions.getVariantOptions()
            .get(VariantStorageManager.VARIANT_SOURCE);

    jobOptions.getVariantOptions().put(VariantStorageManager.VARIANT_SOURCE,
            new VariantSource(input, source.getFileId(), source.getStudyId(), source.getStudyName(),
                    source.getType(), source.getAggregation()));

    JobExecution jobExecution = jobLauncherTestUtils.launchStep(GenotypedVcfJob.LOAD_VARIANTS);

    assertEquals(inputFile, jobOptions.getPipelineOptions().getString("input.vcf"));
    assertEquals(ExitStatus.FAILED.getExitCode(), jobExecution.getExitStatus().getExitCode());
}

From source file:uk.ac.ebi.intact.editor.controller.admin.AdminJobController.java

public boolean hasJobFailed(JobExecution jobExecution) {
    return jobExecution.getExitStatus().equals(ExitStatus.FAILED);
}

From source file:com.inkubator.hrm.web.workingtime.WtPeriodEmpDetailController.java

public void doCalculateAttendanceRealization() {
    /** to cater prevent multiple click, that will make batch execute multiple time. 
     *  please see onComplete method that will set jobExecution == null */
    if (jobExecution == null) {
        try {//from   w  ww .  j a v  a  2  s .  c  o  m

            long sleepVariable = tempAttendanceRealizationService
                    .getTotalListTempAttendanceRealizationViewModelByWtPeriodId(searchParameter,
                            model.getWtPeriodId().longValue())
                    * 3;
            JobParameters jobParameters = new JobParametersBuilder()
                    .addDate("periodUntillDate", model.getUntilPeriode())
                    .addString("createdBy", UserInfoUtil.getUserName()).addDate("createdOn", new Date())
                    .addLong("wtPeriodId", model.getWtPeriodId().longValue()).toJobParameters();
            jobExecution = jobLauncherAsync.run(jobTempAttendanceRealizationCalculation, jobParameters);

            int i = 0;
            while (true) {
                if (jobExecution.getStatus() == BatchStatus.STARTED
                        || jobExecution.getStatus() == BatchStatus.STARTING) {
                    if (i <= 85) {
                        setProgress(i++);
                    }
                    try {
                        Thread.sleep(sleepVariable);
                    } catch (InterruptedException e) {
                    }
                } else {
                    setProgress(100);
                    break;
                }
            }

        } catch (BussinessException ex) {
            jobExecution.setExitStatus(ExitStatus.FAILED);
            jobExecution.setStatus(BatchStatus.FAILED);
            jobExecution.addFailureException(ex);
            MessagesResourceUtil.setMessages(FacesMessage.SEVERITY_ERROR, "global.error",
                    ex.getErrorKeyMessage(),
                    FacesUtil.getSessionAttribute(HRMConstant.BAHASA_ACTIVE).toString());
        } catch (Exception ex) {
            LOGGER.error("Error ", ex);
        }
    }
}

From source file:de.codecentric.batch.jsr352.CustomJsrJobOperator.java

@Override
public long start(String jobName, Properties params) throws JobStartException, JobSecurityException {
    final JsrXmlApplicationContext batchContext = new JsrXmlApplicationContext(params);
    batchContext.setValidating(false);/*from   w w  w.  ja v a2s  .c  om*/

    Resource batchXml = new ClassPathResource("/META-INF/batch.xml");
    String jobConfigurationLocation = "/META-INF/batch-jobs/" + jobName + ".xml";
    Resource jobXml = new ClassPathResource(jobConfigurationLocation);

    if (batchXml.exists()) {
        batchContext.load(batchXml);
    }

    if (jobXml.exists()) {
        batchContext.load(jobXml);
    }

    AbstractBeanDefinition beanDefinition = BeanDefinitionBuilder
            .genericBeanDefinition("org.springframework.batch.core.jsr.JsrJobContextFactoryBean")
            .getBeanDefinition();
    beanDefinition.setScope(BeanDefinition.SCOPE_SINGLETON);
    batchContext.registerBeanDefinition(JSR_JOB_CONTEXT_BEAN_NAME, beanDefinition);

    batchContext.setParent(parentContext);

    try {
        batchContext.refresh();
    } catch (BeanCreationException e) {
        throw new JobStartException(e);
    }

    Assert.notNull(jobName, "The job name must not be null.");

    final org.springframework.batch.core.JobExecution jobExecution;

    try {
        JobParameters jobParameters = jobParametersConverter.getJobParameters(params);
        String[] jobNames = batchContext.getBeanNamesForType(Job.class);

        if (jobNames == null || jobNames.length <= 0) {
            throw new BatchRuntimeException("No Job defined in current context");
        }

        org.springframework.batch.core.JobInstance jobInstance = jobRepository.createJobInstance(jobNames[0],
                jobParameters);
        jobExecution = jobRepository.createJobExecution(jobInstance, jobParameters, jobConfigurationLocation);
    } catch (Exception e) {
        throw new JobStartException(e);
    }

    try {
        final Semaphore semaphore = new Semaphore(1);
        final List<Exception> exceptionHolder = Collections.synchronizedList(new ArrayList<Exception>());
        semaphore.acquire();

        taskExecutor.execute(new Runnable() {

            @Override
            public void run() {
                JsrJobContextFactoryBean factoryBean = null;
                try {
                    factoryBean = (JsrJobContextFactoryBean) batchContext
                            .getBean("&" + JSR_JOB_CONTEXT_BEAN_NAME);
                    factoryBean.setJobExecution(jobExecution);
                    final AbstractJob job = batchContext.getBean(AbstractJob.class);
                    addListenerToJobService.addListenerToJob(job);
                    semaphore.release();
                    // Initialization of the JobExecution for job level dependencies
                    jobRegistry.register(job, jobExecution);
                    job.execute(jobExecution);
                    jobRegistry.remove(jobExecution);
                } catch (Exception e) {
                    exceptionHolder.add(e);
                } finally {
                    if (factoryBean != null) {
                        factoryBean.close();
                    }

                    batchContext.close();

                    if (semaphore.availablePermits() == 0) {
                        semaphore.release();
                    }
                }
            }
        });

        semaphore.acquire();
        if (exceptionHolder.size() > 0) {
            semaphore.release();
            throw new JobStartException(exceptionHolder.get(0));
        }
    } catch (Exception e) {
        if (jobRegistry.exists(jobExecution.getId())) {
            jobRegistry.remove(jobExecution);
        }
        jobExecution.upgradeStatus(BatchStatus.FAILED);
        if (jobExecution.getExitStatus().equals(ExitStatus.UNKNOWN)) {
            jobExecution.setExitStatus(ExitStatus.FAILED.addExitDescription(e));
        }
        jobRepository.update(jobExecution);

        if (batchContext.isActive()) {
            batchContext.close();
        }

        throw new JobStartException(e);
    }
    return jobExecution.getId();
}

From source file:lcn.module.batch.core.launch.support.CommandLineRunner.java

/**
 * Batch Job? ./*w  ww  .ja  va 2 s  .  c o m*/
 * ?  , Job ? / JobExecutionID, Job Parameter
 *  CommandLineRunner Option ? .
 * 
 * @param jobPath : Job Context ? XML ?  
 * @param jobIdentifier : Job ? /JobExecutionID
 * @param parameters : Job Parameter 
 * @param opts : CommandLineRunner (-restart, -next, -stop, -abandon)
 */
public int start(String jobPath, String jobIdentifier, String[] parameters, Set<String> opts) {

    ConfigurableApplicationContext context = null;

    try {
        //  ApplicationContext ?.
        context = new ClassPathXmlApplicationContext(jobPath);
        context.getAutowireCapableBeanFactory().autowireBeanProperties(this,
                AutowireCapableBeanFactory.AUTOWIRE_BY_TYPE, false);

        Assert.state(launcher != null, "A JobLauncher must be provided.  Please add one to the configuration.");
        // ? Batch Job? , ? Batch Job?  ? JobExplorer  ?.
        if (opts.contains("-restart") || opts.contains("-next")) {
            Assert.state(jobExplorer != null,
                    "A JobExplorer must be provided for a restart or start next operation.  Please add one to the configuration.");
        }

        // Job? ?? .
        String jobName = jobIdentifier;

        // JobParameters ?.
        JobParameters jobParameters = jobParametersConverter
                .getJobParameters(StringUtils.splitArrayElementsIntoProperties(parameters, "="));
        Assert.isTrue(parameters == null || parameters.length == 0 || !jobParameters.isEmpty(),
                "Invalid JobParameters " + Arrays.asList(parameters)
                        + ". If parameters are provided they should be in the form name=value (no whitespace).");

        // Batch Job? .
        if (opts.contains("-stop")) {
            List<JobExecution> jobExecutions = getRunningJobExecutions(jobIdentifier);
            if (jobExecutions == null) {
                throw new JobExecutionNotRunningException(
                        "No running execution found for job=" + jobIdentifier);
            }
            for (JobExecution jobExecution : jobExecutions) {
                jobExecution.setStatus(BatchStatus.STOPPING);
                jobRepository.update(jobExecution);
            }
            return exitCodeMapper.intValue(ExitStatus.COMPLETED.getExitCode());
        }

        // ? Batch Job? ? abandon .
        if (opts.contains("-abandon")) {
            List<JobExecution> jobExecutions = getStoppedJobExecutions(jobIdentifier);
            if (jobExecutions == null) {
                throw new JobExecutionNotStoppedException(
                        "No stopped execution found for job=" + jobIdentifier);
            }
            for (JobExecution jobExecution : jobExecutions) {
                jobExecution.setStatus(BatchStatus.ABANDONED);
                jobRepository.update(jobExecution);
            }
            return exitCodeMapper.intValue(ExitStatus.COMPLETED.getExitCode());
        }

        // Batch Job? .
        if (opts.contains("-restart")) {
            JobExecution jobExecution = getLastFailedJobExecution(jobIdentifier);
            if (jobExecution == null) {
                throw new JobExecutionNotFailedException(
                        "No failed or stopped execution found for job=" + jobIdentifier);
            }
            jobParameters = jobExecution.getJobInstance().getJobParameters();
            jobName = jobExecution.getJobInstance().getJobName();
        }

        Job job;

        // JobLocator  Job?  null? ApplicationContext? Job? .
        if (jobLocator != null) {
            job = jobLocator.getJob(jobName);
        } else {
            job = (Job) context.getBean(jobName);
        }

        // ? Batch Job?   Job Parameters ?.
        if (opts.contains("-next")) {
            JobParameters nextParameters = getNextJobParameters(job);
            Map<String, JobParameter> map = new HashMap<String, JobParameter>(nextParameters.getParameters());
            map.putAll(jobParameters.getParameters());
            jobParameters = new JobParameters(map);
        }

        // Batch Job? .
        JobExecution jobExecution = launcher.run(job, jobParameters);
        logger.warn("CommandLineRunner's Job Information");
        logger.warn("jobName=" + jobExecution.getJobInstance().getJobName());
        logger.warn("jobParamters=" + jobParameters.toString());
        logger.warn("jobExecutionTime="
                + (jobExecution.getEndTime().getTime() - jobExecution.getStartTime().getTime()) / 1000f + "s");

        return exitCodeMapper.intValue(jobExecution.getExitStatus().getExitCode());
    } catch (Throwable e) {
        String message = "Job Terminated in error: " + e.getMessage();
        logger.error(message, e);
        CommandLineRunner.message = message;
        return exitCodeMapper.intValue(ExitStatus.FAILED.getExitCode());
    } finally {
        if (context != null) {
            context.close();
        }
    }
}

From source file:egovframework.rte.bat.core.launch.support.EgovCommandLineRunner.java

/**
 * Batch Job? ./*from   ww w.  j  av  a 2s.  com*/
 * ?  , Job ? / JobExecutionID, Job Parameter
 *  CommandLineRunner Option ? .
 * 
 * @param jobPath : Job Context ? XML ?  
 * @param jobIdentifier : Job ? /JobExecutionID
 * @param parameters : Job Parameter 
 * @param opts : CommandLineRunner (-restart, -next, -stop, -abandon)
 */
public int start(String jobPath, String jobIdentifier, String[] parameters, Set<String> opts) {

    ConfigurableApplicationContext context = null;

    try {
        //  ApplicationContext ?.
        context = new ClassPathXmlApplicationContext(jobPath);
        context.getAutowireCapableBeanFactory().autowireBeanProperties(this,
                AutowireCapableBeanFactory.AUTOWIRE_BY_TYPE, false);

        Assert.state(launcher != null, "A JobLauncher must be provided.  Please add one to the configuration.");
        // ? Batch Job? , ? Batch Job?  ? JobExplorer  ?.
        if (opts.contains("-restart") || opts.contains("-next")) {
            Assert.state(jobExplorer != null,
                    "A JobExplorer must be provided for a restart or start next operation.  Please add one to the configuration.");
        }

        // Job? ?? .
        String jobName = jobIdentifier;

        // JobParameters ?.
        JobParameters jobParameters = jobParametersConverter
                .getJobParameters(StringUtils.splitArrayElementsIntoProperties(parameters, "="));
        Assert.isTrue(parameters == null || parameters.length == 0 || !jobParameters.isEmpty(),
                "Invalid JobParameters " + Arrays.asList(parameters)
                        + ". If parameters are provided they should be in the form name=value (no whitespace).");

        // Batch Job? .
        if (opts.contains("-stop")) {
            List<JobExecution> jobExecutions = getRunningJobExecutions(jobIdentifier);
            if (jobExecutions == null) {
                throw new JobExecutionNotRunningException(
                        "No running execution found for job=" + jobIdentifier);
            }
            for (JobExecution jobExecution : jobExecutions) {
                jobExecution.setStatus(BatchStatus.STOPPING);
                jobRepository.update(jobExecution);
            }
            return exitCodeMapper.intValue(ExitStatus.COMPLETED.getExitCode());
        }

        // ? Batch Job? ? abandon .
        if (opts.contains("-abandon")) {
            List<JobExecution> jobExecutions = getStoppedJobExecutions(jobIdentifier);
            if (jobExecutions == null) {
                throw new JobExecutionNotStoppedException(
                        "No stopped execution found for job=" + jobIdentifier);
            }
            for (JobExecution jobExecution : jobExecutions) {
                jobExecution.setStatus(BatchStatus.ABANDONED);
                jobRepository.update(jobExecution);
            }
            return exitCodeMapper.intValue(ExitStatus.COMPLETED.getExitCode());
        }

        // Batch Job? .
        if (opts.contains("-restart")) {
            JobExecution jobExecution = getLastFailedJobExecution(jobIdentifier);
            if (jobExecution == null) {
                throw new JobExecutionNotFailedException(
                        "No failed or stopped execution found for job=" + jobIdentifier);
            }
            jobParameters = jobExecution.getJobInstance().getJobParameters();
            jobName = jobExecution.getJobInstance().getJobName();
        }

        Job job;

        // JobLocator  Job?  null? ApplicationContext? Job? .
        if (jobLocator != null) {
            job = jobLocator.getJob(jobName);
        } else {
            job = (Job) context.getBean(jobName);
        }

        // ? Batch Job?   Job Parameters ?.
        if (opts.contains("-next")) {
            JobParameters nextParameters = getNextJobParameters(job);
            Map<String, JobParameter> map = new HashMap<String, JobParameter>(nextParameters.getParameters());
            map.putAll(jobParameters.getParameters());
            jobParameters = new JobParameters(map);
        }

        // Batch Job? .
        JobExecution jobExecution = launcher.run(job, jobParameters);
        logger.warn("EgovCommandLineRunner's Job Information");
        logger.warn("jobName=" + jobExecution.getJobInstance().getJobName());
        logger.warn("jobParamters=" + jobParameters.toString());
        logger.warn("jobExecutionTime="
                + (jobExecution.getEndTime().getTime() - jobExecution.getStartTime().getTime()) / 1000f + "s");

        return exitCodeMapper.intValue(jobExecution.getExitStatus().getExitCode());
    } catch (Throwable e) {
        String message = "Job Terminated in error: " + e.getMessage();
        logger.error(message, e);
        EgovCommandLineRunner.message = message;
        return exitCodeMapper.intValue(ExitStatus.FAILED.getExitCode());
    } finally {
        if (context != null) {
            context.close();
        }
    }
}

From source file:org.trpr.platform.batch.impl.spring.jmx.JobAdministrator.java

/**
 * Returns the JobStatistics array for all jobs deployed locally
 * @return JobStatistics array containing one instance per job deployed locally
 *//* w w  w  . jav  a2 s  .c o m*/
private JobStatistics[] getStats() {

    JobStatistics[] jobStatistics = new JobStatistics[this.getJobOperator().getJobNames().size()];
    int count = 0;
    for (String jobName : this.getJobOperator().getJobNames()) {
        jobStatistics[count] = new JobStatistics();
        jobStatistics[count].setHostIP(this.getHostIP());
        jobStatistics[count].setHostStartTimeStamp(this.getHostStartTimeStamp());
        jobStatistics[count].setJobName(jobName);
        // get the last run JobInstance if any
        List<JobInstance> jobInstancesList = this.getJobExplorer().getJobInstances(jobName, 0, 1); // end is set as 1 to get a single element List
        if (jobInstancesList.size() > 0) { // there is at least one job instance 
            // get the first i.e. the most recent job instance
            JobInstance jobInstance = jobInstancesList.get(0);
            // now get all successful JobExecution(s) for this JobInstance
            List<JobExecution> jobExecutionList = this.getJobExplorer().getJobExecutions(jobInstance);
            if (jobExecutionList.size() > 0) { // there is at least one job execution for the job instance
                // get the first i.e. the most recent job execution
                JobExecution jobExecution = jobExecutionList.get(0);
                jobStatistics[count].setJobStatus(jobExecution.getStatus().name());
                if (jobExecution.getStatus() == BatchStatus.FAILED) { // try to get the exit description from the contained steps that errored out
                    Collection<StepExecution> stepExecutions = jobExecution.getStepExecutions();
                    for (StepExecution step : stepExecutions) {
                        jobStatistics[count].getJobSteps().add(step.getStepName());
                        if (step.getExitStatus().getExitCode().equals(ExitStatus.FAILED.getExitCode())) {
                            jobStatistics[count].setJobStepInError(step.getStepName());
                            jobStatistics[count].setJobMessage(step.getExitStatus().getExitDescription());
                        }
                    }
                } else {
                    jobStatistics[count].setJobMessage(jobExecution.getExitStatus().getExitDescription());
                }
                Calendar jobStartTimeStamp = Calendar.getInstance();
                jobStartTimeStamp.setTime(jobExecution.getStartTime());
                jobStatistics[count].setJobStartTimeStamp(jobStartTimeStamp);

                Calendar jobEndTimeStamp = Calendar.getInstance();
                jobEndTimeStamp.setTime(jobExecution.getEndTime());
                jobStatistics[count].setJobEndTimestamp(jobEndTimeStamp);
            }
        }
        count += 1;
    }
    return jobStatistics;
}

From source file:org.springframework.batch.core.job.AbstractJob.java

/**
 * Default mapping from throwable to {@link ExitStatus}.
 *
 * @param ex//from  w  ww.  j av a  2 s.co  m
 *            the cause of the failure
 * @return an {@link ExitStatus}
 */
protected ExitStatus getDefaultExitStatusForFailure(Throwable ex, JobExecution execution) {
    ExitStatus exitStatus;
    if (ex instanceof JobInterruptedException || ex.getCause() instanceof JobInterruptedException) {
        exitStatus = ExitStatus.STOPPED.addExitDescription(JobInterruptedException.class.getName());
    } else if (ex instanceof NoSuchJobException || ex.getCause() instanceof NoSuchJobException) {
        exitStatus = new ExitStatus(ExitCodeMapper.NO_SUCH_JOB, ex.getClass().getName());
    } else {
        exitStatus = ExitStatus.FAILED.addExitDescription(ex);
    }

    return exitStatus;
}