package sk.stuba.fiit.perconik.utilities;
import javax.annotation.Nullable;
import com.google.common.base.Optional;
/**
* Static utility methods pertaining to {@code Throwable} instances.
*
* @author Pavol Zbell
* @since 1.0
*/
public final class MoreThrowables {
private MoreThrowables() {}
public static <T extends Throwable> T initializeCause(final T throwable, @Nullable final Throwable cause) {
throwable.initCause(cause);
return throwable;
}
public static <T extends Throwable> T initializeCause(final T throwable, final Optional<? extends Throwable> cause) {
return initializeCause(throwable, cause.orNull());
}
public static <T extends Throwable> T initializeSuppressor(final T suppressor, final Throwable suppressed) {
suppressor.addSuppressed(suppressed);
return suppressor;
}
public static <T extends Throwable> T initializeSuppressor(final T suppressor, final Iterable<? extends Throwable> suppressions) {
addSuppressed(suppressor, suppressions);
return suppressor;
}
public static void addSuppressed(final Throwable throwable, final Optional<? extends Throwable> suppressed) {
if (suppressed.isPresent()) {
throwable.addSuppressed(suppressed.get());
}
}
public static void addSuppressed(final Throwable throwable, final Iterable<? extends Throwable> suppressions) {
for (Throwable suppressed: suppressions) {
throwable.addSuppressed(suppressed);
}
}
}