Skip to content

Commit fe95082

Browse files
committed
fix: call afterInitialize on all accessors
1 parent 30584ee commit fe95082

File tree

2 files changed

+25
-7
lines changed

2 files changed

+25
-7
lines changed

gateway/src/main/java/com/mx/path/gateway/configuration/AccessorStackConfigurator.java

Lines changed: 9 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -151,7 +151,7 @@ public final Accessor buildFromNode(String clientId, ObjectMap node) {
151151
AccessorScope accessorScope = determineAccessorScope(node, accessorType);
152152
Class<?> proxyType = AccessorProxyMap.get(accessorScope.getName(), Accessor.getAccessorBase(accessorType));
153153

154-
invokeAfterInitializeMethods(accessorType);
154+
invokeAfterInitializeMethods(accessorType, clientId);
155155

156156
return new ClassHelper().buildInstance(Accessor.class, proxyType, configurationBuilder.build(), accessorType);
157157
}
@@ -198,6 +198,8 @@ public final Accessor buildFromParent(String name, String clientId, Accessor par
198198
Class<?> proxyType = AccessorProxyMap.get(accessorScope.get(), Accessor.getAccessorBase(accessorType.get()));
199199
accessor = new ClassHelper().buildInstance(Accessor.class, proxyType, configuration.build(), accessorType.get());
200200

201+
invokeAfterInitializeMethods(accessorType.get(), clientId);
202+
201203
return accessor;
202204
}
203205

@@ -330,13 +332,17 @@ private void validateServiceScope(Class<? extends Accessor> accessor) {
330332
}
331333
}
332334

333-
private void invokeAfterInitializeMethods(Class<?> accessorClass) {
335+
private void invokeAfterInitializeMethods(Class<?> accessorClass, String clientId) {
334336
Method[] methods = accessorClass.getMethods();
335337

336338
for (Method method : methods) {
337339
if (method.isAnnotationPresent(AfterAccessorInitialize.class) && (method.getModifiers() & Modifier.STATIC) != 0) {
338340
try {
339-
method.invoke(null);
341+
if (method.getParameterCount() == 0) {
342+
method.invoke(null);
343+
} else if (method.getParameterCount() == 1) {
344+
method.invoke(null, clientId);
345+
}
340346
} catch (Exception e) {
341347
throw new RuntimeException("Failed to invoke @AfterAccessorInitialize method: " + method.getName(), e);
342348
}

gateway/src/test/groovy/com/mx/path/gateway/configuration/AccessorStackConfiguratorTest.groovy

Lines changed: 16 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -18,12 +18,20 @@ class AccessorStackConfiguratorTest extends Specification {
1818
@AfterAccessorInitialize
1919
static void afterInitialize() {
2020
}
21+
22+
@AfterAccessorInitialize
23+
static void afterInitializeWithClientId(String clientId) {
24+
}
2125
}
2226

2327
class ChildMockAccessor extends MockAccessor {
2428
@AfterAccessorInitialize
2529
static void afterInitializeChild() {
2630
}
31+
32+
@AfterAccessorInitialize
33+
static void afterInitializeChildWithClientId(String clientId) {
34+
}
2735
}
2836

2937
AccessorStackConfigurator subject
@@ -48,22 +56,26 @@ class AccessorStackConfiguratorTest extends Specification {
4856

4957
def "invoke afterInitializeMethods"() {
5058
when:
51-
Method method = subject.class.getDeclaredMethod("invokeAfterInitializeMethods", Class)
59+
Method method = subject.class.getDeclaredMethod("invokeAfterInitializeMethods", Class, String)
5260
method.setAccessible(true)
53-
method.invoke(subject, MockAccessor.class)
61+
method.invoke(subject, MockAccessor.class, "clientId")
5462

5563
then:
5664
mockAccessor.verify({ MockAccessor.afterInitialize() }, times(1))
65+
mockAccessor.verify({ MockAccessor.afterInitializeWithClientId("clientId") }, times(1))
5766
}
5867

5968
def "invoke both afterInitializeMethods"() {
6069
when:
61-
Method method = subject.class.getDeclaredMethod("invokeAfterInitializeMethods", Class)
70+
Method method = subject.class.getDeclaredMethod("invokeAfterInitializeMethods", Class, String)
6271
method.setAccessible(true)
63-
method.invoke(subject, ChildMockAccessor.class)
72+
method.invoke(subject, ChildMockAccessor.class, "clientId")
6473

6574
then:
6675
mockAccessor.verify({ MockAccessor.afterInitialize() }, times(1))
6776
childMockAccessor.verify({ ChildMockAccessor.afterInitializeChild() }, times(1))
77+
78+
mockAccessor.verify({ MockAccessor.afterInitializeWithClientId("clientId") }, times(1))
79+
childMockAccessor.verify({ ChildMockAccessor.afterInitializeChildWithClientId("clientId") }, times(1))
6880
}
6981
}

0 commit comments

Comments
 (0)