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.argumentMatching;
7   
8   import edu.umd.cs.findbugs.annotations.NonNull;
9   import edu.umd.cs.findbugs.annotations.Nullable;
10  
11  import java.util.List;
12  
13  public final class CaptureMatcher<T> implements ArgumentMatcher<CaptureMatcher<T>> {
14      @NonNull
15      private final List<T> valueHolder;
16      @Nullable
17      private Class<?> expectedType;
18  
19      public CaptureMatcher(@NonNull List<T> valueHolder) {
20          this.valueHolder = valueHolder;
21      }
22  
23      public void setExpectedType(@NonNull Class<?> expectedType) {
24          this.expectedType = expectedType;
25      }
26  
27      @Override
28      public boolean same(@NonNull CaptureMatcher<T> other) {
29          return false;
30      }
31  
32      @Override
33      public boolean matches(@Nullable Object argValue) {
34          if (expectedType == null || expectedType.isInstance(argValue)
35                  || argValue == null && !expectedType.isPrimitive()) {
36              // noinspection unchecked
37              valueHolder.add((T) argValue);
38          }
39  
40          return true;
41      }
42  
43      @Override
44      public void writeMismatchPhrase(@NonNull ArgumentMismatch argumentMismatch) {
45      }
46  }