jodd-madvoc/src/main/java/jodd/madvoc/component/ActionMethodParser.java
public ActionRuntime parse(final Class<?> actionClass, final Method actionMethod, ActionDefinition actionDefinition) {
		final ActionAnnotationValues annotationValues = detectActionAnnotationValues(actionMethod);

		final ActionConfig actionConfig = resolveActionConfig(annotationValues);

		// interceptors
		ActionInterceptor[] actionInterceptors = parseActionInterceptors(actionClass, actionMethod, actionConfig);

		// filters
		ActionFilter[] actionFilters = parseActionFilters(actionClass, actionMethod, actionConfig);

		// build action definition when not provided
		if (actionDefinition == null) {
			actionDefinition = parseActionDefinition(actionClass, actionMethod);
		}

		detectAndRegisterAlias(annotationValues, actionDefinition);

		final boolean async = parseMethodAsyncFlag(actionMethod);

		final boolean auth = parseMethodAuthFlag(actionMethod);

		final Class<? extends ActionResult> actionResult = parseActionResult(actionMethod);
		final Class<? extends ActionResult> defaultActionResult = actionConfig.getActionResult();

		return createActionRuntime(
			null,
			actionClass,
			actionMethod,
			actionResult,
			defaultActionResult,
			actionFilters,
			actionInterceptors,
			actionDefinition,
			async,
			auth);
	}
public ActionRuntime parse(final Class<?> actionClass, final Method actionMethod, ActionDefinition actionDefinition) {
		final ActionAnnotationValues annotationValues = detectActionAnnotationValues(actionMethod);

		final ActionConfig actionConfig = resolveActionConfig(annotationValues);

		// interceptors
		ActionInterceptor[] actionInterceptors = parseActionInterceptors(actionClass, actionMethod, actionConfig);

		// filters
		ActionFilter[] actionFilters = parseActionFilters(actionClass, actionMethod, actionConfig);

		// build action definition when not provided
		if (actionDefinition == null) {
			actionDefinition = parseActionDefinition(actionClass, actionMethod);
		}

		detectAndRegisterAlias(annotationValues, actionDefinition);

		final boolean async = parseMethodAsyncFlag(actionMethod);

		final boolean auth = parseMethodAuthFlag(actionMethod);

		final Class<? extends ActionResult> actionResult = parseActionResult(actionMethod);
		final Class<? extends ActionResult> defaultActionResult = actionConfig.getActionResult();

		return createActionRuntime(
			null,
			actionClass,
			actionMethod,
			actionResult,
			defaultActionResult,
			actionFilters,
			actionInterceptors,
			actionDefinition,
			async,
			auth);
	}
Parses java action method annotation and returns its action runtime.

@param actionClass action class
@param actionMethod action method
@param actionDefinition optional action def, usually <code>null</code> so to be parsed