/*
* JBoss, the OpenSource J2EE webOS
*
* Distributable under LGPL license.
* See terms of license at gnu.org.
*/
package org.jboss.test.bench.servlet;

import java.util.Hashtable;
import java.util.Enumeration;
import java.util.Random;
import java.io.PrintWriter;

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

import javax.naming.Context;
import javax.naming.InitialContext;

import org.jboss.test.bench.interfaces.*;

public class SimpleServlet extends HttpServlet {
   org.apache.log4j.Category log = org.apache.log4j.Category.getInstance(getClass());
    PrintWriter out;

    protected void doGet(HttpServletRequest req, HttpServletResponse resp)
        throws ServletException, java.io.IOException {

        String dest = req.getParameter("dest");

        resp.setContentType("text/html");
        out = resp.getWriter();
        
        out.println("<html>");
        out.println("<head>");
        
        out.println("<title>HelloEJB</title>");
        out.println("</head>");
            
        out.println("<body>");
        
        out.println("<h1>Servlet calling EJB</h1>");
                    
        if ("SL".equals(dest)) callStateless();
        else if ("Entity".equals(dest)) callEntity();
        
        out.println("</body>");
        out.println("</html>");
    }

    Context getContext() throws Exception {
        System.setProperty("java.naming.factory.initial","org.jnp.interfaces.NamingContextFactory");
        System.setProperty("java.naming.provider.url","localhost");
        System.setProperty("java.naming.factory.url.pkgs","org.jboss.naming;");
        
        return new InitialContext();
        
    }
    
    void callStateless() {
        try {
            Context ctx = getContext();
            MySessionHome home = (MySessionHome)ctx.lookup("StatelessSession");
            MySession bean = home.create();

            out.println("called stateless session and it said: " + bean.getInt());
            
        } catch (Exception e) {
            out.println("<pre>");
            e.printStackTrace(out);
            out.println("</pre>");
        }
    }
    
    void callEntity() {
        try {
            Context ctx = getContext();
            SimpleEntityHome home = (SimpleEntityHome)ctx.lookup("SimpleEntity");
            SimpleEntity bean = home.create(50000+ new Random().nextInt());

            out.println("called entity and it said: " + bean.getField());
            
        } catch (Exception e) {
            out.println("<pre>");
            e.printStackTrace(out);
            out.println("</pre>");
        }
    }
    
}