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