1
2
3
4
5
6 package mockit.internal.expectations.mocking;
7
8 import edu.umd.cs.findbugs.annotations.NonNull;
9 import edu.umd.cs.findbugs.annotations.Nullable;
10
11 import java.lang.reflect.Type;
12
13 import mockit.internal.expectations.MockingFilters;
14
15 class TypeRedefinition extends BaseTypeRedefinition {
16 TypeRedefinition(@NonNull MockedType typeMetadata) {
17 super(typeMetadata);
18 }
19
20 @Nullable
21 final InstanceFactory redefineType() {
22
23 Class<?> classToMock = typeMetadata.getClassType();
24
25 if (MockingFilters.isSubclassOfUnmockable(classToMock)) {
26 String mockSource = typeMetadata.field == null ? "mock parameter" : "mock field";
27 throw new IllegalArgumentException(
28 classToMock + " is not mockable (" + mockSource + " \"" + typeMetadata.getName() + "\")");
29 }
30
31 Type declaredType = typeMetadata.getDeclaredType();
32 return redefineType(declaredType);
33 }
34 }