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="https://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         }