All Downloads are FREE. Search and download functionalities are using the official Maven repository.

ch.software_atelier.simpleflex.docs.impl.BeanShellDoc Maven / Gradle / Ivy

There is a newer version: 2.2.2
Show newest version
package ch.software_atelier.simpleflex.docs.impl;
import java.util.ArrayList;
import bsh.Interpreter;
import bsh.EvalError;
import ch.software_atelier.simpleflex.Request;
import ch.software_atelier.simpleflex.SimpleFlexAccesser;
import ch.software_atelier.simpleflex.docs.HeaderField;
import ch.software_atelier.simpleflex.docs.WebDoc;
import java.io.File;
import java.io.FileInputStream;
import java.io.IOException;
import java.io.InputStream;
import java.nio.ByteBuffer;

public class BeanShellDoc extends WebDoc{
    private static File _src;
    private static final String _BSH_SEPERATOR_START = "";
    private final Interpreter _interpr = new Interpreter();
    private String _mime = "text/html";
    private String _name = "";
    private final ArrayList _codes = new ArrayList();
    private final ArrayList _staticContent;
    private byte[] _data;

    public BeanShellDoc(File  file) throws BeanShellDocException{
    this._staticContent = new ArrayList();
        _name = file.getName();
        _src = file;
        genParts(file);
    }

    public void genDoc(Request request, SimpleFlexAccesser sfa){
        try{
            int httpCode = getHttpCode().code;
            String httpMsg = getHttpCode().message;
            _interpr.set("sf_httpCode",httpCode);
            _interpr.set("sf_httpMsg",httpMsg);
            _interpr.set("sf_headerKeys",new ArrayList());
            _interpr.set("sf_headerValues",new ArrayList());
            _interpr.set("sf_src",_src);
            _interpr.set("sf_sfa", sfa);
            _interpr.set("sf_request", request);
            _interpr.set("sf_mime", _mime);
            _interpr.eval("sf_returnValue = new StringBuffer();\n" +
                    "public void out(String value){\n" +
                    "sf_returnValue.append(value+\"\\n\");\n" +
                    "}\n");
            _interpr.eval("public void header(String key, String value){" +
                    "sf_headerKeys.add(key);" +
                    "sf_headerValues.add(value);" +
                    "}");
            _interpr.eval("public void code(int code, String msg){" +
                    "sf_httpCode=code;" +
                    "sf_httpMsg=msg;" +
                    "}");
            _interpr.eval("public void mime(String mime){" +
                    "sf_mime=mime;" +
                    "}");
            StringBuffer doc = new StringBuffer();
            doc.append((String)(_staticContent.get(0)));

            for (int i=0;i<_codes.size();i++){
                doc.append(
                    exec((String)(_codes.get(i))));
                doc.append((String)(_staticContent.get(i+1)));
            }

            httpCode = (Integer)_interpr.get("sf_httpCode");
            httpMsg = (String)_interpr.get("sf_httpMsg");
            setHTTPCode(httpCode, httpMsg);
            _mime = (String)_interpr.get("sf_mime");
            ArrayList headerKeys = (ArrayList)_interpr.get("sf_headerKeys");
            ArrayList headerValues = (ArrayList)_interpr.get("sf_headerValues");
            for (int i=0;i




© 2015 - 2024 Weber Informatics LLC | Privacy Policy