001 package com.croftsoft.apps.client;
002
003 import java.io.*;
004 import java.net.*;
005
006 import javax.servlet.*;
007 import javax.servlet.http.*;
008
009 import org.aitools.programd.Core;
010 import org.aitools.programd.server.servlet.ProgramDContextListener;
011 import org.aitools.util.resource.URLTools;
012 import org.aitools.util.xml.XML;
013
014 /*********************************************************************
015 * Processes Program D requests.
016 *
017 * @version
018 * $Id: ClientServlet.java,v 1.3 2006/12/01 04:42:24 croft Exp $
019 * @since
020 * 2006-11-27
021 * @author
022 * <a href="http://www.CroftSoft.com/">David Wallace Croft</a>
023 *********************************************************************/
024
025 public final class ClientServlet
026 extends HttpServlet
027 //////////////////////////////////////////////////////////////////////
028 //////////////////////////////////////////////////////////////////////
029 {
030
031 private static final long serialVersionUID = 0L;
032
033 //////////////////////////////////////////////////////////////////////
034 //////////////////////////////////////////////////////////////////////
035
036 @Override
037 protected void doGet (
038 final HttpServletRequest httpServletRequest,
039 final HttpServletResponse httpServletResponse )
040 throws ServletException
041 //////////////////////////////////////////////////////////////////////
042 {
043 String request
044 = httpServletRequest.getParameter ( "request" );
045
046 if ( request == null )
047 {
048 return;
049 }
050
051 request = request.trim ( ).toLowerCase ( );
052
053 if ( request.equals ( "input" ) )
054 {
055 doInput ( httpServletRequest, httpServletResponse );
056 }
057 else if ( request.equals ( "reload" ) )
058 {
059 doReload ( );
060 }
061 }
062
063 //////////////////////////////////////////////////////////////////////
064 //////////////////////////////////////////////////////////////////////
065
066 private void doInput (
067 final HttpServletRequest httpServletRequest,
068 final HttpServletResponse httpServletResponse )
069 throws ServletException
070 //////////////////////////////////////////////////////////////////////
071 {
072 try
073 {
074 final ServletContext servletContext = getServletContext ( );
075
076 final Core core = ( Core ) servletContext.getAttribute (
077 ProgramDContextListener.KEY_CORE );
078
079 final PrintWriter printWriter
080 = httpServletResponse.getWriter ( );
081
082 printWriter.write ( XML.filterWhitespace ( core.getResponse (
083 httpServletRequest.getParameter ( "input" ),
084 httpServletRequest.getParameter ( "userid" ),
085 httpServletRequest.getParameter ( "botid" ) ) ) );
086
087 printWriter.flush ( );
088
089 printWriter.close ( );
090 }
091 catch ( Exception ex )
092 {
093 throw new ServletException ( "doInput failure", ex );
094 }
095 }
096
097 private void doReload ( )
098 throws ServletException
099 //////////////////////////////////////////////////////////////////////
100 {
101 try
102 {
103 final ServletContext servletContext = getServletContext ( );
104
105 final String config = servletContext.getInitParameter (
106 ProgramDContextListener.PARAM_CORE_CONFIG );
107
108 final URL baseURL = servletContext.getResource ( "/" );
109
110 final Core core = new Core (
111 baseURL, URLTools.contextualize ( baseURL, config ) );
112
113 servletContext.setAttribute (
114 ProgramDContextListener.KEY_CORE, core );
115 }
116 catch ( Exception ex )
117 {
118 throw new ServletException ( "doReload failure", ex );
119 }
120 }
121
122 //////////////////////////////////////////////////////////////////////
123 //////////////////////////////////////////////////////////////////////
124 }