Performs the given action for each global vars until all have been processed or the action throws an exception.

@param action
@since 2.5.0
511555
public void forEachGlobal(BiConsumer<String, Object> action) {
        Objects.requireNonNull(action);
        this.globalVars.forEach(action);
    }
1283416
public void forEachConst(BiConsumer<String, Object> action) {
        Objects.requireNonNull(action);
        this.constVars.forEach(action);
    }
251594
public void processAction() throws IOException {
		if (isDisposed()) {
			LOG.error("Skipping action phase. Attempt to reuse disposed ContainerHelper instance");
			return;
		}

		try {
			// Check user context has been prepared
			if (getNewConversation() == null) {
				throw new IllegalStateException(
						"User context has not been prepared before the action phase");
			}

			prepareAction();

			UIContext uic = getUIContext();
			if (uic == null) {
				throw new IllegalStateException("No user context set for the action phase.");
			}

			UIContextHolder.pushContext(uic);

			// Make sure maps are cleared up
			uic.clearScratchMap();
			uic.clearRequestScratchMap();

			prepareRequest();

			Request req = getRequest();
			getInterceptor().attachResponse(getResponse());
			getInterceptor().serviceRequest(req);

			if (req.isLogout()) {
				handleLogout();
				dispose();
			}
		} catch (ActionEscape esc) {
			LOG.debug("ActionEscape performed.");
			// Action escapes must be handled in the action phase and then
			// do nothing if they reach the render phase (which they will in
			// the servlet implementation)
			handleEscape(esc);
			dispose();
		} catch (Escape esc) {
			LOG.debug("Escape performed during action phase.");
			// We can't handle the escape until the render phase.
		} catch (Throwable t) {
			// We try not to let any exception propagate to container.
			String message = "Caught exception during action phase.";
			LOG.error(message, t);

			// We can't handle the error until the render phase.
			propogateError(t);
		} finally {
			UIContextHolder.reset();
		}
	}
1272079
protected void onError(Action action, String reason) {
        Console.error(Console.CONSTANTS.lastActionError(), reason);
    }
1338277
@UiThread
  public static <T extends View> void run(@NonNull List<T> list,
      @NonNull Action<? super T> action) {
    for (int i = 0, count = list.size(); i < count; i++) {
      action.apply(list.get(i), i);
    }
  }
1055515
static ContinuableFuture<Void> execute(final Try.Runnable<? extends Exception> action) {
        return execute(new FutureTask<Void>(FN.toCallable(action)), SERIAL_EXECUTOR);
    }
353960
public static Callable<Object> callable(final PrivilegedExceptionAction<?> action) {
        if (action == null)
            throw new NullPointerException();
        return new Callable<Object>() {
            public Object call() throws Exception { return action.run(); }};
    }
314726
@Override
    public void setAction(final Runnable action) {
        super.setAction(new Runnable() {
            @Override
            public void run() {
                if (!isRunning) {
                    thread = new Thread(wrappedAction(action), "wunderboss-daemon-thread[" + name + "]");
                    thread.start();
                    isRunning = true;
                }
            }
        });
    }
149222
@Override
    public void addAction(final LifecycleStage stage, final LifecycleAction<T> action)
    {
        stageEvents.add(new StageEvent(stage, action));
    }
1056307
protected void executeAdvice(Executable action) {
        if (log.isDebugEnabled()) {
            log.debug("Action " + action);
        }

        try {
            action.execute(this);
        } catch (Exception e) {
            setRaisedException(e);
            throw new ActionExecutionException("Failed to execute advice action " + action, e);
        }
    }
239595
@Override
   public void forEach(LongConsumer action) {
      if (!rehashAware) {
         performOperation(TerminalFunctions.forEachFunction(action), false, (v1, v2) -> null, null);
      } else {
         performRehashKeyTrackingOperation(s -> getForEach(action, s));
      }
   }
978898
public static Result onUiAsync(Action action) {
        if (Looper.myLooper() == Looper.getMainLooper()) {
            action.call();
            return new ActionAsyncTask(action, true);
        }
        ActionAsyncTask task = new ActionAsyncTask(action);
        getUiPoster().async(task);
        return task;
    }
100575
public void setAction(final Action action) {
		MenuItemModel model = getOrCreateComponentModel();
		model.action = action;
		model.url = null;
	}
265202
public Api getActionResult(String action, String params) throws Exception {
    Api result = this.getActionResult(action, params, null, null);
    return result;
  }
134852
public <E extends Exception> void forEach(Try.IntBiConsumer<E> action) throws E {
        for (int i = 0; i < rows; i++) {
            for (int j = 0; j < cols; j++) {
                action.accept(i, j);
            }
        }
    }
1106736
public void schedule(CmsValidationController action) {

        if (m_idle) {
            m_idle = false;
            action.internalStartValidation();
        } else {
            m_actions.add(action);
        }
    }
1136669
public void setAction(String action) throws ApplicationException {
	action = action.toLowerCase().trim();
	if (action.equals("getall")) this.action = ACTION_GET_ALL;
	else if (action.equals("get")) this.action = ACTION_GET;
	else if (action.equals("set")) this.action = ACTION_SET;
	else if (action.equals("delete")) this.action = ACTION_DELETE;
	else throw new ApplicationException("attribute action of the tag registry has an invalid value [" + action + "], valid values are [getAll, get, set, delete]");
    }