*/
package org.opendaylight.yangtools.util;
+import static com.google.common.base.Preconditions.checkArgument;
+
+import com.google.common.collect.ImmutableSet;
import java.math.BigDecimal;
import java.math.BigInteger;
-import java.util.Collections;
-import java.util.HashSet;
import java.util.Set;
-
import org.opendaylight.yangtools.concepts.Immutable;
import org.opendaylight.yangtools.concepts.Mutable;
public final class Immutables {
+ public static final Set<Class<?>> KNOWN_IMMUTABLES = ImmutableSet.of(
+ Integer.class, Short.class, BigDecimal.class, BigInteger.class, Byte.class, Character.class, Double.class,
+ Float.class, String.class, Boolean.class, Void.class);
private Immutables() {
- throw new UnsupportedOperationException("Helper class");
+ // Hidden on purpose
}
- public static final Set<Class<?>> KNOWN_IMMUTABLES = Immutables.<Class<?>> asHashSet(
- //
- Integer.class, Short.class, BigDecimal.class, BigInteger.class, Byte.class, Character.class, Double.class,
- Float.class, String.class);
-
/**
* Determines if object is known to be immutable
*
- * Note: This method may return false to immutable objects which
+ * <p>Note: This method may return false to immutable objects which
* immutability is not known, was defined not using concepts term.
*
- * @param o
+ * @param obj
* Reference to check
* @return true if object is known to be immutable false otherwise.
*/
- public static boolean isImmutable(final Object o) {
- if (o == null) {
- throw new IllegalArgumentException("Object should not be null");
- }
- if (o instanceof Mutable) {
+ public static boolean isImmutable(final Object obj) {
+ checkArgument(obj != null,"Object should not be null");
+ if (obj instanceof Mutable) {
return false;
- } else if (o instanceof Immutable) {
+ } else if (obj instanceof Immutable) {
return true;
- } else if (o instanceof String) {
+ } else if (obj instanceof String) {
return true;
- } else if (KNOWN_IMMUTABLES.contains(o.getClass())) {
+ } else if (KNOWN_IMMUTABLES.contains(obj.getClass())) {
return true;
}
return false;
}
-
- @SafeVarargs
- private static <E> Set<E> asHashSet(final E... list) {
- HashSet<E> ret = new HashSet<>();
- for (E e : list) {
- ret.add(e);
- }
- return Collections.unmodifiableSet(ret);
- }
}