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

mockit.internal.ClassIdentification Maven / Gradle / Ivy

Go to download

JMockit is a Java toolkit for automated developer testing. It contains APIs for the creation of the objects to be tested, for mocking dependencies, and for faking external APIs; JUnit (4 & 5) and TestNG test runners are supported. It also contains an advanced code coverage tool.

There is a newer version: 1.49
Show newest version
/*
 * Copyright (c) 2006 Rogério Liesenfeld
 * This file is subject to the terms of the MIT license (see LICENSE.txt).
 */
package mockit.internal;

import javax.annotation.*;

/**
 * Identifies a class by its loader and name rather than by the Class object, which isn't available during
 * initial class transformation.
 */
public final class ClassIdentification
{
   @Nullable public final ClassLoader loader;
   @Nonnull public final String name;

   public ClassIdentification(@Nullable ClassLoader loader, @Nonnull String name)
   {
      this.loader = loader;
      this.name = name;
   }

   @Nonnull
   public Class getLoadedClass()
   {
      try {
         return Class.forName(name, false, loader);
      }
      catch (ClassNotFoundException e) {
         throw new RuntimeException(e);
      }
   }

   @Override
   public boolean equals(Object o)
   {
      if (this == o) return true;
      if (o == null || getClass() != o.getClass()) return false;

      ClassIdentification other = (ClassIdentification) o;

      if (loader != other.loader) return false;
      return name.equals(other.name);
   }

   @Override
   public int hashCode()
   {
      return loader == null ? name.hashCode() : 31 * loader.hashCode() + name.hashCode();
   }
}




© 2015 - 2024 Weber Informatics LLC | Privacy Policy