1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19 package org.eclipse.aether.internal.impl;
20
21 import java.lang.reflect.InvocationHandler;
22 import java.lang.reflect.Method;
23 import java.lang.reflect.Proxy;
24 import java.util.Collections;
25 import java.util.Locale;
26
27 import org.eclipse.aether.DefaultRepositorySystemSession;
28 import org.eclipse.aether.RepositoryEvent;
29 import org.eclipse.aether.RepositoryListener;
30 import org.eclipse.aether.internal.test.util.TestUtils;
31 import org.junit.jupiter.api.Test;
32
33 import static org.junit.jupiter.api.Assertions.*;
34
35
36
37 public class DefaultRepositoryEventDispatcherTest {
38
39 @Test
40 void testDispatchHandlesAllEventTypes() {
41 DefaultRepositoryEventDispatcher dispatcher = new DefaultRepositoryEventDispatcher(Collections.emptyMap());
42
43 ListenerHandler handler = new ListenerHandler();
44
45 RepositoryListener listener = (RepositoryListener)
46 Proxy.newProxyInstance(getClass().getClassLoader(), new Class<?>[] {RepositoryListener.class}, handler);
47
48 DefaultRepositorySystemSession session = TestUtils.newSession();
49 session.setRepositoryListener(listener);
50
51 for (RepositoryEvent.EventType type : RepositoryEvent.EventType.values()) {
52 RepositoryEvent event = new RepositoryEvent.Builder(session, type).build();
53
54 handler.methodName = null;
55
56 dispatcher.dispatch(event);
57
58 assertNotNull(handler.methodName, "not handled: " + type);
59
60 assertEquals(
61 type.name().replace("_", "").toLowerCase(Locale.ENGLISH),
62 handler.methodName.toLowerCase(Locale.ENGLISH),
63 "badly handled: " + type);
64 }
65 }
66
67 static class ListenerHandler implements InvocationHandler {
68
69 public String methodName;
70
71 public Object invoke(Object proxy, Method method, Object[] args) {
72 if (args.length == 1 && args[0] instanceof RepositoryEvent) {
73 methodName = method.getName();
74 }
75
76 return null;
77 }
78 }
79 }