-
-
Notifications
You must be signed in to change notification settings - Fork 2.5k
/
PluginRegistry.java
148 lines (126 loc) · 5.38 KB
/
PluginRegistry.java
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
/*
* Copyright (c) 2016 Mockito contributors
* This program is made available under the terms of the MIT License.
*/
package org.mockito.internal.configuration.plugins;
import java.util.List;
import org.mockito.plugins.AnnotationEngine;
import org.mockito.plugins.DoNotMockEnforcer;
import org.mockito.plugins.InstantiatorProvider2;
import org.mockito.plugins.LocationFactory;
import org.mockito.plugins.MemberAccessor;
import org.mockito.plugins.MockMaker;
import org.mockito.plugins.MockResolver;
import org.mockito.plugins.MockitoLogger;
import org.mockito.plugins.PluginSwitch;
import org.mockito.plugins.StackTraceCleanerProvider;
class PluginRegistry {
private final PluginSwitch pluginSwitch =
new PluginLoader(new DefaultPluginSwitch()).loadPlugin(PluginSwitch.class);
private final MockMaker mockMaker =
new PluginLoader(
pluginSwitch,
DefaultMockitoPlugins.MOCK_MAKER_ALIASES.toArray(new String[0]))
.loadPlugin(MockMaker.class);
private final MemberAccessor memberAccessor =
new PluginLoader(
pluginSwitch,
DefaultMockitoPlugins.MEMBER_ACCESSOR_ALIASES.toArray(new String[0]))
.loadPlugin(MemberAccessor.class);
private final StackTraceCleanerProvider stackTraceCleanerProvider =
new PluginLoader(pluginSwitch).loadPlugin(StackTraceCleanerProvider.class);
private final InstantiatorProvider2 instantiatorProvider;
private final AnnotationEngine annotationEngine =
new PluginLoader(pluginSwitch).loadPlugin(AnnotationEngine.class);
private final MockitoLogger mockitoLogger =
new PluginLoader(pluginSwitch).loadPlugin(MockitoLogger.class);
private final List<MockResolver> mockResolvers =
new PluginLoader(pluginSwitch).loadPlugins(MockResolver.class);
private final DoNotMockEnforcer doNotMockEnforcer =
new PluginLoader(pluginSwitch).loadPlugin(DoNotMockEnforcer.class);
private final LocationFactory locationFactory =
new PluginLoader(pluginSwitch).loadPlugin(LocationFactory.class);
PluginRegistry() {
instantiatorProvider =
new PluginLoader(pluginSwitch).loadPlugin(InstantiatorProvider2.class);
}
/**
* The implementation of the stack trace cleaner
*/
StackTraceCleanerProvider getStackTraceCleanerProvider() {
// TODO we should throw some sensible exception if this is null.
return stackTraceCleanerProvider;
}
/**
* Returns the implementation of the mock maker available for the current runtime.
*
* <p>Returns {@link org.mockito.internal.creation.bytebuddy.ByteBuddyMockMaker} if no
* {@link org.mockito.plugins.MockMaker} extension exists or is visible in the current classpath.</p>
*/
MockMaker getMockMaker() {
return mockMaker;
}
/**
* Returns the implementation of the member accessor available for the current runtime.
*
* <p>Returns {@link org.mockito.internal.util.reflection.ReflectionMemberAccessor} if no
* {@link org.mockito.plugins.MockMaker} extension exists or is visible in the current classpath.</p>
*/
MemberAccessor getMemberAccessor() {
return memberAccessor;
}
/**
* Returns the instantiator provider available for the current runtime.
*
* <p>Returns {@link org.mockito.internal.creation.instance.DefaultInstantiatorProvider} if no
* {@link org.mockito.plugins.InstantiatorProvider2} extension exists or is visible in the
* current classpath.</p>
*/
InstantiatorProvider2 getInstantiatorProvider() {
return instantiatorProvider;
}
/**
* Returns the annotation engine available for the current runtime.
*
* <p>Returns {@link org.mockito.internal.configuration.InjectingAnnotationEngine} if no
* {@link org.mockito.plugins.AnnotationEngine} extension exists or is visible in the current classpath.</p>
*/
AnnotationEngine getAnnotationEngine() {
return annotationEngine;
}
/**
* Returns the logger available for the current runtime.
*
* <p>Returns {@link org.mockito.internal.util.ConsoleMockitoLogger} if no
* {@link org.mockito.plugins.MockitoLogger} extension exists or is visible in the current classpath.</p>
*/
MockitoLogger getMockitoLogger() {
return mockitoLogger;
}
/**
* Returns the DoNotMock enforce for the current runtime.
*
* <p> Returns {@link org.mockito.internal.configuration.DefaultDoNotMockEnforcer} if no
* {@link DoNotMockEnforcer} extension exists or is visible in the current classpath.</p>
*/
DoNotMockEnforcer getDoNotMockEnforcer() {
return doNotMockEnforcer;
}
/**
* Returns the location factory available for the current runtime.
*
* <p> Returns {@link org.mockito.internal.debugging.DefaultLocationFactory} if no
* {@link LocationFactory} extension exists or is visible in the current classpath.</p>
*/
LocationFactory getLocationFactory() {
return locationFactory;
}
/**
* Returns a list of available mock resolvers if any.
*
* @return A list of available mock resolvers or an empty list if none are registered.
*/
List<MockResolver> getMockResolvers() {
return mockResolvers;
}
}