Package org.apache.cocoon.scheme.servlet

Source Code of org.apache.cocoon.scheme.servlet.REPLEvalServlet

package org.apache.cocoon.scheme.servlet;

import java.io.IOException;
import java.io.InputStream;
import java.io.InputStreamReader;
import java.io.OutputStream;
import java.io.PrintStream;
import javax.servlet.ServletConfig;
import javax.servlet.ServletContext;
import javax.servlet.ServletException;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import sisc.ContinuationException;
import sisc.Interpreter;
import sisc.data.Value;

/**
* Interactive Scheme evaluator. Use it only during development as it
* is a big security risk.
*
* Receive the Scheme forms to evaluate via a POST message. Use the
* Emacs minor mode to automatically submit a buffer or a region to
* evaluate in the servlet.
*
* @author <a href="mailto:ovidiu@cup.hp.com">Ovidiu Predescu</a>
* @since December  8, 2001
*/
public class REPLEvalServlet extends REPLGenericServlet
{
  protected boolean isEnabled = false;
 
  public void init(ServletConfig config)
    throws ServletException
  {
    super.init(config);

    String enabledString = config.getInitParameter("enabled");
    if (enabledString != null)
      isEnabled = enabledString.equalsIgnoreCase("true");
  }

  public void doPost(HttpServletRequest request, HttpServletResponse response)
    throws ServletException, IOException
  {
    if (!isEnabled) {
      response.sendError(HttpServletResponse.SC_FORBIDDEN,
                         "You're not authorized to access this URL!");
      return;
    }

    response.setContentType("text/plain");

    OutputStream os = response.getOutputStream();
    PrintStream out = new PrintStream(os);
    System.setErr(out);

    try {
      InputStream is = request.getInputStream();
      InputStreamReader isr = new InputStreamReader(is);
      int size = 4096;
      int len;
      char[] buffer = new char[size];
      StringBuffer sbuf = new StringBuffer();

      while ((len = isr.read(buffer, 0, size)) > 0) {
        sbuf.append(buffer, 0, len);
      }

      System.out.println("executing '" + sbuf + "'");

      Interpreter interp = getInterpreter();
      out.println(interp.eval(sbuf.toString()));
      releaseInterpreter(interp);
    }
    catch (Exception ex) {
      out.println("ERROR: " + ex);
      throw new ServletException(ex);
    }
  }
}
TOP

Related Classes of org.apache.cocoon.scheme.servlet.REPLEvalServlet

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.