@Override public ActionDefinition buildActionDef( final Class actionClass, final Method actionMethod, final ActionNames actionNames) { final String packageActionPath = actionNames.packageActionPath(); final String classActionPath = actionNames.classActionPath(); final String methodActionPath = actionNames.methodActionPath(); final String httpMethod = actionNames.httpMethod(); // if method path is an absolute path, use it right away if (isAbsolutePath(methodActionPath)) { return createActionDef(methodActionPath, httpMethod, methodActionPath, actionNames); } String actionPath = classActionPath; if (methodActionPath != null) { if (!classActionPath.endsWith(StringPool.SLASH)) { actionPath += StringPool.DOT; } actionPath += methodActionPath; } if (isAbsolutePath(actionPath)) { return createActionDef(actionPath, httpMethod, actionPath, actionNames); } if (packageActionPath != null) { actionPath = packageActionPath + actionPath; } else { actionPath = StringPool.SLASH + actionPath; } return createActionDef(actionPath, httpMethod, actionPath, actionNames); }
/** * Replaces action path macros in the path. * If one of the provided paths is <code>null</code> * it will not be replaced - so to emphasize the problem. */ protected String replaceActionNameMacros(String path, final ActionNames actionNames) { final String packageName = actionNames.packageName(); final String className = actionNames.className(); final String methodName = actionNames.methodName(); final String httpMethod = actionNames.httpMethod(); if (packageName != null) { path = StringUtil.replace(path, PACKAGE_MACRO, packageName); } if (className != null) { path = StringUtil.replace(path, CLASS_MACRO, className); } if (methodName != null) { path = StringUtil.replace(path, METHOD_MACRO, methodName); } if (httpMethod != null) { path = StringUtil.replace(path, HTTPMETHOD_MACRO, httpMethod); } return path; }
/** * 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); }
@Override public ActionDefinition buildActionDef(final Class actionClass, final Method actionMethod, final ActionNames actionNames) { final String packageActionPath = actionNames.packageActionPath(); final String classActionPath = actionNames.classActionPath(); String methodActionPath = includeMethodActionPath ? actionNames.methodActionPath() : null; String httpMethod = actionNames.httpMethod(); resultPath += httpMethod.toLowerCase(); } else { resultPath += actionNames.methodName();