use of jodd.madvoc.meta.ActionAnnotationData in project jodd by oblac.
the class ActionMethodParser method parseActionDef.
/**
* Parses action class and method and creates {@link jodd.madvoc.ActionDef parsed action definition}.
*/
public ActionDef parseActionDef(final Class<?> actionClass, final Method actionMethod) {
ActionAnnotationData annotationData = detectActionAnnotationData(actionMethod);
// collector for all action names
final ActionNames actionNames = new ActionNames();
readPackageActionPath(actionNames, actionClass);
readClassActionPath(actionNames, actionClass);
readMethodActionPath(actionNames, actionMethod.getName(), annotationData);
readMethodExtension(actionNames, annotationData);
readMethodHttpMethod(actionNames, annotationData);
final Class<? extends ActionNamingStrategy> actionPathNamingStrategy = parseMethodNamingStrategy(annotationData);
ActionNamingStrategy namingStrategy;
try {
namingStrategy = actionPathNamingStrategy.newInstance();
contextInjectorComponent.injectContext(new Target(namingStrategy));
} catch (Exception ex) {
throw new MadvocException(ex);
}
return namingStrategy.buildActionDef(actionClass, actionMethod, actionNames);
}
use of jodd.madvoc.meta.ActionAnnotationData in project jodd by oblac.
the class ActionMethodParser method parse.
/**
* Parses java action method annotation and returns its action configuration.
*
* @param actionClass action class
* @param actionMethod action method
* @param actionDef optional action def, usually <code>null</code> so to be parsed
*/
public ActionConfig parse(final Class<?> actionClass, final Method actionMethod, ActionDef actionDef) {
// interceptors
ActionInterceptor[] actionInterceptors = parseActionInterceptors(actionClass, actionMethod);
// filters
ActionFilter[] actionFilters = parseActionFilters(actionClass, actionMethod);
// build action definition when not provided
if (actionDef == null) {
actionDef = parseActionDef(actionClass, actionMethod);
}
ActionAnnotationData annotationData = detectActionAnnotationData(actionMethod);
detectAndRegisterAlias(annotationData, actionDef);
final boolean async = parseMethodAsyncFlag(annotationData);
final Class<? extends ActionResult> actionResult = parseActionResult(annotationData);
return createActionConfig(actionClass, actionMethod, actionResult, actionFilters, actionInterceptors, actionDef, async);
}
Aggregations