/** evaluate the link function */ public static Data link(VMethod m, Object[] o) throws VisADException { Data ans = null; if (o != null) { for (int i = 0; i < o.length; i++) { // convert VRealTypes to RealTypes if (o[i] instanceof VRealType) { o[i] = ((VRealType) o[i]).getRealType(); } } } try { ans = (Data) FormulaUtil.invokeMethod(m.getMethod(), o); } catch (ClassCastException exc) { if (FormulaVar.DEBUG) exc.printStackTrace(); throw new VisADException("Link error: invalid linked method"); } catch (IllegalAccessException exc) { if (FormulaVar.DEBUG) exc.printStackTrace(); throw new VisADException("Link error: cannot access linked method"); } catch (IllegalArgumentException exc) { if (FormulaVar.DEBUG) exc.printStackTrace(); throw new VisADException("Link error: bad method argument"); } catch (InvocationTargetException exc) { if (FormulaVar.DEBUG) exc.getTargetException().printStackTrace(); throw new VisADException("Link error: linked method threw an exception"); } if (ans == null) { throw new VisADException("Link error: linked method returned null data"); } return ans; }
public static void renaming(VClassLoader loader) { String name = loader.getName(); loader.setName(name.replace('-', '_').replace('.', '$')); for (VClass v : loader.classes) { if (v.alias == null) v.alias = v.fullName; v.fullName = v.fullName.replace('.', '_') + "_" + Long.toString(++classNameIterator, Character.MAX_RADIX); for (VField f : v.fields) { if (f.alias == null) f.alias = f.name; f.name = "f" + Integer.toString(++fieldIterator, Character.MAX_RADIX); } for (VMethod m : v.methods) { if (m.alias == null) m.alias = m.getRunTimeName(); int argIterator = 0; for (VArgument a : m.arguments) { a.name = a.name + "_" + Integer.toString(++argIterator, Character.MAX_RADIX); } if (m.getReplace() == null) m.setRuntimeName( m.getRunTimeName() + "_" + Long.toString(++methodNameIterator, Character.MAX_RADIX)); } int constructIterator = 0; for (VConstructor m : v.constructors) { m.setRuntimeName("c" + Integer.toString(++constructIterator, Character.MAX_RADIX)); int argIterator = 0; for (VArgument a : m.arguments) { a.name = "a" + Integer.toString(++argIterator, Character.MAX_RADIX); } } } for (VClassLoader cl : loader.parents) renaming(cl); }