EventUtils.java
2.84 KB
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
package org.apache.commons.lang3.event;
import java.lang.reflect.InvocationHandler;
import java.lang.reflect.InvocationTargetException;
import java.lang.reflect.Method;
import java.lang.reflect.Proxy;
import java.util.Arrays;
import java.util.HashSet;
import java.util.Set;
import org.apache.commons.lang3.reflect.MethodUtils;
public class EventUtils
{
public static <L> void addEventListener(Object paramObject, Class<L> paramClass, L paramL)
{
try
{
MethodUtils.invokeMethod(paramObject, "add" + paramClass.getSimpleName(), new Object[] { paramL });
return;
}
catch (NoSuchMethodException paramL)
{
throw new IllegalArgumentException("Class " + paramObject.getClass().getName() + " does not have a public add" + paramClass.getSimpleName() + " method which takes a parameter of type " + paramClass.getName() + ".");
}
catch (IllegalAccessException paramL)
{
throw new IllegalArgumentException("Class " + paramObject.getClass().getName() + " does not have an accessible add" + paramClass.getSimpleName() + " method which takes a parameter of type " + paramClass.getName() + ".");
}
catch (InvocationTargetException paramObject)
{
throw new RuntimeException("Unable to add listener.", ((InvocationTargetException)paramObject).getCause());
}
}
public static <L> void bindEventsToMethod(Object paramObject1, String paramString, Object paramObject2, Class<L> paramClass, String... paramVarArgs)
{
ClassLoader localClassLoader = paramObject1.getClass().getClassLoader();
paramObject1 = new a(paramObject1, paramString, paramVarArgs);
addEventListener(paramObject2, paramClass, paramClass.cast(Proxy.newProxyInstance(localClassLoader, new Class[] { paramClass }, (InvocationHandler)paramObject1)));
}
static final class a
implements InvocationHandler
{
private final Object a;
private final String b;
private final Set<String> c;
a(Object paramObject, String paramString, String[] paramArrayOfString)
{
this.a = paramObject;
this.b = paramString;
this.c = new HashSet(Arrays.asList(paramArrayOfString));
}
public final Object invoke(Object paramObject, Method paramMethod, Object[] paramArrayOfObject)
throws Throwable
{
if ((this.c.isEmpty()) || (this.c.contains(paramMethod.getName())))
{
if (MethodUtils.getAccessibleMethod(this.a.getClass(), this.b, paramMethod.getParameterTypes()) != null) {}
for (int i = 1; i != 0; i = 0) {
return MethodUtils.invokeMethod(this.a, this.b, paramArrayOfObject);
}
return MethodUtils.invokeMethod(this.a, this.b);
}
return null;
}
}
}
/* Location: /home/merong/decompile/hackery-dex2jar.jar!/org/apache/commons/lang3/event/EventUtils.class
* Java compiler version: 6 (50.0)
* JD-Core Version: 0.7.1
*/