View Javadoc

1   /*
2    * Copyright 2007-2012 the original author or authors.
3    *
4    * Licensed under the Apache License, Version 2.0 (the "License");
5    * you may not use this file except in compliance with the License.
6    * You may obtain a copy of the License at
7    *
8    *      http://www.apache.org/licenses/LICENSE-2.0
9    *
10   * Unless required by applicable law or agreed to in writing, software
11   * distributed under the License is distributed on an "AS IS" BASIS,
12   * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
13   * See the License for the specific language governing permissions and
14   * limitations under the License.
15   */
16  
17  package org.springbyexample.web.servlet.mvc.gwt;
18  
19  import javax.servlet.ServletContext;
20  import javax.servlet.http.HttpServletRequest;
21  import javax.servlet.http.HttpServletResponse;
22  
23  import org.slf4j.Logger;
24  import org.slf4j.LoggerFactory;
25  import org.springframework.web.context.ServletContextAware;
26  import org.springframework.web.servlet.ModelAndView;
27  import org.springframework.web.servlet.mvc.Controller;
28  
29  import com.google.gwt.user.server.rpc.RemoteServiceServlet;
30  
31  /**
32   * Spring Controller that just called GWT's <code>RemoteServiceServlet.doPost(request, response)</code>.
33   * 
34   * @author David Winterfeldt
35   */
36  public abstract class GwtController extends RemoteServiceServlet implements Controller, ServletContextAware {
37  
38      private static final long serialVersionUID = -8355008871464981285L;
39  
40      final Logger logger = LoggerFactory.getLogger(GwtController.class);
41  
42      private ServletContext servletContext;
43  
44      /**
45       * Gets <code>ServletContext</code>.
46       */
47      @Override
48      public ServletContext getServletContext() {
49          return servletContext;
50      }
51  
52      /**
53       * Implementation of <code>ServletContextAware</code>.
54       */
55      public void setServletContext(ServletContext servletContext) {
56          this.servletContext = servletContext;
57      }
58  
59      /**
60       * Handles request and delegates to GWT's <code>RemoteServiceServlet.doPost(request, response)</code>.
61       */
62      public ModelAndView handleRequest(HttpServletRequest request, HttpServletResponse response) 
63              throws Exception {
64          try {
65              logger.debug("Processing handleRequest before.");
66              
67              doPost(request, response);
68              
69              logger.debug("Processing handleRequest after.");
70              
71              return null;
72          } catch (Exception e) {
73              logger.error("Handle request error '" + e.getMessage() + "'", e);
74  
75              return null;
76          }
77      }
78  
79  }