Skip to content

Commit d000e63

Browse files
authored
Rework of injection strategy in the context of modules (#3608)
This fixes several reported issues with inaccessible classes and required extra reads and exports in module configuration.
1 parent 0215884 commit d000e63

File tree

20 files changed

+492
-542
lines changed

20 files changed

+492
-542
lines changed

mockito-core/src/main/java/module-info.java

Lines changed: 4 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -30,12 +30,14 @@
3030
exports org.mockito.session;
3131
exports org.mockito.stubbing;
3232
exports org.mockito.verification;
33+
exports org.mockito.internal to
34+
java.instrument;
3335
exports org.mockito.internal.configuration to
3436
org.mockito.junit.jupiter;
35-
exports org.mockito.internal.session to
36-
org.mockito.junit.jupiter;
3737
exports org.mockito.internal.configuration.plugins to
3838
org.mockito.junit.jupiter;
39+
exports org.mockito.internal.session to
40+
org.mockito.junit.jupiter;
3941
exports org.mockito.internal.util to
4042
org.mockito.junit.jupiter;
4143
}

mockito-core/src/main/java/org/mockito/internal/creation/bytebuddy/ByteBuddyCrossClassLoaderSerializationSupport.java

Lines changed: 5 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -4,7 +4,7 @@
44
*/
55
package org.mockito.internal.creation.bytebuddy;
66

7-
import static org.mockito.internal.creation.bytebuddy.MockMethodInterceptor.ForWriteReplace;
7+
import static org.mockito.internal.creation.bytebuddy.access.MockMethodInterceptor.ForWriteReplace;
88
import static org.mockito.internal.util.StringUtil.join;
99

1010
import java.io.ByteArrayInputStream;
@@ -23,6 +23,8 @@
2323

2424
import org.mockito.exceptions.base.MockitoSerializationIssue;
2525
import org.mockito.internal.configuration.plugins.Plugins;
26+
import org.mockito.internal.creation.bytebuddy.access.MockAccess;
27+
import org.mockito.internal.creation.bytebuddy.access.MockMethodInterceptor;
2628
import org.mockito.internal.creation.settings.CreationSettings;
2729
import org.mockito.internal.util.MockUtil;
2830
import org.mockito.mock.MockCreationSettings;
@@ -53,11 +55,11 @@
5355
* TODO check the class is mockable in the deserialization side
5456
*
5557
* @see SubclassByteBuddyMockMaker
56-
* @see org.mockito.internal.creation.bytebuddy.MockMethodInterceptor
58+
* @see MockMethodInterceptor
5759
* @author Brice Dutheil
5860
* @since 1.10.0
5961
*/
60-
class ByteBuddyCrossClassLoaderSerializationSupport implements Serializable {
62+
public class ByteBuddyCrossClassLoaderSerializationSupport implements Serializable {
6163
private static final long serialVersionUID = 7411152578314420778L;
6264
private static final String MOCKITO_PROXY_MARKER = "ByteBuddyMockitoProxyMarker";
6365
private boolean instanceLocalCurrentlySerializingFlag = false;

mockito-core/src/main/java/org/mockito/internal/creation/bytebuddy/InlineBytecodeGenerator.java

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -26,6 +26,7 @@
2626
import net.bytebuddy.utility.RandomString;
2727
import org.mockito.exceptions.base.MockitoException;
2828
import org.mockito.internal.SuppressSignatureCheck;
29+
import org.mockito.internal.creation.bytebuddy.access.MockMethodInterceptor;
2930
import org.mockito.internal.creation.bytebuddy.inject.MockMethodDispatcher;
3031
import org.mockito.internal.util.concurrent.DetachedThreadLocal;
3132
import org.mockito.internal.util.concurrent.WeakConcurrentMap;
@@ -100,6 +101,7 @@ public InlineBytecodeGenerator(
100101
subclassEngine =
101102
new TypeCachingBytecodeGenerator(
102103
new SubclassBytecodeGenerator(
104+
ModuleHandler.make(instrumentation),
103105
withDefaultConfiguration()
104106
.withBinders(
105107
of(MockMethodAdvice.Identifier.class, identifier))

mockito-core/src/main/java/org/mockito/internal/creation/bytebuddy/InlineDelegateByteBuddyMockMaker.java

Lines changed: 6 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -13,6 +13,8 @@
1313
import org.mockito.internal.PremainAttachAccess;
1414
import org.mockito.internal.SuppressSignatureCheck;
1515
import org.mockito.internal.configuration.plugins.Plugins;
16+
import org.mockito.internal.creation.bytebuddy.access.MockAccess;
17+
import org.mockito.internal.creation.bytebuddy.access.MockMethodInterceptor;
1618
import org.mockito.internal.creation.instance.ConstructorInstantiator;
1719
import org.mockito.internal.framework.DisabledMockHandler;
1820
import org.mockito.internal.util.Platform;
@@ -506,7 +508,7 @@ private <T> RuntimeException prettifyFailure(
506508
}
507509

508510
@Override
509-
public MockHandler getHandler(Object mock) {
511+
public MockHandler<?> getHandler(Object mock) {
510512
MockMethodInterceptor interceptor;
511513
if (mock instanceof Class<?>) {
512514
Map<Class<?>, MockMethodInterceptor> interceptors = mockedStatics.get();
@@ -517,7 +519,7 @@ public MockHandler getHandler(Object mock) {
517519
if (interceptor == null) {
518520
return null;
519521
} else {
520-
return interceptor.handler;
522+
return interceptor.getMockHandler();
521523
}
522524
}
523525

@@ -729,13 +731,13 @@ private static class InlineStaticMockControl<T> implements StaticMockControl<T>
729731

730732
private final MockCreationSettings<T> settings;
731733

732-
private final MockHandler handler;
734+
private final MockHandler<?> handler;
733735

734736
private InlineStaticMockControl(
735737
Class<T> type,
736738
Map<Class<?>, MockMethodInterceptor> interceptors,
737739
MockCreationSettings<T> settings,
738-
MockHandler handler) {
740+
MockHandler<?> handler) {
739741
this.type = type;
740742
this.interceptors = interceptors;
741743
this.settings = settings;

mockito-core/src/main/java/org/mockito/internal/creation/bytebuddy/MockMethodAdvice.java

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -50,6 +50,8 @@
5050

5151
import org.mockito.exceptions.base.MockitoException;
5252
import org.mockito.internal.configuration.plugins.Plugins;
53+
import org.mockito.internal.creation.bytebuddy.access.MockAccess;
54+
import org.mockito.internal.creation.bytebuddy.access.MockMethodInterceptor;
5355
import org.mockito.internal.creation.bytebuddy.inject.MockMethodDispatcher;
5456
import org.mockito.internal.debugging.LocationFactory;
5557
import org.mockito.internal.exceptions.stacktrace.ConditionalStackTraceFilter;

0 commit comments

Comments
 (0)
pFad - Phonifier reborn

Pfad - The Proxy pFad of © 2024 Garber Painting. All rights reserved.

Note: This service is not intended for secure transactions such as banking, social media, email, or purchasing. Use at your own risk. We assume no liability whatsoever for broken pages.


Alternative Proxies:

Alternative Proxy

pFad Proxy

pFad v3 Proxy

pFad v4 Proxy