All Downloads are FREE. Search and download functionalities are using the official Maven repository.

com.google.code.morphia.utils.Assert Maven / Gradle / Ivy

package com.google.code.morphia.utils;


import java.io.Serializable;
import java.util.Arrays;
import java.util.Collection;
import java.util.EnumSet;


public final class Assert {
  private Assert() {
    // hide
  }

  public static void isNotNull(final Object reference) {
    isNotNull(reference, "Reference was null");
  }

  public static void isNotNull(final Object reference, final String msg) {
    if (reference == null) {
      raiseError("Reference was null: " + msg);
    }
  }

  public static void isNotNullAndNotEmpty(final String reference) {
    isNotNullAndNotEmpty(reference, "Reference was null or empty");
  }

  public static void isNotNullAndNotEmpty(final String reference, final String msg) {
    if ((reference == null) || (reference.length() == 0)) {
      raiseError(msg);
    }
  }

  public static void isFalse(final boolean value) {
    isFalse(value, "Value was true");
  }

  public static void isFalse(final boolean value, final String msg) {
    if (value) {
      raiseError(msg);
    }
  }

  public static void isNotFalse(final boolean value) {
    isNotFalse(value, "Value was false");
  }

  public static void isNotFalse(final boolean value, final String msg) {
    if (!value) {
      raiseError(msg);
    }
  }

  public static void isTrue(final boolean value) {
    isTrue(value, "Value was false");
  }

  public static void isTrue(final boolean value, final String msg) {
    if (!value) {
      raiseError(msg);
    }
  }

  public static void isNotTrue(final boolean value) {
    isNotTrue(value, "Value was true");
  }

  public static void isNotTrue(final boolean value, final String msg) {
    if (value) {
      raiseError(msg);
    }
  }

  public static void raiseError(final String error) {
    throw new AssertionFailedException(error);
  }

  public static void raiseError(final String error, final Exception e) {
    throw new AssertionFailedException(error, e);
  }

  public static class AssertionFailedException extends RuntimeException {

    private static final long serialVersionUID = 435272532743543854L;

    public AssertionFailedException() {
    }

    public AssertionFailedException(final String detail) {
      super(detail);
    }

    public AssertionFailedException(final String detail, final Throwable e) {
      super(detail, e);
    }
  }

  public static void isEqual(final Object obj1, final Object obj2) {
    if ((obj1 == null) && (obj2 == null)) {
      return;
    }
    if ((obj1 != null) && (!obj1.equals(obj2))) {
      raiseError("'" + obj1 + "' and '" + obj2 + "' are not equal");
    }
  }

  public static void isNotEmpty(final Collection collection) {
    if (collection == null) {
      raiseError("'collection' is null");
    } else if (collection.isEmpty()) {
      raiseError("'collection' is empty");
    }
  }

  public static void isEmpty(final Collection collection) {
    if (collection == null) {
      raiseError("'collection' is null");
    } else if (!collection.isEmpty()) {
      raiseError("'collection' is not empty");
    }
  }

  public static void parametersNotNull(final String nameOfParameters, Object... objects) {
    String msgPrefix = "At least one of the parameters ";
    final String msgSuffix = " is null.";

    if (objects == null) {
      objects = new Object[] { null };
    }

    if (objects.length == 1) {
      msgPrefix = "Parameter ";
    }

    for (final Object object : objects) {
      if (object == null) {
        raiseError(msgPrefix + "'" + nameOfParameters + "' " + msgSuffix);
      }
    }
  }

  public static void parameterNotNull(final Object reference, final String nameOfParameter) {
    if (reference == null) {
      raiseError("Parameter '" + nameOfParameter + "' is not expected to be null.");
    }
  }

  public static void isNull(final Object object, final String string) {
    if (object != null) {
      raiseError(string);
    }
  }

  public static void parameterInRange(final int value, final int min, final int max, final String string) {
    isTrue((min <= value) && (value <= max),
      "Parameter '" + string + "' must be in range of " + min + " <= " + string + " <= " + max + ". Current value was " + value);

  }

  public static void parameterLegal(final boolean condition, final String parameter) {
    isTrue(condition, "Parameter '" + parameter + "' is not legal.");
  }

  public static void parameterInRange(final long value, final long min, final long max, final String name) {
    isTrue((min <= value) && (value <= max),
      "Parameter '" + name + "' must be in range of " + min + " <= " + name + " <= " + max + ". Current value was " + value);
  }

  public static void implementsSerializable(final Object toTest) {
    if (!Serializable.class.isAssignableFrom(toTest.getClass())) {
      raiseError("Object of class '" + toTest.getClass() + "' does not implement Serializable");
    }
  }

  public static void parameterInstanceOf(final Object obj, final Class class1, final String paramName) {
    if (!class1.isAssignableFrom(obj.getClass())) {
      raiseError("Parameter '" + paramName + "' from type '" + obj.getClass().getName() + "' was expected to implement '" + class1 + "'");
    }
  }

  public static > void enumContains(final EnumSet enumSetToLookIn, final T enumToLookFor) {
    isTrue(enumSetToLookIn.contains(enumToLookFor), "Mode " + enumToLookFor + " is not part of the enum given : " + enumSetToLookIn);
  }

  public static void parameterNotEmpty(final Collection obj, final String paramName) {
    if (obj.isEmpty()) {
      raiseError("Parameter '" + paramName + "' from type '" + obj.getClass().getName() + "' is expected to NOT be empty.");
    }
  }

  public static void parameterNotEmpty(final Iterable obj, final String paramName) {
    if (!obj.iterator().hasNext()) {
      raiseError("Parameter '" + paramName + "' from type '" + obj.getClass().getName() + "' is expected to NOT be empty");
    }
  }

  public static void parameterNotEmpty(final String reference, final String nameOfParameter) {

    if (reference != null && reference.length() == 0) {
      raiseError("Parameter '" + nameOfParameter + "' is expected to NOT be empty.");
    }
  }

  public static  void parameterInCollection(final T object, final Collection collection) {
    if (collection == null) {
      raiseError("'collection' is null");
    }
    if (collection != null && !collection.contains(object)) {
      raiseError("Parameter '" + object + "' not in collection '" + collection + "'");
    }
  }

  public static void isNotSame(final Object a, final Object b) {
    if (a == b) {
      raiseError("References are expected to be different");
    }
  }

  public static void isNotEmpty(final Object[] array) {
    if (array == null) {
      raiseError("'array' is null");
    } else if (array.length == 0) {
      raiseError("'array' is empty");
    }

  }

  public static void isEmpty(final Object[] array) {
    if (array == null) {
      raiseError("'array' is null");
    } else if (array.length != 0) {
      raiseError("'array' is not empty");
    }

  }

  public static void parameterArraysOfSameLength(final String argNames, final Object[]... objects) {
    parametersNotNull("objects", objects);

    final int length = objects.length;

    parameterLegal(length >= 2, "Parameter objects was expected to contains at least two arrays.");

    int size = -99;
    for (int i = 0; i < length; i++) {
      final Object[] o = objects[i];

      int sizeOfO = -1;
      if (o != null) {
        sizeOfO = o.length;
      }

      if ((i > 0) && (sizeOfO != size)) {
        raiseError("At least one of '" + argNames + "' differs in length");
      }

      size = sizeOfO;
    }
  }

  public static void parameterIterableDoesNotContainNull(final String string, final Iterable collection) {
    parametersNotNull("string, collection", string, collection);
    for (final Object object : collection) {
      if (object == null) {
        raiseError("Iterable Parameter '" + string + "' must not contain null.");
      }
    }
  }

  public static void parameterIterableDoesNotContainNull(final String string, final Object[] a) {
    parameterIterableDoesNotContainNull(string, Arrays.asList(a));
  }

  public static void isSame(final Object a, final Object b) {
    isTrue(a == b, "Expected to be the same (not only equal, but same reference)");
  }

}




© 2015 - 2025 Weber Informatics LLC | Privacy Policy