package io.cattle.platform.extension.impl;
import java.lang.reflect.InvocationHandler;
import java.lang.reflect.Method;
public class FirstInstanceInvocationHandler implements InvocationHandler {
Object obj = new Object();
ExtensionList<?> list;
public FirstInstanceInvocationHandler(ExtensionList<?> list) {
super();
this.list = list;
}
@Override
public Object invoke(Object proxy, Method method, Object[] args) throws Throwable {
if (method.getDeclaringClass() == Object.class) {
return method.invoke(obj, args);
}
Object first = list.size() > 0 ? list.get(0) : null;
return first == null ? first : method.invoke(first, args);
}
}