package restx.common;
import com.google.common.base.Objects;
import com.google.common.base.Optional;
import com.google.common.base.Preconditions;
import java.util.Map;
/**
* User: xavierhanin
* Date: 2/3/13
* Time: 1:39 PM
*/
public class MorePreconditions {
public static <T> T checkPresent(Optional<T> optional, String msg, Object... parameters) {
if (optional.isPresent()) {
return optional.get();
} else {
throw new IllegalStateException(String.format(msg, parameters));
}
}
public static <T> T checkEquals(String name1, T o1, String name2, T o2) {
Preconditions.checkArgument(Objects.equal(o1, o2),
"%s %s must be equal to %s %s", name1, o1, name2, o2);
return o1;
}
@SuppressWarnings("unchecked")
public static <T> T checkInstanceOf(String name, Object o, Class<T> clazz) {
Preconditions.checkNotNull(o, "%s must not be null and be an instance of %s", name, clazz.getName());
Preconditions.checkArgument(clazz.isInstance(o),
"%s %s must be an instanceof of %s - but it is a %s", name, o, clazz.getSimpleName(),
o.getClass().getName());
return (T) o;
}
public static <K,V> V checkContainsKey(String name, Map<K,V> map, K key) {
Preconditions.checkArgument(map.containsKey(key),
"%s map must contain key value for key %s", name, key);
return map.get(key);
}
}