Skip to content

Commit b61eb16

Browse files
authored
fix: optimize dynamic class filtering logic (arextest#156)
1 parent 48ec13e commit b61eb16

File tree

2 files changed

+8
-6
lines changed

2 files changed

+8
-6
lines changed

arex-instrumentation/dynamic/arex-dynamic-common/src/main/java/io/arex/inst/dynamic/common/DynamicClassExtractor.java

Lines changed: 4 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -22,6 +22,7 @@
2222
import java.lang.reflect.Method;
2323
import java.util.Collection;
2424
import java.util.Map;
25+
import java.util.Objects;
2526
import java.util.concurrent.CompletableFuture;
2627
import java.util.concurrent.Future;
2728
import org.slf4j.Logger;
@@ -162,7 +163,7 @@ String buildResultClazz(String resultClazz) {
162163

163164
// @ArexMock actualType
164165
if (actualType != null && Object.class != actualType) {
165-
return resultClazz + TypeUtil.HORIZONTAL_LINE + TypeUtil.getName(actualType.getName());
166+
return resultClazz + TypeUtil.HORIZONTAL_LINE + actualType.getName();
166167
}
167168

168169
if (Config.get() == null || Config.get().getDynamicEntityMap().isEmpty()) {
@@ -292,10 +293,10 @@ private boolean needRecord() {
292293
}
293294

294295
private String buildDuplicateMethodKey() {
295-
if (StringUtil.isEmpty(serializedResult)) {
296+
if (Objects.isNull(result)) {
296297
return String.format("%s_%s_%s_no_result", clazzName, methodName, methodKey);
297298
}
298-
return String.format("%s_%s_%s_has_result", clazzName, methodName, methodKey);
299+
return String.format("%s_%s_%s_has_result_%s", clazzName, methodName, methodKey, result.getClass().getName());
299300
}
300301

301302
/**

arex-instrumentation/dynamic/arex-dynamic-common/src/test/java/io/arex/inst/dynamic/common/DynamicClassExtractorTest.java

Lines changed: 4 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -17,6 +17,7 @@
1717
import io.arex.inst.runtime.util.TypeUtil;
1818
import java.lang.reflect.Method;
1919
import java.lang.reflect.Type;
20+
import java.time.LocalDateTime;
2021
import java.util.concurrent.CompletableFuture;
2122
import java.util.concurrent.ExecutionException;
2223
import org.junit.jupiter.api.AfterAll;
@@ -165,7 +166,7 @@ static Stream<Arguments> replayCase() {
165166
void testSetFutureResponse() throws NoSuchMethodException {
166167
List<Integer> methodSignatureHashList = new ArrayList<>();
167168
methodSignatureHashList.add(StringUtil.encodeAndHash(
168-
"io.arex.inst.dynamic.common.DynamicClassExtractorTest_testReturnListenableFuture_mock_no_result"
169+
"io.arex.inst.dynamic.common.DynamicClassExtractorTest_testReturnListenableFuture_mock_has_result_java.lang.String"
169170
));
170171
ArexContext context = Mockito.mock(ArexContext.class);
171172
Mockito.when(ContextManager.currentContext()).thenReturn(context);
@@ -219,7 +220,7 @@ void restoreResponseTest() throws NoSuchMethodException, ExecutionException, Int
219220
@Test
220221
void testBuildResultClazz() throws NoSuchMethodException {
221222
Method testWithArexMock = DynamicClassExtractorTest.class.getDeclaredMethod("testWithArexMock", String.class);
222-
DynamicClassExtractor extractor = new DynamicClassExtractor(testWithArexMock, new Object[]{"mock"}, "#val", String.class);
223+
DynamicClassExtractor extractor = new DynamicClassExtractor(testWithArexMock, new Object[]{"mock"}, "#val", LocalDateTime.class);
223224

224225
// result clazz is emtpy
225226
String actualResult = extractor.buildResultClazz("");
@@ -231,7 +232,7 @@ void testBuildResultClazz() throws NoSuchMethodException {
231232

232233
// @ArexMock actualType not null
233234
actualResult = extractor.buildResultClazz("Java.util.List");
234-
assertEquals("Java.util.List-java.lang.String", actualResult);
235+
assertEquals("Java.util.List-java.time.LocalDateTime", actualResult);
235236

236237
ConfigBuilder.create("mock-service").build();
237238
extractor = new DynamicClassExtractor(testWithArexMock, new Object[]{"mock"}, "#val", null);

0 commit comments

Comments
 (0)