private static void initializeFields(final RequestContext context, final ObjectAdapter object, final ObjectAction action, final InputField[] fields) { final List<ObjectActionParameter> parameters = action.getParameters(); for (int i = 0; i < fields.length; i++) { final InputField field = fields[i]; final ObjectActionParameter param = parameters.get(i); if (action.isContributed() && i == 0) { // fields[i].setValue(context.mapObject(object, // Scope.INTERACTION)); fields[i].setType(InputField.REFERENCE); fields[i].setHidden(true); } else { fields[i].setHelpReference("xxxhelp"); final ObjectAdapter[] optionsForParameter = action.getChoices(object)[i]; FieldFactory.initializeField(context, object, param, optionsForParameter, !param.isOptional(), field); } } }
@Override public void doHandle(final PerformContext performContext) throws ScenarioBoundValueException { final ObjectAdapter onAdapter = performContext.getOnAdapter(); final ObjectMember nakedObjectMember = performContext.getObjectMember(); final CellBinding arg0Binding = performContext.getPeer().getArg0Binding(); final ScenarioCell arg0Cell = arg0Binding.getCurrentCell(); int requestedParamNum = -1; try { requestedParamNum = Integer.valueOf(arg0Cell.getText()); } catch (final NumberFormatException ex) { throw ScenarioBoundValueException.current(arg0Binding, ex.getMessage()); } final ObjectAction noa = (ObjectAction) nakedObjectMember; final int parameterCount = noa.getParameterCount(); if (requestedParamNum < 0 || requestedParamNum > parameterCount - 1) { throw ScenarioBoundValueException.current(arg0Binding, "(must be between 0 and " + (parameterCount - 1) + ")"); } final ObjectAdapter[][] allParameterChoices = noa.getChoices(onAdapter); result = performContext.getPeer().toAdaptedListOfPojos(allParameterChoices[requestedParamNum]); }