/* * Copyright (c) 2006 Rogério Liesenfeld * This file is subject to the terms of the MIT license (see LICENSE.txt). */ package mockit.internal.expectations.invocation; import java.lang.reflect.*; import javax.annotation.*; import mockit.internal.*; import mockit.internal.state.*; final class DelegateInvocation extends BaseInvocation { @Nonnull private final InvocationArguments invocationArguments; DelegateInvocation( @Nullable Object invokedInstance, @Nonnull Object[] invokedArguments, @Nonnull ExpectedInvocation expectedInvocation, @Nonnull InvocationConstraints constraints) { super(invokedInstance, invokedArguments, constraints.invocationCount); invocationArguments = expectedInvocation.arguments; } @Nonnull @Override protected Member findRealMember() { return invocationArguments.getRealMethodOrConstructor(); } @Override public void prepareToProceed() { ExecutingTest executingTest = TestRun.getExecutingTest(); if (getInvokedMember() instanceof Constructor) { executingTest.markAsProceedingIntoRealImplementation(); } else { executingTest.markAsProceedingIntoRealImplementation(this); } } @Override public void cleanUpAfterProceed() { TestRun.getExecutingTest().clearProceedingState(); } }