agave-jobs/jobs-core/src/main/java/org/iplantc/service/jobs/managers/launchers/JobLauncherFactory.java
/**
	 * Verifies that the {@link Software#getExecutionType()} is supported by the system matching the
	 * {@code executionSystemId}. An exception is thrown if they do not line up.
	 *
	 * @param executionSystem the system whose {@link ExecutionSystem#getExecutionType()} will be checked
	 *                             for compatibility with the {@link Software#getExecutionType()}
	 * @param software the {@link Software} whose {@link ExecutionType} will be checked
	 * @throws SystemUnavailableException when the job {@link ExecutionSystem} is disabled or has a non-UP status.
	 * @throws SystemUnknownException when the job {@link ExecutionSystem} does not exist
	 * @throws SoftwareUnavailableException when the execution system cannot support the {@link ExecutionType}
	 *                             			required by the {@link Software}
	 */
Verifies that the  Software#getExecutionType() is supported by the system matching the
executionSystemId. An exception is thrown if they do not line up.

@param executionSystem the system whose  ExecutionSystem#getExecutionType() will be checked
for compatibility with the  Software#getExecutionType()
@param software the  Software whose  ExecutionType will be checked
@throws SystemUnavailableException when the job  ExecutionSystem is disabled or has a non-UP status.
@throws SystemUnknownException when the job  ExecutionSystem does not exist
@throws SoftwareUnavailableException when the execution system cannot support the  ExecutionType
required by the  Software
Verifies that the Software#getExecutionType () is supported by the system matching the executionSystemId . An exception is thrown if they do not line up . @param executionSystem the system whose ExecutionSystem#getExecutionType () will be checked for compatibility with the Software#getExecutionType () @param software the Software whose ExecutionType will be checked @throws SystemUnavailableException when the job ExecutionSystem is disabled or has a non - UP status . @throws SystemUnknownException when the job ExecutionSystem does not exist @throws SoftwareUnavailableException when the execution system cannot support the ExecutionType required by the Software
protected void assertSoftwareExecutionTypeMatchesSystem(ExecutionSystem executionSystem, Software software) throws SystemUnavailableException, SystemUnknownException, SoftwareUnavailableException {
		if (!software.getExecutionType().getCompatibleExecutionTypes().contains(executionSystem.getExecutionType())) {
			throw new SoftwareUnavailableException("The software requested by for this job requires an execution type of " +
					software.getExecutionType() + ", but the requested execution system, " + executionSystem.getSystemId() +
					", has an incompatible execution type, " + executionSystem.getExecutionType() +
					", which prevents this job from being launched.");
		}
	}
protected void assertSoftwareExecutionTypeMatchesSystem ( ExecutionSystem executionSystem , Software software ) throws SystemUnavailableException , SystemUnknownException , SoftwareUnavailableException { if ( ! software . getExecutionType ( ) . getCompatibleExecutionTypes ( ) . contains ( executionSystem . getExecutionType ( ) ) ) { throw new SoftwareUnavailableException ( "The software requested by for this job requires an execution type of " + software . getExecutionType ( ) + ", but the requested execution system, " + executionSystem . getSystemId ( ) + ", has an incompatible execution type, " + executionSystem . getExecutionType ( ) + ", which prevents this job from being launched." ) ; } }
Verifies that the {@link Software#getExecutionType()} is supported by the system matching the
 {@code executionSystemId}.
Verifies that the { @link Software#getExecutionType () } is supported by the system matching the { @code executionSystemId } .
// ensure the execution system supports the execution type configured for the app. This may change over time, // so we ensure it's still possible to do so here.