view src/main/java/app/bbs/ShowMessageWithTimeStampServlet.java @ 155:83e99eba6ec1

async thread comtext in showmessage servlet
author tatsuki
date Wed, 09 Jul 2014 19:44:47 +0900
parents 29734d7d6521
children 89999029c543
line wrap: on
line source

package app.bbs;

import java.io.PrintWriter;

import javax.servlet.AsyncContext;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;

import org.eclipse.jetty.util.thread.ThreadPool;

import jp.ac.u_ryukyu.ie.cr.shoshi.jungle.bbs.BoardMessage;

public class ShowMessageWithTimeStampServlet extends HttpServlet
{
	/**
	 * 
	 */
	private static final long serialVersionUID = 1L;
	private final NetworkBulletinBoard bbs;
	private final String createBoardMessagePath;
	private final String editMessagePath;
    private ThreadPool threadPool;
	
	private static final String PARAM_BOARD_NAME = "bname";

	public ShowMessageWithTimeStampServlet(NetworkBulletinBoard _bbs,String _createBoardMessagePath, String _editMessagePath, ThreadPool thp)
	{
		bbs = _bbs;
		createBoardMessagePath = _createBoardMessagePath;
		editMessagePath = _editMessagePath;
		threadPool = thp; 
	}

	public void doGet(HttpServletRequest _req,HttpServletResponse _res)
	{
	    final AsyncContext asc = _req.startAsync();
	    final String bname = _req.getParameter(PARAM_BOARD_NAME);
	    Runnable printBoardThread = new Runnable() {
            @Override
            public void run() {
                try{
                    printBoard(bname,_res.getWriter());
                }catch(Exception _e){
                    _res.setStatus(500);
                } 
                asc.complete();
            }
	    };
	    threadPool.execute(printBoardThread);
	}
	
	private void printBoard(String _bname,PrintWriter _pw) throws Exception
	{
		_pw.write("<html><body>\n");
		_pw.write("<h1>"+_bname+"</h1>\n");
		_pw.write("<p>Latest renew time : "+bbs.getRenewTime(_bname)+"</p>\n");;
		
		_pw.write("<form action='"+createBoardMessagePath+"' method='POST'\n");
		_pw.write("<p>Author : <input type='text' name='author'/> <input type='hidden' name='bname' value='"+_bname+"'/> EditKey : <input type='text' name='key'/></p>\n");
		_pw.write("<p>Message<br/> <input type='textarea' name='msg'/> </p>\n");
		_pw.write("<p><input type='submit' value='submit'/></p>\n");
		
		for(BoardMessage msg : bbs.getMessages(_bname)){
			_pw.write("<hr/>");
			_pw.write("<p><b>"+msg.getAuthor()+"</b></p>");
			_pw.write("<p>"+msg.getMessage()+"</p>");
			_pw.write("<small><a href='"+editMessagePath+"?bname="+_bname+"&uuid="+msg.getUUID()+"'>edit</a></small>");
		}
		
		_pw.write("</body></html>");
		_pw.flush();
	}
}