diff --git a/agent/core/src/test/java/org/apache/shardingsphere/agent/core/config/loader/PluginConfigurationLoaderTest.java b/agent/core/src/test/java/org/apache/shardingsphere/agent/core/config/loader/PluginConfigurationLoaderTest.java index fed9015d75916..01780be94c225 100644 --- a/agent/core/src/test/java/org/apache/shardingsphere/agent/core/config/loader/PluginConfigurationLoaderTest.java +++ b/agent/core/src/test/java/org/apache/shardingsphere/agent/core/config/loader/PluginConfigurationLoaderTest.java @@ -19,7 +19,7 @@ import org.apache.shardingsphere.agent.core.path.AgentPathBuilder; import org.junit.Test; -import org.mockito.internal.util.reflection.InstanceField; +import org.mockito.internal.configuration.plugins.Plugins; import java.io.File; import java.io.IOException; @@ -34,8 +34,8 @@ public final class PluginConfigurationLoaderTest { private static final String DEFAULT_CONFIG_PATH = "/conf/agent.yaml"; @Test - public void assertLoad() throws IOException, NoSuchFieldException { - new InstanceField(AgentPathBuilder.class.getDeclaredField("agentPath"), AgentPathBuilder.class).set(new File(getResourceUrl())); + public void assertLoad() throws IOException, ReflectiveOperationException { + Plugins.getMemberAccessor().set(AgentPathBuilder.class.getDeclaredField("agentPath"), AgentPathBuilder.class, new File(getResourceUrl())); assertNotNull(PluginConfigurationLoader.load()); } diff --git a/agent/plugins/tracing/test/src/main/java/org/apache/shardingsphere/agent/plugin/tracing/advice/AbstractJDBCExecutorCallbackAdviceTest.java b/agent/plugins/tracing/test/src/main/java/org/apache/shardingsphere/agent/plugin/tracing/advice/AbstractJDBCExecutorCallbackAdviceTest.java index d4c07894bc1e0..aecc9faaa517f 100644 --- a/agent/plugins/tracing/test/src/main/java/org/apache/shardingsphere/agent/plugin/tracing/advice/AbstractJDBCExecutorCallbackAdviceTest.java +++ b/agent/plugins/tracing/test/src/main/java/org/apache/shardingsphere/agent/plugin/tracing/advice/AbstractJDBCExecutorCallbackAdviceTest.java @@ -30,8 +30,7 @@ import org.apache.shardingsphere.infra.executor.sql.execute.engine.driver.jdbc.JDBCExecutionUnit; import org.apache.shardingsphere.infra.executor.sql.execute.engine.driver.jdbc.JDBCExecutorCallback; import org.junit.runner.RunWith; -import org.mockito.internal.util.reflection.FieldReader; -import org.mockito.internal.util.reflection.InstanceField; +import org.mockito.internal.configuration.plugins.Plugins; import java.sql.Connection; import java.sql.DatabaseMetaData; @@ -82,12 +81,12 @@ public void prepare() { return invocation.callRealMethod(); } }); - Map cachedDatasourceMetaData = - (Map) new FieldReader(mockedJDBCExecutorCallback, JDBCExecutorCallback.class.getDeclaredField("CACHED_DATASOURCE_METADATA")).read(); + Map cachedDatasourceMetaData = (Map) Plugins.getMemberAccessor() + .get(JDBCExecutorCallback.class.getDeclaredField("CACHED_DATASOURCE_METADATA"), mockedJDBCExecutorCallback); cachedDatasourceMetaData.put("mock_url", new MockDataSourceMetaData()); Map storageTypes = new LinkedHashMap<>(1, 1); storageTypes.put("mock.db", new MySQLDatabaseType()); - new InstanceField(JDBCExecutorCallback.class.getDeclaredField("storageTypes"), mockedJDBCExecutorCallback).set(storageTypes); + Plugins.getMemberAccessor().set(JDBCExecutorCallback.class.getDeclaredField("storageTypes"), mockedJDBCExecutorCallback, storageTypes); targetObject = (TargetAdviceObject) mockedJDBCExecutorCallback; } } diff --git a/agent/plugins/tracing/type/jaeger/src/test/java/org/apache/shardingsphere/agent/plugin/tracing/jaeger/JaegerTracingPluginBootServiceTest.java b/agent/plugins/tracing/type/jaeger/src/test/java/org/apache/shardingsphere/agent/plugin/tracing/jaeger/JaegerTracingPluginBootServiceTest.java index 4ecff6d11a0d6..3de061e55269f 100644 --- a/agent/plugins/tracing/type/jaeger/src/test/java/org/apache/shardingsphere/agent/plugin/tracing/jaeger/JaegerTracingPluginBootServiceTest.java +++ b/agent/plugins/tracing/type/jaeger/src/test/java/org/apache/shardingsphere/agent/plugin/tracing/jaeger/JaegerTracingPluginBootServiceTest.java @@ -22,7 +22,7 @@ import org.apache.shardingsphere.agent.config.plugin.PluginConfiguration; import org.junit.After; import org.junit.Test; -import org.mockito.internal.util.reflection.InstanceField; +import org.mockito.internal.configuration.plugins.Plugins; import java.util.Properties; @@ -33,9 +33,9 @@ public final class JaegerTracingPluginBootServiceTest { private final JaegerTracingPluginBootService pluginBootService = new JaegerTracingPluginBootService(); @After - public void close() throws NoSuchFieldException { + public void close() throws ReflectiveOperationException { pluginBootService.close(); - new InstanceField(GlobalTracer.class.getDeclaredField("tracer"), GlobalTracer.class).set(NoopTracerFactory.create()); + Plugins.getMemberAccessor().set(GlobalTracer.class.getDeclaredField("tracer"), GlobalTracer.class, NoopTracerFactory.create()); } @Test diff --git a/agent/plugins/tracing/type/jaeger/src/test/java/org/apache/shardingsphere/agent/plugin/tracing/jaeger/collector/JaegerCollector.java b/agent/plugins/tracing/type/jaeger/src/test/java/org/apache/shardingsphere/agent/plugin/tracing/jaeger/collector/JaegerCollector.java index 024623b5aabcf..e298a58bddeee 100644 --- a/agent/plugins/tracing/type/jaeger/src/test/java/org/apache/shardingsphere/agent/plugin/tracing/jaeger/collector/JaegerCollector.java +++ b/agent/plugins/tracing/type/jaeger/src/test/java/org/apache/shardingsphere/agent/plugin/tracing/jaeger/collector/JaegerCollector.java @@ -23,11 +23,11 @@ import lombok.SneakyThrows; import org.apache.shardingsphere.agent.plugin.tracing.rule.CollectorRule; import org.junit.rules.ExternalResource; -import org.mockito.internal.util.reflection.FieldReader; +import org.mockito.internal.configuration.plugins.Plugins; import java.util.List; -public class JaegerCollector extends ExternalResource implements CollectorRule { +public final class JaegerCollector extends ExternalResource implements CollectorRule { private MockTracer tracer; @@ -37,8 +37,7 @@ protected void before() { if (!GlobalTracer.isRegistered()) { GlobalTracer.register(new MockTracer()); } - FieldReader fieldReader = new FieldReader(GlobalTracer.get(), GlobalTracer.class.getDeclaredField("tracer")); - tracer = (MockTracer) fieldReader.read(); + tracer = (MockTracer) Plugins.getMemberAccessor().get(GlobalTracer.class.getDeclaredField("tracer"), GlobalTracer.get()); } /** diff --git a/agent/plugins/tracing/type/opentracing/src/test/java/org/apache/shardingsphere/agent/plugin/tracing/opentracing/advice/CommandExecutorTaskAdviceTest.java b/agent/plugins/tracing/type/opentracing/src/test/java/org/apache/shardingsphere/agent/plugin/tracing/opentracing/advice/CommandExecutorTaskAdviceTest.java index 102553ba7355f..c675344b384de 100644 --- a/agent/plugins/tracing/type/opentracing/src/test/java/org/apache/shardingsphere/agent/plugin/tracing/opentracing/advice/CommandExecutorTaskAdviceTest.java +++ b/agent/plugins/tracing/type/opentracing/src/test/java/org/apache/shardingsphere/agent/plugin/tracing/opentracing/advice/CommandExecutorTaskAdviceTest.java @@ -28,7 +28,7 @@ import org.junit.Before; import org.junit.BeforeClass; import org.junit.Test; -import org.mockito.internal.util.reflection.FieldReader; +import org.mockito.internal.configuration.plugins.Plugins; import java.io.IOException; import java.lang.reflect.Method; @@ -36,8 +36,8 @@ import java.util.Map; import static org.hamcrest.CoreMatchers.is; -import static org.junit.Assert.assertNull; import static org.hamcrest.MatcherAssert.assertThat; +import static org.junit.Assert.assertNull; import static org.junit.Assert.assertTrue; public final class CommandExecutorTaskAdviceTest { @@ -53,8 +53,7 @@ public static void setup() throws ReflectiveOperationException { if (!GlobalTracer.isRegistered()) { GlobalTracer.register(new MockTracer()); } - FieldReader fieldReader = new FieldReader(GlobalTracer.get(), GlobalTracer.class.getDeclaredField("tracer")); - tracer = (MockTracer) fieldReader.read(); + tracer = (MockTracer) Plugins.getMemberAccessor().get(GlobalTracer.class.getDeclaredField("tracer"), GlobalTracer.get()); executeCommandMethod = CommandExecutorTask.class.getDeclaredMethod("executeCommand", ChannelHandlerContext.class, PacketPayload.class); } diff --git a/agent/plugins/tracing/type/opentracing/src/test/java/org/apache/shardingsphere/agent/plugin/tracing/opentracing/advice/JDBCExecutorCallbackAdviceTest.java b/agent/plugins/tracing/type/opentracing/src/test/java/org/apache/shardingsphere/agent/plugin/tracing/opentracing/advice/JDBCExecutorCallbackAdviceTest.java index 1c0cec079ed04..92d48e4dbac6f 100644 --- a/agent/plugins/tracing/type/opentracing/src/test/java/org/apache/shardingsphere/agent/plugin/tracing/opentracing/advice/JDBCExecutorCallbackAdviceTest.java +++ b/agent/plugins/tracing/type/opentracing/src/test/java/org/apache/shardingsphere/agent/plugin/tracing/opentracing/advice/JDBCExecutorCallbackAdviceTest.java @@ -29,7 +29,7 @@ import org.junit.Before; import org.junit.BeforeClass; import org.junit.Test; -import org.mockito.internal.util.reflection.FieldReader; +import org.mockito.internal.configuration.plugins.Plugins; import java.io.IOException; import java.lang.reflect.Method; @@ -56,8 +56,7 @@ public static void setup() throws ReflectiveOperationException { if (!GlobalTracer.isRegistered()) { GlobalTracer.register(new MockTracer()); } - FieldReader fieldReader = new FieldReader(GlobalTracer.get(), GlobalTracer.class.getDeclaredField("tracer")); - tracer = (MockTracer) fieldReader.read(); + tracer = (MockTracer) Plugins.getMemberAccessor().get(GlobalTracer.class.getDeclaredField("tracer"), GlobalTracer.get()); executeMethod = JDBCExecutorCallback.class.getDeclaredMethod("execute", JDBCExecutionUnit.class, boolean.class, Map.class); } diff --git a/agent/plugins/tracing/type/opentracing/src/test/java/org/apache/shardingsphere/agent/plugin/tracing/opentracing/advice/SQLParserEngineAdviceTest.java b/agent/plugins/tracing/type/opentracing/src/test/java/org/apache/shardingsphere/agent/plugin/tracing/opentracing/advice/SQLParserEngineAdviceTest.java index 301fa169b19ac..9473b6c0b6fba 100644 --- a/agent/plugins/tracing/type/opentracing/src/test/java/org/apache/shardingsphere/agent/plugin/tracing/opentracing/advice/SQLParserEngineAdviceTest.java +++ b/agent/plugins/tracing/type/opentracing/src/test/java/org/apache/shardingsphere/agent/plugin/tracing/opentracing/advice/SQLParserEngineAdviceTest.java @@ -26,7 +26,7 @@ import org.junit.Before; import org.junit.BeforeClass; import org.junit.Test; -import org.mockito.internal.util.reflection.FieldReader; +import org.mockito.internal.configuration.plugins.Plugins; import java.io.IOException; import java.lang.reflect.Method; @@ -46,12 +46,11 @@ public final class SQLParserEngineAdviceTest { private static Method parserMethod; @BeforeClass - public static void setup() throws NoSuchMethodException, NoSuchFieldException { + public static void setup() throws ReflectiveOperationException { if (!GlobalTracer.isRegistered()) { GlobalTracer.register(new MockTracer()); } - FieldReader fieldReader = new FieldReader(GlobalTracer.get(), GlobalTracer.class.getDeclaredField("tracer")); - tracer = (MockTracer) fieldReader.read(); + tracer = (MockTracer) Plugins.getMemberAccessor().get(GlobalTracer.class.getDeclaredField("tracer"), GlobalTracer.get()); parserMethod = ShardingSphereSQLParserEngine.class.getDeclaredMethod("parse", String.class, boolean.class); } diff --git a/agent/plugins/tracing/type/zipkin/src/test/java/org/apache/shardingsphere/agent/plugin/tracing/zipkin/ZipkinTracingPluginBootServiceTest.java b/agent/plugins/tracing/type/zipkin/src/test/java/org/apache/shardingsphere/agent/plugin/tracing/zipkin/ZipkinTracingPluginBootServiceTest.java index 4069dc06ddda8..d81566ce51e27 100644 --- a/agent/plugins/tracing/type/zipkin/src/test/java/org/apache/shardingsphere/agent/plugin/tracing/zipkin/ZipkinTracingPluginBootServiceTest.java +++ b/agent/plugins/tracing/type/zipkin/src/test/java/org/apache/shardingsphere/agent/plugin/tracing/zipkin/ZipkinTracingPluginBootServiceTest.java @@ -21,7 +21,7 @@ import org.apache.shardingsphere.agent.config.plugin.PluginConfiguration; import org.junit.After; import org.junit.Test; -import org.mockito.internal.util.reflection.FieldReader; +import org.mockito.internal.configuration.plugins.Plugins; import java.util.Properties; @@ -39,7 +39,7 @@ public void close() { @Test public void assertStart() throws ReflectiveOperationException { pluginBootService.start(new PluginConfiguration("localhost", 9441, "", new Properties()), true); - Tracing tracing = (Tracing) new FieldReader(pluginBootService, ZipkinTracingPluginBootService.class.getDeclaredField("tracing")).read(); + Tracing tracing = (Tracing) Plugins.getMemberAccessor().get(ZipkinTracingPluginBootService.class.getDeclaredField("tracing"), pluginBootService); assertNotNull(tracing.tracer()); } } diff --git a/features/encrypt/core/src/test/java/org/apache/shardingsphere/encrypt/rewrite/token/EncryptTokenGenerateBuilderTest.java b/features/encrypt/core/src/test/java/org/apache/shardingsphere/encrypt/rewrite/token/EncryptTokenGenerateBuilderTest.java index 9d94687ad82ea..6e6ff8b1821d8 100644 --- a/features/encrypt/core/src/test/java/org/apache/shardingsphere/encrypt/rewrite/token/EncryptTokenGenerateBuilderTest.java +++ b/features/encrypt/core/src/test/java/org/apache/shardingsphere/encrypt/rewrite/token/EncryptTokenGenerateBuilderTest.java @@ -17,6 +17,7 @@ package org.apache.shardingsphere.encrypt.rewrite.token; +import lombok.SneakyThrows; import org.apache.shardingsphere.encrypt.rewrite.aware.EncryptRuleAware; import org.apache.shardingsphere.encrypt.rewrite.token.generator.EncryptOrderByItemTokenGenerator; import org.apache.shardingsphere.encrypt.rewrite.token.generator.EncryptProjectionTokenGenerator; @@ -30,7 +31,7 @@ import org.junit.runner.RunWith; import org.mockito.Answers; import org.mockito.Mock; -import org.mockito.internal.util.reflection.FieldReader; +import org.mockito.internal.configuration.plugins.Plugins; import org.mockito.junit.MockitoJUnitRunner; import java.lang.reflect.Field; @@ -83,8 +84,9 @@ private void assertSQLTokenGenerator(final SQLTokenGenerator sqlTokenGenerator) } } + @SneakyThrows(ReflectiveOperationException.class) private void assertField(final SQLTokenGenerator sqlTokenGenerator, final Object filedInstance, final String fieldName) { - assertThat(new FieldReader(sqlTokenGenerator, findField(sqlTokenGenerator.getClass(), fieldName, filedInstance.getClass())).read(), is(filedInstance)); + assertThat(Plugins.getMemberAccessor().get(findField(sqlTokenGenerator.getClass(), fieldName, filedInstance.getClass()), sqlTokenGenerator), is(filedInstance)); } private Field findField(final Class clazz, final String fieldName, final Class fieldType) { diff --git a/features/readwrite-splitting/core/src/test/java/org/apache/shardingsphere/readwritesplitting/algorithm/loadbalance/FixedReplicaWeightReadQueryLoadBalanceAlgorithmTest.java b/features/readwrite-splitting/core/src/test/java/org/apache/shardingsphere/readwritesplitting/algorithm/loadbalance/FixedReplicaWeightReadQueryLoadBalanceAlgorithmTest.java index d7a0c5f59c343..7775adb13f138 100644 --- a/features/readwrite-splitting/core/src/test/java/org/apache/shardingsphere/readwritesplitting/algorithm/loadbalance/FixedReplicaWeightReadQueryLoadBalanceAlgorithmTest.java +++ b/features/readwrite-splitting/core/src/test/java/org/apache/shardingsphere/readwritesplitting/algorithm/loadbalance/FixedReplicaWeightReadQueryLoadBalanceAlgorithmTest.java @@ -23,7 +23,7 @@ import org.junit.After; import org.junit.Before; import org.junit.Test; -import org.mockito.internal.util.reflection.FieldReader; +import org.mockito.internal.configuration.plugins.Plugins; import java.util.Arrays; import java.util.Collections; @@ -41,7 +41,8 @@ public final class FixedReplicaWeightReadQueryLoadBalanceAlgorithmTest { @Before @After public void reset() throws NoSuchFieldException, IllegalAccessException { - ((Map) new FieldReader(FixedReplicaWeightReadQueryLoadBalanceAlgorithm.class, FixedReplicaWeightReadQueryLoadBalanceAlgorithm.class.getDeclaredField("WEIGHT_MAP")).read()).clear(); + ((Map) Plugins.getMemberAccessor().get( + FixedReplicaWeightReadQueryLoadBalanceAlgorithm.class.getDeclaredField("WEIGHT_MAP"), FixedReplicaWeightReadQueryLoadBalanceAlgorithm.class)).clear(); } @Test diff --git a/features/readwrite-splitting/core/src/test/java/org/apache/shardingsphere/readwritesplitting/algorithm/loadbalance/TransactionWeightReadQueryLoadBalanceAlgorithmTest.java b/features/readwrite-splitting/core/src/test/java/org/apache/shardingsphere/readwritesplitting/algorithm/loadbalance/TransactionWeightReadQueryLoadBalanceAlgorithmTest.java index 392fccf12e6aa..acfe7767f4b99 100644 --- a/features/readwrite-splitting/core/src/test/java/org/apache/shardingsphere/readwritesplitting/algorithm/loadbalance/TransactionWeightReadQueryLoadBalanceAlgorithmTest.java +++ b/features/readwrite-splitting/core/src/test/java/org/apache/shardingsphere/readwritesplitting/algorithm/loadbalance/TransactionWeightReadQueryLoadBalanceAlgorithmTest.java @@ -23,7 +23,7 @@ import org.junit.After; import org.junit.Before; import org.junit.Test; -import org.mockito.internal.util.reflection.FieldReader; +import org.mockito.internal.configuration.plugins.Plugins; import java.util.Arrays; import java.util.Collections; @@ -41,7 +41,8 @@ public final class TransactionWeightReadQueryLoadBalanceAlgorithmTest { @Before @After public void reset() throws NoSuchFieldException, IllegalAccessException { - ((Map) new FieldReader(TransactionWeightReadQueryLoadBalanceAlgorithm.class, TransactionWeightReadQueryLoadBalanceAlgorithm.class.getDeclaredField("WEIGHT_MAP")).read()).clear(); + ((Map) Plugins.getMemberAccessor() + .get(TransactionWeightReadQueryLoadBalanceAlgorithm.class.getDeclaredField("WEIGHT_MAP"), TransactionWeightReadQueryLoadBalanceAlgorithm.class)).clear(); } @Test diff --git a/features/sharding/core/src/test/java/org/apache/shardingsphere/sharding/algorithm/keygen/SnowflakeKeyGenerateAlgorithmTest.java b/features/sharding/core/src/test/java/org/apache/shardingsphere/sharding/algorithm/keygen/SnowflakeKeyGenerateAlgorithmTest.java index 67f929ba3499c..494c1b1346723 100644 --- a/features/sharding/core/src/test/java/org/apache/shardingsphere/sharding/algorithm/keygen/SnowflakeKeyGenerateAlgorithmTest.java +++ b/features/sharding/core/src/test/java/org/apache/shardingsphere/sharding/algorithm/keygen/SnowflakeKeyGenerateAlgorithmTest.java @@ -31,8 +31,7 @@ import org.apache.shardingsphere.sharding.factory.KeyGenerateAlgorithmFactory; import org.apache.shardingsphere.sharding.spi.KeyGenerateAlgorithm; import org.junit.Test; -import org.mockito.internal.util.reflection.FieldReader; -import org.mockito.internal.util.reflection.InstanceField; +import org.mockito.internal.configuration.plugins.Plugins; import java.util.ArrayList; import java.util.Arrays; @@ -190,14 +189,14 @@ public void assertGenerateKeyBeyondMaxSequencePerMilliSecond() { assertThat(actual, is(expected)); } - @SneakyThrows(NoSuchFieldException.class) + @SneakyThrows(ReflectiveOperationException.class) private void setLastMilliseconds(final KeyGenerateAlgorithm algorithm, final Number value) { - new InstanceField(SnowflakeKeyGenerateAlgorithm.class.getDeclaredField("lastMilliseconds"), algorithm).set(value); + Plugins.getMemberAccessor().set(SnowflakeKeyGenerateAlgorithm.class.getDeclaredField("lastMilliseconds"), algorithm, value); } - @SneakyThrows(NoSuchFieldException.class) + @SneakyThrows(ReflectiveOperationException.class) private void setSequence(final KeyGenerateAlgorithm algorithm, final Number value) { - new InstanceField(SnowflakeKeyGenerateAlgorithm.class.getDeclaredField("sequence"), algorithm).set(value); + Plugins.getMemberAccessor().set(SnowflakeKeyGenerateAlgorithm.class.getDeclaredField("sequence"), algorithm, value); } @Test(expected = IllegalArgumentException.class) @@ -233,10 +232,10 @@ public void assertSetMaxVibrationOffsetFailureWhenOutOfRange() { } @Test - public void assertSetMaxTolerateTimeDifferenceMilliseconds() throws NoSuchFieldException { + public void assertSetMaxTolerateTimeDifferenceMilliseconds() throws ReflectiveOperationException { Properties props = new Properties(); props.setProperty("max-tolerate-time-difference-milliseconds", String.valueOf(1)); KeyGenerateAlgorithm algorithm = KeyGenerateAlgorithmFactory.newInstance(new AlgorithmConfiguration("SNOWFLAKE", props)); - assertThat(((Properties) new FieldReader(algorithm, algorithm.getClass().getDeclaredField("props")).read()).getProperty("max-tolerate-time-difference-milliseconds"), is("1")); + assertThat(((Properties) Plugins.getMemberAccessor().get(algorithm.getClass().getDeclaredField("props"), algorithm)).getProperty("max-tolerate-time-difference-milliseconds"), is("1")); } } diff --git a/features/sharding/core/src/test/java/org/apache/shardingsphere/sharding/rewrite/token/pojo/ShardingTokenGenerateBuilderTest.java b/features/sharding/core/src/test/java/org/apache/shardingsphere/sharding/rewrite/token/pojo/ShardingTokenGenerateBuilderTest.java index 19859ea31aea5..3af097ff70019 100644 --- a/features/sharding/core/src/test/java/org/apache/shardingsphere/sharding/rewrite/token/pojo/ShardingTokenGenerateBuilderTest.java +++ b/features/sharding/core/src/test/java/org/apache/shardingsphere/sharding/rewrite/token/pojo/ShardingTokenGenerateBuilderTest.java @@ -29,7 +29,7 @@ import org.apache.shardingsphere.sharding.rule.aware.ShardingRuleAware; import org.junit.Before; import org.junit.Test; -import org.mockito.internal.util.reflection.FieldReader; +import org.mockito.internal.configuration.plugins.Plugins; import java.util.Collection; import java.util.Iterator; @@ -86,6 +86,6 @@ private void assertSqlTokenGenerator(final SQLTokenGenerator sqlTokenGenerator) } private void assertField(final SQLTokenGenerator sqlTokenGenerator, final Object filedInstance, final String fieldName) throws Exception { - assertThat(new FieldReader(sqlTokenGenerator, sqlTokenGenerator.getClass().getDeclaredField(fieldName)).read(), is(filedInstance)); + assertThat(Plugins.getMemberAccessor().get(sqlTokenGenerator.getClass().getDeclaredField(fieldName), sqlTokenGenerator), is(filedInstance)); } } diff --git a/infra/common/src/test/java/org/apache/shardingsphere/infra/datasource/pool/creator/type/DBCPDataSourcePoolCreatorTest.java b/infra/common/src/test/java/org/apache/shardingsphere/infra/datasource/pool/creator/type/DBCPDataSourcePoolCreatorTest.java index d75bd1949b6d7..74175bcac3479 100644 --- a/infra/common/src/test/java/org/apache/shardingsphere/infra/datasource/pool/creator/type/DBCPDataSourcePoolCreatorTest.java +++ b/infra/common/src/test/java/org/apache/shardingsphere/infra/datasource/pool/creator/type/DBCPDataSourcePoolCreatorTest.java @@ -23,7 +23,7 @@ import org.apache.shardingsphere.infra.datasource.props.DataSourceProperties; import org.apache.shardingsphere.test.fixture.jdbc.MockedDataSource; import org.junit.Test; -import org.mockito.internal.util.reflection.FieldReader; +import org.mockito.internal.configuration.plugins.Plugins; import java.util.HashMap; import java.util.Map; @@ -60,8 +60,8 @@ private Properties createJdbcUrlProperties() { return result; } - @SneakyThrows(NoSuchFieldException.class) + @SneakyThrows(ReflectiveOperationException.class) private Properties getConnectionProperties(final BasicDataSource actual) { - return (Properties) new FieldReader(actual, BasicDataSource.class.getDeclaredField("connectionProperties")).read(); + return (Properties) Plugins.getMemberAccessor().get(BasicDataSource.class.getDeclaredField("connectionProperties"), actual); } } diff --git a/infra/executor/src/test/java/org/apache/shardingsphere/infra/executor/sql/execute/engine/ExecutorExceptionHandlerTest.java b/infra/executor/src/test/java/org/apache/shardingsphere/infra/executor/sql/execute/engine/ExecutorExceptionHandlerTest.java index 75d9340e51ded..d3545b9c27ede 100644 --- a/infra/executor/src/test/java/org/apache/shardingsphere/infra/executor/sql/execute/engine/ExecutorExceptionHandlerTest.java +++ b/infra/executor/src/test/java/org/apache/shardingsphere/infra/executor/sql/execute/engine/ExecutorExceptionHandlerTest.java @@ -19,7 +19,7 @@ import org.junit.After; import org.junit.Test; -import org.mockito.internal.util.reflection.FieldReader; +import org.mockito.internal.configuration.plugins.Plugins; import java.sql.SQLException; @@ -30,7 +30,7 @@ public final class ExecutorExceptionHandlerTest { @After public void tearDown() throws NoSuchFieldException, IllegalAccessException { - ((ThreadLocal) new FieldReader(SQLExecutorExceptionHandler.class, SQLExecutorExceptionHandler.class.getDeclaredField("IS_EXCEPTION_THROWN")).read()).remove(); + ((ThreadLocal) Plugins.getMemberAccessor().get(SQLExecutorExceptionHandler.class.getDeclaredField("IS_EXCEPTION_THROWN"), SQLExecutorExceptionHandler.class)).remove(); } @Test(expected = SQLException.class) diff --git a/infra/executor/src/test/java/org/apache/shardingsphere/infra/executor/sql/execute/engine/jdbc/JDBCExecutorCallbackTest.java b/infra/executor/src/test/java/org/apache/shardingsphere/infra/executor/sql/execute/engine/jdbc/JDBCExecutorCallbackTest.java index ebafaa0cfceb1..d719823b64d87 100644 --- a/infra/executor/src/test/java/org/apache/shardingsphere/infra/executor/sql/execute/engine/jdbc/JDBCExecutorCallbackTest.java +++ b/infra/executor/src/test/java/org/apache/shardingsphere/infra/executor/sql/execute/engine/jdbc/JDBCExecutorCallbackTest.java @@ -33,7 +33,7 @@ import org.junit.Test; import org.junit.runner.RunWith; import org.mockito.Mock; -import org.mockito.internal.util.reflection.FieldReader; +import org.mockito.internal.configuration.plugins.Plugins; import org.mockito.junit.MockitoJUnitRunner; import java.sql.Connection; @@ -92,8 +92,8 @@ protected Optional getSaneResult(final SQLStatement sqlStatement, final return Optional.empty(); } }; - Map cachedDataSourceMetaData = (Map) new FieldReader( - jdbcExecutorCallback, JDBCExecutorCallback.class.getDeclaredField("CACHED_DATASOURCE_METADATA")).read(); + Map cachedDataSourceMetaData = (Map) Plugins.getMemberAccessor() + .get(JDBCExecutorCallback.class.getDeclaredField("CACHED_DATASOURCE_METADATA"), jdbcExecutorCallback); jdbcExecutorCallback.execute(units, true, Collections.emptyMap()); assertThat(cachedDataSourceMetaData.size(), is(1)); jdbcExecutorCallback.execute(units, true, Collections.emptyMap()); diff --git a/infra/parser/src/test/java/org/apache/shardingsphere/infra/parser/cache/SQLStatementCacheLoaderTest.java b/infra/parser/src/test/java/org/apache/shardingsphere/infra/parser/cache/SQLStatementCacheLoaderTest.java index ecaf723814da0..bf49f1929955a 100644 --- a/infra/parser/src/test/java/org/apache/shardingsphere/infra/parser/cache/SQLStatementCacheLoaderTest.java +++ b/infra/parser/src/test/java/org/apache/shardingsphere/infra/parser/cache/SQLStatementCacheLoaderTest.java @@ -21,7 +21,7 @@ import org.apache.shardingsphere.sql.parser.api.CacheOption; import org.apache.shardingsphere.sql.parser.sql.common.statement.SQLStatement; import org.junit.Test; -import org.mockito.internal.util.reflection.InstanceField; +import org.mockito.internal.configuration.plugins.Plugins; import static org.hamcrest.CoreMatchers.isA; import static org.hamcrest.MatcherAssert.assertThat; @@ -36,7 +36,7 @@ public final class SQLStatementCacheLoaderTest { public void assertSQLStatementCacheLoad() throws ReflectiveOperationException { SQLStatementCacheLoader sqlStatementCacheLoader = new SQLStatementCacheLoader("MySQL", new CacheOption(128, 1024L), false); SQLStatementParserExecutor executor = mock(SQLStatementParserExecutor.class, RETURNS_DEEP_STUBS); - new InstanceField(sqlStatementCacheLoader.getClass().getDeclaredField("sqlStatementParserExecutor"), sqlStatementCacheLoader).set(executor); + Plugins.getMemberAccessor().set(sqlStatementCacheLoader.getClass().getDeclaredField("sqlStatementParserExecutor"), sqlStatementCacheLoader, executor); assertThat(sqlStatementCacheLoader.load(SQL), isA(SQLStatement.class)); } } diff --git a/infra/rewrite/src/test/java/org/apache/shardingsphere/infra/rewrite/sql/token/generator/SQLTokenGeneratorsTest.java b/infra/rewrite/src/test/java/org/apache/shardingsphere/infra/rewrite/sql/token/generator/SQLTokenGeneratorsTest.java index 2bb5658edbaa1..b798d286d0511 100644 --- a/infra/rewrite/src/test/java/org/apache/shardingsphere/infra/rewrite/sql/token/generator/SQLTokenGeneratorsTest.java +++ b/infra/rewrite/src/test/java/org/apache/shardingsphere/infra/rewrite/sql/token/generator/SQLTokenGeneratorsTest.java @@ -22,7 +22,7 @@ import org.apache.shardingsphere.infra.metadata.database.schema.decorator.model.ShardingSphereSchema; import org.apache.shardingsphere.infra.rewrite.sql.token.pojo.SQLToken; import org.junit.Test; -import org.mockito.internal.util.reflection.FieldReader; +import org.mockito.internal.configuration.plugins.Plugins; import java.util.Arrays; import java.util.Collection; @@ -41,7 +41,7 @@ public final class SQLTokenGeneratorsTest { @Test - public void assertAddAllWithList() throws NoSuchFieldException { + public void assertAddAllWithList() throws ReflectiveOperationException { SQLTokenGenerators sqlTokenGenerators = new SQLTokenGenerators(); Map, SQLTokenGenerator> actualSqlTokenGeneratorsMap = getSQLTokenGeneratorsMap(sqlTokenGenerators); SQLTokenGenerator mockSqlTokenGenerator = mock(SQLTokenGenerator.class); @@ -52,7 +52,7 @@ public void assertAddAllWithList() throws NoSuchFieldException { } @Test - public void assertAddAllWithSameClass() throws NoSuchFieldException { + public void assertAddAllWithSameClass() throws ReflectiveOperationException { SQLTokenGenerators sqlTokenGenerators = new SQLTokenGenerators(); SQLTokenGenerator expectedSqlTokenGenerator = mock(SQLTokenGenerator.class); SQLTokenGenerator unexpectedSqlTokenGenerator = mock(SQLTokenGenerator.class); @@ -95,7 +95,7 @@ public void assertGenerateSQLTokensWithCollectionSQLTokenGenerator() { } @SuppressWarnings("unchecked") - private Map, SQLTokenGenerator> getSQLTokenGeneratorsMap(final SQLTokenGenerators sqlTokenGenerators) throws NoSuchFieldException { - return (Map, SQLTokenGenerator>) new FieldReader(sqlTokenGenerators, sqlTokenGenerators.getClass().getDeclaredField("sqlTokenGenerators")).read(); + private Map, SQLTokenGenerator> getSQLTokenGeneratorsMap(final SQLTokenGenerators sqlTokenGenerators) throws ReflectiveOperationException { + return (Map, SQLTokenGenerator>) Plugins.getMemberAccessor().get(sqlTokenGenerators.getClass().getDeclaredField("sqlTokenGenerators"), sqlTokenGenerators); } } diff --git a/infra/util/src/test/java/org/apache/shardingsphere/infra/util/spi/type/ordered/OrderedSPIRegistryTest.java b/infra/util/src/test/java/org/apache/shardingsphere/infra/util/spi/type/ordered/OrderedSPIRegistryTest.java index 9d28be957bd84..7b7b166a53f78 100644 --- a/infra/util/src/test/java/org/apache/shardingsphere/infra/util/spi/type/ordered/OrderedSPIRegistryTest.java +++ b/infra/util/src/test/java/org/apache/shardingsphere/infra/util/spi/type/ordered/OrderedSPIRegistryTest.java @@ -25,7 +25,7 @@ import org.apache.shardingsphere.infra.util.spi.type.ordered.fixture.impl.OrderedSPIFixtureImpl; import org.junit.After; import org.junit.Test; -import org.mockito.internal.util.reflection.InstanceField; +import org.mockito.internal.configuration.plugins.Plugins; import java.lang.ref.SoftReference; import java.util.Collections; @@ -43,8 +43,8 @@ public final class OrderedSPIRegistryTest { } @After - public void cleanCache() throws NoSuchFieldException { - new InstanceField(OrderedServicesCache.class.getDeclaredField("cache"), OrderedServicesCache.class).set(new SoftReference<>(new ConcurrentHashMap<>())); + public void cleanCache() throws ReflectiveOperationException { + Plugins.getMemberAccessor().set(OrderedServicesCache.class.getDeclaredField("cache"), OrderedServicesCache.class, new SoftReference<>(new ConcurrentHashMap<>())); } @SuppressWarnings("rawtypes") diff --git a/infra/util/src/test/java/org/apache/shardingsphere/infra/util/spi/type/ordered/cache/OrderedServicesCacheTest.java b/infra/util/src/test/java/org/apache/shardingsphere/infra/util/spi/type/ordered/cache/OrderedServicesCacheTest.java index b75c60ac95057..88a531e34344b 100644 --- a/infra/util/src/test/java/org/apache/shardingsphere/infra/util/spi/type/ordered/cache/OrderedServicesCacheTest.java +++ b/infra/util/src/test/java/org/apache/shardingsphere/infra/util/spi/type/ordered/cache/OrderedServicesCacheTest.java @@ -24,7 +24,7 @@ import org.apache.shardingsphere.infra.util.spi.type.ordered.fixture.impl.OrderedSPIFixtureImpl; import org.junit.After; import org.junit.Test; -import org.mockito.internal.util.reflection.InstanceField; +import org.mockito.internal.configuration.plugins.Plugins; import java.lang.ref.SoftReference; import java.util.Collection; @@ -46,8 +46,8 @@ public final class OrderedServicesCacheTest { } @After - public void cleanCache() throws NoSuchFieldException { - new InstanceField(OrderedServicesCache.class.getDeclaredField("cache"), OrderedServicesCache.class).set(new SoftReference<>(new ConcurrentHashMap<>())); + public void cleanCache() throws ReflectiveOperationException { + Plugins.getMemberAccessor().set(OrderedServicesCache.class.getDeclaredField("cache"), OrderedServicesCache.class, new SoftReference<>(new ConcurrentHashMap<>())); } @Test diff --git a/jdbc/core/src/test/java/org/apache/shardingsphere/driver/api/ShardingSphereDataSourceFactoryTest.java b/jdbc/core/src/test/java/org/apache/shardingsphere/driver/api/ShardingSphereDataSourceFactoryTest.java index 0b8aa888f1b9e..744ad3b1752fe 100644 --- a/jdbc/core/src/test/java/org/apache/shardingsphere/driver/api/ShardingSphereDataSourceFactoryTest.java +++ b/jdbc/core/src/test/java/org/apache/shardingsphere/driver/api/ShardingSphereDataSourceFactoryTest.java @@ -23,7 +23,7 @@ import org.apache.shardingsphere.infra.database.DefaultDatabase; import org.apache.shardingsphere.test.fixture.jdbc.MockedDataSource; import org.junit.Test; -import org.mockito.internal.util.reflection.FieldReader; +import org.mockito.internal.configuration.plugins.Plugins; import javax.sql.DataSource; import java.sql.SQLException; @@ -92,6 +92,6 @@ public void assertCreateDataSourceWithDatabaseNameAndDefaultModeConfigurationFor @SneakyThrows(ReflectiveOperationException.class) private void assertDataSource(final DataSource actualDataSource, final String expectedDataSourceName) { - assertThat(new FieldReader(actualDataSource, ShardingSphereDataSource.class.getDeclaredField("databaseName")).read(), is(expectedDataSourceName)); + assertThat(Plugins.getMemberAccessor().get(ShardingSphereDataSource.class.getDeclaredField("databaseName"), actualDataSource), is(expectedDataSourceName)); } } diff --git a/jdbc/core/src/test/java/org/apache/shardingsphere/driver/api/yaml/YamlShardingSphereDataSourceFactoryTest.java b/jdbc/core/src/test/java/org/apache/shardingsphere/driver/api/yaml/YamlShardingSphereDataSourceFactoryTest.java index 37fb2cfa4c461..508d65ba81e47 100644 --- a/jdbc/core/src/test/java/org/apache/shardingsphere/driver/api/yaml/YamlShardingSphereDataSourceFactoryTest.java +++ b/jdbc/core/src/test/java/org/apache/shardingsphere/driver/api/yaml/YamlShardingSphereDataSourceFactoryTest.java @@ -21,7 +21,7 @@ import org.apache.shardingsphere.driver.jdbc.core.datasource.ShardingSphereDataSource; import org.apache.shardingsphere.test.fixture.jdbc.MockedDataSource; import org.junit.Test; -import org.mockito.internal.util.reflection.FieldReader; +import org.mockito.internal.configuration.plugins.Plugins; import javax.sql.DataSource; import java.io.BufferedReader; @@ -92,8 +92,8 @@ private String readFile(final URL url) throws IOException { return result.toString(); } - @SneakyThrows(NoSuchFieldException.class) + @SneakyThrows(ReflectiveOperationException.class) private void assertDataSource(final DataSource dataSource) { - assertThat(new FieldReader(dataSource, ShardingSphereDataSource.class.getDeclaredField("databaseName")).read(), is("logic_db")); + assertThat(Plugins.getMemberAccessor().get(ShardingSphereDataSource.class.getDeclaredField("databaseName"), dataSource), is("logic_db")); } } diff --git a/jdbc/core/src/test/java/org/apache/shardingsphere/driver/executor/batch/BatchPreparedStatementExecutorTest.java b/jdbc/core/src/test/java/org/apache/shardingsphere/driver/executor/batch/BatchPreparedStatementExecutorTest.java index 32801c266c66a..dcd6695c9f586 100644 --- a/jdbc/core/src/test/java/org/apache/shardingsphere/driver/executor/batch/BatchPreparedStatementExecutorTest.java +++ b/jdbc/core/src/test/java/org/apache/shardingsphere/driver/executor/batch/BatchPreparedStatementExecutorTest.java @@ -32,7 +32,7 @@ import org.apache.shardingsphere.infra.util.eventbus.EventBusContext; import org.junit.Test; import org.mockito.Mock; -import org.mockito.internal.util.reflection.InstanceField; +import org.mockito.internal.configuration.plugins.Plugins; import java.sql.Connection; import java.sql.DatabaseMetaData; @@ -145,10 +145,10 @@ private void setExecutionGroups(final List preparedStatements setFields(executionGroups, batchExecutionUnits); } - @SneakyThrows(NoSuchFieldException.class) + @SneakyThrows(ReflectiveOperationException.class) private void setFields(final Collection> executionGroups, final Collection batchExecutionUnits) { - new InstanceField(BatchPreparedStatementExecutor.class.getDeclaredField("executionGroupContext"), actual).set(new ExecutionGroupContext<>(executionGroups)); - new InstanceField(BatchPreparedStatementExecutor.class.getDeclaredField("batchExecutionUnits"), actual).set(batchExecutionUnits); - new InstanceField(BatchPreparedStatementExecutor.class.getDeclaredField("batchCount"), actual).set(2); + Plugins.getMemberAccessor().set(BatchPreparedStatementExecutor.class.getDeclaredField("executionGroupContext"), actual, new ExecutionGroupContext<>(executionGroups)); + Plugins.getMemberAccessor().set(BatchPreparedStatementExecutor.class.getDeclaredField("batchExecutionUnits"), actual, batchExecutionUnits); + Plugins.getMemberAccessor().set(BatchPreparedStatementExecutor.class.getDeclaredField("batchCount"), actual, 2); } } diff --git a/jdbc/core/src/test/java/org/apache/shardingsphere/driver/jdbc/adapter/StatementAdapterTest.java b/jdbc/core/src/test/java/org/apache/shardingsphere/driver/jdbc/adapter/StatementAdapterTest.java index 3eb50a33c0d18..38c5d07cd73b5 100644 --- a/jdbc/core/src/test/java/org/apache/shardingsphere/driver/jdbc/adapter/StatementAdapterTest.java +++ b/jdbc/core/src/test/java/org/apache/shardingsphere/driver/jdbc/adapter/StatementAdapterTest.java @@ -30,7 +30,7 @@ import org.apache.shardingsphere.traffic.rule.TrafficRule; import org.apache.shardingsphere.traffic.rule.builder.DefaultTrafficRuleConfigurationBuilder; import org.junit.Test; -import org.mockito.internal.util.reflection.InstanceField; +import org.mockito.internal.configuration.plugins.Plugins; import java.sql.ResultSet; import java.sql.SQLException; @@ -259,8 +259,8 @@ private ShardingSphereStatement mockShardingSphereStatementWithNeedAccumulate(fi return result; } - @SneakyThrows(NoSuchFieldException.class) + @SneakyThrows(ReflectiveOperationException.class) private void setExecutionContext(final ShardingSphereStatement statement, final ExecutionContext executionContext) { - new InstanceField(statement.getClass().getDeclaredField("executionContext"), statement).set(executionContext); + Plugins.getMemberAccessor().set(statement.getClass().getDeclaredField("executionContext"), statement, executionContext); } } diff --git a/jdbc/core/src/test/java/org/apache/shardingsphere/driver/jdbc/core/connection/ShardingSphereConnectionTest.java b/jdbc/core/src/test/java/org/apache/shardingsphere/driver/jdbc/core/connection/ShardingSphereConnectionTest.java index e9fa88b97deb3..135dfa27e47c1 100644 --- a/jdbc/core/src/test/java/org/apache/shardingsphere/driver/jdbc/core/connection/ShardingSphereConnectionTest.java +++ b/jdbc/core/src/test/java/org/apache/shardingsphere/driver/jdbc/core/connection/ShardingSphereConnectionTest.java @@ -32,7 +32,7 @@ import org.junit.After; import org.junit.Before; import org.junit.Test; -import org.mockito.internal.util.reflection.InstanceField; +import org.mockito.internal.configuration.plugins.Plugins; import javax.sql.DataSource; import java.sql.Connection; @@ -167,7 +167,7 @@ public void assertRollbackWithDistributedTransaction() throws SQLException { private ConnectionManager mockConnectionManager(final ConnectionTransaction connectionTransaction) { ConnectionManager result = mock(ConnectionManager.class); when(result.getConnectionTransaction()).thenReturn(connectionTransaction); - new InstanceField(connection.getClass().getDeclaredField("connectionManager"), connection).set(result); + Plugins.getMemberAccessor().set(connection.getClass().getDeclaredField("connectionManager"), connection, result); return result; } diff --git a/jdbc/core/src/test/java/org/apache/shardingsphere/driver/jdbc/core/datasource/ShardingSphereDataSourceTest.java b/jdbc/core/src/test/java/org/apache/shardingsphere/driver/jdbc/core/datasource/ShardingSphereDataSourceTest.java index 7c649d01655ee..2dab45a10d061 100644 --- a/jdbc/core/src/test/java/org/apache/shardingsphere/driver/jdbc/core/datasource/ShardingSphereDataSourceTest.java +++ b/jdbc/core/src/test/java/org/apache/shardingsphere/driver/jdbc/core/datasource/ShardingSphereDataSourceTest.java @@ -32,7 +32,7 @@ import org.apache.shardingsphere.transaction.core.TransactionTypeHolder; import org.junit.After; import org.junit.Test; -import org.mockito.internal.util.reflection.FieldReader; +import org.mockito.internal.configuration.plugins.Plugins; import javax.sql.DataSource; import java.sql.Connection; @@ -140,7 +140,7 @@ public void assertCloseWithDataSourceNames() throws Exception { @SneakyThrows(ReflectiveOperationException.class) private ContextManager getContextManager(final ShardingSphereDataSource dataSource) { - return (ContextManager) new FieldReader(dataSource, ShardingSphereDataSource.class.getDeclaredField("contextManager")).read(); + return (ContextManager) Plugins.getMemberAccessor().get(ShardingSphereDataSource.class.getDeclaredField("contextManager"), dataSource); } private DataSource createHikariDataSource() { diff --git a/kernel/data-pipeline/core/src/test/java/org/apache/shardingsphere/data/pipeline/core/ingest/channel/memory/MemoryPipelineChannelCreatorTest.java b/kernel/data-pipeline/core/src/test/java/org/apache/shardingsphere/data/pipeline/core/ingest/channel/memory/MemoryPipelineChannelCreatorTest.java index 8399632ac02a8..62f4e7cb25d6c 100644 --- a/kernel/data-pipeline/core/src/test/java/org/apache/shardingsphere/data/pipeline/core/ingest/channel/memory/MemoryPipelineChannelCreatorTest.java +++ b/kernel/data-pipeline/core/src/test/java/org/apache/shardingsphere/data/pipeline/core/ingest/channel/memory/MemoryPipelineChannelCreatorTest.java @@ -20,7 +20,7 @@ import org.apache.shardingsphere.data.pipeline.api.ingest.channel.AckCallback; import org.apache.shardingsphere.data.pipeline.spi.ingest.channel.PipelineChannelCreator; import org.junit.Test; -import org.mockito.internal.util.reflection.FieldReader; +import org.mockito.internal.configuration.plugins.Plugins; import java.util.Properties; @@ -37,14 +37,14 @@ public void assertInitWithBlockQueueSize() throws Exception { props.setProperty("block-queue-size", "200"); PipelineChannelCreator creator = new MemoryPipelineChannelCreator(); creator.init(props); - assertThat(new FieldReader(creator, MemoryPipelineChannelCreator.class.getDeclaredField("blockQueueSize")).read(), is(200)); + assertThat(Plugins.getMemberAccessor().get(MemoryPipelineChannelCreator.class.getDeclaredField("blockQueueSize"), creator), is(200)); } @Test public void assertInitWithoutBlockQueueSize() throws Exception { PipelineChannelCreator creator = new MemoryPipelineChannelCreator(); creator.init(new Properties()); - assertThat(new FieldReader(creator, MemoryPipelineChannelCreator.class.getDeclaredField("blockQueueSize")).read(), is(10000)); + assertThat(Plugins.getMemberAccessor().get(MemoryPipelineChannelCreator.class.getDeclaredField("blockQueueSize"), creator), is(10000)); } @Test diff --git a/kernel/data-pipeline/dialect/mysql/src/test/java/org/apache/shardingsphere/data/pipeline/mysql/ingest/client/MySQLClientTest.java b/kernel/data-pipeline/dialect/mysql/src/test/java/org/apache/shardingsphere/data/pipeline/mysql/ingest/client/MySQLClientTest.java index f4c65b1bd2ad5..8b17111dd2200 100644 --- a/kernel/data-pipeline/dialect/mysql/src/test/java/org/apache/shardingsphere/data/pipeline/mysql/ingest/client/MySQLClientTest.java +++ b/kernel/data-pipeline/dialect/mysql/src/test/java/org/apache/shardingsphere/data/pipeline/mysql/ingest/client/MySQLClientTest.java @@ -32,8 +32,7 @@ import org.junit.runner.RunWith; import org.mockito.ArgumentMatchers; import org.mockito.Mock; -import org.mockito.internal.util.reflection.FieldReader; -import org.mockito.internal.util.reflection.InstanceField; +import org.mockito.internal.configuration.plugins.Plugins; import org.mockito.junit.MockitoJUnitRunner; import java.net.InetSocketAddress; @@ -73,51 +72,51 @@ public void setUp() throws InterruptedException { } @Test - public void assertConnect() throws NoSuchFieldException { + public void assertConnect() throws ReflectiveOperationException { ServerInfo expected = new ServerInfo(); mockChannelResponse(expected); mysqlClient.connect(); - ServerInfo actual = (ServerInfo) new FieldReader(mysqlClient, MySQLClient.class.getDeclaredField("serverInfo")).read(); + ServerInfo actual = (ServerInfo) Plugins.getMemberAccessor().get(MySQLClient.class.getDeclaredField("serverInfo"), mysqlClient); assertThat(actual, is(expected)); } @Test - public void assertExecute() throws NoSuchFieldException { + public void assertExecute() throws ReflectiveOperationException { mockChannelResponse(new MySQLOKPacket(0, 0)); - new InstanceField(MySQLClient.class.getDeclaredField("channel"), mysqlClient).set(channel); - new InstanceField(MySQLClient.class.getDeclaredField("eventLoopGroup"), mysqlClient).set(new NioEventLoopGroup(1)); + Plugins.getMemberAccessor().set(MySQLClient.class.getDeclaredField("channel"), mysqlClient, channel); + Plugins.getMemberAccessor().set(MySQLClient.class.getDeclaredField("eventLoopGroup"), mysqlClient, new NioEventLoopGroup(1)); assertTrue(mysqlClient.execute("")); verify(channel).writeAndFlush(ArgumentMatchers.any(MySQLComQueryPacket.class)); } @Test - public void assertExecuteUpdate() throws NoSuchFieldException { + public void assertExecuteUpdate() throws ReflectiveOperationException { MySQLOKPacket expected = new MySQLOKPacket(0, 10, 0, 0); - new InstanceField(MySQLOKPacket.class.getDeclaredField("affectedRows"), expected).set(10L); + Plugins.getMemberAccessor().set(MySQLOKPacket.class.getDeclaredField("affectedRows"), expected, 10L); mockChannelResponse(expected); - new InstanceField(MySQLClient.class.getDeclaredField("channel"), mysqlClient).set(channel); - new InstanceField(MySQLClient.class.getDeclaredField("eventLoopGroup"), mysqlClient).set(new NioEventLoopGroup(1)); + Plugins.getMemberAccessor().set(MySQLClient.class.getDeclaredField("channel"), mysqlClient, channel); + Plugins.getMemberAccessor().set(MySQLClient.class.getDeclaredField("eventLoopGroup"), mysqlClient, new NioEventLoopGroup(1)); assertThat(mysqlClient.executeUpdate(""), is(10)); verify(channel).writeAndFlush(ArgumentMatchers.any(MySQLComQueryPacket.class)); } @Test - public void assertExecuteQuery() throws NoSuchFieldException { + public void assertExecuteQuery() throws ReflectiveOperationException { InternalResultSet expected = new InternalResultSet(null); mockChannelResponse(expected); - new InstanceField(MySQLClient.class.getDeclaredField("channel"), mysqlClient).set(channel); - new InstanceField(MySQLClient.class.getDeclaredField("eventLoopGroup"), mysqlClient).set(new NioEventLoopGroup(1)); + Plugins.getMemberAccessor().set(MySQLClient.class.getDeclaredField("channel"), mysqlClient, channel); + Plugins.getMemberAccessor().set(MySQLClient.class.getDeclaredField("eventLoopGroup"), mysqlClient, new NioEventLoopGroup(1)); assertThat(mysqlClient.executeQuery(""), is(expected)); verify(channel).writeAndFlush(ArgumentMatchers.any(MySQLComQueryPacket.class)); } @Test - public void assertSubscribeBelow56Version() throws NoSuchFieldException { + public void assertSubscribeBelow56Version() throws ReflectiveOperationException { ServerInfo serverInfo = new ServerInfo(); serverInfo.setServerVersion(new ServerVersion("5.5.0-log")); - new InstanceField(MySQLClient.class.getDeclaredField("serverInfo"), mysqlClient).set(serverInfo); - new InstanceField(MySQLClient.class.getDeclaredField("channel"), mysqlClient).set(channel); - new InstanceField(MySQLClient.class.getDeclaredField("eventLoopGroup"), mysqlClient).set(new NioEventLoopGroup(1)); + Plugins.getMemberAccessor().set(MySQLClient.class.getDeclaredField("serverInfo"), mysqlClient, serverInfo); + Plugins.getMemberAccessor().set(MySQLClient.class.getDeclaredField("channel"), mysqlClient, channel); + Plugins.getMemberAccessor().set(MySQLClient.class.getDeclaredField("eventLoopGroup"), mysqlClient, new NioEventLoopGroup(1)); mockChannelResponse(new MySQLOKPacket(0, 0)); mysqlClient.subscribe("", 4L); verify(channel).writeAndFlush(ArgumentMatchers.any(MySQLComRegisterSlaveCommandPacket.class)); @@ -130,8 +129,8 @@ private void mockChannelResponse(final Object response) { while (true) { Promise responseCallback; try { - responseCallback = (Promise) new FieldReader(mysqlClient, MySQLClient.class.getDeclaredField("responseCallback")).read(); - } catch (final NoSuchFieldException ex) { + responseCallback = (Promise) Plugins.getMemberAccessor().get(MySQLClient.class.getDeclaredField("responseCallback"), mysqlClient); + } catch (final ReflectiveOperationException ex) { throw new RuntimeException(ex); } if (null != responseCallback) { @@ -143,16 +142,16 @@ private void mockChannelResponse(final Object response) { } @Test - public void assertCloseChannel() throws NoSuchFieldException { - new InstanceField(MySQLClient.class.getDeclaredField("channel"), mysqlClient).set(channel); + public void assertCloseChannel() throws ReflectiveOperationException { + Plugins.getMemberAccessor().set(MySQLClient.class.getDeclaredField("channel"), mysqlClient, channel); mysqlClient.closeChannel(); assertFalse(channel.isOpen()); } @Test(expected = BinlogSyncChannelAlreadyClosedException.class) - public void assertPollFailed() throws NoSuchFieldException { - new InstanceField(MySQLClient.class.getDeclaredField("channel"), mysqlClient).set(channel); - new InstanceField(MySQLClient.class.getDeclaredField("running"), mysqlClient).set(false); + public void assertPollFailed() throws ReflectiveOperationException { + Plugins.getMemberAccessor().set(MySQLClient.class.getDeclaredField("channel"), mysqlClient, channel); + Plugins.getMemberAccessor().set(MySQLClient.class.getDeclaredField("running"), mysqlClient, false); mysqlClient.poll(); } } diff --git a/kernel/data-pipeline/dialect/mysql/src/test/java/org/apache/shardingsphere/data/pipeline/mysql/ingest/client/netty/MySQLBinlogEventPacketDecoderTest.java b/kernel/data-pipeline/dialect/mysql/src/test/java/org/apache/shardingsphere/data/pipeline/mysql/ingest/client/netty/MySQLBinlogEventPacketDecoderTest.java index f152f7c46896f..90e942189e0ee 100644 --- a/kernel/data-pipeline/dialect/mysql/src/test/java/org/apache/shardingsphere/data/pipeline/mysql/ingest/client/netty/MySQLBinlogEventPacketDecoderTest.java +++ b/kernel/data-pipeline/dialect/mysql/src/test/java/org/apache/shardingsphere/data/pipeline/mysql/ingest/client/netty/MySQLBinlogEventPacketDecoderTest.java @@ -36,7 +36,7 @@ import org.junit.runner.RunWith; import org.mockito.Answers; import org.mockito.Mock; -import org.mockito.internal.util.reflection.FieldReader; +import org.mockito.internal.configuration.plugins.Plugins; import org.mockito.junit.MockitoJUnitRunner; import java.io.Serializable; @@ -68,7 +68,7 @@ public final class MySQLBinlogEventPacketDecoderTest { @Before public void setUp() throws NoSuchFieldException, IllegalAccessException { binlogEventPacketDecoder = new MySQLBinlogEventPacketDecoder(4, new ConcurrentHashMap<>()); - binlogContext = (BinlogContext) new FieldReader(binlogEventPacketDecoder, MySQLBinlogEventPacketDecoder.class.getDeclaredField("binlogContext")).read(); + binlogContext = (BinlogContext) Plugins.getMemberAccessor().get(MySQLBinlogEventPacketDecoder.class.getDeclaredField("binlogContext"), binlogEventPacketDecoder); when(channelHandlerContext.channel().attr(CommonConstants.CHARSET_ATTRIBUTE_KEY).get()).thenReturn(StandardCharsets.UTF_8); columnDefs = Lists.newArrayList(new MySQLBinlogColumnDef(MySQLBinaryColumnType.MYSQL_TYPE_LONGLONG), new MySQLBinlogColumnDef(MySQLBinaryColumnType.MYSQL_TYPE_LONG), new MySQLBinlogColumnDef(MySQLBinaryColumnType.MYSQL_TYPE_VARCHAR), new MySQLBinlogColumnDef(MySQLBinaryColumnType.MYSQL_TYPE_NEWDECIMAL)); diff --git a/kernel/data-pipeline/dialect/mysql/src/test/java/org/apache/shardingsphere/data/pipeline/mysql/ingest/client/netty/MySQLNegotiateHandlerTest.java b/kernel/data-pipeline/dialect/mysql/src/test/java/org/apache/shardingsphere/data/pipeline/mysql/ingest/client/netty/MySQLNegotiateHandlerTest.java index ae3d5e671ccf8..7e436bae8a811 100644 --- a/kernel/data-pipeline/dialect/mysql/src/test/java/org/apache/shardingsphere/data/pipeline/mysql/ingest/client/netty/MySQLNegotiateHandlerTest.java +++ b/kernel/data-pipeline/dialect/mysql/src/test/java/org/apache/shardingsphere/data/pipeline/mysql/ingest/client/netty/MySQLNegotiateHandlerTest.java @@ -34,8 +34,7 @@ import org.junit.runner.RunWith; import org.mockito.ArgumentMatchers; import org.mockito.Mock; -import org.mockito.internal.util.reflection.FieldReader; -import org.mockito.internal.util.reflection.InstanceField; +import org.mockito.internal.configuration.plugins.Plugins; import org.mockito.junit.MockitoJUnitRunner; import static org.hamcrest.CoreMatchers.is; @@ -73,12 +72,12 @@ public void setUp() { } @Test - public void assertChannelReadHandshakeInitPacket() throws NoSuchFieldException { + public void assertChannelReadHandshakeInitPacket() throws ReflectiveOperationException { MySQLHandshakePacket handshakePacket = new MySQLHandshakePacket(0, new MySQLAuthPluginData(new byte[8], new byte[12])); handshakePacket.setAuthPluginName(MySQLAuthenticationMethod.SECURE_PASSWORD_AUTHENTICATION); mysqlNegotiateHandler.channelRead(channelHandlerContext, handshakePacket); verify(channel).writeAndFlush(ArgumentMatchers.any(MySQLHandshakeResponse41Packet.class)); - ServerInfo serverInfo = (ServerInfo) new FieldReader(mysqlNegotiateHandler, MySQLNegotiateHandler.class.getDeclaredField("serverInfo")).read(); + ServerInfo serverInfo = (ServerInfo) Plugins.getMemberAccessor().get(MySQLNegotiateHandler.class.getDeclaredField("serverInfo"), mysqlNegotiateHandler); assertNotNull(serverInfo); assertThat(serverInfo.getServerVersion().getMajor(), is(5)); assertThat(serverInfo.getServerVersion().getMinor(), is(7)); @@ -86,10 +85,10 @@ public void assertChannelReadHandshakeInitPacket() throws NoSuchFieldException { } @Test - public void assertChannelReadOkPacket() throws NoSuchFieldException { + public void assertChannelReadOkPacket() throws ReflectiveOperationException { MySQLOKPacket okPacket = new MySQLOKPacket(0, 0); ServerInfo serverInfo = new ServerInfo(); - new InstanceField(MySQLNegotiateHandler.class.getDeclaredField("serverInfo"), mysqlNegotiateHandler).set(serverInfo); + Plugins.getMemberAccessor().set(MySQLNegotiateHandler.class.getDeclaredField("serverInfo"), mysqlNegotiateHandler, serverInfo); mysqlNegotiateHandler.channelRead(channelHandlerContext, okPacket); verify(pipeline).remove(mysqlNegotiateHandler); verify(authResultCallback).setSuccess(serverInfo); diff --git a/kernel/data-pipeline/dialect/mysql/src/test/java/org/apache/shardingsphere/data/pipeline/mysql/ingest/client/netty/MySQLNegotiatePackageDecoderTest.java b/kernel/data-pipeline/dialect/mysql/src/test/java/org/apache/shardingsphere/data/pipeline/mysql/ingest/client/netty/MySQLNegotiatePackageDecoderTest.java index 4bef473a8f3ec..606f1ca70b7d5 100644 --- a/kernel/data-pipeline/dialect/mysql/src/test/java/org/apache/shardingsphere/data/pipeline/mysql/ingest/client/netty/MySQLNegotiatePackageDecoderTest.java +++ b/kernel/data-pipeline/dialect/mysql/src/test/java/org/apache/shardingsphere/data/pipeline/mysql/ingest/client/netty/MySQLNegotiatePackageDecoderTest.java @@ -30,7 +30,7 @@ import org.junit.runner.RunWith; import org.mockito.Answers; import org.mockito.Mock; -import org.mockito.internal.util.reflection.InstanceField; +import org.mockito.internal.configuration.plugins.Plugins; import org.mockito.junit.MockitoJUnitRunner; import java.nio.charset.StandardCharsets; @@ -94,9 +94,9 @@ private void assertHandshakePacket(final List actual) { } @Test - public void assertDecodeAuthSwitchRequestPacket() throws NoSuchFieldException { + public void assertDecodeAuthSwitchRequestPacket() throws ReflectiveOperationException { MySQLNegotiatePackageDecoder negotiatePackageDecoder = new MySQLNegotiatePackageDecoder(); - new InstanceField(MySQLNegotiatePackageDecoder.class.getDeclaredField("handshakeReceived"), negotiatePackageDecoder).set(true); + Plugins.getMemberAccessor().set(MySQLNegotiatePackageDecoder.class.getDeclaredField("handshakeReceived"), negotiatePackageDecoder, true); List actual = new LinkedList<>(); negotiatePackageDecoder.decode(channelHandlerContext, authSwitchRequestPacket(), actual); assertPacketByType(actual, MySQLAuthSwitchRequestPacket.class); @@ -110,9 +110,9 @@ private ByteBuf authSwitchRequestPacket() { } @Test - public void assertDecodeAuthMoreDataPacket() throws NoSuchFieldException { + public void assertDecodeAuthMoreDataPacket() throws ReflectiveOperationException { MySQLNegotiatePackageDecoder negotiatePackageDecoder = new MySQLNegotiatePackageDecoder(); - new InstanceField(MySQLNegotiatePackageDecoder.class.getDeclaredField("handshakeReceived"), negotiatePackageDecoder).set(true); + Plugins.getMemberAccessor().set(MySQLNegotiatePackageDecoder.class.getDeclaredField("handshakeReceived"), negotiatePackageDecoder, true); List actual = new LinkedList<>(); negotiatePackageDecoder.decode(channelHandlerContext, authMoreDataPacket(), actual); assertPacketByType(actual, MySQLAuthMoreDataPacket.class); diff --git a/kernel/data-pipeline/dialect/postgresql/src/test/java/org/apache/shardingsphere/data/pipeline/postgresql/ingest/PostgreSQLWALDumperTest.java b/kernel/data-pipeline/dialect/postgresql/src/test/java/org/apache/shardingsphere/data/pipeline/postgresql/ingest/PostgreSQLWALDumperTest.java index b72dd1a5a14e8..6294bf6c92eee 100644 --- a/kernel/data-pipeline/dialect/postgresql/src/test/java/org/apache/shardingsphere/data/pipeline/postgresql/ingest/PostgreSQLWALDumperTest.java +++ b/kernel/data-pipeline/dialect/postgresql/src/test/java/org/apache/shardingsphere/data/pipeline/postgresql/ingest/PostgreSQLWALDumperTest.java @@ -38,7 +38,7 @@ import org.junit.runner.RunWith; import org.mockito.Mock; import org.mockito.MockedStatic; -import org.mockito.internal.util.reflection.InstanceField; +import org.mockito.internal.configuration.plugins.Plugins; import org.mockito.junit.MockitoJUnitRunner; import org.postgresql.jdbc.PgConnection; import org.postgresql.replication.LogSequenceNumber; @@ -117,10 +117,10 @@ private DumperConfiguration mockDumperConfiguration() { } @Test - public void assertStart() throws SQLException, NoSuchFieldException { + public void assertStart() throws SQLException, ReflectiveOperationException { StandardPipelineDataSourceConfiguration dataSourceConfig = (StandardPipelineDataSourceConfiguration) dumperConfig.getDataSourceConfig(); try { - new InstanceField(PostgreSQLWALDumper.class.getDeclaredField("logicalReplication"), walDumper).set(logicalReplication); + Plugins.getMemberAccessor().set(PostgreSQLWALDumper.class.getDeclaredField("logicalReplication"), walDumper, logicalReplication); when(logicalReplication.createConnection(dataSourceConfig)).thenReturn(pgConnection); when(pgConnection.unwrap(PgConnection.class)).thenReturn(pgConnection); try (MockedStatic positionInitializer = mockStatic(PostgreSQLPositionInitializer.class)) { diff --git a/kernel/transaction/type/base/seata-at/src/test/java/org/apache/shardingsphere/transaction/base/seata/at/SeataATShardingSphereTransactionManagerTest.java b/kernel/transaction/type/base/seata-at/src/test/java/org/apache/shardingsphere/transaction/base/seata/at/SeataATShardingSphereTransactionManagerTest.java index 15556c70e6b97..8433de15c7b7f 100644 --- a/kernel/transaction/type/base/seata-at/src/test/java/org/apache/shardingsphere/transaction/base/seata/at/SeataATShardingSphereTransactionManagerTest.java +++ b/kernel/transaction/type/base/seata-at/src/test/java/org/apache/shardingsphere/transaction/base/seata/at/SeataATShardingSphereTransactionManagerTest.java @@ -40,8 +40,7 @@ import org.junit.Before; import org.junit.BeforeClass; import org.junit.Test; -import org.mockito.internal.util.reflection.FieldReader; -import org.mockito.internal.util.reflection.InstanceField; +import org.mockito.internal.configuration.plugins.Plugins; import javax.sql.DataSource; import java.sql.Connection; @@ -172,23 +171,23 @@ private void assertResult() { } } - @SneakyThrows(NoSuchFieldException.class) + @SneakyThrows(ReflectiveOperationException.class) @SuppressWarnings("unchecked") private Map getDataSourceMap() { - return (Map) new FieldReader(seataTransactionManager, seataTransactionManager.getClass().getDeclaredField("dataSourceMap")).read(); + return (Map) Plugins.getMemberAccessor().get(seataTransactionManager.getClass().getDeclaredField("dataSourceMap"), seataTransactionManager); } - @SneakyThrows(NoSuchFieldException.class) + @SneakyThrows(ReflectiveOperationException.class) private void setXID(final String xid) { - new InstanceField(SeataTransactionHolder.get().getClass().getDeclaredField("xid"), SeataTransactionHolder.get()).set(xid); + Plugins.getMemberAccessor().set(SeataTransactionHolder.get().getClass().getDeclaredField("xid"), SeataTransactionHolder.get(), xid); RootContext.bind(xid); } - @SneakyThrows(NoSuchFieldException.class) + @SneakyThrows(ReflectiveOperationException.class) private void releaseRpcClient() { - new InstanceField(TmNettyRemotingClient.getInstance().getClass().getDeclaredField("initialized"), TmNettyRemotingClient.getInstance()).set(new AtomicBoolean(false)); - new InstanceField(TmNettyRemotingClient.getInstance().getClass().getDeclaredField("instance"), TmNettyRemotingClient.getInstance()).set(null); - new InstanceField(RmNettyRemotingClient.getInstance().getClass().getDeclaredField("initialized"), RmNettyRemotingClient.getInstance()).set(new AtomicBoolean(false)); - new InstanceField(RmNettyRemotingClient.getInstance().getClass().getDeclaredField("instance"), RmNettyRemotingClient.getInstance()).set(null); + Plugins.getMemberAccessor().set(TmNettyRemotingClient.getInstance().getClass().getDeclaredField("initialized"), TmNettyRemotingClient.getInstance(), new AtomicBoolean(false)); + Plugins.getMemberAccessor().set(TmNettyRemotingClient.getInstance().getClass().getDeclaredField("instance"), TmNettyRemotingClient.getInstance(), null); + Plugins.getMemberAccessor().set(RmNettyRemotingClient.getInstance().getClass().getDeclaredField("initialized"), RmNettyRemotingClient.getInstance(), new AtomicBoolean(false)); + Plugins.getMemberAccessor().set(RmNettyRemotingClient.getInstance().getClass().getDeclaredField("instance"), RmNettyRemotingClient.getInstance(), null); } } diff --git a/kernel/transaction/type/xa/core/src/test/java/org/apache/shardingsphere/transaction/xa/XAShardingSphereTransactionManagerTest.java b/kernel/transaction/type/xa/core/src/test/java/org/apache/shardingsphere/transaction/xa/XAShardingSphereTransactionManagerTest.java index b2047d1a50e13..8093cc9ce5d21 100644 --- a/kernel/transaction/type/xa/core/src/test/java/org/apache/shardingsphere/transaction/xa/XAShardingSphereTransactionManagerTest.java +++ b/kernel/transaction/type/xa/core/src/test/java/org/apache/shardingsphere/transaction/xa/XAShardingSphereTransactionManagerTest.java @@ -28,7 +28,7 @@ import org.junit.After; import org.junit.Before; import org.junit.Test; -import org.mockito.internal.util.reflection.FieldReader; +import org.mockito.internal.configuration.plugins.Plugins; import javax.sql.DataSource; import javax.transaction.Transaction; @@ -134,16 +134,16 @@ public void assertRollback() { assertFalse(xaTransactionManager.isInTransaction()); } - @SneakyThrows(NoSuchFieldException.class) + @SneakyThrows(ReflectiveOperationException.class) @SuppressWarnings("unchecked") private Map getCachedDataSources() { - return (Map) new FieldReader(xaTransactionManager, xaTransactionManager.getClass().getDeclaredField("cachedDataSources")).read(); + return (Map) Plugins.getMemberAccessor().get(xaTransactionManager.getClass().getDeclaredField("cachedDataSources"), xaTransactionManager); } - @SneakyThrows(NoSuchFieldException.class) + @SneakyThrows(ReflectiveOperationException.class) @SuppressWarnings("unchecked") private ThreadLocal> getEnlistedTransactions(final XATransactionDataSource transactionDataSource) { - return (ThreadLocal>) new FieldReader(transactionDataSource, transactionDataSource.getClass().getDeclaredField("enlistedTransactions")).read(); + return (ThreadLocal>) Plugins.getMemberAccessor().get(transactionDataSource.getClass().getDeclaredField("enlistedTransactions"), transactionDataSource); } private Map createDataSources(final DatabaseType databaseType) { diff --git a/kernel/transaction/type/xa/provider/atomikos/src/test/java/org/apache/shardingsphere/transaction/xa/atomikos/manager/AtomikosTransactionManagerProviderTest.java b/kernel/transaction/type/xa/provider/atomikos/src/test/java/org/apache/shardingsphere/transaction/xa/atomikos/manager/AtomikosTransactionManagerProviderTest.java index 1f3ad71679996..b9db26a681989 100644 --- a/kernel/transaction/type/xa/provider/atomikos/src/test/java/org/apache/shardingsphere/transaction/xa/atomikos/manager/AtomikosTransactionManagerProviderTest.java +++ b/kernel/transaction/type/xa/provider/atomikos/src/test/java/org/apache/shardingsphere/transaction/xa/atomikos/manager/AtomikosTransactionManagerProviderTest.java @@ -24,7 +24,7 @@ import org.junit.Test; import org.junit.runner.RunWith; import org.mockito.Mock; -import org.mockito.internal.util.reflection.InstanceField; +import org.mockito.internal.configuration.plugins.Plugins; import org.mockito.junit.MockitoJUnitRunner; import javax.sql.XADataSource; @@ -57,9 +57,9 @@ public final class AtomikosTransactionManagerProviderTest { private XADataSource xaDataSource; @Before - public void setUp() throws NoSuchFieldException { - new InstanceField(AtomikosTransactionManagerProvider.class.getDeclaredField("transactionManager"), transactionManagerProvider).set(userTransactionManager); - new InstanceField(AtomikosTransactionManagerProvider.class.getDeclaredField("userTransactionService"), transactionManagerProvider).set(userTransactionService); + public void setUp() throws ReflectiveOperationException { + Plugins.getMemberAccessor().set(AtomikosTransactionManagerProvider.class.getDeclaredField("transactionManager"), transactionManagerProvider, userTransactionManager); + Plugins.getMemberAccessor().set(AtomikosTransactionManagerProvider.class.getDeclaredField("userTransactionService"), transactionManagerProvider, userTransactionService); } @Test diff --git a/kernel/transaction/type/xa/provider/bitronix/src/test/java/org/apache/shardingsphere/transaction/xa/bitronix/manager/BitronixXATransactionManagerProviderTest.java b/kernel/transaction/type/xa/provider/bitronix/src/test/java/org/apache/shardingsphere/transaction/xa/bitronix/manager/BitronixXATransactionManagerProviderTest.java index 9561a0d11ec40..5f340d0266e2f 100644 --- a/kernel/transaction/type/xa/provider/bitronix/src/test/java/org/apache/shardingsphere/transaction/xa/bitronix/manager/BitronixXATransactionManagerProviderTest.java +++ b/kernel/transaction/type/xa/provider/bitronix/src/test/java/org/apache/shardingsphere/transaction/xa/bitronix/manager/BitronixXATransactionManagerProviderTest.java @@ -24,7 +24,7 @@ import org.junit.Test; import org.junit.runner.RunWith; import org.mockito.Mock; -import org.mockito.internal.util.reflection.InstanceField; +import org.mockito.internal.configuration.plugins.Plugins; import org.mockito.junit.MockitoJUnitRunner; import javax.sql.XADataSource; @@ -52,8 +52,8 @@ public final class BitronixXATransactionManagerProviderTest { private XADataSource xaDataSource; @Before - public void setUp() throws NoSuchFieldException { - new InstanceField(BitronixXATransactionManagerProvider.class.getDeclaredField("transactionManager"), transactionManagerProvider).set(transactionManager); + public void setUp() throws ReflectiveOperationException { + Plugins.getMemberAccessor().set(BitronixXATransactionManagerProvider.class.getDeclaredField("transactionManager"), transactionManagerProvider, transactionManager); } @Test diff --git a/kernel/transaction/type/xa/provider/narayana/src/test/java/org/apache/shardingsphere/transaction/xa/narayana/manager/DataSourceXAResourceRecoveryHelperTest.java b/kernel/transaction/type/xa/provider/narayana/src/test/java/org/apache/shardingsphere/transaction/xa/narayana/manager/DataSourceXAResourceRecoveryHelperTest.java index d57747f024667..91366186f7363 100644 --- a/kernel/transaction/type/xa/provider/narayana/src/test/java/org/apache/shardingsphere/transaction/xa/narayana/manager/DataSourceXAResourceRecoveryHelperTest.java +++ b/kernel/transaction/type/xa/provider/narayana/src/test/java/org/apache/shardingsphere/transaction/xa/narayana/manager/DataSourceXAResourceRecoveryHelperTest.java @@ -21,7 +21,7 @@ import org.junit.Test; import org.junit.runner.RunWith; import org.mockito.Mock; -import org.mockito.internal.util.reflection.InstanceField; +import org.mockito.internal.configuration.plugins.Plugins; import org.mockito.junit.MockitoJUnitRunner; import javax.sql.XAConnection; @@ -69,8 +69,8 @@ public void assertGetXAResourcesCreatingConnecting() throws SQLException { } @Test - public void assertGetXAResourcesWithoutConnecting() throws SQLException, NoSuchFieldException { - new InstanceField(DataSourceXAResourceRecoveryHelper.class.getDeclaredField("delegate"), recoveryHelper).set(xaResource); + public void assertGetXAResourcesWithoutConnecting() throws SQLException, ReflectiveOperationException { + Plugins.getMemberAccessor().set(DataSourceXAResourceRecoveryHelper.class.getDeclaredField("delegate"), recoveryHelper, xaResource); recoveryHelper.getXAResources(); XAResource[] xaResources = recoveryHelper.getXAResources(); assertThat(xaResources.length, is(1)); diff --git a/kernel/transaction/type/xa/provider/narayana/src/test/java/org/apache/shardingsphere/transaction/xa/narayana/manager/NarayanaXATransactionManagerProviderTest.java b/kernel/transaction/type/xa/provider/narayana/src/test/java/org/apache/shardingsphere/transaction/xa/narayana/manager/NarayanaXATransactionManagerProviderTest.java index a45cd7aff68d5..b4bd3c60c9139 100644 --- a/kernel/transaction/type/xa/provider/narayana/src/test/java/org/apache/shardingsphere/transaction/xa/narayana/manager/NarayanaXATransactionManagerProviderTest.java +++ b/kernel/transaction/type/xa/provider/narayana/src/test/java/org/apache/shardingsphere/transaction/xa/narayana/manager/NarayanaXATransactionManagerProviderTest.java @@ -24,7 +24,7 @@ import org.junit.Test; import org.junit.runner.RunWith; import org.mockito.Mock; -import org.mockito.internal.util.reflection.InstanceField; +import org.mockito.internal.configuration.plugins.Plugins; import org.mockito.junit.MockitoJUnitRunner; import javax.sql.XADataSource; @@ -58,10 +58,10 @@ public final class NarayanaXATransactionManagerProviderTest { private XADataSource xaDataSource; @Before - public void setUp() throws NoSuchFieldException { - new InstanceField(NarayanaXATransactionManagerProvider.class.getDeclaredField("xaRecoveryModule"), transactionManagerProvider).set(xaRecoveryModule); - new InstanceField(NarayanaXATransactionManagerProvider.class.getDeclaredField("transactionManager"), transactionManagerProvider).set(transactionManager); - new InstanceField(NarayanaXATransactionManagerProvider.class.getDeclaredField("recoveryManagerService"), transactionManagerProvider).set(recoveryManagerService); + public void setUp() throws ReflectiveOperationException { + Plugins.getMemberAccessor().set(NarayanaXATransactionManagerProvider.class.getDeclaredField("xaRecoveryModule"), transactionManagerProvider, xaRecoveryModule); + Plugins.getMemberAccessor().set(NarayanaXATransactionManagerProvider.class.getDeclaredField("transactionManager"), transactionManagerProvider, transactionManager); + Plugins.getMemberAccessor().set(NarayanaXATransactionManagerProvider.class.getDeclaredField("recoveryManagerService"), transactionManagerProvider, recoveryManagerService); } @Test diff --git a/mode/core/src/test/java/org/apache/shardingsphere/mode/metadata/persist/MetaDataPersistServiceTest.java b/mode/core/src/test/java/org/apache/shardingsphere/mode/metadata/persist/MetaDataPersistServiceTest.java index ffee92db2aa23..bfa50a50caca8 100644 --- a/mode/core/src/test/java/org/apache/shardingsphere/mode/metadata/persist/MetaDataPersistServiceTest.java +++ b/mode/core/src/test/java/org/apache/shardingsphere/mode/metadata/persist/MetaDataPersistServiceTest.java @@ -36,7 +36,7 @@ import org.junit.Test; import org.junit.runner.RunWith; import org.mockito.Mock; -import org.mockito.internal.util.reflection.InstanceField; +import org.mockito.internal.configuration.plugins.Plugins; import org.mockito.junit.MockitoJUnitRunner; import javax.sql.DataSource; @@ -85,7 +85,7 @@ public void setUp() throws ReflectiveOperationException { } private void setField(final String name, final Object value) throws ReflectiveOperationException { - new InstanceField(metaDataPersistService.getClass().getDeclaredField(name), metaDataPersistService).set(value); + Plugins.getMemberAccessor().set(metaDataPersistService.getClass().getDeclaredField(name), metaDataPersistService, value); } @Test diff --git a/mode/type/cluster/core/src/test/java/org/apache/shardingsphere/mode/manager/cluster/coordinator/registry/metadata/subscriber/SchemaMetaDataRegistrySubscriberTest.java b/mode/type/cluster/core/src/test/java/org/apache/shardingsphere/mode/manager/cluster/coordinator/registry/metadata/subscriber/SchemaMetaDataRegistrySubscriberTest.java index c0f04489718da..95fbd5b36d5d0 100644 --- a/mode/type/cluster/core/src/test/java/org/apache/shardingsphere/mode/manager/cluster/coordinator/registry/metadata/subscriber/SchemaMetaDataRegistrySubscriberTest.java +++ b/mode/type/cluster/core/src/test/java/org/apache/shardingsphere/mode/manager/cluster/coordinator/registry/metadata/subscriber/SchemaMetaDataRegistrySubscriberTest.java @@ -32,7 +32,7 @@ import org.junit.Test; import org.junit.runner.RunWith; import org.mockito.Mock; -import org.mockito.internal.util.reflection.InstanceField; +import org.mockito.internal.configuration.plugins.Plugins; import org.mockito.junit.MockitoJUnitRunner; import java.util.Collections; @@ -54,7 +54,7 @@ public final class SchemaMetaDataRegistrySubscriberTest { @Before public void setUp() throws ReflectiveOperationException { schemaMetaDataRegistrySubscriber = new SchemaMetaDataRegistrySubscriber(mock(ClusterPersistRepository.class), new EventBusContext()); - new InstanceField(schemaMetaDataRegistrySubscriber.getClass().getDeclaredField("persistService"), schemaMetaDataRegistrySubscriber).set(persistService); + Plugins.getMemberAccessor().set(schemaMetaDataRegistrySubscriber.getClass().getDeclaredField("persistService"), schemaMetaDataRegistrySubscriber, persistService); } @Test diff --git a/mode/type/cluster/core/src/test/java/org/apache/shardingsphere/mode/manager/cluster/coordinator/subscriber/ProcessListChangedSubscriberTest.java b/mode/type/cluster/core/src/test/java/org/apache/shardingsphere/mode/manager/cluster/coordinator/subscriber/ProcessListChangedSubscriberTest.java index b04f5f699b658..2d800cbae39b3 100644 --- a/mode/type/cluster/core/src/test/java/org/apache/shardingsphere/mode/manager/cluster/coordinator/subscriber/ProcessListChangedSubscriberTest.java +++ b/mode/type/cluster/core/src/test/java/org/apache/shardingsphere/mode/manager/cluster/coordinator/subscriber/ProcessListChangedSubscriberTest.java @@ -45,7 +45,7 @@ import org.junit.runner.RunWith; import org.mockito.Answers; import org.mockito.Mock; -import org.mockito.internal.util.reflection.FieldReader; +import org.mockito.internal.configuration.plugins.Plugins; import org.mockito.junit.MockitoJUnitRunner; import java.sql.SQLException; @@ -122,23 +122,23 @@ public void assertCompleteUnitShowProcessList() { } @Test - public void assertTriggerShowProcessList() throws NoSuchFieldException { + public void assertTriggerShowProcessList() throws ReflectiveOperationException { String instanceId = contextManager.getInstanceContext().getInstance().getMetaData().getId(); ShowProcessListManager.getInstance().putProcessContext("foo_execution_id", mock(ExecuteProcessContext.class)); String processListId = "foo_process_id"; subscriber.triggerShowProcessList(new ShowProcessListTriggerEvent(instanceId, processListId)); - ClusterPersistRepository repository = ((RegistryCenter) new FieldReader(subscriber, ProcessListChangedSubscriber.class.getDeclaredField("registryCenter")).read()).getRepository(); + ClusterPersistRepository repository = ((RegistryCenter) Plugins.getMemberAccessor().get(ProcessListChangedSubscriber.class.getDeclaredField("registryCenter"), subscriber)).getRepository(); verify(repository).persist("/execution_nodes/foo_process_id/" + instanceId, "contexts:" + System.lineSeparator() + "- startTimeMillis: 0" + System.lineSeparator()); verify(repository).delete("/nodes/compute_nodes/process_trigger/" + instanceId + ":foo_process_id"); } @Test - public void assertKillProcessListId() throws SQLException, NoSuchFieldException { + public void assertKillProcessListId() throws SQLException, ReflectiveOperationException { String instanceId = contextManager.getInstanceContext().getInstance().getMetaData().getId(); String processId = "foo_process_id"; subscriber.killProcessListId(new KillProcessListIdEvent(instanceId, processId)); - ClusterPersistRepository repository = ((RegistryCenter) new FieldReader(subscriber, ProcessListChangedSubscriber.class.getDeclaredField("registryCenter")).read()).getRepository(); + ClusterPersistRepository repository = ((RegistryCenter) Plugins.getMemberAccessor().get(ProcessListChangedSubscriber.class.getDeclaredField("registryCenter"), subscriber)).getRepository(); verify(repository).delete("/nodes/compute_nodes/process_kill/" + instanceId + ":foo_process_id"); } diff --git a/mode/type/cluster/repository/provider/zookeeper/src/test/java/org/apache/shardingsphere/mode/repository/cluster/zookeeper/ZookeeperRepositoryTest.java b/mode/type/cluster/repository/provider/zookeeper/src/test/java/org/apache/shardingsphere/mode/repository/cluster/zookeeper/ZookeeperRepositoryTest.java index 490c73babbaad..d16641466ca12 100644 --- a/mode/type/cluster/repository/provider/zookeeper/src/test/java/org/apache/shardingsphere/mode/repository/cluster/zookeeper/ZookeeperRepositoryTest.java +++ b/mode/type/cluster/repository/provider/zookeeper/src/test/java/org/apache/shardingsphere/mode/repository/cluster/zookeeper/ZookeeperRepositoryTest.java @@ -48,7 +48,7 @@ import org.junit.runner.RunWith; import org.mockito.AdditionalAnswers; import org.mockito.Mock; -import org.mockito.internal.util.reflection.InstanceField; +import org.mockito.internal.configuration.plugins.Plugins; import org.mockito.junit.MockitoJUnitRunner; import org.mockito.stubbing.VoidAnswer1; @@ -124,9 +124,9 @@ public void init() { mockDistributedLockHolder(); } - @SneakyThrows({NoSuchFieldException.class, InterruptedException.class}) + @SneakyThrows({ReflectiveOperationException.class, InterruptedException.class}) private void mockClient() { - new InstanceField(ZookeeperRepository.class.getDeclaredField("builder"), REPOSITORY).set(builder); + Plugins.getMemberAccessor().set(ZookeeperRepository.class.getDeclaredField("builder"), REPOSITORY, builder); when(builder.connectString(anyString())).thenReturn(builder); when(builder.retryPolicy(any(RetryPolicy.class))).thenReturn(builder); when(builder.ensembleTracker(anyBoolean())).thenReturn(builder); @@ -139,11 +139,11 @@ private void mockClient() { when(client.blockUntilConnected(anyInt(), eq(TimeUnit.MILLISECONDS))).thenReturn(true); } - @SneakyThrows(NoSuchFieldException.class) + @SneakyThrows(ReflectiveOperationException.class) private void mockDistributedLockHolder() { DistributedLockHolder distributedLockHolder = new DistributedLockHolder("Zookeeper", client, new ZookeeperProperties(new Properties())); - new InstanceField(DistributedLockHolder.class.getDeclaredField("locks"), distributedLockHolder).set(Collections.singletonMap("/locks/glock", mock(ZookeeperDistributedLock.class))); - new InstanceField(ZookeeperRepository.class.getDeclaredField("distributedLockHolder"), REPOSITORY).set(distributedLockHolder); + Plugins.getMemberAccessor().set(DistributedLockHolder.class.getDeclaredField("locks"), distributedLockHolder, Collections.singletonMap("/locks/glock", mock(ZookeeperDistributedLock.class))); + Plugins.getMemberAccessor().set(ZookeeperRepository.class.getDeclaredField("distributedLockHolder"), REPOSITORY, distributedLockHolder); } private void mockBuilder() { @@ -239,7 +239,7 @@ public void assertWatchAddedChangedType() throws ExecutionException, Interrupted private void mockCache(final String key) { Map caches = new HashMap<>(); caches.put(key, curatorCache); - new InstanceField(ZookeeperRepository.class.getDeclaredField("caches"), REPOSITORY).set(caches); + Plugins.getMemberAccessor().set(ZookeeperRepository.class.getDeclaredField("caches"), REPOSITORY, caches); when(curatorCache.listenable()).thenReturn(listenable); } diff --git a/proxy/backend/src/test/java/org/apache/shardingsphere/proxy/backend/communication/jdbc/DatabaseCommunicationEngineTest.java b/proxy/backend/src/test/java/org/apache/shardingsphere/proxy/backend/communication/jdbc/DatabaseCommunicationEngineTest.java index cd9e1768f9272..06d9d8c106f95 100644 --- a/proxy/backend/src/test/java/org/apache/shardingsphere/proxy/backend/communication/jdbc/DatabaseCommunicationEngineTest.java +++ b/proxy/backend/src/test/java/org/apache/shardingsphere/proxy/backend/communication/jdbc/DatabaseCommunicationEngineTest.java @@ -65,7 +65,6 @@ import org.mockito.Mock; import org.mockito.MockedStatic; import org.mockito.internal.configuration.plugins.Plugins; -import org.mockito.internal.util.reflection.FieldReader; import org.mockito.junit.MockitoJUnitRunner; import org.mockito.plugins.MemberAccessor; @@ -292,8 +291,8 @@ public void assertCloseResultSetsWithExceptionThrown() throws SQLException { } @SuppressWarnings("unchecked") - @SneakyThrows(NoSuchFieldException.class) + @SneakyThrows(ReflectiveOperationException.class) private T getField(final DatabaseCommunicationEngine target, final String fieldName) { - return (T) new FieldReader(target, DatabaseCommunicationEngine.class.getDeclaredField(fieldName)).read(); + return (T) Plugins.getMemberAccessor().get(DatabaseCommunicationEngine.class.getDeclaredField(fieldName), target); } } diff --git a/proxy/backend/src/test/java/org/apache/shardingsphere/proxy/backend/communication/jdbc/connection/BackendConnectionTest.java b/proxy/backend/src/test/java/org/apache/shardingsphere/proxy/backend/communication/jdbc/connection/BackendConnectionTest.java index e51236b61f7c7..aa83fef1d7cee 100644 --- a/proxy/backend/src/test/java/org/apache/shardingsphere/proxy/backend/communication/jdbc/connection/BackendConnectionTest.java +++ b/proxy/backend/src/test/java/org/apache/shardingsphere/proxy/backend/communication/jdbc/connection/BackendConnectionTest.java @@ -47,8 +47,7 @@ import org.mockito.Answers; import org.mockito.Mock; import org.mockito.MockedStatic; -import org.mockito.internal.util.reflection.FieldReader; -import org.mockito.internal.util.reflection.InstanceField; +import org.mockito.internal.configuration.plugins.Plugins; import org.mockito.junit.MockitoJUnitRunner; import java.lang.reflect.Field; @@ -133,15 +132,15 @@ private ShardingSphereRuleMetaData mockGlobalRuleMetaData() { return mock(ShardingSphereRuleMetaData.class); } - private void setBackendDataSource() throws NoSuchFieldException { - new InstanceField(ProxyContext.getInstance().getClass().getDeclaredField("backendDataSource"), ProxyContext.getInstance()).set(backendDataSource); + private void setBackendDataSource() throws ReflectiveOperationException { + Plugins.getMemberAccessor().set(ProxyContext.getInstance().getClass().getDeclaredField("backendDataSource"), ProxyContext.getInstance(), backendDataSource); } @After public void clean() throws ReflectiveOperationException { Field field = ProxyContext.getInstance().getClass().getDeclaredField("backendDataSource"); Object datasource = field.getType().getDeclaredConstructor().newInstance(); - new InstanceField(field, ProxyContext.getInstance()).set(datasource); + Plugins.getMemberAccessor().set(field, ProxyContext.getInstance(), datasource); } @Test @@ -191,7 +190,7 @@ private void setConnectionPostProcessors() { ConnectionPostProcessor connectionPostProcessor = mock(ConnectionPostProcessor.class); Collection connectionPostProcessors = new LinkedList<>(); connectionPostProcessors.add(connectionPostProcessor); - new InstanceField(BackendConnection.class.getDeclaredField("connectionPostProcessors"), backendConnection).set(connectionPostProcessors); + Plugins.getMemberAccessor().set(BackendConnection.class.getDeclaredField("connectionPostProcessors"), backendConnection, connectionPostProcessors); } @Test @@ -223,8 +222,9 @@ public void assertIsSerialExecuteWhenInTransactionAndXaTransactionType() { @SuppressWarnings("unchecked") @Test - public void assertCloseConnectionsCorrectlyWhenNotForceRollback() throws NoSuchFieldException, SQLException { - Multimap cachedConnections = (Multimap) new FieldReader(backendConnection, BackendConnection.class.getDeclaredField("cachedConnections")).read(); + public void assertCloseConnectionsCorrectlyWhenNotForceRollback() throws ReflectiveOperationException, SQLException { + Multimap cachedConnections = (Multimap) Plugins.getMemberAccessor() + .get(BackendConnection.class.getDeclaredField("cachedConnections"), backendConnection); Connection connection = prepareCachedConnections(); cachedConnections.put("ignoredDataSourceName", connection); backendConnection.closeConnections(false); @@ -316,27 +316,29 @@ public void assertGetConnectionsWithoutTransactions() throws SQLException { } @SuppressWarnings("unchecked") - @SneakyThrows(NoSuchFieldException.class) + @SneakyThrows(ReflectiveOperationException.class) private void assertConnectionsCached(final String dataSourceName, final Collection connections) { - Multimap cachedConnections = (Multimap) new FieldReader(backendConnection, BackendConnection.class.getDeclaredField("cachedConnections")).read(); + Multimap cachedConnections = (Multimap) Plugins.getMemberAccessor() + .get(BackendConnection.class.getDeclaredField("cachedConnections"), backendConnection); assertTrue(cachedConnections.containsKey(dataSourceName)); assertArrayEquals(cachedConnections.get(dataSourceName).toArray(), connections.toArray()); } @SuppressWarnings("unchecked") - @SneakyThrows(NoSuchFieldException.class) + @SneakyThrows(ReflectiveOperationException.class) private Connection prepareCachedConnections() { - Multimap cachedConnections = (Multimap) new FieldReader(backendConnection, BackendConnection.class.getDeclaredField("cachedConnections")).read(); + Multimap cachedConnections = (Multimap) Plugins.getMemberAccessor() + .get(BackendConnection.class.getDeclaredField("cachedConnections"), backendConnection); Connection connection = mock(Connection.class); cachedConnections.put("ignoredDataSourceName", connection); return connection; } @SuppressWarnings("unchecked") - @SneakyThrows(NoSuchFieldException.class) + @SneakyThrows(ReflectiveOperationException.class) private void verifyConnectionPostProcessorsEmpty() { - Collection connectionPostProcessors = (Collection) new FieldReader( - backendConnection, BackendConnection.class.getDeclaredField("connectionPostProcessors")).read(); + Collection connectionPostProcessors = (Collection) Plugins.getMemberAccessor() + .get(BackendConnection.class.getDeclaredField("connectionPostProcessors"), backendConnection); assertTrue(connectionPostProcessors.isEmpty()); } @@ -394,13 +396,13 @@ public void assertCloseHandlers() throws SQLException { @SuppressWarnings("unchecked") @SneakyThrows(ReflectiveOperationException.class) private Collection getDatabaseCommunicationEngines() { - return (Collection) new FieldReader(backendConnection, BackendConnection.class.getDeclaredField("backendHandlers")).read(); + return (Collection) Plugins.getMemberAccessor().get(BackendConnection.class.getDeclaredField("backendHandlers"), backendConnection); } @SuppressWarnings("unchecked") @SneakyThrows(ReflectiveOperationException.class) private Collection getInUseDatabaseCommunicationEngines() { - return (Collection) new FieldReader(backendConnection, BackendConnection.class.getDeclaredField("inUseBackendHandlers")).read(); + return (Collection) Plugins.getMemberAccessor().get(BackendConnection.class.getDeclaredField("inUseBackendHandlers"), backendConnection); } @Test diff --git a/proxy/backend/src/test/java/org/apache/shardingsphere/proxy/backend/communication/jdbc/connection/MockConnectionUtil.java b/proxy/backend/src/test/java/org/apache/shardingsphere/proxy/backend/communication/jdbc/connection/MockConnectionUtil.java index 4a2dc471e87eb..7e73528116eac 100644 --- a/proxy/backend/src/test/java/org/apache/shardingsphere/proxy/backend/communication/jdbc/connection/MockConnectionUtil.java +++ b/proxy/backend/src/test/java/org/apache/shardingsphere/proxy/backend/communication/jdbc/connection/MockConnectionUtil.java @@ -23,7 +23,7 @@ import lombok.NoArgsConstructor; import lombok.SneakyThrows; import org.apache.shardingsphere.proxy.backend.communication.BackendConnection; -import org.mockito.internal.util.reflection.InstanceField; +import org.mockito.internal.configuration.plugins.Plugins; import java.sql.Connection; import java.util.ArrayList; @@ -44,11 +44,11 @@ final class MockConnectionUtil { * @param dataSourceName datasource name * @param connectionSize connection size */ - @SneakyThrows(NoSuchFieldException.class) + @SneakyThrows(ReflectiveOperationException.class) static void setCachedConnections(final BackendConnection backendConnection, final String dataSourceName, final int connectionSize) { Multimap cachedConnections = HashMultimap.create(); cachedConnections.putAll(backendConnection.getConnectionSession().getDatabaseName() + "." + dataSourceName, mockNewConnections(connectionSize)); - new InstanceField(backendConnection.getClass().getDeclaredField("cachedConnections"), backendConnection).set(cachedConnections); + Plugins.getMemberAccessor().set(backendConnection.getClass().getDeclaredField("cachedConnections"), backendConnection, cachedConnections); } /** diff --git a/proxy/backend/src/test/java/org/apache/shardingsphere/proxy/backend/communication/jdbc/transaction/BackendTransactionManagerTest.java b/proxy/backend/src/test/java/org/apache/shardingsphere/proxy/backend/communication/jdbc/transaction/BackendTransactionManagerTest.java index 9ac343ddcfe14..e03a7bb13f55b 100644 --- a/proxy/backend/src/test/java/org/apache/shardingsphere/proxy/backend/communication/jdbc/transaction/BackendTransactionManagerTest.java +++ b/proxy/backend/src/test/java/org/apache/shardingsphere/proxy/backend/communication/jdbc/transaction/BackendTransactionManagerTest.java @@ -35,7 +35,7 @@ import org.junit.Test; import org.junit.runner.RunWith; import org.mockito.Mock; -import org.mockito.internal.util.reflection.InstanceField; +import org.mockito.internal.configuration.plugins.Plugins; import org.mockito.junit.MockitoJUnitRunner; import java.sql.SQLException; @@ -172,6 +172,6 @@ private void newBackendTransactionManager(final TransactionType transactionType, @SneakyThrows(ReflectiveOperationException.class) private void setLocalTransactionManager() { - new InstanceField(BackendTransactionManager.class.getDeclaredField("localTransactionManager"), backendTransactionManager).set(localTransactionManager); + Plugins.getMemberAccessor().set(BackendTransactionManager.class.getDeclaredField("localTransactionManager"), backendTransactionManager, localTransactionManager); } } diff --git a/proxy/backend/src/test/java/org/apache/shardingsphere/proxy/backend/handler/admin/mysql/executor/ShowProcessListExecutorTest.java b/proxy/backend/src/test/java/org/apache/shardingsphere/proxy/backend/handler/admin/mysql/executor/ShowProcessListExecutorTest.java index 77f4fef8af209..3dc8d7d399252 100644 --- a/proxy/backend/src/test/java/org/apache/shardingsphere/proxy/backend/handler/admin/mysql/executor/ShowProcessListExecutorTest.java +++ b/proxy/backend/src/test/java/org/apache/shardingsphere/proxy/backend/handler/admin/mysql/executor/ShowProcessListExecutorTest.java @@ -27,7 +27,7 @@ import org.apache.shardingsphere.transaction.api.TransactionType; import org.junit.Before; import org.junit.Test; -import org.mockito.internal.util.reflection.InstanceField; +import org.mockito.internal.configuration.plugins.Plugins; import java.sql.SQLException; import java.util.Collections; @@ -42,13 +42,13 @@ public final class ShowProcessListExecutorTest extends ProxyContextRestorer { private ShowProcessListExecutor showProcessListExecutor; @Before - public void setUp() throws NoSuchFieldException, IllegalAccessException { + public void setUp() throws ReflectiveOperationException { ProxyContext.init(mock(ContextManager.class, RETURNS_DEEP_STUBS)); showProcessListExecutor = new ShowProcessListExecutor(); setupBatchProcessContexts(); } - private void setupBatchProcessContexts() throws NoSuchFieldException { + private void setupBatchProcessContexts() throws ReflectiveOperationException { String executionNodeValue = "contexts:\n" + "- executionID: f6c2336a-63ba-41bf-941e-2e3504eb2c80\n" + " sql: alter table t_order add column a varchar(64) after order_id\n" @@ -61,7 +61,7 @@ private void setupBatchProcessContexts() throws NoSuchFieldException { + " unitID: unitID1\n" + " - status: EXECUTE_STATUS_DONE\n" + " unitID: unitID2\n"; - new InstanceField(showProcessListExecutor.getClass().getDeclaredField("batchProcessContexts"), showProcessListExecutor).set(Collections.singleton(executionNodeValue)); + Plugins.getMemberAccessor().set(showProcessListExecutor.getClass().getDeclaredField("batchProcessContexts"), showProcessListExecutor, Collections.singleton(executionNodeValue)); } @Test diff --git a/proxy/backend/src/test/java/org/apache/shardingsphere/proxy/backend/handler/admin/opengauss/OpenGaussAdminExecutorFactoryTest.java b/proxy/backend/src/test/java/org/apache/shardingsphere/proxy/backend/handler/admin/opengauss/OpenGaussAdminExecutorFactoryTest.java index e70fdb34c2812..f0c11dc4cdbde 100644 --- a/proxy/backend/src/test/java/org/apache/shardingsphere/proxy/backend/handler/admin/opengauss/OpenGaussAdminExecutorFactoryTest.java +++ b/proxy/backend/src/test/java/org/apache/shardingsphere/proxy/backend/handler/admin/opengauss/OpenGaussAdminExecutorFactoryTest.java @@ -24,7 +24,7 @@ import org.junit.Test; import org.junit.runner.RunWith; import org.mockito.Mock; -import org.mockito.internal.util.reflection.InstanceField; +import org.mockito.internal.configuration.plugins.Plugins; import org.mockito.junit.MockitoJUnitRunner; import java.util.Collections; @@ -47,9 +47,9 @@ public final class OpenGaussAdminExecutorFactoryTest { private OpenGaussAdminExecutorCreator openGaussAdminExecutorFactory; @Before - public void setup() throws IllegalAccessException, NoSuchFieldException { + public void setup() throws ReflectiveOperationException { openGaussAdminExecutorFactory = new OpenGaussAdminExecutorCreator(); - new InstanceField(OpenGaussAdminExecutorCreator.class.getDeclaredField("delegated"), openGaussAdminExecutorFactory).set(postgreSQLAdminExecutorFactory); + Plugins.getMemberAccessor().set(OpenGaussAdminExecutorCreator.class.getDeclaredField("delegated"), openGaussAdminExecutorFactory, postgreSQLAdminExecutorFactory); } @Test diff --git a/proxy/backend/src/test/java/org/apache/shardingsphere/proxy/backend/handler/data/impl/UnicastDatabaseBackendHandlerTest.java b/proxy/backend/src/test/java/org/apache/shardingsphere/proxy/backend/handler/data/impl/UnicastDatabaseBackendHandlerTest.java index 3bcdabb313c85..57f92f8ca4dbe 100644 --- a/proxy/backend/src/test/java/org/apache/shardingsphere/proxy/backend/handler/data/impl/UnicastDatabaseBackendHandlerTest.java +++ b/proxy/backend/src/test/java/org/apache/shardingsphere/proxy/backend/handler/data/impl/UnicastDatabaseBackendHandlerTest.java @@ -42,7 +42,7 @@ import org.junit.Test; import org.junit.runner.RunWith; import org.mockito.Mock; -import org.mockito.internal.util.reflection.InstanceField; +import org.mockito.internal.configuration.plugins.Plugins; import org.mockito.junit.MockitoJUnitRunner; import java.sql.SQLException; @@ -108,9 +108,10 @@ private void mockDatabaseCommunicationEngine(final ResponseHeader responseHeader when(databaseCommunicationEngineFactory.newDatabaseCommunicationEngine(any(QueryContext.class), any(BackendConnection.class), eq(false))).thenReturn(databaseCommunicationEngine); } - @SneakyThrows(NoSuchFieldException.class) + @SneakyThrows(ReflectiveOperationException.class) private void setBackendHandlerFactory(final DatabaseBackendHandler schemaDatabaseBackendHandler) { - new InstanceField(schemaDatabaseBackendHandler.getClass().getDeclaredField("databaseCommunicationEngineFactory"), schemaDatabaseBackendHandler).set(databaseCommunicationEngineFactory); + Plugins.getMemberAccessor() + .set(schemaDatabaseBackendHandler.getClass().getDeclaredField("databaseCommunicationEngineFactory"), schemaDatabaseBackendHandler, databaseCommunicationEngineFactory); } @Test diff --git a/proxy/backend/src/test/java/org/apache/shardingsphere/proxy/backend/handler/distsql/ral/updatable/ImportDatabaseConfigurationHandlerTest.java b/proxy/backend/src/test/java/org/apache/shardingsphere/proxy/backend/handler/distsql/ral/updatable/ImportDatabaseConfigurationHandlerTest.java index 6c520f3e8dee3..39ede4e6644c7 100644 --- a/proxy/backend/src/test/java/org/apache/shardingsphere/proxy/backend/handler/distsql/ral/updatable/ImportDatabaseConfigurationHandlerTest.java +++ b/proxy/backend/src/test/java/org/apache/shardingsphere/proxy/backend/handler/distsql/ral/updatable/ImportDatabaseConfigurationHandlerTest.java @@ -38,10 +38,11 @@ import org.junit.Test; import org.junit.runner.RunWith; import org.mockito.Mock; -import org.mockito.internal.util.reflection.InstanceField; +import org.mockito.internal.configuration.plugins.Plugins; import org.mockito.junit.MockitoJUnitRunner; import javax.sql.DataSource; +import java.sql.SQLException; import java.util.Collection; import java.util.Collections; import java.util.HashMap; @@ -95,40 +96,40 @@ public void setup() { } @Test(expected = IllegalStateException.class) - public void assertImportDatabaseExecutorForSharding() throws Exception { + public void assertImportDatabaseExecutorForSharding() throws ReflectiveOperationException, SQLException { init(sharding); - new InstanceField(importDatabaseConfigurationHandler.getClass().getDeclaredField("shardingRuleConfigurationImportChecker"), - importDatabaseConfigurationHandler).set(shardingRuleConfigurationImportChecker); + Plugins.getMemberAccessor().set(importDatabaseConfigurationHandler.getClass().getDeclaredField("shardingRuleConfigurationImportChecker"), + importDatabaseConfigurationHandler, shardingRuleConfigurationImportChecker); assertNotNull(ProxyContext.getInstance().getContextManager().getDataSourceMap(sharding)); assertNotNull(ProxyContext.getInstance().getContextManager().getMetaDataContexts().getMetaData().getDatabase(sharding).getRuleMetaData().getConfigurations()); assertThat(importDatabaseConfigurationHandler.execute(), instanceOf(UpdateResponseHeader.class)); } @Test(expected = IllegalStateException.class) - public void assertImportDatabaseExecutorForReadwriteSplitting() throws Exception { + public void assertImportDatabaseExecutorForReadwriteSplitting() throws ReflectiveOperationException, SQLException { init(readwriteSplitting); - new InstanceField(importDatabaseConfigurationHandler.getClass().getDeclaredField("readwriteSplittingRuleConfigurationImportChecker"), - importDatabaseConfigurationHandler).set(readwriteSplittingRuleConfigurationImportChecker); + Plugins.getMemberAccessor().set(importDatabaseConfigurationHandler.getClass().getDeclaredField("readwriteSplittingRuleConfigurationImportChecker"), + importDatabaseConfigurationHandler, readwriteSplittingRuleConfigurationImportChecker); assertNotNull(ProxyContext.getInstance().getContextManager().getDataSourceMap(readwriteSplitting)); assertNotNull(ProxyContext.getInstance().getContextManager().getMetaDataContexts().getMetaData().getDatabase(readwriteSplitting).getRuleMetaData().getConfigurations()); assertThat(importDatabaseConfigurationHandler.execute(), instanceOf(UpdateResponseHeader.class)); } @Test(expected = IllegalStateException.class) - public void assertImportDatabaseExecutorForDatabaseDiscovery() throws Exception { + public void assertImportDatabaseExecutorForDatabaseDiscovery() throws ReflectiveOperationException, SQLException { init(databaseDiscovery); - new InstanceField(importDatabaseConfigurationHandler.getClass().getDeclaredField("databaseDiscoveryRuleConfigurationImportChecker"), - importDatabaseConfigurationHandler).set(databaseDiscoveryRuleConfigurationImportChecker); + Plugins.getMemberAccessor().set(importDatabaseConfigurationHandler.getClass().getDeclaredField("databaseDiscoveryRuleConfigurationImportChecker"), + importDatabaseConfigurationHandler, databaseDiscoveryRuleConfigurationImportChecker); assertNotNull(ProxyContext.getInstance().getContextManager().getDataSourceMap(databaseDiscovery)); assertNotNull(ProxyContext.getInstance().getContextManager().getMetaDataContexts().getMetaData().getDatabase(databaseDiscovery).getRuleMetaData().getConfigurations()); assertThat(importDatabaseConfigurationHandler.execute(), instanceOf(UpdateResponseHeader.class)); } - private void init(final String feature) throws Exception { + private void init(final String feature) throws ReflectiveOperationException { ImportDatabaseConfigurationHandler handler = importDatabaseConfigurationHandler = new ImportDatabaseConfigurationHandler(); handler.init(new ImportDatabaseConfigurationStatement(Objects.requireNonNull(ImportDatabaseConfigurationHandlerTest.class.getResource(featureMap.get(feature))).getPath()), mock(ConnectionSession.class)); - new InstanceField(importDatabaseConfigurationHandler.getClass().getDeclaredField("validateHandler"), importDatabaseConfigurationHandler).set(validateHandler); + Plugins.getMemberAccessor().set(importDatabaseConfigurationHandler.getClass().getDeclaredField("validateHandler"), importDatabaseConfigurationHandler, validateHandler); ContextManager contextManager = mock(ContextManager.class, RETURNS_DEEP_STUBS); ShardingSphereDatabase database = mock(ShardingSphereDatabase.class, RETURNS_DEEP_STUBS); when(database.getSchema(DefaultDatabase.LOGIC_NAME)).thenReturn(new ShardingSphereSchema(createTableMap(), Collections.emptyMap())); diff --git a/proxy/backend/src/test/java/org/apache/shardingsphere/proxy/backend/handler/distsql/rdl/resource/AlterStorageUnitBackendHandlerTest.java b/proxy/backend/src/test/java/org/apache/shardingsphere/proxy/backend/handler/distsql/rdl/resource/AlterStorageUnitBackendHandlerTest.java index cef3148334eb4..89ce020467e3c 100644 --- a/proxy/backend/src/test/java/org/apache/shardingsphere/proxy/backend/handler/distsql/rdl/resource/AlterStorageUnitBackendHandlerTest.java +++ b/proxy/backend/src/test/java/org/apache/shardingsphere/proxy/backend/handler/distsql/rdl/resource/AlterStorageUnitBackendHandlerTest.java @@ -41,7 +41,7 @@ import org.junit.runner.RunWith; import org.mockito.Answers; import org.mockito.Mock; -import org.mockito.internal.util.reflection.InstanceField; +import org.mockito.internal.configuration.plugins.Plugins; import org.mockito.junit.MockitoJUnitRunner; import javax.sql.DataSource; @@ -83,12 +83,12 @@ public final class AlterStorageUnitBackendHandlerTest extends ProxyContextRestor private AlterStorageUnitBackendHandler alterStorageUnitBackendHandler; @Before - public void setUp() throws Exception { + public void setUp() throws ReflectiveOperationException { when(metaDataContexts.getMetaData().getDatabase("test_db")).thenReturn(database); when(metaDataContexts.getMetaData().containsDatabase("test_db")).thenReturn(true); when(connectionSession.getProtocolType()).thenReturn(new MySQLDatabaseType()); alterStorageUnitBackendHandler = new AlterStorageUnitBackendHandler(alterStorageUnitStatement, connectionSession); - new InstanceField(alterStorageUnitBackendHandler.getClass().getDeclaredField("validateHandler"), alterStorageUnitBackendHandler).set(validateHandler); + Plugins.getMemberAccessor().set(alterStorageUnitBackendHandler.getClass().getDeclaredField("validateHandler"), alterStorageUnitBackendHandler, validateHandler); } @Test diff --git a/proxy/backend/src/test/java/org/apache/shardingsphere/proxy/backend/handler/distsql/rdl/resource/RegisterStorageUnitBackendHandlerTest.java b/proxy/backend/src/test/java/org/apache/shardingsphere/proxy/backend/handler/distsql/rdl/resource/RegisterStorageUnitBackendHandlerTest.java index db1eea1c09dc5..ffad5ec1647ae 100644 --- a/proxy/backend/src/test/java/org/apache/shardingsphere/proxy/backend/handler/distsql/rdl/resource/RegisterStorageUnitBackendHandlerTest.java +++ b/proxy/backend/src/test/java/org/apache/shardingsphere/proxy/backend/handler/distsql/rdl/resource/RegisterStorageUnitBackendHandlerTest.java @@ -43,7 +43,7 @@ import org.junit.runner.RunWith; import org.mockito.Answers; import org.mockito.Mock; -import org.mockito.internal.util.reflection.InstanceField; +import org.mockito.internal.configuration.plugins.Plugins; import org.mockito.junit.MockitoJUnitRunner; import java.util.Collection; @@ -95,7 +95,7 @@ public void setUp() throws ReflectiveOperationException { when(database.getRuleMetaData()).thenReturn(ruleMetaData); when(ruleMetaData.findSingleRule(ReadwriteSplittingRule.class)).thenReturn(Optional.of(readwriteSplittingRule)); registerStorageUnitBackendHandler = new RegisterStorageUnitBackendHandler(registerStorageUnitStatement, connectionSession); - new InstanceField(registerStorageUnitBackendHandler.getClass().getDeclaredField("validateHandler"), registerStorageUnitBackendHandler).set(validateHandler); + Plugins.getMemberAccessor().set(registerStorageUnitBackendHandler.getClass().getDeclaredField("validateHandler"), registerStorageUnitBackendHandler, validateHandler); } @Test diff --git a/proxy/backend/src/test/java/org/apache/shardingsphere/proxy/backend/handler/transaction/TransactionBackendHandlerFactoryTest.java b/proxy/backend/src/test/java/org/apache/shardingsphere/proxy/backend/handler/transaction/TransactionBackendHandlerFactoryTest.java index 7681bd21ccc42..0e6d36cf2098e 100644 --- a/proxy/backend/src/test/java/org/apache/shardingsphere/proxy/backend/handler/transaction/TransactionBackendHandlerFactoryTest.java +++ b/proxy/backend/src/test/java/org/apache/shardingsphere/proxy/backend/handler/transaction/TransactionBackendHandlerFactoryTest.java @@ -40,7 +40,7 @@ import org.junit.Test; import org.mockito.Answers; import org.mockito.MockedStatic; -import org.mockito.internal.util.reflection.FieldReader; +import org.mockito.internal.configuration.plugins.Plugins; import static org.hamcrest.CoreMatchers.instanceOf; import static org.hamcrest.CoreMatchers.is; @@ -111,12 +111,12 @@ public void assertBroadcastBackendHandlerReturnedWhenTCLStatementNotHit() { @SuppressWarnings("unchecked") @SneakyThrows(ReflectiveOperationException.class) private void assertFieldOfInstance(final S classInstance, final String fieldName, final Matcher matcher) { - T value = (T) new FieldReader(classInstance, classInstance.getClass().getDeclaredField(fieldName)).read(); + T value = (T) Plugins.getMemberAccessor().get(classInstance.getClass().getDeclaredField(fieldName), classInstance); assertThat(value, matcher); } - @SneakyThrows(NoSuchFieldException.class) + @SneakyThrows(ReflectiveOperationException.class) private BackendTransactionManager getBackendTransactionManager(final TransactionBackendHandler transactionBackendHandler) { - return (BackendTransactionManager) new FieldReader(transactionBackendHandler, transactionBackendHandler.getClass().getDeclaredField("backendTransactionManager")).read(); + return (BackendTransactionManager) Plugins.getMemberAccessor().get(transactionBackendHandler.getClass().getDeclaredField("backendTransactionManager"), transactionBackendHandler); } } diff --git a/proxy/frontend/core/src/test/java/org/apache/shardingsphere/proxy/frontend/connection/ConnectionIdGeneratorTest.java b/proxy/frontend/core/src/test/java/org/apache/shardingsphere/proxy/frontend/connection/ConnectionIdGeneratorTest.java index c1598f95aa849..56e584dd5444c 100644 --- a/proxy/frontend/core/src/test/java/org/apache/shardingsphere/proxy/frontend/connection/ConnectionIdGeneratorTest.java +++ b/proxy/frontend/core/src/test/java/org/apache/shardingsphere/proxy/frontend/connection/ConnectionIdGeneratorTest.java @@ -21,7 +21,7 @@ import org.junit.After; import org.junit.Before; import org.junit.Test; -import org.mockito.internal.util.reflection.InstanceField; +import org.mockito.internal.configuration.plugins.Plugins; import static org.hamcrest.CoreMatchers.is; import static org.hamcrest.MatcherAssert.assertThat; @@ -47,6 +47,6 @@ public void assertMaxNextId() { @SneakyThrows(ReflectiveOperationException.class) private void setCurrentConnectionId(final int connectionId) { - new InstanceField(ConnectionIdGenerator.class.getDeclaredField("currentId"), ConnectionIdGenerator.getInstance()).set(connectionId); + Plugins.getMemberAccessor().set(ConnectionIdGenerator.class.getDeclaredField("currentId"), ConnectionIdGenerator.getInstance(), connectionId); } } diff --git a/proxy/frontend/core/src/test/java/org/apache/shardingsphere/proxy/frontend/netty/FrontendChannelInboundHandlerTest.java b/proxy/frontend/core/src/test/java/org/apache/shardingsphere/proxy/frontend/netty/FrontendChannelInboundHandlerTest.java index 6f82f86a71eaf..44647d1bc9762 100644 --- a/proxy/frontend/core/src/test/java/org/apache/shardingsphere/proxy/frontend/netty/FrontendChannelInboundHandlerTest.java +++ b/proxy/frontend/core/src/test/java/org/apache/shardingsphere/proxy/frontend/netty/FrontendChannelInboundHandlerTest.java @@ -38,7 +38,7 @@ import org.mockito.Answers; import org.mockito.Mock; import org.mockito.MockedStatic; -import org.mockito.internal.util.reflection.FieldReader; +import org.mockito.internal.configuration.plugins.Plugins; import org.mockito.junit.MockitoJUnitRunner; import static org.hamcrest.CoreMatchers.is; @@ -86,9 +86,9 @@ public void setup() { connectionSession = getConnectionSession(); } - @SneakyThrows(NoSuchFieldException.class) + @SneakyThrows(ReflectiveOperationException.class) private ConnectionSession getConnectionSession() { - return (ConnectionSession) new FieldReader(frontendChannelInboundHandler, FrontendChannelInboundHandler.class.getDeclaredField("connectionSession")).read(); + return (ConnectionSession) Plugins.getMemberAccessor().get(FrontendChannelInboundHandler.class.getDeclaredField("connectionSession"), frontendChannelInboundHandler); } @Test diff --git a/proxy/frontend/core/src/test/java/org/apache/shardingsphere/proxy/frontend/state/impl/OKProxyStateTest.java b/proxy/frontend/core/src/test/java/org/apache/shardingsphere/proxy/frontend/state/impl/OKProxyStateTest.java index cbda2c2fad90f..6e0ece34b75e6 100644 --- a/proxy/frontend/core/src/test/java/org/apache/shardingsphere/proxy/frontend/state/impl/OKProxyStateTest.java +++ b/proxy/frontend/core/src/test/java/org/apache/shardingsphere/proxy/frontend/state/impl/OKProxyStateTest.java @@ -36,7 +36,7 @@ import org.junit.runner.RunWith; import org.mockito.Answers; import org.mockito.Mock; -import org.mockito.internal.util.reflection.FieldReader; +import org.mockito.internal.configuration.plugins.Plugins; import org.mockito.junit.MockitoJUnitRunner; import java.util.Map; @@ -110,10 +110,10 @@ public void assertExecuteWithProxyBackendExecutorSuitableForOLAPAndRequiredSameT } @SuppressWarnings({"unchecked", "SameParameterValue"}) - @SneakyThrows(NoSuchFieldException.class) + @SneakyThrows(ReflectiveOperationException.class) private ExecutorService registerMockExecutorService(final int connectionId) { - Map executorServices = (Map) new FieldReader( - ConnectionThreadExecutorGroup.getInstance(), ConnectionThreadExecutorGroup.class.getDeclaredField("executorServices")).read(); + Map executorServices = (Map) Plugins.getMemberAccessor() + .get(ConnectionThreadExecutorGroup.class.getDeclaredField("executorServices"), ConnectionThreadExecutorGroup.getInstance()); ExecutorService result = mock(ExecutorService.class); executorServices.put(connectionId, result); return result; diff --git a/proxy/frontend/mysql/src/test/java/org/apache/shardingsphere/proxy/frontend/mysql/MySQLFrontendEngineTest.java b/proxy/frontend/mysql/src/test/java/org/apache/shardingsphere/proxy/frontend/mysql/MySQLFrontendEngineTest.java index 4d7c1358f9bc8..a1ee717712af2 100644 --- a/proxy/frontend/mysql/src/test/java/org/apache/shardingsphere/proxy/frontend/mysql/MySQLFrontendEngineTest.java +++ b/proxy/frontend/mysql/src/test/java/org/apache/shardingsphere/proxy/frontend/mysql/MySQLFrontendEngineTest.java @@ -51,7 +51,7 @@ import org.junit.runner.RunWith; import org.mockito.ArgumentMatcher; import org.mockito.Mock; -import org.mockito.internal.util.reflection.InstanceField; +import org.mockito.internal.configuration.plugins.Plugins; import org.mockito.junit.MockitoJUnitRunner; import java.net.InetAddress; @@ -100,9 +100,9 @@ public void setUp() { when(channel.attr(MySQLConstants.MYSQL_CHARACTER_SET_ATTRIBUTE_KEY)).thenReturn(mock(Attribute.class)); } - @SneakyThrows(NoSuchFieldException.class) + @SneakyThrows(ReflectiveOperationException.class) private void resetConnectionIdGenerator() { - new InstanceField(ConnectionIdGenerator.class.getDeclaredField("currentId"), ConnectionIdGenerator.getInstance()).set(0); + Plugins.getMemberAccessor().set(ConnectionIdGenerator.class.getDeclaredField("currentId"), ConnectionIdGenerator.getInstance(), 0); mysqlFrontendEngine = new MySQLFrontendEngine(); } @@ -157,9 +157,9 @@ public void assertErrorMsgWhenLoginFailure() throws UnknownHostException { verify(context).writeAndFlush(argThat((ArgumentMatcher) argument -> "Access denied for user 'root'@'192.168.0.102' (using password: YES)".equals(argument.getErrorMessage()))); } - @SneakyThrows(NoSuchFieldException.class) + @SneakyThrows(ReflectiveOperationException.class) private void setConnectionPhase(final MySQLConnectionPhase connectionPhase) { - new InstanceField(MySQLAuthenticationEngine.class.getDeclaredField("connectionPhase"), mysqlFrontendEngine.getAuthenticationEngine()).set(connectionPhase); + Plugins.getMemberAccessor().set(MySQLAuthenticationEngine.class.getDeclaredField("connectionPhase"), mysqlFrontendEngine.getAuthenticationEngine(), connectionPhase); } private void initProxyContext(final ShardingSphereUser user) { diff --git a/proxy/frontend/mysql/src/test/java/org/apache/shardingsphere/proxy/frontend/mysql/authentication/MySQLAuthenticationEngineTest.java b/proxy/frontend/mysql/src/test/java/org/apache/shardingsphere/proxy/frontend/mysql/authentication/MySQLAuthenticationEngineTest.java index 270be03ddb163..94c7736b8269a 100644 --- a/proxy/frontend/mysql/src/test/java/org/apache/shardingsphere/proxy/frontend/mysql/authentication/MySQLAuthenticationEngineTest.java +++ b/proxy/frontend/mysql/src/test/java/org/apache/shardingsphere/proxy/frontend/mysql/authentication/MySQLAuthenticationEngineTest.java @@ -44,8 +44,7 @@ import org.apache.shardingsphere.proxy.frontend.mysql.authentication.authenticator.MySQLNativePasswordAuthenticator; import org.junit.Before; import org.junit.Test; -import org.mockito.internal.util.reflection.FieldReader; -import org.mockito.internal.util.reflection.InstanceField; +import org.mockito.internal.configuration.plugins.Plugins; import java.net.InetSocketAddress; import java.net.SocketAddress; @@ -74,12 +73,13 @@ public final class MySQLAuthenticationEngineTest extends ProxyContextRestorer { private final byte[] authResponse = {-27, 89, -20, -27, 65, -120, -64, -101, 86, -100, -108, -100, 6, -125, -37, 117, 14, -43, 95, -113}; @Before - public void setUp() throws NoSuchFieldException { + public void setUp() { initAuthenticationHandlerForAuthenticationEngine(); } - private void initAuthenticationHandlerForAuthenticationEngine() throws NoSuchFieldException { - new InstanceField(MySQLAuthenticationEngine.class.getDeclaredField("authenticationHandler"), authenticationEngine).set(authenticationHandler); + @SneakyThrows(ReflectiveOperationException.class) + private void initAuthenticationHandlerForAuthenticationEngine() { + Plugins.getMemberAccessor().set(MySQLAuthenticationEngine.class.getDeclaredField("authenticationHandler"), authenticationEngine, authenticationHandler); } @Test @@ -122,9 +122,9 @@ public void assertAuthSwitchResponse() { assertThat(getAuthResponse(), is(authResponse)); } - @SneakyThrows(NoSuchFieldException.class) + @SneakyThrows(ReflectiveOperationException.class) private void setAuthenticationResult() { - new InstanceField(MySQLAuthenticationEngine.class.getDeclaredField("currentAuthResult"), authenticationEngine).set(AuthenticationResultBuilder.continued("root", "", "sharding_db")); + Plugins.getMemberAccessor().set(MySQLAuthenticationEngine.class.getDeclaredField("currentAuthResult"), authenticationEngine, AuthenticationResultBuilder.continued("root", "", "sharding_db")); } @Test @@ -209,18 +209,18 @@ private SocketAddress getRemoteAddress() { return result; } - @SneakyThrows(NoSuchFieldException.class) + @SneakyThrows(ReflectiveOperationException.class) private void setConnectionPhase(final MySQLConnectionPhase connectionPhase) { - new InstanceField(MySQLAuthenticationEngine.class.getDeclaredField("connectionPhase"), authenticationEngine).set(connectionPhase); + Plugins.getMemberAccessor().set(MySQLAuthenticationEngine.class.getDeclaredField("connectionPhase"), authenticationEngine, connectionPhase); } - @SneakyThrows(NoSuchFieldException.class) + @SneakyThrows(ReflectiveOperationException.class) private MySQLConnectionPhase getConnectionPhase() { - return (MySQLConnectionPhase) new FieldReader(authenticationEngine, MySQLAuthenticationEngine.class.getDeclaredField("connectionPhase")).read(); + return (MySQLConnectionPhase) Plugins.getMemberAccessor().get(MySQLAuthenticationEngine.class.getDeclaredField("connectionPhase"), authenticationEngine); } - @SneakyThrows(NoSuchFieldException.class) + @SneakyThrows(ReflectiveOperationException.class) private byte[] getAuthResponse() { - return (byte[]) new FieldReader(authenticationEngine, MySQLAuthenticationEngine.class.getDeclaredField("authResponse")).read(); + return (byte[]) Plugins.getMemberAccessor().get(MySQLAuthenticationEngine.class.getDeclaredField("authResponse"), authenticationEngine); } } diff --git a/proxy/frontend/mysql/src/test/java/org/apache/shardingsphere/proxy/frontend/mysql/authentication/MySQLAuthenticationHandlerTest.java b/proxy/frontend/mysql/src/test/java/org/apache/shardingsphere/proxy/frontend/mysql/authentication/MySQLAuthenticationHandlerTest.java index 8826dcd682cdc..30030add1b326 100644 --- a/proxy/frontend/mysql/src/test/java/org/apache/shardingsphere/proxy/frontend/mysql/authentication/MySQLAuthenticationHandlerTest.java +++ b/proxy/frontend/mysql/src/test/java/org/apache/shardingsphere/proxy/frontend/mysql/authentication/MySQLAuthenticationHandlerTest.java @@ -42,7 +42,7 @@ import org.apache.shardingsphere.proxy.frontend.mysql.authentication.authenticator.MySQLNativePasswordAuthenticator; import org.junit.Before; import org.junit.Test; -import org.mockito.internal.util.reflection.InstanceField; +import org.mockito.internal.configuration.plugins.Plugins; import java.util.Collections; import java.util.HashMap; @@ -76,7 +76,7 @@ public void setUp() { @SneakyThrows(ReflectiveOperationException.class) private void initAuthPluginDataForAuthenticationHandler() { MySQLAuthPluginData authPluginData = new MySQLAuthPluginData(part1, part2); - new InstanceField(MySQLAuthenticationHandler.class.getDeclaredField("authPluginData"), authenticationHandler).set(authPluginData); + Plugins.getMemberAccessor().set(MySQLAuthenticationHandler.class.getDeclaredField("authPluginData"), authenticationHandler, authPluginData); } @Test @@ -134,7 +134,7 @@ private void initProxyContext(final ShardingSphereUser user, final boolean isNee ProxyContext.init(contextManager); } - private MetaDataContexts getMetaDataContexts(final ShardingSphereUser user, final boolean isNeedSuper) throws NoSuchFieldException, IllegalAccessException { + private MetaDataContexts getMetaDataContexts(final ShardingSphereUser user, final boolean isNeedSuper) throws ReflectiveOperationException { return new MetaDataContexts(mock(MetaDataPersistService.class), new ShardingSphereMetaData(getDatabases(), buildGlobalRuleMetaData(user, isNeedSuper), new ConfigurationProperties(new Properties()))); } @@ -149,13 +149,13 @@ private Map getDatabases() { return result; } - private ShardingSphereRuleMetaData buildGlobalRuleMetaData(final ShardingSphereUser user, final boolean isNeedSuper) throws NoSuchFieldException, IllegalAccessException { + private ShardingSphereRuleMetaData buildGlobalRuleMetaData(final ShardingSphereUser user, final boolean isNeedSuper) throws ReflectiveOperationException { AuthorityRuleConfiguration ruleConfig = new AuthorityRuleConfiguration(Collections.singletonList(user), new AlgorithmConfiguration("ALL_PERMITTED", new Properties())); AuthorityRule rule = new AuthorityRuleBuilder().build(ruleConfig, Collections.emptyMap(), mock(InstanceContext.class), mock(ConfigurationProperties.class)); if (!isNeedSuper) { AuthorityRegistry authorityRegistry = mock(AuthorityRegistry.class); when(authorityRegistry.findPrivileges(user.getGrantee())).thenReturn(Optional.empty()); - new InstanceField(AuthorityRule.class.getDeclaredField("authorityRegistry"), rule).set(authorityRegistry); + Plugins.getMemberAccessor().set(AuthorityRule.class.getDeclaredField("authorityRegistry"), rule, authorityRegistry); } return new ShardingSphereRuleMetaData(Collections.singletonList(rule)); } diff --git a/proxy/frontend/opengauss/src/test/java/org/apache/shardingsphere/proxy/frontend/opengauss/OpenGaussFrontendEngineTest.java b/proxy/frontend/opengauss/src/test/java/org/apache/shardingsphere/proxy/frontend/opengauss/OpenGaussFrontendEngineTest.java index d6c8cb3f7a8f2..34b4a3e03d669 100644 --- a/proxy/frontend/opengauss/src/test/java/org/apache/shardingsphere/proxy/frontend/opengauss/OpenGaussFrontendEngineTest.java +++ b/proxy/frontend/opengauss/src/test/java/org/apache/shardingsphere/proxy/frontend/opengauss/OpenGaussFrontendEngineTest.java @@ -26,7 +26,7 @@ import org.junit.Test; import org.junit.runner.RunWith; import org.mockito.Mock; -import org.mockito.internal.util.reflection.InstanceField; +import org.mockito.internal.configuration.plugins.Plugins; import org.mockito.junit.MockitoJUnitRunner; import static org.hamcrest.CoreMatchers.instanceOf; @@ -43,8 +43,8 @@ public final class OpenGaussFrontendEngineTest { private PostgreSQLFrontendEngine mockPostgreSQLFrontendEngine; @Before - public void setup() throws NoSuchFieldException { - new InstanceField(OpenGaussFrontendEngine.class.getDeclaredField("postgreSQLFrontendEngine"), openGaussFrontendEngine).set(mockPostgreSQLFrontendEngine); + public void setup() throws ReflectiveOperationException { + Plugins.getMemberAccessor().set(OpenGaussFrontendEngine.class.getDeclaredField("postgreSQLFrontendEngine"), openGaussFrontendEngine, mockPostgreSQLFrontendEngine); } @Test diff --git a/proxy/frontend/opengauss/src/test/java/org/apache/shardingsphere/proxy/frontend/opengauss/authentication/OpenGaussAuthenticationEngineTest.java b/proxy/frontend/opengauss/src/test/java/org/apache/shardingsphere/proxy/frontend/opengauss/authentication/OpenGaussAuthenticationEngineTest.java index 09955ae5675b3..0ac148d807ca7 100644 --- a/proxy/frontend/opengauss/src/test/java/org/apache/shardingsphere/proxy/frontend/opengauss/authentication/OpenGaussAuthenticationEngineTest.java +++ b/proxy/frontend/opengauss/src/test/java/org/apache/shardingsphere/proxy/frontend/opengauss/authentication/OpenGaussAuthenticationEngineTest.java @@ -52,8 +52,7 @@ import org.mockito.Answers; import org.mockito.ArgumentCaptor; import org.mockito.Mock; -import org.mockito.internal.util.reflection.FieldReader; -import org.mockito.internal.util.reflection.InstanceField; +import org.mockito.internal.configuration.plugins.Plugins; import org.mockito.junit.MockitoJUnitRunner; import java.nio.charset.StandardCharsets; @@ -115,9 +114,9 @@ public void assertAuthenticateWithNonPasswordMessage() { authenticationEngine.authenticate(channelHandlerContext, payload); } - @SneakyThrows(NoSuchFieldException.class) + @SneakyThrows(ReflectiveOperationException.class) private void setAlreadyReceivedStartupMessage(final OpenGaussAuthenticationEngine target) { - new InstanceField(OpenGaussAuthenticationEngine.class.getDeclaredField("startupMessageReceived"), target).set(true); + Plugins.getMemberAccessor().set(OpenGaussAuthenticationEngine.class.getDeclaredField("startupMessageReceived"), target, true); } @Test @@ -176,19 +175,19 @@ private ShardingSphereRuleMetaData buildGlobalRuleMetaData(final ShardingSphereU return new ShardingSphereRuleMetaData(Collections.singletonList(rule)); } - @SneakyThrows(NoSuchFieldException.class) + @SneakyThrows(ReflectiveOperationException.class) private byte[] getRandom64Code(final OpenGaussAuthenticationSCRAMSha256Packet packet) { - return (byte[]) new FieldReader(packet, OpenGaussAuthenticationSCRAMSha256Packet.class.getDeclaredField("random64Code")).read(); + return (byte[]) Plugins.getMemberAccessor().get(OpenGaussAuthenticationSCRAMSha256Packet.class.getDeclaredField("random64Code"), packet); } - @SneakyThrows(NoSuchFieldException.class) + @SneakyThrows(ReflectiveOperationException.class) private byte[] getToken(final OpenGaussAuthenticationSCRAMSha256Packet packet) { - return (byte[]) new FieldReader(packet, OpenGaussAuthenticationSCRAMSha256Packet.class.getDeclaredField("token")).read(); + return (byte[]) Plugins.getMemberAccessor().get(OpenGaussAuthenticationSCRAMSha256Packet.class.getDeclaredField("token"), packet); } - @SneakyThrows(NoSuchFieldException.class) + @SneakyThrows(ReflectiveOperationException.class) private int getServerIteration(final OpenGaussAuthenticationSCRAMSha256Packet packet) { - return (int) new FieldReader(packet, OpenGaussAuthenticationSCRAMSha256Packet.class.getDeclaredField("serverIteration")).read(); + return (int) Plugins.getMemberAccessor().get(OpenGaussAuthenticationSCRAMSha256Packet.class.getDeclaredField("serverIteration"), packet); } private String encodeDigest(final String password, final String random64code, final String token, final int serverIteration) { diff --git a/proxy/frontend/opengauss/src/test/java/org/apache/shardingsphere/proxy/frontend/opengauss/command/OpenGaussCommandExecutorFactoryTest.java b/proxy/frontend/opengauss/src/test/java/org/apache/shardingsphere/proxy/frontend/opengauss/command/OpenGaussCommandExecutorFactoryTest.java index f957f21076d72..9de835ba91702 100644 --- a/proxy/frontend/opengauss/src/test/java/org/apache/shardingsphere/proxy/frontend/opengauss/command/OpenGaussCommandExecutorFactoryTest.java +++ b/proxy/frontend/opengauss/src/test/java/org/apache/shardingsphere/proxy/frontend/opengauss/command/OpenGaussCommandExecutorFactoryTest.java @@ -48,7 +48,7 @@ import org.junit.Test; import org.junit.runner.RunWith; import org.mockito.Mock; -import org.mockito.internal.util.reflection.FieldReader; +import org.mockito.internal.configuration.plugins.Plugins; import org.mockito.junit.MockitoJUnitRunner; import java.sql.SQLException; @@ -149,8 +149,8 @@ public void assertAggregatedPacketIsBatchedStatements() throws SQLException { } @SuppressWarnings("unchecked") - @SneakyThrows(NoSuchFieldException.class) + @SneakyThrows(ReflectiveOperationException.class) private static List getExecutorsFromAggregatedCommandExecutor(final PostgreSQLAggregatedCommandExecutor executor) { - return (List) new FieldReader(executor, PostgreSQLAggregatedCommandExecutor.class.getDeclaredField("executors")).read(); + return (List) Plugins.getMemberAccessor().get(PostgreSQLAggregatedCommandExecutor.class.getDeclaredField("executors"), executor); } } diff --git a/proxy/frontend/opengauss/src/test/java/org/apache/shardingsphere/proxy/frontend/opengauss/command/query/simple/OpenGaussComQueryExecutorTest.java b/proxy/frontend/opengauss/src/test/java/org/apache/shardingsphere/proxy/frontend/opengauss/command/query/simple/OpenGaussComQueryExecutorTest.java index cf16b71732f18..4d2913e0e7055 100644 --- a/proxy/frontend/opengauss/src/test/java/org/apache/shardingsphere/proxy/frontend/opengauss/command/query/simple/OpenGaussComQueryExecutorTest.java +++ b/proxy/frontend/opengauss/src/test/java/org/apache/shardingsphere/proxy/frontend/opengauss/command/query/simple/OpenGaussComQueryExecutorTest.java @@ -37,7 +37,7 @@ import org.junit.Test; import org.junit.runner.RunWith; import org.mockito.Mock; -import org.mockito.internal.util.reflection.InstanceField; +import org.mockito.internal.configuration.plugins.Plugins; import org.mockito.junit.MockitoJUnitRunner; import java.sql.SQLException; @@ -73,9 +73,9 @@ public void setUp() throws SQLException { setMockFieldIntoExecutor(queryExecutor); } - @SneakyThrows(NoSuchFieldException.class) + @SneakyThrows(ReflectiveOperationException.class) private void setMockFieldIntoExecutor(final OpenGaussComQueryExecutor executor) { - new InstanceField(OpenGaussComQueryExecutor.class.getDeclaredField("proxyBackendHandler"), executor).set(proxyBackendHandler); + Plugins.getMemberAccessor().set(OpenGaussComQueryExecutor.class.getDeclaredField("proxyBackendHandler"), executor, proxyBackendHandler); } @Test diff --git a/proxy/frontend/opengauss/src/test/java/org/apache/shardingsphere/proxy/frontend/opengauss/err/OpenGaussErrorPacketFactoryTest.java b/proxy/frontend/opengauss/src/test/java/org/apache/shardingsphere/proxy/frontend/opengauss/err/OpenGaussErrorPacketFactoryTest.java index 5740aac1be960..fe551f2a9c83e 100644 --- a/proxy/frontend/opengauss/src/test/java/org/apache/shardingsphere/proxy/frontend/opengauss/err/OpenGaussErrorPacketFactoryTest.java +++ b/proxy/frontend/opengauss/src/test/java/org/apache/shardingsphere/proxy/frontend/opengauss/err/OpenGaussErrorPacketFactoryTest.java @@ -20,7 +20,7 @@ import lombok.SneakyThrows; import org.apache.shardingsphere.db.protocol.opengauss.packet.command.generic.OpenGaussErrorResponsePacket; import org.junit.Test; -import org.mockito.internal.util.reflection.FieldReader; +import org.mockito.internal.configuration.plugins.Plugins; import org.opengauss.util.PSQLException; import org.opengauss.util.ServerErrorMessage; @@ -82,8 +82,8 @@ public void assertNewInstanceWithUnknownException() { } @SuppressWarnings("unchecked") - @SneakyThrows(NoSuchFieldException.class) + @SneakyThrows(ReflectiveOperationException.class) private static Map getFieldsInPacket(final OpenGaussErrorResponsePacket packet) { - return (Map) new FieldReader(packet, OpenGaussErrorResponsePacket.class.getDeclaredField("fields")).read(); + return (Map) Plugins.getMemberAccessor().get(OpenGaussErrorResponsePacket.class.getDeclaredField("fields"), packet); } } diff --git a/proxy/frontend/postgresql/src/test/java/org/apache/shardingsphere/proxy/frontend/postgresql/PostgreSQLFrontendEngineTest.java b/proxy/frontend/postgresql/src/test/java/org/apache/shardingsphere/proxy/frontend/postgresql/PostgreSQLFrontendEngineTest.java index d021c129a4466..f0af4ec72651e 100644 --- a/proxy/frontend/postgresql/src/test/java/org/apache/shardingsphere/proxy/frontend/postgresql/PostgreSQLFrontendEngineTest.java +++ b/proxy/frontend/postgresql/src/test/java/org/apache/shardingsphere/proxy/frontend/postgresql/PostgreSQLFrontendEngineTest.java @@ -23,7 +23,7 @@ import org.apache.shardingsphere.proxy.frontend.postgresql.command.PortalContext; import org.apache.shardingsphere.proxy.frontend.postgresql.command.PostgreSQLPortalContextRegistry; import org.junit.Test; -import org.mockito.internal.util.reflection.FieldReader; +import org.mockito.internal.configuration.plugins.Plugins; import java.util.concurrent.ConcurrentMap; @@ -50,6 +50,7 @@ public void assertRelease() { @SuppressWarnings("unchecked") @SneakyThrows(ReflectiveOperationException.class) private ConcurrentMap getPortalContexts() { - return (ConcurrentMap) new FieldReader(PostgreSQLPortalContextRegistry.getInstance(), PostgreSQLPortalContextRegistry.class.getDeclaredField("portalContexts")).read(); + return (ConcurrentMap) Plugins.getMemberAccessor() + .get(PostgreSQLPortalContextRegistry.class.getDeclaredField("portalContexts"), PostgreSQLPortalContextRegistry.getInstance()); } } diff --git a/proxy/frontend/postgresql/src/test/java/org/apache/shardingsphere/proxy/frontend/postgresql/authentication/PostgreSQLAuthenticationEngineTest.java b/proxy/frontend/postgresql/src/test/java/org/apache/shardingsphere/proxy/frontend/postgresql/authentication/PostgreSQLAuthenticationEngineTest.java index 6e2f7727200f6..bf6907a838774 100644 --- a/proxy/frontend/postgresql/src/test/java/org/apache/shardingsphere/proxy/frontend/postgresql/authentication/PostgreSQLAuthenticationEngineTest.java +++ b/proxy/frontend/postgresql/src/test/java/org/apache/shardingsphere/proxy/frontend/postgresql/authentication/PostgreSQLAuthenticationEngineTest.java @@ -53,8 +53,6 @@ import org.mockito.ArgumentCaptor; import org.mockito.Mock; import org.mockito.internal.configuration.plugins.Plugins; -import org.mockito.internal.util.reflection.FieldReader; -import org.mockito.internal.util.reflection.InstanceField; import org.mockito.junit.MockitoJUnitRunner; import java.nio.charset.StandardCharsets; @@ -117,9 +115,9 @@ public void assertAuthenticateWithNonPasswordMessage() { authenticationEngine.authenticate(channelHandlerContext, payload); } - @SneakyThrows(NoSuchFieldException.class) + @SneakyThrows(ReflectiveOperationException.class) private void setAlreadyReceivedStartupMessage(final PostgreSQLAuthenticationEngine target) { - new InstanceField(PostgreSQLAuthenticationEngine.class.getDeclaredField("startupMessageReceived"), target).set(true); + Plugins.getMemberAccessor().set(PostgreSQLAuthenticationEngine.class.getDeclaredField("startupMessageReceived"), target, true); } @Test @@ -184,8 +182,8 @@ private ShardingSphereRuleMetaData buildGlobalRuleMetaData(final ShardingSphereU return new ShardingSphereRuleMetaData(Collections.singleton(rule)); } - @SneakyThrows(NoSuchFieldException.class) + @SneakyThrows(ReflectiveOperationException.class) private byte[] getMd5Salt(final PostgreSQLMD5PasswordAuthenticationPacket md5PasswordPacket) { - return (byte[]) new FieldReader(md5PasswordPacket, PostgreSQLMD5PasswordAuthenticationPacket.class.getDeclaredField("md5Salt")).read(); + return (byte[]) Plugins.getMemberAccessor().get(PostgreSQLMD5PasswordAuthenticationPacket.class.getDeclaredField("md5Salt"), md5PasswordPacket); } } diff --git a/proxy/frontend/postgresql/src/test/java/org/apache/shardingsphere/proxy/frontend/postgresql/command/PostgreSQLCommandExecutorFactoryTest.java b/proxy/frontend/postgresql/src/test/java/org/apache/shardingsphere/proxy/frontend/postgresql/command/PostgreSQLCommandExecutorFactoryTest.java index 84d08266a108b..ee1b098459081 100644 --- a/proxy/frontend/postgresql/src/test/java/org/apache/shardingsphere/proxy/frontend/postgresql/command/PostgreSQLCommandExecutorFactoryTest.java +++ b/proxy/frontend/postgresql/src/test/java/org/apache/shardingsphere/proxy/frontend/postgresql/command/PostgreSQLCommandExecutorFactoryTest.java @@ -47,7 +47,7 @@ import org.junit.Test; import org.junit.runner.RunWith; import org.mockito.Mock; -import org.mockito.internal.util.reflection.FieldReader; +import org.mockito.internal.configuration.plugins.Plugins; import org.mockito.junit.MockitoJUnitRunner; import java.sql.SQLException; @@ -152,9 +152,9 @@ public void assertAggregatedPacketIsBatchedStatements() throws SQLException { } @SuppressWarnings("unchecked") - @SneakyThrows(NoSuchFieldException.class) + @SneakyThrows(ReflectiveOperationException.class) private static List getExecutorsFromAggregatedCommandExecutor(final PostgreSQLAggregatedCommandExecutor executor) { - return (List) new FieldReader(executor, PostgreSQLAggregatedCommandExecutor.class.getDeclaredField("executors")).read(); + return (List) Plugins.getMemberAccessor().get(PostgreSQLAggregatedCommandExecutor.class.getDeclaredField("executors"), executor); } @RequiredArgsConstructor diff --git a/proxy/frontend/postgresql/src/test/java/org/apache/shardingsphere/proxy/frontend/postgresql/command/query/extended/PostgreSQLBatchedStatementsExecutorTest.java b/proxy/frontend/postgresql/src/test/java/org/apache/shardingsphere/proxy/frontend/postgresql/command/query/extended/PostgreSQLBatchedStatementsExecutorTest.java index 06408a0a16ef8..0aba4df354cfe 100644 --- a/proxy/frontend/postgresql/src/test/java/org/apache/shardingsphere/proxy/frontend/postgresql/command/query/extended/PostgreSQLBatchedStatementsExecutorTest.java +++ b/proxy/frontend/postgresql/src/test/java/org/apache/shardingsphere/proxy/frontend/postgresql/command/query/extended/PostgreSQLBatchedStatementsExecutorTest.java @@ -45,7 +45,7 @@ import org.mockito.Answers; import org.mockito.InOrder; import org.mockito.Mock; -import org.mockito.internal.util.reflection.FieldReader; +import org.mockito.internal.configuration.plugins.Plugins; import org.mockito.junit.MockitoJUnitRunner; import java.sql.Connection; @@ -134,8 +134,7 @@ public void assertExecuteBatch() throws SQLException { @SuppressWarnings("unchecked") @SneakyThrows(ReflectiveOperationException.class) private void prepareExecutionUnitParameters(final PostgreSQLBatchedStatementsExecutor target, final List> parameterSets) { - Map>> map = (Map>>) new FieldReader( - target, PostgreSQLBatchedStatementsExecutor.class.getDeclaredField("executionUnitParams")).read(); - map.replaceAll((k, v) -> parameterSets); + ((Map>>) Plugins.getMemberAccessor().get(PostgreSQLBatchedStatementsExecutor.class.getDeclaredField("executionUnitParams"), target)) + .replaceAll((k, v) -> parameterSets); } } diff --git a/proxy/frontend/postgresql/src/test/java/org/apache/shardingsphere/proxy/frontend/postgresql/command/query/extended/describe/PostgreSQLComDescribeExecutorTest.java b/proxy/frontend/postgresql/src/test/java/org/apache/shardingsphere/proxy/frontend/postgresql/command/query/extended/describe/PostgreSQLComDescribeExecutorTest.java index bd3f03c12aa97..51e23f5aead40 100644 --- a/proxy/frontend/postgresql/src/test/java/org/apache/shardingsphere/proxy/frontend/postgresql/command/query/extended/describe/PostgreSQLComDescribeExecutorTest.java +++ b/proxy/frontend/postgresql/src/test/java/org/apache/shardingsphere/proxy/frontend/postgresql/command/query/extended/describe/PostgreSQLComDescribeExecutorTest.java @@ -58,7 +58,7 @@ import org.mockito.Answers; import org.mockito.InjectMocks; import org.mockito.Mock; -import org.mockito.internal.util.reflection.FieldReader; +import org.mockito.internal.configuration.plugins.Plugins; import org.mockito.junit.MockitoJUnitRunner; import java.sql.Connection; @@ -313,9 +313,9 @@ public void assertDescribePreparedStatementInsertWithReturningClause() throws SQ } @SuppressWarnings("unchecked") - @SneakyThrows(NoSuchFieldException.class) + @SneakyThrows(ReflectiveOperationException.class) private Collection getColumnDescriptionsFromPacket(final PostgreSQLRowDescriptionPacket packet) { - return (Collection) new FieldReader(packet, PostgreSQLRowDescriptionPacket.class.getDeclaredField("columnDescriptions")).read(); + return (Collection) Plugins.getMemberAccessor().get(PostgreSQLRowDescriptionPacket.class.getDeclaredField("columnDescriptions"), packet); } @SuppressWarnings("rawtypes") @@ -380,9 +380,9 @@ private ResultSetMetaData prepareResultSetMetaData() throws SQLException { } @SuppressWarnings("unchecked") - @SneakyThrows(NoSuchFieldException.class) + @SneakyThrows(ReflectiveOperationException.class) private List getColumnDescriptions(final PostgreSQLRowDescriptionPacket packet) { - return (List) new FieldReader(packet, PostgreSQLRowDescriptionPacket.class.getDeclaredField("columnDescriptions")).read(); + return (List) Plugins.getMemberAccessor().get(PostgreSQLRowDescriptionPacket.class.getDeclaredField("columnDescriptions"), packet); } @Test(expected = UnsupportedSQLOperationException.class) diff --git a/proxy/frontend/postgresql/src/test/java/org/apache/shardingsphere/proxy/frontend/postgresql/command/query/extended/parse/PostgreSQLComParseExecutorTest.java b/proxy/frontend/postgresql/src/test/java/org/apache/shardingsphere/proxy/frontend/postgresql/command/query/extended/parse/PostgreSQLComParseExecutorTest.java index 27e84fe6e7bfd..3918893e21306 100644 --- a/proxy/frontend/postgresql/src/test/java/org/apache/shardingsphere/proxy/frontend/postgresql/command/query/extended/parse/PostgreSQLComParseExecutorTest.java +++ b/proxy/frontend/postgresql/src/test/java/org/apache/shardingsphere/proxy/frontend/postgresql/command/query/extended/parse/PostgreSQLComParseExecutorTest.java @@ -44,7 +44,7 @@ import org.mockito.Answers; import org.mockito.InjectMocks; import org.mockito.Mock; -import org.mockito.internal.util.reflection.InstanceField; +import org.mockito.internal.configuration.plugins.Plugins; import org.mockito.junit.MockitoJUnitRunner; import java.util.Arrays; @@ -130,9 +130,9 @@ public void assertExecuteWithParameterizedSQL() { assertThat(actualPreparedStatement.getParameterTypes(), is(Arrays.asList(PostgreSQLColumnType.POSTGRESQL_TYPE_INT4, PostgreSQLColumnType.POSTGRESQL_TYPE_UNSPECIFIED))); } - @SneakyThrows(NoSuchFieldException.class) + @SneakyThrows(ReflectiveOperationException.class) private void setConnectionSession() { - new InstanceField(PostgreSQLComParseExecutor.class.getDeclaredField("connectionSession"), executor).set(connectionSession); + Plugins.getMemberAccessor().set(PostgreSQLComParseExecutor.class.getDeclaredField("connectionSession"), executor, connectionSession); } @Test diff --git a/proxy/frontend/postgresql/src/test/java/org/apache/shardingsphere/proxy/frontend/postgresql/command/query/simple/PostgreSQLComQueryExecutorTest.java b/proxy/frontend/postgresql/src/test/java/org/apache/shardingsphere/proxy/frontend/postgresql/command/query/simple/PostgreSQLComQueryExecutorTest.java index b73dda01bcffd..1166d964da13f 100644 --- a/proxy/frontend/postgresql/src/test/java/org/apache/shardingsphere/proxy/frontend/postgresql/command/query/simple/PostgreSQLComQueryExecutorTest.java +++ b/proxy/frontend/postgresql/src/test/java/org/apache/shardingsphere/proxy/frontend/postgresql/command/query/simple/PostgreSQLComQueryExecutorTest.java @@ -37,7 +37,7 @@ import org.junit.Test; import org.junit.runner.RunWith; import org.mockito.Mock; -import org.mockito.internal.util.reflection.InstanceField; +import org.mockito.internal.configuration.plugins.Plugins; import org.mockito.junit.MockitoJUnitRunner; import java.sql.SQLException; @@ -73,9 +73,9 @@ public void setUp() throws SQLException { setMockFieldIntoExecutor(queryExecutor); } - @SneakyThrows(NoSuchFieldException.class) + @SneakyThrows(ReflectiveOperationException.class) private void setMockFieldIntoExecutor(final PostgreSQLComQueryExecutor executor) { - new InstanceField(PostgreSQLComQueryExecutor.class.getDeclaredField("proxyBackendHandler"), executor).set(proxyBackendHandler); + Plugins.getMemberAccessor().set(PostgreSQLComQueryExecutor.class.getDeclaredField("proxyBackendHandler"), executor, proxyBackendHandler); } @Test diff --git a/proxy/frontend/postgresql/src/test/java/org/apache/shardingsphere/proxy/frontend/postgresql/err/PostgreSQLErrPacketFactoryTest.java b/proxy/frontend/postgresql/src/test/java/org/apache/shardingsphere/proxy/frontend/postgresql/err/PostgreSQLErrPacketFactoryTest.java index 2ff25e661c15f..6191d10ce0abf 100644 --- a/proxy/frontend/postgresql/src/test/java/org/apache/shardingsphere/proxy/frontend/postgresql/err/PostgreSQLErrPacketFactoryTest.java +++ b/proxy/frontend/postgresql/src/test/java/org/apache/shardingsphere/proxy/frontend/postgresql/err/PostgreSQLErrPacketFactoryTest.java @@ -20,7 +20,7 @@ import org.apache.shardingsphere.db.protocol.postgresql.constant.PostgreSQLMessageSeverityLevel; import org.apache.shardingsphere.db.protocol.postgresql.packet.generic.PostgreSQLErrorResponsePacket; import org.junit.Test; -import org.mockito.internal.util.reflection.FieldReader; +import org.mockito.internal.configuration.plugins.Plugins; import org.postgresql.util.PSQLException; import org.postgresql.util.PSQLState; import org.postgresql.util.ServerErrorMessage; @@ -36,14 +36,14 @@ public final class PostgreSQLErrPacketFactoryTest { @Test - public void assertPSQLExceptionWithServerErrorMessageNotNull() throws NoSuchFieldException { + public void assertPSQLExceptionWithServerErrorMessageNotNull() throws ReflectiveOperationException { ServerErrorMessage serverErrorMessage = mock(ServerErrorMessage.class); when(serverErrorMessage.getSeverity()).thenReturn(PostgreSQLMessageSeverityLevel.FATAL); when(serverErrorMessage.getSQLState()).thenReturn("sqlState"); when(serverErrorMessage.getMessage()).thenReturn("message"); when(serverErrorMessage.getPosition()).thenReturn(1); PostgreSQLErrorResponsePacket actual = PostgreSQLErrPacketFactory.newInstance(new PSQLException(serverErrorMessage)); - Map fields = (Map) new FieldReader(actual, PostgreSQLErrorResponsePacket.class.getDeclaredField("fields")).read(); + Map fields = (Map) Plugins.getMemberAccessor().get(PostgreSQLErrorResponsePacket.class.getDeclaredField("fields"), actual); assertThat(fields.get(PostgreSQLErrorResponsePacket.FIELD_TYPE_SEVERITY), is(PostgreSQLMessageSeverityLevel.FATAL)); assertThat(fields.get(PostgreSQLErrorResponsePacket.FIELD_TYPE_CODE), is("sqlState")); assertThat(fields.get(PostgreSQLErrorResponsePacket.FIELD_TYPE_MESSAGE), is("message")); @@ -51,17 +51,17 @@ public void assertPSQLExceptionWithServerErrorMessageNotNull() throws NoSuchFiel } @Test - public void assertPSQLExceptionWithServerErrorMessageIsNull() throws NoSuchFieldException { + public void assertPSQLExceptionWithServerErrorMessageIsNull() throws ReflectiveOperationException { PostgreSQLErrorResponsePacket actual = PostgreSQLErrPacketFactory.newInstance(new PSQLException("psqlEx", PSQLState.UNEXPECTED_ERROR, new Exception("test"))); - Map fields = (Map) new FieldReader(actual, PostgreSQLErrorResponsePacket.class.getDeclaredField("fields")).read(); + Map fields = (Map) Plugins.getMemberAccessor().get(PostgreSQLErrorResponsePacket.class.getDeclaredField("fields"), actual); assertThat(fields.get(PostgreSQLErrorResponsePacket.FIELD_TYPE_CODE), is(PSQLState.UNEXPECTED_ERROR.getState())); assertThat(fields.get(PostgreSQLErrorResponsePacket.FIELD_TYPE_MESSAGE), is("psqlEx")); } @Test - public void assertRuntimeException() throws NoSuchFieldException { + public void assertRuntimeException() throws ReflectiveOperationException { PostgreSQLErrorResponsePacket actual = PostgreSQLErrPacketFactory.newInstance(new RuntimeException("test")); - Map fields = (Map) new FieldReader(actual, PostgreSQLErrorResponsePacket.class.getDeclaredField("fields")).read(); + Map fields = (Map) Plugins.getMemberAccessor().get(PostgreSQLErrorResponsePacket.class.getDeclaredField("fields"), actual); assertThat(fields.get(PostgreSQLErrorResponsePacket.FIELD_TYPE_MESSAGE), is("test")); } } diff --git a/sql-parser/engine/src/test/java/org/apache/shardingsphere/sql/parser/api/SQLParserEngineTest.java b/sql-parser/engine/src/test/java/org/apache/shardingsphere/sql/parser/api/SQLParserEngineTest.java index eaa46fc157a63..e7358e1042e24 100644 --- a/sql-parser/engine/src/test/java/org/apache/shardingsphere/sql/parser/api/SQLParserEngineTest.java +++ b/sql-parser/engine/src/test/java/org/apache/shardingsphere/sql/parser/api/SQLParserEngineTest.java @@ -23,7 +23,7 @@ import org.apache.shardingsphere.sql.parser.core.ParseASTNode; import org.apache.shardingsphere.sql.parser.core.database.parser.SQLParserExecutor; import org.junit.Test; -import org.mockito.internal.util.reflection.InstanceField; +import org.mockito.internal.configuration.plugins.Plugins; import javax.annotation.ParametersAreNonnullByDefault; @@ -37,12 +37,12 @@ public final class SQLParserEngineTest { private static final String SQL = "SELECT COUNT(*) FROM user"; @Test - public void assertParse() throws NoSuchFieldException, IllegalAccessException { + public void assertParse() throws ReflectiveOperationException { SQLParserExecutor sqlParserExecutor = mock(SQLParserExecutor.class); when(sqlParserExecutor.parse(SQL)).thenReturn(mock(ParseASTNode.class)); CacheOption cacheOption = new CacheOption(128, 1024L); SQLParserEngine sqlParserEngine = new SQLParserEngine("H2", cacheOption); - new InstanceField(sqlParserEngine.getClass().getDeclaredField("sqlParserExecutor"), sqlParserEngine).set(sqlParserExecutor); + Plugins.getMemberAccessor().set(sqlParserEngine.getClass().getDeclaredField("sqlParserExecutor"), sqlParserEngine, sqlParserExecutor); LoadingCache parseTreeCache = Caffeine.newBuilder().softValues().initialCapacity(128) .maximumSize(1024).build(new CacheLoader() { @@ -52,7 +52,7 @@ public ParseASTNode load(final String sql) { return sqlParserExecutor.parse(sql); } }); - new InstanceField(sqlParserEngine.getClass().getDeclaredField("parseTreeCache"), sqlParserEngine).set(parseTreeCache); + Plugins.getMemberAccessor().set(sqlParserEngine.getClass().getDeclaredField("parseTreeCache"), sqlParserEngine, parseTreeCache); sqlParserEngine.parse(SQL, true); verify(sqlParserExecutor, times(1)).parse(SQL); sqlParserEngine.parse(SQL, true); diff --git a/sql-parser/engine/src/test/java/org/apache/shardingsphere/sql/parser/core/database/cache/ParseTreeCacheLoaderTest.java b/sql-parser/engine/src/test/java/org/apache/shardingsphere/sql/parser/core/database/cache/ParseTreeCacheLoaderTest.java index 186143d4c3f4d..aa88d461c0821 100644 --- a/sql-parser/engine/src/test/java/org/apache/shardingsphere/sql/parser/core/database/cache/ParseTreeCacheLoaderTest.java +++ b/sql-parser/engine/src/test/java/org/apache/shardingsphere/sql/parser/core/database/cache/ParseTreeCacheLoaderTest.java @@ -20,7 +20,7 @@ import org.apache.shardingsphere.sql.parser.core.ParseASTNode; import org.apache.shardingsphere.sql.parser.core.database.parser.SQLParserExecutor; import org.junit.Test; -import org.mockito.internal.util.reflection.InstanceField; +import org.mockito.internal.configuration.plugins.Plugins; import static org.hamcrest.CoreMatchers.isA; import static org.hamcrest.MatcherAssert.assertThat; @@ -32,10 +32,10 @@ public final class ParseTreeCacheLoaderTest { private static final String SQL = "select * from user where id=1"; @Test - public void assertParseTreeCacheLoader() throws NoSuchFieldException { + public void assertParseTreeCacheLoader() throws ReflectiveOperationException { SQLParserExecutor sqlParserExecutor = mock(SQLParserExecutor.class, RETURNS_DEEP_STUBS); ParseTreeCacheLoader loader = new ParseTreeCacheLoader("MySQL"); - new InstanceField(loader.getClass().getDeclaredField("sqlParserExecutor"), loader).set(sqlParserExecutor); + Plugins.getMemberAccessor().set(loader.getClass().getDeclaredField("sqlParserExecutor"), loader, sqlParserExecutor); assertThat(loader.load(SQL), isA(ParseASTNode.class)); } } diff --git a/test/e2e/suite/src/test/java/org/apache/shardingsphere/test/e2e/framework/runner/param/RunnerParameters.java b/test/e2e/suite/src/test/java/org/apache/shardingsphere/test/e2e/framework/runner/param/RunnerParameters.java index 2cf918504ef0e..32d51ebe8858d 100644 --- a/test/e2e/suite/src/test/java/org/apache/shardingsphere/test/e2e/framework/runner/param/RunnerParameters.java +++ b/test/e2e/suite/src/test/java/org/apache/shardingsphere/test/e2e/framework/runner/param/RunnerParameters.java @@ -21,7 +21,7 @@ import lombok.SneakyThrows; import org.apache.shardingsphere.test.e2e.framework.param.model.E2ETestParameter; import org.junit.runners.parameterized.BlockJUnit4ClassRunnerWithParameters; -import org.mockito.internal.util.reflection.FieldReader; +import org.mockito.internal.configuration.plugins.Plugins; /** * Runner parameters. @@ -38,12 +38,12 @@ public final class RunnerParameters { */ @SneakyThrows(ReflectiveOperationException.class) public E2ETestParameter getTestParameter() { - Object[] params = (Object[]) new FieldReader(getRunner(), BlockJUnit4ClassRunnerWithParameters.class.getDeclaredField("parameters")).read(); + Object[] params = (Object[]) Plugins.getMemberAccessor().get(BlockJUnit4ClassRunnerWithParameters.class.getDeclaredField("parameters"), getRunner()); return (E2ETestParameter) params[0]; } @SneakyThrows(ReflectiveOperationException.class) private Object getRunner() { - return new FieldReader(childStatement, childStatement.getClass().getDeclaredField("val$each")).read(); + return Plugins.getMemberAccessor().get(childStatement.getClass().getDeclaredField("val$each"), childStatement); } } diff --git a/test/it/pipeline/src/test/java/org/apache/shardingsphere/test/it/data/pipeline/core/check/consistency/algorithm/DataMatchDataConsistencyCalculateAlgorithmTest.java b/test/it/pipeline/src/test/java/org/apache/shardingsphere/test/it/data/pipeline/core/check/consistency/algorithm/DataMatchDataConsistencyCalculateAlgorithmTest.java index db1ec4f9a71c6..d41de94a18d72 100644 --- a/test/it/pipeline/src/test/java/org/apache/shardingsphere/test/it/data/pipeline/core/check/consistency/algorithm/DataMatchDataConsistencyCalculateAlgorithmTest.java +++ b/test/it/pipeline/src/test/java/org/apache/shardingsphere/test/it/data/pipeline/core/check/consistency/algorithm/DataMatchDataConsistencyCalculateAlgorithmTest.java @@ -27,7 +27,7 @@ import org.junit.After; import org.junit.Before; import org.junit.Test; -import org.mockito.internal.util.reflection.InstanceField; +import org.mockito.internal.configuration.plugins.Plugins; import java.sql.Connection; import java.sql.PreparedStatement; @@ -81,9 +81,9 @@ private void createTableAndInitData(final PipelineDataSourceWrapper dataSource, } @Test - public void assertCalculateFromBegin() throws NoSuchFieldException { + public void assertCalculateFromBegin() throws ReflectiveOperationException { DataMatchDataConsistencyCalculateAlgorithm calculateAlgorithm = new DataMatchDataConsistencyCalculateAlgorithm(); - new InstanceField(DataMatchDataConsistencyCalculateAlgorithm.class.getDeclaredField("chunkSize"), calculateAlgorithm).set(5); + Plugins.getMemberAccessor().set(DataMatchDataConsistencyCalculateAlgorithm.class.getDeclaredField("chunkSize"), calculateAlgorithm, 5); DataConsistencyCalculateParameter sourceParam = generateParameter(source, "t_order_copy", 0); Optional sourceCalculateResult = calculateAlgorithm.calculateChunk(sourceParam); DataConsistencyCalculateParameter targetParam = generateParameter(target, "t_order", 0); @@ -98,9 +98,9 @@ public void assertCalculateFromBegin() throws NoSuchFieldException { } @Test - public void assertCalculateFromMiddle() throws NoSuchFieldException { + public void assertCalculateFromMiddle() throws ReflectiveOperationException { DataMatchDataConsistencyCalculateAlgorithm calculateAlgorithm = new DataMatchDataConsistencyCalculateAlgorithm(); - new InstanceField(DataMatchDataConsistencyCalculateAlgorithm.class.getDeclaredField("chunkSize"), calculateAlgorithm).set(5); + Plugins.getMemberAccessor().set(DataMatchDataConsistencyCalculateAlgorithm.class.getDeclaredField("chunkSize"), calculateAlgorithm, 5); DataConsistencyCalculateParameter sourceParam = generateParameter(source, "t_order_copy", 5); Optional sourceCalculateResult = calculateAlgorithm.calculateChunk(sourceParam); DataConsistencyCalculateParameter targetParam = generateParameter(target, "t_order", 5); diff --git a/test/it/pipeline/src/test/java/org/apache/shardingsphere/test/it/data/pipeline/core/datasource/DefaultPipelineDataSourceManagerTest.java b/test/it/pipeline/src/test/java/org/apache/shardingsphere/test/it/data/pipeline/core/datasource/DefaultPipelineDataSourceManagerTest.java index 7ce777f378f48..2a3393f6c28b8 100644 --- a/test/it/pipeline/src/test/java/org/apache/shardingsphere/test/it/data/pipeline/core/datasource/DefaultPipelineDataSourceManagerTest.java +++ b/test/it/pipeline/src/test/java/org/apache/shardingsphere/test/it/data/pipeline/core/datasource/DefaultPipelineDataSourceManagerTest.java @@ -27,7 +27,7 @@ import org.junit.Before; import org.junit.BeforeClass; import org.junit.Test; -import org.mockito.internal.util.reflection.FieldReader; +import org.mockito.internal.configuration.plugins.Plugins; import javax.sql.DataSource; import java.util.Map; @@ -61,12 +61,12 @@ public void assertGetDataSource() { } @Test - public void assertClose() throws NoSuchFieldException { + public void assertClose() throws ReflectiveOperationException { PipelineDataSourceManager dataSourceManager = new DefaultPipelineDataSourceManager(); try { dataSourceManager.getDataSource(PipelineDataSourceConfigurationFactory.newInstance(jobConfig.getSource().getType(), jobConfig.getSource().getParameter())); dataSourceManager.getDataSource(PipelineDataSourceConfigurationFactory.newInstance(jobConfig.getTarget().getType(), jobConfig.getTarget().getParameter())); - Map cachedDataSources = (Map) new FieldReader(dataSourceManager, DefaultPipelineDataSourceManager.class.getDeclaredField("cachedDataSources")).read(); + Map cachedDataSources = (Map) Plugins.getMemberAccessor().get(DefaultPipelineDataSourceManager.class.getDeclaredField("cachedDataSources"), dataSourceManager); assertNotNull(cachedDataSources); assertThat(cachedDataSources.size(), is(2)); dataSourceManager.close(); diff --git a/test/it/pipeline/src/test/java/org/apache/shardingsphere/test/it/data/pipeline/core/execute/ExecuteEngineTest.java b/test/it/pipeline/src/test/java/org/apache/shardingsphere/test/it/data/pipeline/core/execute/ExecuteEngineTest.java index 1001ba44c2422..78a645372e109 100644 --- a/test/it/pipeline/src/test/java/org/apache/shardingsphere/test/it/data/pipeline/core/execute/ExecuteEngineTest.java +++ b/test/it/pipeline/src/test/java/org/apache/shardingsphere/test/it/data/pipeline/core/execute/ExecuteEngineTest.java @@ -22,7 +22,7 @@ import org.apache.shardingsphere.data.pipeline.core.execute.ExecuteCallback; import org.apache.shardingsphere.data.pipeline.core.execute.ExecuteEngine; import org.junit.Test; -import org.mockito.internal.util.reflection.FieldReader; +import org.mockito.internal.configuration.plugins.Plugins; import java.util.concurrent.ExecutionException; import java.util.concurrent.ExecutorService; @@ -73,8 +73,8 @@ public void assertSubmitAndTaskFailed() { @SneakyThrows({ReflectiveOperationException.class, InterruptedException.class}) private void shutdownAndAwaitTerminal(final ExecuteEngine executeEngine) { - ExecutorService executorService = (ExecutorService) new FieldReader(executeEngine, ExecuteEngine.class.getDeclaredField("executorService")).read(); + ExecutorService executorService = (ExecutorService) Plugins.getMemberAccessor().get(ExecuteEngine.class.getDeclaredField("executorService"), executeEngine); executorService.shutdown(); - executorService.awaitTermination(30, TimeUnit.SECONDS); + executorService.awaitTermination(30L, TimeUnit.SECONDS); } } diff --git a/test/it/pipeline/src/test/java/org/apache/shardingsphere/test/it/data/pipeline/core/ingest/channel/memory/ManualBitSetTest.java b/test/it/pipeline/src/test/java/org/apache/shardingsphere/test/it/data/pipeline/core/ingest/channel/memory/ManualBitSetTest.java index 2a4e58278e134..da9da54c3ad9b 100644 --- a/test/it/pipeline/src/test/java/org/apache/shardingsphere/test/it/data/pipeline/core/ingest/channel/memory/ManualBitSetTest.java +++ b/test/it/pipeline/src/test/java/org/apache/shardingsphere/test/it/data/pipeline/core/ingest/channel/memory/ManualBitSetTest.java @@ -20,7 +20,7 @@ import lombok.SneakyThrows; import org.apache.shardingsphere.data.pipeline.core.ingest.channel.memory.ManualBitSet; import org.junit.Test; -import org.mockito.internal.util.reflection.FieldReader; +import org.mockito.internal.configuration.plugins.Plugins; import java.util.BitSet; import java.util.List; @@ -66,7 +66,7 @@ public void assertGetEndIndexFailure() { public void assertClear() { ManualBitSet bitSet = new ManualBitSet(); IntStream.range(0, 100).forEach(bitSet::set); - List bitSets = (List) new FieldReader(bitSet, ManualBitSet.class.getDeclaredField("bitSets")).read(); + List bitSets = (List) Plugins.getMemberAccessor().get(ManualBitSet.class.getDeclaredField("bitSets"), bitSet); assertNotNull(bitSets); assertThat(bitSets.size(), is(1)); bitSet.clear(1025); diff --git a/test/it/pipeline/src/test/java/org/apache/shardingsphere/test/it/data/pipeline/core/prepare/InventoryTaskSplitterTest.java b/test/it/pipeline/src/test/java/org/apache/shardingsphere/test/it/data/pipeline/core/prepare/InventoryTaskSplitterTest.java index 044fcf96dafbb..b85503d4f1322 100644 --- a/test/it/pipeline/src/test/java/org/apache/shardingsphere/test/it/data/pipeline/core/prepare/InventoryTaskSplitterTest.java +++ b/test/it/pipeline/src/test/java/org/apache/shardingsphere/test/it/data/pipeline/core/prepare/InventoryTaskSplitterTest.java @@ -37,8 +37,7 @@ import org.junit.Before; import org.junit.BeforeClass; import org.junit.Test; -import org.mockito.internal.util.reflection.FieldReader; -import org.mockito.internal.util.reflection.InstanceField; +import org.mockito.internal.configuration.plugins.Plugins; import javax.sql.DataSource; import java.sql.Connection; @@ -67,7 +66,7 @@ public static void beforeClass() { } @Before - public void setUp() throws NoSuchFieldException, IllegalAccessException { + public void setUp() throws ReflectiveOperationException { initJobItemContext(); InventoryDumperConfiguration dumperConfig = new InventoryDumperConfiguration(jobItemContext.getTaskConfig().getDumperConfig()); dumperConfig.setUniqueKeyDataType(Types.INTEGER); @@ -75,9 +74,9 @@ public void setUp() throws NoSuchFieldException, IllegalAccessException { inventoryTaskSplitter = new InventoryTaskSplitter(jobItemContext.getSourceDataSource(), dumperConfig, jobItemContext.getTaskConfig().getImporterConfig()); } - private void initJobItemContext() throws NoSuchFieldException { + private void initJobItemContext() throws ReflectiveOperationException { MigrationJobConfiguration jobConfig = JobConfigurationBuilder.createJobConfiguration(); - new InstanceField(MigrationJobConfiguration.class.getDeclaredField("uniqueKeyColumn"), jobConfig).set(new PipelineColumnMetaData(1, "order_id", 4, "", false, true, true)); + Plugins.getMemberAccessor().set(MigrationJobConfiguration.class.getDeclaredField("uniqueKeyColumn"), jobConfig, new PipelineColumnMetaData(1, "order_id", 4, "", false, true, true)); jobItemContext = PipelineContextUtil.mockMigrationJobItemContext(jobConfig); dataSourceManager = (PipelineDataSourceManager) jobItemContext.getImporterConnector().getConnector(); taskConfig = jobItemContext.getTaskConfig(); @@ -122,9 +121,10 @@ public void assertSplitInventoryDataWithoutPrimaryButWithUniqueIndex() throws SQ } @Test(expected = SplitPipelineJobByRangeException.class) - public void assertSplitInventoryDataWithIllegalKeyDataType() throws SQLException, NoSuchFieldException { + public void assertSplitInventoryDataWithIllegalKeyDataType() throws SQLException, ReflectiveOperationException { initUnionPrimaryEnvironment(taskConfig.getDumperConfig()); - InventoryDumperConfiguration dumperConfig = (InventoryDumperConfiguration) new FieldReader(inventoryTaskSplitter, InventoryTaskSplitter.class.getDeclaredField("dumperConfig")).read(); + InventoryDumperConfiguration dumperConfig = (InventoryDumperConfiguration) Plugins.getMemberAccessor() + .get(InventoryTaskSplitter.class.getDeclaredField("dumperConfig"), inventoryTaskSplitter); assertNotNull(dumperConfig); dumperConfig.setUniqueKey("order_id,user_id"); dumperConfig.setUniqueKeyDataType(Integer.MIN_VALUE); @@ -132,11 +132,11 @@ public void assertSplitInventoryDataWithIllegalKeyDataType() throws SQLException } @Test(expected = SplitPipelineJobByRangeException.class) - public void assertSplitInventoryDataWithoutPrimaryAndUniqueIndex() throws SQLException, NoSuchFieldException { + public void assertSplitInventoryDataWithoutPrimaryAndUniqueIndex() throws SQLException, ReflectiveOperationException { initNoPrimaryEnvironment(taskConfig.getDumperConfig()); try (PipelineDataSourceWrapper dataSource = dataSourceManager.getDataSource(taskConfig.getDumperConfig().getDataSourceConfig())) { PipelineColumnMetaData uniqueKeyColumn = PipelineTableMetaDataUtil.getUniqueKeyColumn(null, "t_order", new StandardPipelineTableMetaDataLoader(dataSource)); - new InstanceField(MigrationJobConfiguration.class.getDeclaredField("uniqueKeyColumn"), jobItemContext.getJobConfig()).set(uniqueKeyColumn); + Plugins.getMemberAccessor().set(MigrationJobConfiguration.class.getDeclaredField("uniqueKeyColumn"), jobItemContext.getJobConfig(), uniqueKeyColumn); } inventoryTaskSplitter.splitInventoryData(jobItemContext); } diff --git a/test/it/pipeline/src/test/java/org/apache/shardingsphere/test/it/data/pipeline/core/util/PipelineContextUtil.java b/test/it/pipeline/src/test/java/org/apache/shardingsphere/test/it/data/pipeline/core/util/PipelineContextUtil.java index bb2851a8718aa..483355068c38b 100644 --- a/test/it/pipeline/src/test/java/org/apache/shardingsphere/test/it/data/pipeline/core/util/PipelineContextUtil.java +++ b/test/it/pipeline/src/test/java/org/apache/shardingsphere/test/it/data/pipeline/core/util/PipelineContextUtil.java @@ -49,7 +49,7 @@ import org.apache.shardingsphere.mode.repository.cluster.ClusterPersistRepositoryConfiguration; import org.apache.shardingsphere.mode.repository.cluster.ClusterPersistRepositoryFactory; import org.apache.shardingsphere.test.it.data.pipeline.core.fixture.EmbedTestingServer; -import org.mockito.internal.util.reflection.FieldReader; +import org.mockito.internal.configuration.plugins.Plugins; import java.sql.Types; import java.util.Arrays; @@ -111,9 +111,9 @@ private static void mockContextManager() { PipelineContext.initContextManager(new ContextManager(metaDataContexts, contextManager.getInstanceContext())); } - @SneakyThrows(NoSuchFieldException.class) + @SneakyThrows(ReflectiveOperationException.class) private static ContextManager getContextManager(final ShardingSphereDataSource dataSource) { - return (ContextManager) new FieldReader(dataSource, ShardingSphereDataSource.class.getDeclaredField("contextManager")).read(); + return (ContextManager) Plugins.getMemberAccessor().get(ShardingSphereDataSource.class.getDeclaredField("contextManager"), dataSource); } @SneakyThrows(ConcurrentException.class) diff --git a/test/it/pipeline/src/test/java/org/apache/shardingsphere/test/it/data/pipeline/core/util/PipelineDistributedBarrierImplTest.java b/test/it/pipeline/src/test/java/org/apache/shardingsphere/test/it/data/pipeline/core/util/PipelineDistributedBarrierImplTest.java index 4e46f90244303..c4762da99df14 100644 --- a/test/it/pipeline/src/test/java/org/apache/shardingsphere/test/it/data/pipeline/core/util/PipelineDistributedBarrierImplTest.java +++ b/test/it/pipeline/src/test/java/org/apache/shardingsphere/test/it/data/pipeline/core/util/PipelineDistributedBarrierImplTest.java @@ -23,7 +23,7 @@ import org.apache.shardingsphere.mode.persist.PersistRepository; import org.junit.BeforeClass; import org.junit.Test; -import org.mockito.internal.util.reflection.FieldReader; +import org.mockito.internal.configuration.plugins.Plugins; import java.util.Map; import java.util.concurrent.TimeUnit; @@ -40,14 +40,14 @@ public static void setUp() { } @Test - public void assertRegisterAndRemove() throws NoSuchFieldException { + public void assertRegisterAndRemove() throws ReflectiveOperationException { String jobId = "j0130317c3054317c7363616c696e675f626d73716c"; PersistRepository repository = PipelineContext.getContextManager().getMetaDataContexts().getPersistService().getRepository(); repository.persist(PipelineMetaDataNode.getJobRootPath(jobId), ""); PipelineDistributedBarrierImpl instance = new PipelineDistributedBarrierImpl(); String parentPath = "/barrier"; instance.register(parentPath, 1); - Map countDownLatchMap = (Map) new FieldReader(instance, PipelineDistributedBarrierImpl.class.getDeclaredField("countDownLatchMap")).read(); + Map countDownLatchMap = (Map) Plugins.getMemberAccessor().get(PipelineDistributedBarrierImpl.class.getDeclaredField("countDownLatchMap"), instance); assertNotNull(countDownLatchMap); assertTrue(countDownLatchMap.containsKey(parentPath)); instance.unregister(parentPath);