001/*
002  GRANITE DATA SERVICES
003  Copyright (C) 2011 GRANITE DATA SERVICES S.A.S.
004
005  This file is part of Granite Data Services.
006
007  Granite Data Services is free software; you can redistribute it and/or modify
008  it under the terms of the GNU Library General Public License as published by
009  the Free Software Foundation; either version 2 of the License, or (at your
010  option) any later version.
011
012  Granite Data Services is distributed in the hope that it will be useful, but
013  WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
014  FITNESS FOR A PARTICULAR PURPOSE. See the GNU Library General Public License
015  for more details.
016
017  You should have received a copy of the GNU Library General Public License
018  along with this library; if not, see <http://www.gnu.org/licenses/>.
019*/
020
021package org.granite.gravity;
022
023import java.io.IOException;
024import java.io.InputStream;
025
026import javax.servlet.ServletConfig;
027import javax.servlet.ServletException;
028import javax.servlet.http.HttpServlet;
029import javax.servlet.http.HttpServletRequest;
030import javax.servlet.http.HttpServletResponse;
031
032import flex.messaging.messages.CommandMessage;
033import flex.messaging.messages.Message;
034
035/**
036 * @author Franck WOLFF
037 */
038public class AbstractGravityServlet extends HttpServlet {
039
040        ///////////////////////////////////////////////////////////////////////////
041        // Fields.
042        
043        private static final long serialVersionUID = 1L;
044
045        ///////////////////////////////////////////////////////////////////////////
046        // Initialization.
047        
048        @Override
049        public void init(ServletConfig config) throws ServletException {
050                super.init(config);
051                
052                GravityServletUtil.init(config);
053        }
054
055        ///////////////////////////////////////////////////////////////////////////
056        // Connect messages management (request attribute).
057        
058        public static void setConnectMessage(HttpServletRequest request, Message connect) {
059                GravityServletUtil.setConnectMessage(request, connect);
060        }
061        
062        public static CommandMessage getConnectMessage(HttpServletRequest request) {
063                return GravityServletUtil.getConnectMessage(request);
064        }
065        
066        public static void removeConnectMessage(HttpServletRequest request) {
067                GravityServletUtil.removeConnectMessage(request);
068        }
069
070        ///////////////////////////////////////////////////////////////////////////
071        // Long polling timeout.
072        
073        protected long getLongPollingTimeout() {
074                return GravityServletUtil.getLongPollingTimeout(getServletContext());
075        }
076
077        ///////////////////////////////////////////////////////////////////////////
078        // AMF (de)serialization methods.
079        
080        protected Gravity initializeRequest(Gravity gravity, HttpServletRequest request, HttpServletResponse response) {
081                return GravityServletUtil.initializeRequest(getServletConfig(), gravity, request, response);
082        }
083
084        @SuppressWarnings("unused")
085        protected Message[] deserialize(Gravity gravity, HttpServletRequest request) throws ClassNotFoundException, IOException, ServletException {
086                return GravityServletUtil.deserialize(gravity, request);
087        }
088        
089        @SuppressWarnings("unused")
090        protected Message[] deserialize(Gravity gravity, HttpServletRequest request, InputStream is) throws ClassNotFoundException, IOException, ServletException {
091                return GravityServletUtil.deserialize(gravity, request, is);
092        }
093        
094        protected void serialize(Gravity gravity, HttpServletResponse response, Message[] messages) throws IOException {
095                GravityServletUtil.serialize(gravity, response, messages);
096        }
097        
098        protected void cleanupRequest(HttpServletRequest request) {
099                GravityServletUtil.cleanupRequest(request);
100        }
101        
102        ///////////////////////////////////////////////////////////////////////////
103        // Unsupported HTTP methods.
104
105        @Override
106        protected void doDelete(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {
107                throw new ServletException("Unsupported operation: " + req.getMethod());
108        }
109
110        @Override
111        protected void doGet(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {
112                throw new ServletException("Unsupported operation: " + req.getMethod());
113        }
114
115        @Override
116        protected void doHead(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {
117                throw new ServletException("Unsupported operation: " + req.getMethod());
118        }
119
120        @Override
121        protected void doOptions(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {
122                throw new ServletException("Unsupported operation: " + req.getMethod());
123        }
124
125        @Override
126        protected void doPut(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {
127                throw new ServletException("Unsupported operation: " + req.getMethod());
128        }
129
130        @Override
131        protected void doTrace(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {
132                throw new ServletException("Unsupported operation: " + req.getMethod());
133        }
134}