/*
* Copyright (c) 2016 Red Hat, Inc. and/or its affiliates.
*
* All rights reserved. This program and the accompanying materials
* are made available under the terms of the Eclipse Public License v1.0
* which accompanies this distribution, and is available at
* http://www.eclipse.org/legal/epl-v10.html
*/
package org.jberet.operations;
import java.util.List;
import java.util.Properties;
import java.util.Set;
import javax.batch.operations.JobExecutionAlreadyCompleteException;
import javax.batch.operations.JobExecutionIsRunningException;
import javax.batch.operations.JobExecutionNotMostRecentException;
import javax.batch.operations.JobExecutionNotRunningException;
import javax.batch.operations.JobOperator;
import javax.batch.operations.JobRestartException;
import javax.batch.operations.JobSecurityException;
import javax.batch.operations.JobStartException;
import javax.batch.operations.NoSuchJobException;
import javax.batch.operations.NoSuchJobExecutionException;
import javax.batch.operations.NoSuchJobInstanceException;
import javax.batch.runtime.JobExecution;
import javax.batch.runtime.JobInstance;
import javax.batch.runtime.StepExecution;
import org.jberet.spi.JobOperatorContext;
/**
* A delegating job operator. By default the delegate is retrieved from the
* {@linkplain JobOperatorContext#getJobOperator() context}.
*
* @author <a href="mailto:jperkins@redhat.com">James R. Perkins</a>
*/
public class DelegatingJobOperator implements JobOperator {
@Override
public Set<String> getJobNames() throws JobSecurityException {
return getDelegate().getJobNames();
}
@Override
public int getJobInstanceCount(final String jobName) throws NoSuchJobException, JobSecurityException {
return getDelegate().getJobInstanceCount(jobName);
}
@Override
public List<JobInstance> getJobInstances(final String jobName, final int start, final int count) throws NoSuchJobException, JobSecurityException {
return getDelegate().getJobInstances(jobName, start, count);
}
@Override
public List<Long> getRunningExecutions(final String jobName) throws NoSuchJobException, JobSecurityException {
return getDelegate().getRunningExecutions(jobName);
}
@Override
public Properties getParameters(final long executionId) throws NoSuchJobExecutionException, JobSecurityException {
return getDelegate().getParameters(executionId);
}
@Override
public long start(final String jobXMLName, final Properties jobParameters) throws JobStartException, JobSecurityException {
return getDelegate().start(jobXMLName, jobParameters);
}
@Override
public long restart(final long executionId, final Properties restartParameters) throws JobExecutionAlreadyCompleteException, NoSuchJobExecutionException, JobExecutionNotMostRecentException, JobRestartException, JobSecurityException {
return getDelegate().restart(executionId, restartParameters);
}
@Override
public void stop(final long executionId) throws NoSuchJobExecutionException, JobExecutionNotRunningException, JobSecurityException {
getDelegate().stop(executionId);
}
@Override
public void abandon(final long executionId) throws NoSuchJobExecutionException, JobExecutionIsRunningException, JobSecurityException {
getDelegate().abandon(executionId);
}
@Override
public JobInstance getJobInstance(final long executionId) throws NoSuchJobExecutionException, JobSecurityException {
return getDelegate().getJobInstance(executionId);
}
@Override
public List<JobExecution> getJobExecutions(final JobInstance instance) throws NoSuchJobInstanceException, JobSecurityException {
return getDelegate().getJobExecutions(instance);
}
@Override
public JobExecution getJobExecution(final long executionId) throws NoSuchJobExecutionException, JobSecurityException {
return getDelegate().getJobExecution(executionId);
}
@Override
public List<StepExecution> getStepExecutions(final long jobExecutionId) throws NoSuchJobExecutionException, JobSecurityException {
return getDelegate().getStepExecutions(jobExecutionId);
}
/**
* Returns the delegate {@link JobOperator}. This cannot return {@code null}.
*
* @return the delegate job operator
*/
@SuppressWarnings("WeakerAccess")
protected JobOperator getDelegate() {
return JobOperatorContext.getJobOperatorContext().getJobOperator();
}
}