Search in sources :

Example 1 with InMemoryRepository

use of org.jberet.repository.InMemoryRepository in project wildfly by wildfly.

the class BatchDeploymentDescriptorParser_1_0 method parse.

@Override
public BatchEnvironmentMetaData parse(final XMLExtendedStreamReader reader, final DeploymentUnit deploymentUnit) throws XMLStreamException {
    JobRepository jobRepository = null;
    String jobRepositoryName = null;
    String jobExecutorName = null;
    Boolean restartJobsOnResume = null;
    boolean empty = true;
    while (reader.hasNext() && reader.nextTag() != END_ELEMENT) {
        final String localName = reader.getLocalName();
        final Element element = Element.forName(localName);
        // Process the job repository
        if (element == Element.JOB_REPOSITORY) {
            // Only one repository can be defined
            if (jobRepository != null || jobRepositoryName != null) {
                BatchLogger.LOGGER.multipleJobRepositoriesFound();
            } else {
                if (reader.hasNext() && reader.nextTag() != END_ELEMENT) {
                    final String name = reader.getLocalName();
                    final Element jobRepositoryElement = Element.forName(name);
                    if (jobRepositoryElement == Element.IN_MEMORY) {
                        ParseUtils.requireNoContent(reader);
                        jobRepository = new InMemoryRepository();
                    } else if (jobRepositoryElement == Element.NAMED) {
                        jobRepositoryName = readRequiredAttribute(reader, Attribute.NAME);
                        ParseUtils.requireNoContent(reader);
                    } else {
                        throw ParseUtils.unexpectedElement(reader);
                    }
                }
                // Log an error indicating the job-repository is empty, but continue as normal
                if (jobRepository == null && jobRepositoryName == null) {
                    BatchLogger.LOGGER.emptyJobRepositoryElement(deploymentUnit.getName());
                }
            }
            ParseUtils.requireNoContent(reader);
        } else if (element == Element.THREAD_POOL) {
            // Only thread-pool's defined on the subsystem are allowed to be referenced
            jobExecutorName = readRequiredAttribute(reader, Attribute.NAME);
            ParseUtils.requireNoContent(reader);
        } else if (element == Element.RESTART_JOBS_ON_RESUME) {
            restartJobsOnResume = Boolean.valueOf(readRequiredAttribute(reader, Attribute.VALUE));
            ParseUtils.requireNoContent(reader);
        } else {
            throw ParseUtils.unexpectedElement(reader);
        }
        empty = false;
    }
    if (empty) {
        // An empty tag was found. A null value will result in the subsystem default being used.
        BatchLogger.LOGGER.debugf("An empty batch element in the deployment descriptor was found for %s.", deploymentUnit.getName());
        return null;
    }
    return new BatchEnvironmentMetaData(jobRepository, jobRepositoryName, jobExecutorName, restartJobsOnResume);
}
Also used : InMemoryRepository(org.jberet.repository.InMemoryRepository) Element(org.wildfly.extension.batch.jberet.Element) JobRepository(org.jberet.repository.JobRepository)

Aggregations

InMemoryRepository (org.jberet.repository.InMemoryRepository)1 JobRepository (org.jberet.repository.JobRepository)1 Element (org.wildfly.extension.batch.jberet.Element)1