final FrontEndAction action = (FrontEndAction)iterator.next();
// store the action parameters
final List actionFormFields = action.getFormFields();
for (final Iterator fieldIterator = actionFormFields.iterator(); fieldIterator.hasNext();)
{
final FrontEndParameter parameter = (FrontEndParameter)fieldIterator.next();
final String name = parameter.getName();
// - only add if the parameter is an action parameter and its an argument of this operation
if (parameter.getAction() != null && argumentNames.contains(name))
{
formFieldsMap.put(name, parameter);
}
}
// get all forwards and overwrite when we find a table (or add when not yet present)
final List forwards = action.getActionForwards();
for (final Iterator forwardIterator = forwards.iterator(); forwardIterator.hasNext();)
{
final FrontEndForward forward = (FrontEndForward)forwardIterator.next();
// - only consider forwards directly entering a view
if (forward.isEnteringView())
{
final List viewVariables = forward.getForwardParameters();
for (final Iterator variableIterator = viewVariables.iterator(); variableIterator.hasNext();)
{
final FrontEndParameter viewVariable = (FrontEndParameter)variableIterator.next();
final String name = viewVariable.getName();
if (argumentNames.contains(name))
{
if (!formFieldsMap.containsKey(name) || viewVariable.isTable())
{
formFieldsMap.put(name, viewVariable);
}
}
}
}
}
}
// since all arguments need to be present we add those that haven't yet been stored in the map
for (final Iterator argumentIterator = arguments.iterator(); argumentIterator.hasNext();)
{
final FrontEndParameter argument = (FrontEndParameter)argumentIterator.next();
final String name = argument.getName();
if (!formFieldsMap.containsKey(name))
{
formFieldsMap.put(name, argument);
}
}