Example usage for org.springframework.batch.core UnexpectedJobExecutionException UnexpectedJobExecutionException

List of usage examples for org.springframework.batch.core UnexpectedJobExecutionException UnexpectedJobExecutionException

Introduction

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

Prototype

public UnexpectedJobExecutionException(String msg, Throwable nested) 

Source Link

Document

Constructs a new instance with a message.

Usage

From source file:trionsoft.test.StepRunner.java

/**
 * Launch the given job//from  w  w w .j av  a2  s.c om
 * 
 * @param job
 * @param jobParameters
 */
private JobExecution launchJob(Job job, JobParameters jobParameters) {
    try {
        return this.launcher.run(job, jobParameters);
    } catch (JobExecutionAlreadyRunningException e) {
        throw new UnexpectedJobExecutionException("Step runner encountered exception.", e);
    } catch (JobRestartException e) {
        throw new UnexpectedJobExecutionException("Step runner encountered exception.", e);
    } catch (JobInstanceAlreadyCompleteException e) {
        throw new UnexpectedJobExecutionException("Step runner encountered exception.", e);
    } catch (JobParametersInvalidException e) {
        throw new UnexpectedJobExecutionException("Step runner encountered exception.", e);
    }
}

From source file:org.geoserver.backuprestore.tasklet.CatalogBackupRestoreTasklet.java

@Override
RepeatStatus doExecute(StepContribution contribution, ChunkContext chunkContext, JobExecution jobExecution)
        throws Exception {
    final GeoServer geoserver = backupFacade.getGeoServer();
    final GeoServerDataDirectory dd = backupFacade.getGeoServerDataDirectory();
    final ResourceStore resourceStore = dd.getResourceStore();

    try {/*from  w  ww . ja v  a  2 s. c o  m*/
        if (!isNew()) {
            doBackup(jobExecution, geoserver, dd, resourceStore);
        } else {
            doRestore(jobExecution, geoserver, dd);
        }
    } catch (Exception e) {
        logValidationExceptions((ValidationResult) null, new UnexpectedJobExecutionException(
                "Exception occurred while storing GeoServer globals and services settings!", e));
    }

    return RepeatStatus.FINISHED;
}

From source file:org.geoserver.backuprestore.tasklet.CatalogBackupRestoreTasklet.java

/**
 * Perform Backup/*ww w  . j a  v a2s .  c o  m*/
 * 
 * @param jobExecution
 * @param geoserver
 * @param dd
 * @param resourceStore
 * @throws Exception
 * @throws IOException
 */
private void doBackup(JobExecution jobExecution, final GeoServer geoserver, final GeoServerDataDirectory dd,
        final ResourceStore resourceStore) throws Exception {
    try {
        final String outputFolderURL = jobExecution.getJobParameters().getString(Backup.PARAM_OUTPUT_FILE_PATH);
        Resource targetBackupFolder = Resources.fromURL(outputFolderURL);

        // Store GeoServer Global Info
        doWrite(geoserver.getGlobal(), targetBackupFolder, "global.xml");

        // Store GeoServer Global Settings
        doWrite(geoserver.getSettings(), targetBackupFolder, "settings.xml");

        // Store GeoServer Global Logging Settings
        doWrite(geoserver.getLogging(), targetBackupFolder, "logging.xml");

        // Store GeoServer Global Services
        for (ServiceInfo service : geoserver.getServices()) {
            // Local Services will be saved later on ...
            if (service.getWorkspace() == null) {
                doWrite(service, targetBackupFolder, "services");
            }
        }

        // Save Workspace specific settings
        Resource targetWorkspacesFolder = BackupUtils.dir(targetBackupFolder, "workspaces");

        // Store Default Workspace
        if (filteredWorkspace(getCatalog().getDefaultWorkspace())) {
            doWrite(getCatalog().getDefaultNamespace(), targetWorkspacesFolder, "defaultnamespace.xml");
            doWrite(getCatalog().getDefaultWorkspace(), targetWorkspacesFolder, "default.xml");
        }

        // Store Workspace Specific Settings and Services
        for (WorkspaceInfo ws : getCatalog().getWorkspaces()) {
            if (filteredWorkspace(ws)) {
                if (geoserver.getSettings(ws) != null) {
                    doWrite(geoserver.getSettings(ws), BackupUtils.dir(targetWorkspacesFolder, ws.getName()),
                            "settings.xml");
                }

                if (geoserver.getServices(ws) != null) {
                    for (ServiceInfo service : geoserver.getServices(ws)) {
                        doWrite(service, targetWorkspacesFolder, ws.getName());
                    }
                }

                // Backup other configuration bits, like images, palettes, user projections and so on...
                GeoServerDataDirectory wsDd = new GeoServerDataDirectory(
                        dd.get(Paths.path("workspaces", ws.getName())).dir());
                backupRestoreAdditionalResources(wsDd.getResourceStore(),
                        targetWorkspacesFolder.get(ws.getName()));

                // Backup Style SLDs
                for (StyleInfo sty : getCatalog().getStylesByWorkspace(ws)) {
                    Resource styResource = wsDd.get(Paths.path("styles", sty.getFilename()));
                    if (Resources.exists(styResource)) {
                        Resources.copy(styResource.file(),
                                BackupUtils.dir(targetWorkspacesFolder.get(ws.getName()), "styles"));
                    }
                }
            }
        }

        // Backup GeoServer Plugins
        final GeoServerResourceLoader targetGeoServerResourceLoader = new GeoServerResourceLoader(
                targetBackupFolder.dir());
        for (GeoServerPluginConfigurator pluginConfig : GeoServerExtensions
                .extensions(GeoServerPluginConfigurator.class)) {
            // On restore invoke 'pluginConfig.loadConfiguration(resourceLoader);' after having replaced the config files.
            pluginConfig.saveConfiguration(targetGeoServerResourceLoader);
        }

        for (GeoServerPropertyConfigurer props : GeoServerExtensions
                .extensions(GeoServerPropertyConfigurer.class)) {
            // On restore invoke 'props.reload();' after having replaced the properties files.
            Resource configFile = props.getConfigFile();

            if (configFile != null && Resources.exists(configFile)) {
                Resource targetDir = Files.asResource(targetGeoServerResourceLoader.findOrCreateDirectory(
                        Paths.convert(dd.getResourceLoader().getBaseDirectory(), configFile.parent().dir())));

                Resources.copy(configFile.file(), targetDir);
            }
        }

        // Backup other configuration bits, like images, palettes, user projections and so on...
        backupRestoreAdditionalResources(resourceStore, targetBackupFolder);

        // Backup GWC Configuration bits
        try {
            if (GeoServerExtensions.bean("gwcGeoServervConfigPersister") != null) {
                backupGWCSettings(targetBackupFolder);
            }
        } catch (NoSuchBeanDefinitionException e) {
            LOGGER.log(Level.WARNING, "Skipped GWC GeoServer Config Persister: ", e);
        }
    } catch (Exception e) {
        logValidationExceptions((ValidationResult) null, new UnexpectedJobExecutionException(
                "Exception occurred while storing GeoServer globals and services settings!", e));
    }
}

From source file:org.geoserver.backuprestore.tasklet.CatalogBackupRestoreTasklet.java

/**
 * @param jobExecution/*from w w  w .  j  a va  2  s  .  c o  m*/
 * @param geoserver
 * @param dd
 * @throws Exception
 * @throws IOException
 * @throws UnexpectedJobExecutionException
 */
@SuppressWarnings("unused")
private void doRestore(JobExecution jobExecution, final GeoServer geoserver, final GeoServerDataDirectory dd)
        throws Exception {
    final String inputFolderURL = jobExecution.getJobParameters().getString(Backup.PARAM_INPUT_FILE_PATH);
    Resource sourceRestoreFolder = Resources.fromURL(inputFolderURL);
    Resource sourceWorkspacesFolder = null;

    // Try first to load all the settings available into the source restore folder
    GeoServerInfo newGeoServerInfo = null;
    SettingsInfo newSettings = null;
    LoggingInfo newLoggingInfo = null;
    try {
        newGeoServerInfo = (GeoServerInfo) doRead(sourceRestoreFolder, "global.xml");
        newSettings = (SettingsInfo) doRead(sourceRestoreFolder, "settings.xml");
        newLoggingInfo = (LoggingInfo) doRead(sourceRestoreFolder, "logging.xml");
    } catch (Exception e) {
        logValidationExceptions((ValidationResult) null, new UnexpectedJobExecutionException(
                "Exception occurred while storing GeoServer globals and services settings!", e));
    }

    // Save Workspace specific settings
    try {
        sourceWorkspacesFolder = BackupUtils.dir(sourceRestoreFolder, "workspaces");

        // Set Default Namespace and Workspace
        if (Resources.exists(sourceWorkspacesFolder.get("default.xml"))) {
            NamespaceInfo newDefaultNamespace = (NamespaceInfo) doRead(sourceWorkspacesFolder,
                    "defaultnamespace.xml");
            WorkspaceInfo newDefaultWorkspace = (WorkspaceInfo) doRead(sourceWorkspacesFolder, "default.xml");
            getCatalog().setDefaultNamespace(newDefaultNamespace);
            getCatalog().setDefaultWorkspace(newDefaultWorkspace);
        }
    } catch (Exception e) {
        logValidationExceptions((ValidationResult) null, new UnexpectedJobExecutionException(
                "Exception occurred while storing GeoServer globals and services settings!", e));
    }

    // RESTORE
    // TODO: Save old settings
    /*
     * GeoServerInfo oldGeoServerInfo = geoserver.getGlobal(); SettingsInfo oldSettings = geoserver.getSettings(); LoggingInfo oldLoggingInfo =
     * geoserver.getLogging(); WorkspaceInfo oldDefaultWorkspace = geoserver.getCatalog().getDefaultWorkspace(); NamespaceInfo oldDefaultNamespace
     * = geoserver.getCatalog().getDefaultNamespace();
     */

    // Do this *ONLY* when DRY-RUN-MODE == OFF
    if (!isDryRun()) {
        try {
            hardRestore(geoserver, dd, sourceRestoreFolder, sourceWorkspacesFolder, newGeoServerInfo,
                    newLoggingInfo);
        } catch (Exception e) {
            logValidationExceptions((ValidationResult) null, new UnexpectedJobExecutionException(
                    "Exception occurred while storing GeoServer globals and services settings!", e));
        } finally {
            /*
             * TODO: - Handle Revert ??
             */
        }
    } else {
        // DRY-RUN-MODE ON: Try to check backup files consistency as much as possible
        try {
            // Temporary GeoServer Data Dir just for testing
            GeoServerDataDirectory td = new GeoServerDataDirectory(BackupUtils.tmpDir().dir());
            softRestore(geoserver, td, sourceRestoreFolder, sourceWorkspacesFolder, newGeoServerInfo,
                    newLoggingInfo);
        } catch (Exception e) {
            logValidationExceptions((ValidationResult) null, new UnexpectedJobExecutionException(
                    "Exception occurred while storing GeoServer globals and services settings!", e));
        } finally {
        }
    }
}

From source file:org.springframework.batch.core.launch.support.SimpleJobOperator.java

@Override
public Long restart(long executionId) throws JobInstanceAlreadyCompleteException, NoSuchJobExecutionException,
        NoSuchJobException, JobRestartException, JobParametersInvalidException {

    logger.info("Checking status of job execution with id=" + executionId);

    JobExecution jobExecution = findExecutionById(executionId);

    String jobName = jobExecution.getJobInstance().getJobName();
    Job job = jobRegistry.getJob(jobName);
    JobParameters parameters = jobExecution.getJobParameters();

    logger.info(String.format("Attempting to resume job with name=%s and parameters=%s", jobName, parameters));
    try {//w ww  .  j  a v a2  s  . c  o  m
        return jobLauncher.run(job, parameters).getId();
    } catch (JobExecutionAlreadyRunningException e) {
        throw new UnexpectedJobExecutionException(
                String.format(ILLEGAL_STATE_MSG, "job execution already running", jobName, parameters), e);
    }

}

From source file:org.springframework.batch.core.launch.support.SimpleJobOperator.java

@Override
public Long start(String jobName, String parameters)
        throws NoSuchJobException, JobInstanceAlreadyExistsException, JobParametersInvalidException {

    logger.info("Checking status of job with name=" + jobName);

    JobParameters jobParameters = jobParametersConverter
            .getJobParameters(PropertiesConverter.stringToProperties(parameters));

    if (jobRepository.isJobInstanceExists(jobName, jobParameters)) {
        throw new JobInstanceAlreadyExistsException(
                String.format("Cannot start a job instance that already exists with name=%s and parameters=%s",
                        jobName, parameters));
    }//from   www  . j  a  va2 s . c  o m

    Job job = jobRegistry.getJob(jobName);

    logger.info(String.format("Attempting to launch job with name=%s and parameters=%s", jobName, parameters));
    try {
        return jobLauncher.run(job, jobParameters).getId();
    } catch (JobExecutionAlreadyRunningException e) {
        throw new UnexpectedJobExecutionException(
                String.format(ILLEGAL_STATE_MSG, "job execution already running", jobName, parameters), e);
    } catch (JobRestartException e) {
        throw new UnexpectedJobExecutionException(
                String.format(ILLEGAL_STATE_MSG, "job not restartable", jobName, parameters), e);
    } catch (JobInstanceAlreadyCompleteException e) {
        throw new UnexpectedJobExecutionException(
                String.format(ILLEGAL_STATE_MSG, "job already complete", jobName, parameters), e);
    }

}

From source file:org.springframework.batch.core.launch.support.SimpleJobOperator.java

@Override
public Long startNextInstance(String jobName) throws NoSuchJobException, JobParametersNotFoundException,
        UnexpectedJobExecutionException, JobParametersInvalidException {

    logger.info("Locating parameters for next instance of job with name=" + jobName);

    Job job = jobRegistry.getJob(jobName);
    List<JobInstance> lastInstances = jobExplorer.getJobInstances(jobName, 0, 1);

    JobParametersIncrementer incrementer = job.getJobParametersIncrementer();
    if (incrementer == null) {
        throw new JobParametersNotFoundException("No job parameters incrementer found for job=" + jobName);
    }//from w ww  . j a v  a 2s. com

    JobParameters parameters;
    if (lastInstances.isEmpty()) {
        parameters = incrementer.getNext(new JobParameters());
        if (parameters == null) {
            throw new JobParametersNotFoundException("No bootstrap parameters found for job=" + jobName);
        }
    } else {
        List<JobExecution> lastExecutions = jobExplorer.getJobExecutions(lastInstances.get(0));
        parameters = incrementer.getNext(lastExecutions.get(0).getJobParameters());
    }

    logger.info(String.format("Attempting to launch job with name=%s and parameters=%s", jobName, parameters));
    try {
        return jobLauncher.run(job, parameters).getId();
    } catch (JobExecutionAlreadyRunningException e) {
        throw new UnexpectedJobExecutionException(
                String.format(ILLEGAL_STATE_MSG, "job already running", jobName, parameters), e);
    } catch (JobRestartException e) {
        throw new UnexpectedJobExecutionException(
                String.format(ILLEGAL_STATE_MSG, "job not restartable", jobName, parameters), e);
    } catch (JobInstanceAlreadyCompleteException e) {
        throw new UnexpectedJobExecutionException(
                String.format(ILLEGAL_STATE_MSG, "job instance already complete", jobName, parameters), e);
    }

}

From source file:org.springframework.batch.core.partition.gemfire.GemfirePartitionFunction.java

private StepExecution execute(StepExecution stepExecution) {
    try {/*from w w  w . ja  v a 2 s  .co m*/
        step.execute(stepExecution);
    } catch (JobInterruptedException e) {
        stepExecution.getJobExecution().setStatus(BatchStatus.STOPPING);
        throw new UnexpectedJobExecutionException("TODO: this should result in a stop", e);
    }
    return stepExecution;
}