package sk.stuba.fiit.perconik.utilities.concurrent;
import com.google.common.base.Supplier;
import static com.google.common.base.Preconditions.checkNotNull;
import static com.google.common.base.Suppliers.ofInstance;
import static sk.stuba.fiit.perconik.utilities.MorePreconditions.checkNotNullOrEmpty;
public abstract class NamedRunnable implements Runnable {
private final Supplier<String> toString;
protected NamedRunnable(final Class<?> identity) {
this(ofInstance(identity.getName()));
}
protected NamedRunnable(final Class<?> identity, final String name) {
this(ofInstance(identity.getName() + "$" + checkNotNullOrEmpty(name)));
}
protected NamedRunnable(final String name) {
this(ofInstance(name));
}
protected NamedRunnable(final Supplier<String> supplier) {
this.toString = checkNotNull(supplier);
}
@Override
public final String toString() {
return checkNotNullOrEmpty(this.toString.get());
}
}