/*
* Copyright 2015-2017 the original author or authors.
*
* 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.junit.platform.commons.util;
import static org.junit.platform.commons.meta.API.Usage.Internal;
import java.util.Collections;
import java.util.List;
import org.junit.platform.commons.meta.API;
/**
* Internal utilities for working with <em>blacklisted</em> exceptions.
*
* <p><em>Blacklisted</em> exceptions are those that should always terminate
* test plan execution immediately.
*
* <h4>Currently Blacklisted Exceptions</h4>
* <ul>
* <li>{@link OutOfMemoryError}</li>
* </ul>
*
* <h3>DISCLAIMER</h3>
*
* <p>These utilities are intended solely for usage within the JUnit framework
* itself. <strong>Any usage by external parties is not supported.</strong>
* Use at your own risk!
*
* @since 1.0
*/
@API(Internal)
public final class BlacklistedExceptions {
private static final List<Class<? extends Throwable>> blacklist = Collections.singletonList(OutOfMemoryError.class);
///CLOVER:OFF
private BlacklistedExceptions() {
/* no-op */
}
///CLOVER:ON
/**
* Rethrow the supplied {@link Throwable exception} if it is
* <em>blacklisted</em>.
*
* <p>If the supplied {@code exception} is not <em>blacklisted</em>,
* this method does nothing.
*/
public static void rethrowIfBlacklisted(Throwable exception) {
if (blacklist.stream().anyMatch(exceptionType -> exceptionType.isInstance(exception))) {
ExceptionUtils.throwAsUncheckedException(exception);
}
}
}