You are viewing a plain text version of this content. The canonical link for it is here.
Posted to cvs@cocoon.apache.org by re...@apache.org on 2009/06/22 21:34:00 UTC
svn commit: r787364 - in
/cocoon/cocoon3/trunk/cocoon-rest/src/main/java/org/apache/cocoon/rest/controller:
MethodDelegator.java SpringRESTController.java
Author: reinhard
Date: Mon Jun 22 19:34:00 2009
New Revision: 787364
URL: http://svn.apache.org/viewvc?rev=787364&view=rev
Log:
Static initialization of method delegators (since they are stateless they can be singletons)
improve logging
Modified:
cocoon/cocoon3/trunk/cocoon-rest/src/main/java/org/apache/cocoon/rest/controller/MethodDelegator.java
cocoon/cocoon3/trunk/cocoon-rest/src/main/java/org/apache/cocoon/rest/controller/SpringRESTController.java
Modified: cocoon/cocoon3/trunk/cocoon-rest/src/main/java/org/apache/cocoon/rest/controller/MethodDelegator.java
URL: http://svn.apache.org/viewvc/cocoon/cocoon3/trunk/cocoon-rest/src/main/java/org/apache/cocoon/rest/controller/MethodDelegator.java?rev=787364&r1=787363&r2=787364&view=diff
==============================================================================
--- cocoon/cocoon3/trunk/cocoon-rest/src/main/java/org/apache/cocoon/rest/controller/MethodDelegator.java (original)
+++ cocoon/cocoon3/trunk/cocoon-rest/src/main/java/org/apache/cocoon/rest/controller/MethodDelegator.java Mon Jun 22 19:34:00 2009
@@ -30,27 +30,33 @@
import org.apache.cocoon.rest.controller.method.Put;
import org.apache.cocoon.rest.controller.response.RestResponse;
import org.apache.cocoon.rest.controller.response.Status;
+import org.apache.commons.logging.Log;
+import org.apache.commons.logging.LogFactory;
public class MethodDelegator {
- private Map<String, MethodDelegate> delegates = new HashMap<String, MethodDelegate>();
+ private static Map<String, MethodDelegate> delegates = new HashMap<String, MethodDelegate>();
+
+ private final Log logger = LogFactory.getLog(this.getClass());
+
+ static {
+ delegates.put("DELETE", new DeleteDelegate());
+ delegates.put("GET", new GetDelegate());
+ delegates.put("HEAD", new HeadDelegate());
+ delegates.put("OPTIONS", new OptionsDelegate());
+ delegates.put("POST", new PostDelegate());
+ delegates.put("PUT", new PutDelegate());
+ }
public MethodDelegator() {
super();
-
- this.delegates.put("DELETE", new DeleteDelegate());
- this.delegates.put("GET", new GetDelegate());
- this.delegates.put("HEAD", new HeadDelegate());
- this.delegates.put("OPTIONS", new OptionsDelegate());
- this.delegates.put("POST", new PostDelegate());
- this.delegates.put("PUT", new PutDelegate());
}
public RestResponse delegate(HttpServletRequest request, Object controller) throws Exception {
if (request != null && request.getMethod() != null) {
String method = this.getMethod(request);
- MethodDelegate methodDelegate = this.delegates.get(method);
+ MethodDelegate methodDelegate = delegates.get(method);
if (methodDelegate != null) {
return methodDelegate.execute(controller);
}
@@ -62,17 +68,25 @@
private String getMethod(HttpServletRequest request) {
String alternativeMethod = request.getParameter("_method");
if (alternativeMethod != null) {
- if (this.delegates.keySet().contains(alternativeMethod.toUpperCase())) {
- return alternativeMethod.toUpperCase();
+ alternativeMethod = alternativeMethod.toUpperCase();
+ if (delegates.keySet().contains(alternativeMethod)) {
+ if (this.logger.isDebugEnabled()) {
+ this.logger.debug("Using alternative request method '" + alternativeMethod
+ + "' as provided by the request parameter '_method'");
+ }
+
+ return alternativeMethod;
}
- // TODO log the unsupported method name
+ if (this.logger.isWarnEnabled()) {
+ this.logger.warn("The request parameter '_request' refers to an unsupported request method: _method='" + alternativeMethod + "'");
+ }
}
return request.getMethod().toUpperCase();
}
- private class DeleteDelegate extends MethodDelegate {
+ private static class DeleteDelegate extends MethodDelegate {
public DeleteDelegate() {
super();
@@ -88,7 +102,7 @@
}
}
- private class GetDelegate extends MethodDelegate {
+ private static class GetDelegate extends MethodDelegate {
public GetDelegate() {
super();
@@ -104,7 +118,7 @@
}
}
- private class HeadDelegate extends MethodDelegate {
+ private static class HeadDelegate extends MethodDelegate {
public HeadDelegate() {
super();
@@ -120,7 +134,7 @@
}
}
- private abstract class MethodDelegate {
+ private static abstract class MethodDelegate {
public MethodDelegate() {
super();
@@ -131,7 +145,7 @@
}
}
- private class OptionsDelegate extends MethodDelegate {
+ private static class OptionsDelegate extends MethodDelegate {
public OptionsDelegate() {
super();
@@ -147,7 +161,7 @@
}
}
- private class PostDelegate extends MethodDelegate {
+ private static class PostDelegate extends MethodDelegate {
public PostDelegate() {
super();
@@ -164,7 +178,7 @@
}
}
- private class PutDelegate extends MethodDelegate {
+ private static class PutDelegate extends MethodDelegate {
public PutDelegate() {
super();
Modified: cocoon/cocoon3/trunk/cocoon-rest/src/main/java/org/apache/cocoon/rest/controller/SpringRESTController.java
URL: http://svn.apache.org/viewvc/cocoon/cocoon3/trunk/cocoon-rest/src/main/java/org/apache/cocoon/rest/controller/SpringRESTController.java?rev=787364&r1=787363&r2=787364&view=diff
==============================================================================
--- cocoon/cocoon3/trunk/cocoon-rest/src/main/java/org/apache/cocoon/rest/controller/SpringRESTController.java (original)
+++ cocoon/cocoon3/trunk/cocoon-rest/src/main/java/org/apache/cocoon/rest/controller/SpringRESTController.java Mon Jun 22 19:34:00 2009
@@ -66,9 +66,7 @@
public class SpringRESTController implements Controller, ApplicationContextAware {
private AnnotationCollector annotationCollector;
-
private ApplicationContext applicationContext;
-
private MethodDelegator methodDelegator;
public String invoke(OutputStream outputStream, String controllerName, Map<String, Object> inputParameters,