home *** CD-ROM | disk | FTP | other *** search
/ Cre@te Online 2000 December / Cre@teOnline CD05.iso / MacSoft / XML ConsoleMax.sea / XML ConsoleMax / Required / bsf.jar / com / ibm / bsf / util / EngineUtils.class (.txt) < prev   
Encoding:
Java Class File  |  1999-09-24  |  4.3 KB  |  143 lines

  1. package com.ibm.bsf.util;
  2.  
  3. import com.ibm.bsf.BSFEngine;
  4. import com.ibm.bsf.BSFException;
  5. import com.ibm.bsf.BSFManager;
  6. import com.ibm.cs.util.ReflectionUtils;
  7. import java.lang.reflect.InvocationTargetException;
  8. import java.lang.reflect.Method;
  9.  
  10. public class EngineUtils {
  11.    static BSFClassLoader bsfCL;
  12.  
  13.    public static Object createBean(String var0, Object[] var1) throws BSFException {
  14.       Class[] var2 = null;
  15.       if (var1 != null) {
  16.          var2 = new Class[var1.length];
  17.  
  18.          for(int var3 = 0; var3 < var1.length; ++var3) {
  19.             var2[var3] = var1[var3] != null ? var1[var3].getClass() : null;
  20.          }
  21.       }
  22.  
  23.       try {
  24.          try {
  25.             return ReflectionUtils.createBean((ClassLoader)null, var0, var2, var1);
  26.          } catch (NoSuchMethodException var6) {
  27.             try {
  28.                for(int var4 = 0; var4 < var1.length; ++var4) {
  29.                   if (var1[var4] instanceof Number) {
  30.                      var2[var4] = Byte.TYPE;
  31.                   } else if (var1[var4] instanceof Boolean) {
  32.                      var2[var4] = Boolean.TYPE;
  33.                   }
  34.                }
  35.  
  36.                return ReflectionUtils.createBean((ClassLoader)null, var0, var2, var1);
  37.             } catch (Exception var5) {
  38.                throw var6;
  39.             }
  40.          }
  41.       } catch (Exception var7) {
  42.          throw new BSFException(BSFException.REASON_OTHER_ERROR, ((Throwable)var7).getMessage(), var7);
  43.       }
  44.    }
  45.  
  46.    public static Object callBeanMethod(Object var0, String var1, Object[] var2) throws BSFException {
  47.       Class[] var3 = null;
  48.       if (var2 != null) {
  49.          var3 = new Class[var2.length];
  50.  
  51.          for(int var4 = 0; var4 < var2.length; ++var4) {
  52.             var3[var4] = var2[var4] == null ? null : var2[var4].getClass();
  53.          }
  54.       }
  55.  
  56.       boolean var12 = false;
  57.       Class var5 = var0 instanceof Class ? (Class)var0 : var0.getClass();
  58.  
  59.       try {
  60.          Method var6;
  61.          try {
  62.             var6 = ReflectionUtils.getMethod(var5, var1, var3, var12);
  63.          } catch (NoSuchMethodException var10) {
  64.             try {
  65.                for(int var8 = 0; var8 < var2.length; ++var8) {
  66.                   if (var2[var8] instanceof Number) {
  67.                      var3[var8] = Byte.TYPE;
  68.                   } else if (var2[var8] instanceof Boolean) {
  69.                      var3[var8] = Boolean.TYPE;
  70.                   }
  71.                }
  72.  
  73.                var6 = ReflectionUtils.getMethod(var5, var1, var3, var12);
  74.             } catch (Exception var9) {
  75.                throw var10;
  76.             }
  77.          }
  78.  
  79.          return var6.invoke(var0, var2);
  80.       } catch (Exception var11) {
  81.          Throwable var7 = var11 instanceof InvocationTargetException ? ((InvocationTargetException)var11).getTargetException() : null;
  82.          throw new BSFException(BSFException.REASON_OTHER_ERROR, "method invocation failed: " + var11 + (var7 == null ? "" : " target exception: " + var7), var7);
  83.       }
  84.    }
  85.  
  86.    public static Class loadClass(BSFManager var0, String var1) throws BSFException {
  87.       ClassLoader var2 = var0.getClassLoader();
  88.  
  89.       try {
  90.          return var2 == null ? Class.forName(var1) : var2.loadClass(var1);
  91.       } catch (ClassNotFoundException var5) {
  92.          try {
  93.             if (bsfCL == null) {
  94.                bsfCL = new BSFClassLoader();
  95.             }
  96.  
  97.             bsfCL.setTempDir(var0.getTempDir());
  98.             return bsfCL.loadClass(var1);
  99.          } catch (ClassNotFoundException var4) {
  100.             throw new BSFException(BSFException.REASON_OTHER_ERROR, "unable to load class '" + var1 + "':" + var5, var5);
  101.          }
  102.       }
  103.    }
  104.  
  105.    public static void addEventListener(Object var0, String var1, String var2, BSFEngine var3, BSFManager var4, String var5, int var6, int var7, Object var8) throws BSFException {
  106.       BSFEventProcessor var9 = new BSFEventProcessor(var3, var4, var2, var5, var6, var7, var8);
  107.  
  108.       try {
  109.          ReflectionUtils.addEventListener(var0, var1, var9);
  110.       } catch (Exception var11) {
  111.          ((Throwable)var11).printStackTrace();
  112.          throw new BSFException(BSFException.REASON_OTHER_ERROR, "ouch while adding event listener: " + var11, var11);
  113.       }
  114.    }
  115.  
  116.    public static String getTypeSignatureString(Class var0) {
  117.       if (var0.isPrimitive()) {
  118.          if (var0 == Boolean.TYPE) {
  119.             return "Z";
  120.          } else if (var0 == Byte.TYPE) {
  121.             return "B";
  122.          } else if (var0 == Character.TYPE) {
  123.             return "C";
  124.          } else if (var0 == Short.TYPE) {
  125.             return "S";
  126.          } else if (var0 == Integer.TYPE) {
  127.             return "I";
  128.          } else if (var0 == Long.TYPE) {
  129.             return "J";
  130.          } else if (var0 == Float.TYPE) {
  131.             return "F";
  132.          } else {
  133.             return var0 == Double.TYPE ? "D" : "V";
  134.          }
  135.       } else {
  136.          StringBuffer var1 = new StringBuffer("L");
  137.          var1.append(var0.getName());
  138.          var1.append(";");
  139.          return var1.toString().replace('.', '/');
  140.       }
  141.    }
  142. }
  143.