home *** CD-ROM | disk | FTP | other *** search
- package java.beans;
-
- import com.sun.beans.ObjectHandler;
- import java.lang.reflect.Array;
- import java.lang.reflect.Constructor;
- import java.lang.reflect.InvocationTargetException;
- import java.lang.reflect.Method;
- import sun.reflect.misc.MethodUtil;
-
- public class Statement {
- private static Object[] emptyArray = new Object[0];
- static ExceptionListener defaultExceptionListener = new 1();
- Object target;
- String methodName;
- Object[] arguments;
-
- public Statement(Object var1, String var2, Object[] var3) {
- this.target = var1;
- this.methodName = var2;
- this.arguments = var3 == null ? emptyArray : var3;
- }
-
- public Object getTarget() {
- return this.target;
- }
-
- public String getMethodName() {
- return this.methodName;
- }
-
- public Object[] getArguments() {
- return this.arguments;
- }
-
- public void execute() throws Exception {
- this.invoke();
- }
-
- Object invoke() throws Exception {
- Object var1 = this.getTarget();
- String var2 = this.getMethodName();
- if (var1 != null && var2 != null) {
- Object[] var3 = this.getArguments();
- if (var1 == Class.class && var2.equals("forName")) {
- return ObjectHandler.classForName((String)var3[0]);
- } else {
- Class[] var4 = new Class[var3.length];
-
- for(int var5 = 0; var5 < var3.length; ++var5) {
- var4[var5] = var3[var5] == null ? null : var3[var5].getClass();
- }
-
- Object var10 = null;
- if (var1 instanceof Class) {
- if (var2.equals("new")) {
- var2 = "newInstance";
- }
-
- if (var2.equals("newInstance") && ((Class)var1).isArray()) {
- Object var6 = Array.newInstance(((Class)var1).getComponentType(), var3.length);
-
- for(int var7 = 0; var7 < var3.length; ++var7) {
- Array.set(var6, var7, var3[var7]);
- }
-
- return var6;
- }
-
- if (var2.equals("newInstance") && var3.length != 0) {
- if (var1 == Character.class && var3.length == 1 && var4[0] == String.class) {
- return new Character(((String)var3[0]).charAt(0));
- }
-
- var10 = ReflectionUtils.getConstructor((Class)var1, var4);
- }
-
- if (var10 == null && var1 != Class.class) {
- var10 = ReflectionUtils.getMethod((Class)var1, var2, var4);
- }
-
- if (var10 == null) {
- var10 = ReflectionUtils.getMethod(Class.class, var2, var4);
- }
- } else {
- if (var1.getClass().isArray() && (var2.equals("set") || var2.equals("get"))) {
- int var11 = (Integer)var3[0];
- if (var2.equals("get")) {
- return Array.get(var1, var11);
- } else {
- Array.set(var1, var11, var3[1]);
- return null;
- }
- }
-
- var10 = ReflectionUtils.getMethod(var1.getClass(), var2, var4);
- }
-
- if (var10 != null) {
- try {
- if (var10 instanceof Method) {
- return MethodUtil.invoke((Method)var10, var1, var3);
- } else {
- return ((Constructor)var10).newInstance(var3);
- }
- } catch (IllegalAccessException var8) {
- throw new Exception("Statement cannot invoke: " + var2 + " on " + var1.getClass(), var8);
- } catch (InvocationTargetException var9) {
- Throwable var12 = var9.getTargetException();
- if (var12 instanceof Exception) {
- throw (Exception)var12;
- } else {
- throw var9;
- }
- }
- } else {
- throw new NoSuchMethodException(this.toString());
- }
- }
- } else {
- throw new NullPointerException((var1 == null ? "target" : "methodName") + " should not be null");
- }
- }
-
- String instanceName(Object var1) {
- if (var1 == null) {
- return "null";
- } else {
- return var1.getClass() == String.class ? "\"" + (String)var1 + "\"" : NameGenerator.unqualifiedClassName(var1.getClass());
- }
- }
-
- public String toString() {
- Object var1 = this.getTarget();
- String var2 = this.getMethodName();
- Object[] var3 = this.getArguments();
- StringBuffer var4 = new StringBuffer(this.instanceName(var1) + "." + var2 + "(");
- int var5 = var3.length;
-
- for(int var6 = 0; var6 < var5; ++var6) {
- var4.append(this.instanceName(var3[var6]));
- if (var6 != var5 - 1) {
- var4.append(", ");
- }
- }
-
- var4.append(");");
- return var4.toString();
- }
- }
-