package info.dragonlady.scriptlet.demo;

import java.io.IOException;
import java.util.Map;

import javax.servlet.ServletException;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;

import info.dragonlady.scriptlet.ESEngine;
import info.dragonlady.scriptlet.ESException;
import info.dragonlady.scriptlet.Scriptlet;

public class ExceptionTestScriptlet extends Scriptlet {

	private static final long serialVersionUID = -8292573234053269478L;

	@Override
	public String getEScriptErrorMsg() {
		// TODO 自動生成されたメソッド・スタブ
		return null;
	}

	@Override
	public String getInvalidParamErrorMsg() {
		// TODO 自動生成されたメソッド・スタブ
		return null;
	}

	@Override
	public String getInvalidValidationParamErrorMsg() {
		// TODO 自動生成されたメソッド・スタブ
		return null;
	}

	@Override
	public String getRequiredParamErrorMsg() {
		// TODO 自動生成されたメソッド・スタブ
		return null;
	}

	@Override
	public Map<String, Object> getScriptNewProperties() {
		// TODO 自動生成されたメソッド・スタブ
		return null;
	}

	@Override
	public String getInitSequence() {
		// TODO 自動生成されたメソッド・スタブ
		return null;
	}

	@Override
	public String getNextInitSequence() {
		// TODO 自動生成されたメソッド・スタブ
		return null;
	}

	@Override
	public long getSerialVersionUID() {
		// TODO 自動生成されたメソッド・スタブ
		return serialVersionUID;
	}

	protected void doPost(HttpServletRequest req, HttpServletResponse res) throws IOException, ServletException {
		try {
			//サーバサイドスクリプトを実行する前に処理でエラーが発生した場合のサンプル
			boolean isError = false;
			try {
				//必ずエラー
				throw new Exception("Dummy error.");
			}
			catch(Exception e) {
				isError = true;
				ESEngine.exceptionProc(this, e);
			}
			
			//サーバサイドスクリプトの実行
			//必ず関数の最後に呼出してください。
			if(!isError) {
				ESEngine.executeScript(this);
			}
		}
		catch(ESException e) {
			e.printStackTrace(System.out);
			res.sendError(403, e.getMessage());
		}
	}

	protected void doGet(HttpServletRequest req, HttpServletResponse res) throws IOException, ServletException {
		doPost(req, res);
	}
}
