Package org.apache.tuscany.samples.web

Source Code of org.apache.tuscany.samples.web.CommandServlet

/*
* Licensed to the Apache Software Foundation (ASF) under one
* or more contributor license agreements.  See the NOTICE file
* distributed with this work for additional information
* regarding copyright ownership.  The ASF licenses this file
* to you under the Apache License, Version 2.0 (the
* "License"); you may not use this file except in compliance
* with the License.  You may obtain a copy of the License at
*
*   http://www.apache.org/licenses/LICENSE-2.0
*
* Unless required by applicable law or agreed to in writing,
* software distributed under the License is distributed on an
* "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
* KIND, either express or implied.  See the License for the
* specific language governing permissions and limitations
* under the License.   
*/
package org.apache.tuscany.samples.web;

import java.io.IOException;

import javax.servlet.http.HttpServlet;
import javax.servlet.RequestDispatcher;
import javax.servlet.ServletConfig;
import javax.servlet.ServletException;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;

import org.apache.tuscany.das.rdb.dbconfig.DBInitializer;
/**
* This is generic servlet where based on serviceName, it will call the speciliazed processor to
* process request and obtain response. This servlet can be used in any web sample, just needs to
* pass appropriate serviceProcessorClassName and rest is generic
*
*/
public class CommandServlet extends HttpServlet {
    final static long serialVersionUID = 1221332432;
  /*
     * (non-Java-doc)
     *
     * @see javax.servlet.http.HttpServlet#HttpServlet()
     */
    public CommandServlet() {
        super();
    }
   
    public static void refreshDB() throws ServletException {
      try{
        DBInitializer dbInitializer = new DBInitializer("AjaxDBConfig.xml");
        dbInitializer.refreshDatabaseData();
    }catch(Exception e){
      e.printStackTrace();
      ServletException se = new ServletException(e.getMessage());
      throw se;
    }
    }

    public void init(ServletConfig config) throws ServletException {
      refreshDB();
    }
   
    /*
     * (non-Java-doc)
     *
     * @see javax.servlet.http.HttpServlet#doGet(HttpServletRequest arg0,
     *      HttpServletResponse arg1)
     */
    protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
        doTask(request, response);
    }

    /*
     * (non-Java-doc)
     *
     * @see javax.servlet.http.HttpServlet#doPost(HttpServletRequest arg0,
     *      HttpServletResponse arg1)
     */
    protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
        doTask(request, response);
    }

    /**Invoke passed service and return result
     *
     * @param req
     * @param resp
     * @throws ServletException
     * @throws IOException
     */
  public void doTask(HttpServletRequest req, HttpServletResponse resp)
    throws ServletException, IOException {
    String textContentType= "text/text";
    String xmlContentType= "text/xml";
   
    String refreshRequest = req.getParameter("refreshDB");
    if(refreshRequest != null && refreshRequest.equals("yes")){
      {
        try{
          refreshDB();
        }catch(ServletException e){
          throw e;
        }
      }
      this.writeResponse(resp, "Refreshed database!", textContentType);     
    }
    else{
      String serviceName = req.getParameter("serviceName");//e.g. DASQueryProcessor
      String qry = req.getParameter("Query");//e.g. query:xxx, command:yyy
      String configFile = req.getParameter("configFile");//name of DAS config file
     
      try{
        ServiceProcessor serviceClassInst = null;
        //so any subclass of abstract ServiceProcessor can be used
        Object obj = Class.forName(serviceName).newInstance();
       
        if(obj instanceof ServiceProcessor){
          serviceClassInst = (ServiceProcessor)obj;
        }
       
        String result = serviceClassInst.execute(qry, configFile);
        this.writeResponse(resp, result, xmlContentType);
      }catch(Exception e){
        this.writeResponse(resp, e.getMessage(), textContentType);
        e.printStackTrace();
      }     
    }
  }

  /**Write response in required content type to servlet response
   *
   * @param resp
   * @param output
   * @param contentType
   * @throws IOException
   */
  public void writeResponse(HttpServletResponse resp, String output, String contentType) throws IOException {
    resp.setContentType(contentType);//"text/text", "text/xml"
    resp.setHeader("Cache-Control", "no-cache");
    resp.getWriter().write(output);   
  }
 
    // Utility methods

    public void gotoURL(javax.servlet.http.HttpServletRequest request, javax.servlet.http.HttpServletResponse response, String url) throws ServletException, IOException {
        url = response.encodeURL(url);
        RequestDispatcher dispatcher = getServletContext().getRequestDispatcher(url);
        dispatcher.forward(request, response);
    }

    public void redirectURL(javax.servlet.http.HttpServletRequest request, javax.servlet.http.HttpServletResponse response, String url) throws ServletException, IOException {
        url = response.encodeURL(request.getContextPath() + url);
        response.sendRedirect(url);
    }

    public void forwardURL(javax.servlet.http.HttpServletRequest request, javax.servlet.http.HttpServletResponse response, String url) throws ServletException, IOException {
        url = response.encodeURL(url);
        RequestDispatcher dispatch = getServletContext().getRequestDispatcher(url);
        dispatch.forward(request, response);
    }   
}
TOP

Related Classes of org.apache.tuscany.samples.web.CommandServlet

TOP
Copyright © 2018 www.massapi.com. All rights reserved.
All source code are property of their respective owners. Java is a trademark of Sun Microsystems, Inc and owned by ORACLE Inc. Contact coftware#gmail.com.