ch.software_atelier.simpleflex.docs.impl.BeanShellDoc Maven / Gradle / Ivy
Go to download
Show more of this group Show more artifacts with this name
Show all versions of simpleflex-base Show documentation
Show all versions of simpleflex-base Show documentation
Build Micro Services with pico footprint
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