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

mockit.internal.faking.CaptureOfFakedImplementations Maven / Gradle / Ivy

/*
 * Copyright (c) 2006 JMockit developers
 * This file is subject to the terms of the MIT license (see LICENSE.txt).
 */
package mockit.internal.faking;

import java.lang.reflect.Type;
import javax.annotation.*;

import mockit.*;
import mockit.asm.classes.*;
import mockit.internal.*;
import mockit.internal.capturing.*;

public final class CaptureOfFakedImplementations extends CaptureOfImplementations
{
   private final FakeClassSetup fakeClassSetup;

   public CaptureOfFakedImplementations(@Nonnull MockUp fake, @Nonnull Type baseType) {
      fakeClassSetup = new FakeClassSetup(baseType, fake);
   }

   @Nonnull @Override
   protected BaseClassModifier createModifier(@Nullable ClassLoader cl, @Nonnull ClassReader cr, @Nonnull Class baseType, Void typeMetadata) {
      return fakeClassSetup.createClassModifier(cr);
   }

   @Override
   protected void redefineClass(@Nonnull Class realClass, @Nonnull byte[] modifiedClass) {
      fakeClassSetup.applyClassModifications(realClass, modifiedClass);
   }

   public void apply() {
      Class baseType = fakeClassSetup.realClass;

      if (baseType != Object.class) {
         redefineClass(baseType, baseType, null);
      }

      makeSureAllSubtypesAreModified(baseType, false, null);
   }
}




© 2015 - 2024 Weber Informatics LLC | Privacy Policy