From: <ms...@us...> - 2010-11-03 02:47:26
|
Revision: 11666 http://wonder.svn.sourceforge.net/wonder/?rev=11666&view=rev Author: mschrag Date: 2010-11-03 02:47:20 +0000 (Wed, 03 Nov 2010) Log Message: ----------- If you annotate an action method, you shouldn't have to name it whateverAction Modified Paths: -------------- branches/Wonder_5_0_0_WebObjects_5_4_Branch/Wonder/Frameworks/EOF/ERRest/Sources/er/rest/routes/ERXRouteController.java branches/Wonder_5_0_0_WebObjects_5_4_Branch/Wonder/Frameworks/EOF/ERRest/Sources/er/rest/routes/ERXRouteRequestHandler.java Modified: branches/Wonder_5_0_0_WebObjects_5_4_Branch/Wonder/Frameworks/EOF/ERRest/Sources/er/rest/routes/ERXRouteController.java =================================================================== --- branches/Wonder_5_0_0_WebObjects_5_4_Branch/Wonder/Frameworks/EOF/ERRest/Sources/er/rest/routes/ERXRouteController.java 2010-11-03 02:44:32 UTC (rev 11665) +++ branches/Wonder_5_0_0_WebObjects_5_4_Branch/Wonder/Frameworks/EOF/ERRest/Sources/er/rest/routes/ERXRouteController.java 2010-11-03 02:47:20 UTC (rev 11666) @@ -52,7 +52,9 @@ import er.rest.format.ERXWORestRequest; import er.rest.format.ERXWORestResponse; import er.rest.format.IERXRestParser; +import er.rest.routes.jsr311.Path; import er.rest.routes.jsr311.PathParam; +import er.rest.routes.jsr311.Paths; import er.rest.util.ERXRestSchema; import er.rest.util.ERXRestTransactionRequestAdaptor; @@ -1306,14 +1308,25 @@ } if (results == null) { - Method actionMethod = _methodForAction(actionName, WODirectAction.actionText); + String actionMethodName = actionName + WODirectAction.actionText; + Method actionMethod = _methodForAction(actionMethodName, ""); + if (actionMethod == null) { + actionMethod = _methodForAction(actionName, ""); + if (actionMethod == null || (actionMethod.getAnnotation(Path.class) == null && actionMethod.getAnnotation(Paths.class) == null)) { + actionMethod = null; + } + } if (actionMethod == null || actionMethod.getParameterTypes().length > 0) { - String actionMethodName = actionName + WODirectAction.actionText; int bestParameterCount = 0; Method bestMethod = null; List<PathParam> bestParams = null; for (Method method : getClass().getDeclaredMethods()) { - if (method.getName().equals(actionMethodName)) { + String methodName = method.getName(); + boolean nameMatches = methodName.equals(actionMethodName); + if (!nameMatches && methodName.equals(actionName) && (method.getAnnotation(Path.class) != null || method.getAnnotation(Paths.class) != null)) { + nameMatches = true; + } + if (nameMatches) { int parameterCount = 0; List<PathParam> params = new LinkedList<PathParam>(); for (Annotation[] parameterAnnotations : method.getParameterAnnotations()) { Modified: branches/Wonder_5_0_0_WebObjects_5_4_Branch/Wonder/Frameworks/EOF/ERRest/Sources/er/rest/routes/ERXRouteRequestHandler.java =================================================================== --- branches/Wonder_5_0_0_WebObjects_5_4_Branch/Wonder/Frameworks/EOF/ERRest/Sources/er/rest/routes/ERXRouteRequestHandler.java 2010-11-03 02:44:32 UTC (rev 11665) +++ branches/Wonder_5_0_0_WebObjects_5_4_Branch/Wonder/Frameworks/EOF/ERRest/Sources/er/rest/routes/ERXRouteRequestHandler.java 2010-11-03 02:47:20 UTC (rev 11666) @@ -428,53 +428,55 @@ for (Method routeMethod : routeControllerClass.getDeclaredMethods()) { String routeMethodName = routeMethod.getName(); - if (routeMethodName.endsWith("Action")) { - String actionName = routeMethodName.substring(0, routeMethodName.length() - "Action".length()); + Path pathAnnotation = routeMethod.getAnnotation(Path.class); + Paths pathsAnnotation = routeMethod.getAnnotation(Paths.class); + if (pathAnnotation != null || pathsAnnotation != null) { + String actionName; + if (routeMethodName.endsWith("Action")) { + actionName = routeMethodName.substring(0, routeMethodName.length() - "Action".length()); + } + else { + actionName = routeMethodName; + } - Path pathAnnotation = routeMethod.getAnnotation(Path.class); - Paths pathsAnnotation = routeMethod.getAnnotation(Paths.class); - if (pathAnnotation != null || pathsAnnotation != null) { - declaredRoutesFound = false; - - ERXRoute.Method method = null; - for (Annotation annotation : routeMethod.getAnnotations()) { - HttpMethod httpMethod = annotation.annotationType().getAnnotation(HttpMethod.class); - if (httpMethod != null) { - if (method == null) { - method = httpMethod.value(); - } - else { - throw new IllegalArgumentException(routeControllerClass.getSimpleName() + "." + routeMethod.getName() + " is annotated as more than one http method."); - } + ERXRoute.Method method = null; + for (Annotation annotation : routeMethod.getAnnotations()) { + HttpMethod httpMethod = annotation.annotationType().getAnnotation(HttpMethod.class); + if (httpMethod != null) { + if (method == null) { + method = httpMethod.value(); } + else { + throw new IllegalArgumentException(routeControllerClass.getSimpleName() + "." + routeMethod.getName() + " is annotated as more than one http method."); + } } - if (method == null) { - method = ERXRoute.Method.Get; - } + } + if (method == null) { + method = ERXRoute.Method.Get; + } - Annotation methodAnnotation = routeMethod.getAnnotation(GET.class); + Annotation methodAnnotation = routeMethod.getAnnotation(GET.class); + if (methodAnnotation == null) { + methodAnnotation = routeMethod.getAnnotation(POST.class); if (methodAnnotation == null) { - methodAnnotation = routeMethod.getAnnotation(POST.class); + methodAnnotation = routeMethod.getAnnotation(PUT.class); if (methodAnnotation == null) { - methodAnnotation = routeMethod.getAnnotation(PUT.class); - if (methodAnnotation == null) { - methodAnnotation = routeMethod.getAnnotation(DELETE.class); - } + methodAnnotation = routeMethod.getAnnotation(DELETE.class); } } - if (methodAnnotation != null) { - method = methodAnnotation.annotationType().getAnnotation(HttpMethod.class).value(); + } + if (methodAnnotation != null) { + method = methodAnnotation.annotationType().getAnnotation(HttpMethod.class).value(); + } + if (pathAnnotation != null) { + addRoute(new ERXRoute(entityName, pathAnnotation.value(), method, routeControllerClass, actionName)); + declaredRoutesFound = true; + } + if (pathsAnnotation != null) { + for (Path path : pathsAnnotation.value()) { + addRoute(new ERXRoute(entityName, path.value(), method, routeControllerClass, actionName)); } - if (pathAnnotation != null) { - addRoute(new ERXRoute(entityName, pathAnnotation.value(), method, routeControllerClass, actionName)); - declaredRoutesFound = true; - } - if (pathsAnnotation != null) { - for (Path path : pathsAnnotation.value()) { - addRoute(new ERXRoute(entityName, path.value(), method, routeControllerClass, actionName)); - } - declaredRoutesFound = true; - } + declaredRoutesFound = true; } } } This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |