// the one from the environment.
for (int i = 0; i < types.length; i++) {
Map actionResult;
Action action;
String actionName = actionNames[i];
String source = sources[i].resolve(context, objectModel);
if (actionName == null || actionName.equals(cocoonAction)) {
Parameters actionParams = VariableResolver.buildParameters(parameters[i], context, objectModel);
if (actionParams == Parameters.EMPTY_PARAMETERS) {
actionParams = params;
} else {
actionParams.merge(params);
}
// If action is ThreadSafe, avoid select() and try/catch block (faster !)
if ((action = this.threadSafeActions[i]) != null) {
actionResult = action.act(
redirector, resolver, objectModel, source, actionParams);
} else {
action = (Action)this.selector.select(this.types[i]);
try {
actionResult = action.act(
redirector, resolver, objectModel, source, actionParams);
} finally {
this.selector.release(action);
}
}