View Javadoc
1   /*
2    * Copyright (c) 2006 JMockit developers
3    * This file is subject to the terms of the MIT license (see LICENSE.txt).
4    */
5   package mockit.internal.expectations.invocation;
6   
7   import edu.umd.cs.findbugs.annotations.NonNull;
8   import edu.umd.cs.findbugs.annotations.Nullable;
9   
10  import java.lang.reflect.Constructor;
11  import java.lang.reflect.Member;
12  
13  import mockit.internal.BaseInvocation;
14  import mockit.internal.expectations.state.ExecutingTest;
15  import mockit.internal.state.TestRun;
16  
17  final class DelegateInvocation extends BaseInvocation {
18      @NonNull
19      private final InvocationArguments invocationArguments;
20  
21      DelegateInvocation(@Nullable Object invokedInstance, @NonNull Object[] invokedArguments,
22              @NonNull ExpectedInvocation expectedInvocation, @NonNull InvocationConstraints constraints) {
23          super(invokedInstance, invokedArguments, constraints.invocationCount);
24          invocationArguments = expectedInvocation.arguments;
25      }
26  
27      @NonNull
28      @Override
29      protected Member findRealMember() {
30          return invocationArguments.getRealMethodOrConstructor();
31      }
32  
33      @Override
34      public void prepareToProceed() {
35          ExecutingTest executingTest = TestRun.getExecutingTest();
36  
37          if (getInvokedMember() instanceof Constructor) {
38              executingTest.markAsProceedingIntoRealImplementation();
39          } else {
40              executingTest.markAsProceedingIntoRealImplementation(this);
41          }
42      }
43  
44      @Override
45      public void cleanUpAfterProceed() {
46          TestRun.getExecutingTest().clearProceedingState();
47      }
48  }