/** * Registration main point. Does two things: * <ul> * <li>{@link jodd.madvoc.component.ActionMethodParser#parse(Class, java.lang.reflect.Method, ActionDefinition) parse action} * and creates {@link ActionRuntime}</li> * <li>{@link #registerActionRuntime(ActionRuntime) registers} created {@link ActionRuntime}</li> * </ul> * Returns created {@link ActionRuntime}. * @see #registerActionRuntime(ActionRuntime) */ public ActionRuntime registerAction(final Class actionClass, final Method actionMethod, final ActionDefinition actionDefinition) { final ActionRuntime actionRuntime = actionMethodParser.parse(actionClass, actionMethod, actionDefinition); if (actionRuntime == null) { return null; } return registerActionRuntime(actionRuntime); }
/** * Parses action class and method and creates {@link ActionDefinition parsed action definition}. */ public ActionDefinition parseActionDefinition(final Class<?> actionClass, final Method actionMethod) { final ActionAnnotationValues annotationValues = detectActionAnnotationValues(actionMethod); final ActionConfig actionConfig = resolveActionConfig(annotationValues); final String[] packageActionNames = readPackageActionPath(actionClass); final String[] classActionNames = readClassActionPath(actionClass); final String[] methodActionNames = readMethodActionPath(actionMethod.getName(), annotationValues, actionConfig); final String method = readMethodHttpMethod(actionMethod); final ActionNames actionNames = new ActionNames(packageActionNames, classActionNames, methodActionNames, method); final ActionNamingStrategy namingStrategy; try { namingStrategy = ClassUtil.newInstance(actionConfig.getNamingStrategy()); contextInjectorComponent.injectContext(namingStrategy); } catch (Exception ex) { throw new MadvocException(ex); } return namingStrategy.buildActionDef(actionClass, actionMethod, actionNames); }
final ActionAnnotationValues annotationValues = detectActionAnnotationValues(actionMethod); final ActionConfig actionConfig = resolveActionConfig(annotationValues); ActionInterceptor[] actionInterceptors = parseActionInterceptors(actionClass, actionMethod, actionConfig); ActionFilter[] actionFilters = parseActionFilters(actionClass, actionMethod, actionConfig); 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,
Class<? extends ActionInterceptor>[] interceptorClasses = readMethodInterceptors(actionMethod); if (interceptorClasses == null) { interceptorClasses = readClassInterceptors(superClass != null ? superClass : actionClass); String packageActionPath = readPackageActionPath(superClass != null ? superClass : actionClass); String classActionPath = readClassActionPath(superClass != null ? superClass : actionClass); if (classActionPath == null) { return null; String methodActionPath = readMethodActionPath(actionMethodName, annotationData); String extension = readMethodExtension(annotationData); String alias = readMethodAlias(annotationData); String httpMethod = readMethodHttpMethod(annotationData); actionPath = buildActionPath(packageActionPath, classActionPath, methodActionPath, extension, httpMethod); madvocConfig.registerPathAlias(alias, actionPath); return createActionConfig(actionClass, actionMethod, interceptorClasses, actionPath, httpMethod, extension);
actionMethodParser.createActionRuntime( actionHandler, actionClass,
protected ActionRuntime parse(ActionMethodParser actionMethodParser, String signature) { Object[] data = resolveSignature(signature); return actionMethodParser.parse((Class) data[0], (Method) data[1], null); }
public ActionConfig parse(Class<?> actionClass, Method actionMethod) { return parse(actionClass, actionMethod, null); }
ActionConfig cfg = actionMethodParser.parse(actionClass, actionMethod, actionPath); if (cfg == null) { return null;