public Object invokeAction(String actionbinding, String knownvalue) { if (!addressibleBeanModel.isMatch(actionbinding)) { throw UniversalRuntimeException.accumulate(new SecurityException(), "Action binding " + actionbinding + " is not permissible - make sure to mark this path as request addressible - http://www2.caret.cam.ac.uk/rsfwiki/Wiki.jsp?page=RequestWriteableBean"); } ShellInfo shells = darapplier.fetchShells(actionbinding, rbl, true); int lastshell = shells.shells.length; for (int i = 0; i < lastshell; ++ i) { if (shells.shells[i] instanceof ActionTarget) { lastshell = i + 1; } } Object penultimatebean = shells.shells[lastshell - 1]; String actionname = shells.segments[lastshell - 1]; // The only ActionTarget in the world is FlowActionProxyBean, we are not // planning to keep it up if (penultimatebean instanceof ActionTarget) { Object returnvalue = ((ActionTarget) penultimatebean).invokeAction( actionname, knownvalue); return returnvalue; } else { return darapplier.invokeBeanMethod(shells, addressibleBeanModel); } }
ShellInfo shells = alterer.fetchShells(valuebinding.value, root, false);
Object beanReturn = null; if (methodBinding != null) { ShellInfo shells = bma.fetchShells(methodBinding, beanLocator, true); beanReturn = bma.invokeBeanMethod(shells, null);
ShellInfo shellinfo = darapplier.fetchShells(sve.valuebinding, rbl, false); reshapero = dataConverterRegistry.fetchConverter(shellinfo);
Object beanReturn = null; if (methodBinding != null) { ShellInfo shells = bma.fetchShells(methodBinding, beanLocator, true); beanReturn = bma.invokeBeanMethod(shells, null);