// Copyright © 2011-2014, Esko Luontola <www.orfjackal.net>
// This software is released under the Apache License 2.0.
// The license text is at http://www.apache.org/licenses/LICENSE-2.0
package fi.jumi.core.util;
import fi.jumi.actors.eventizers.Eventizer;
import java.lang.reflect.*;
import java.util.*;
public class MethodInvocationSpy<T> {
public final Map<Method, Object[]> methodInvocations = new HashMap<>();
private final Eventizer<T> eventizer;
public MethodInvocationSpy(Eventizer<T> eventizer) {
this.eventizer = eventizer;
}
public T getProxy() {
return eventizer.getType().cast(
Proxy.newProxyInstance(
eventizer.getType().getClassLoader(),
new Class[]{eventizer.getType()},
(proxy, method, args) -> {
methodInvocations.put(method, args);
return null;
}));
}
}