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.faking;
7   
8   import edu.umd.cs.findbugs.annotations.NonNull;
9   import edu.umd.cs.findbugs.annotations.Nullable;
10  
11  import java.lang.reflect.Method;
12  
13  import mockit.internal.ClassLoadingBridge;
14  import mockit.internal.state.TestRun;
15  
16  public final class FakeBridge extends ClassLoadingBridge {
17      @NonNull
18      public static final ClassLoadingBridge MB = new FakeBridge();
19  
20      private FakeBridge() {
21          super("$FB");
22      }
23  
24      @NonNull
25      @Override
26      public Object invoke(@Nullable Object faked, Method method, @NonNull Object[] args) {
27          if (TestRun.isInsideNoMockingZone()) {
28              return false;
29          }
30  
31          TestRun.enterNoMockingZone();
32  
33          try {
34              String fakeClassDesc = (String) args[0];
35  
36              if (notToBeMocked(faked, fakeClassDesc)) {
37                  return false;
38              }
39  
40              Integer fakeStateIndex = (Integer) args[1];
41              return TestRun.updateFakeState(fakeClassDesc, faked, fakeStateIndex);
42          } finally {
43              TestRun.exitNoMockingZone();
44          }
45      }
46  }