
com.artipie.asto.misc.UncheckedRunnable Maven / Gradle / Ivy
/*
* The MIT License (MIT) Copyright (c) 2020-2023 artipie.com
* https://github.com/artipie/artipie/blob/master/LICENSE.txt
*/
package com.artipie.asto.misc;
import com.artipie.asto.ArtipieIOException;
import java.io.IOException;
/**
* Unchecked {@link Runnable}.
*
* @since 1.12
*/
public final class UncheckedRunnable implements Runnable {
/**
* Original runnable.
*/
private final CheckedRunnable extends Exception> original;
/**
* Ctor.
*
* @param original Original runnable.
*/
public UncheckedRunnable(final CheckedRunnable extends Exception> original) {
this.original = original;
}
/**
* New {@code UncheckedRunnable}.
*
* @param original Runnable, that can throw {@code IOException}
* @param An error
* @return UncheckedRunnable
*/
@SuppressWarnings("PMD.ProhibitPublicStaticMethods")
public static UncheckedRunnable newIoRunnable(
final CheckedRunnable original
) {
return new UncheckedRunnable(original);
}
@Override
@SuppressWarnings("PMD.AvoidCatchingGenericException")
public void run() {
try {
this.original.run();
} catch (final Exception err) {
throw new ArtipieIOException(err);
}
}
/**
* Checked version of runnable.
*
* @param Checked exception.
* @since 1.12
*/
@FunctionalInterface
public interface CheckedRunnable {
/**
* Run action.
*
* @throws E An error.
*/
void run() throws E;
}
}
© 2015 - 2025 Weber Informatics LLC | Privacy Policy