/* * Copyright 2016 Red Hat, Inc. * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. * You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. */ package org.wildfly.extension.batch.jberet.deployment; import java.util.Collection; import java.util.Set; import java.util.function.Supplier; import javax.batch.operations.JobOperator; import javax.batch.operations.NoSuchJobException; /** * An extended version of a {@link JobOperator} for WildFly. Allows access to the job XML descriptors. * * @author <a href="mailto:jperkins@redhat.com">James R. Perkins</a> */ interface WildFlyJobOperator extends JobOperator { /** * Returns all the job XML descriptors associated with this deployment. * * @return the job XML descriptors */ Collection<String> getJobXmlNames(); /** * Returns the job XML descriptors associated with a job. * * @param jobName the job name to find the XML descriptors for * * @return the set of job XML descriptors the job can be run from */ Collection<String> getJobXmlNames(String jobName); /** * Returns all the jobs this operator has access to. Some of these jobs may not be found with {@link #getJobNames()} * as they may not exist in the {@linkplain org.jberet.repository.JobRepository job repository}. * * @return a collection of all the jobs this operator has access to */ Set<String> getAllJobNames(); /** * Allows safe execution of a method catching any {@link NoSuchJobException} thrown. If the exception is thrown the * default value is returned, otherwise the value from the supplier is returned. * * @param supplier the supplier for the value * @param defaultValue the default value if a {@link NoSuchJobException} is thrown * @param <T> the return type * * @return the value from the supplier or the default value if a {@link NoSuchJobException} was thrown */ default <T> T allowMissingJob(final Supplier<T> supplier, final T defaultValue) { try { return supplier.get(); } catch (NoSuchJobException ignore) { } return defaultValue; } }