/*
* Created on 10.02.2004
*
* To change the template for this generated file go to Window - Preferences -
* Java - Code Generation - Code and Comments
*/
package mmonster.webfrontend;
import java.io.IOException;
import java.io.PrintWriter;
import java.rmi.RemoteException;
import javax.naming.Context;
import javax.naming.InitialContext;
import javax.rmi.PortableRemoteObject;
import javax.servlet.ServletException;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import multimonster.common.UserIdentifier;
import multimonster.common.edit.EditJobIdentifier;
import multimonster.common.edit.EditTaskIdentifier;
import multimonster.common.edit.FilterPlugInIdentifier;
import multimonster.common.media.MOIdentifier;
import multimonster.common.media.MetaData;
import multimonster.common.resource.QueueTime;
import multimonster.edit.exceptions.EditException;
import multimonster.edit.interfaces.EditImpl;
import multimonster.edit.interfaces.EditImplHome;
/**
*
* Does some calls at the EditFacade to test the Edit component.
*
* @author Holger Velke
*
* @web.servlet name = "EditTestServlet"
* display-name = "Edit Test Servlet"
* description = "Servlet for Testing the Edit Component"
*
* @web.servlet-mapping url-pattern="/test/edit"
*
* @web.ejb-ref name = "multimonster/edit/EditFacade"
* type = "Session"
* home = "multimonster.edit.interfaces.EditImplHome"
* remote = "multimonster.edit.interfaces.EditImpl"
* description = "Reference to the Edit Facade Bean"
*
* @jboss.ejb-ref-jndi ref-name = "multimonster/edit/EditFacade"
* jndi-name = "multimonster/edit/EditFacade"
*/
public class TestEditServlet extends HttpServlet {
private EditImplHome editHome;
/*
* (non-Javadoc)
*
* @see javax.servlet.http.HttpServlet#doGet(javax.servlet.http.HttpServletRequest,
* javax.servlet.http.HttpServletResponse)
*/
protected void doGet(HttpServletRequest arg0, HttpServletResponse arg1)
throws ServletException, IOException {
// TODO Auto-generated method stub
super.doGet(arg0, arg1);
}
/*
* (non-Javadoc)
*
* @see javax.servlet.http.HttpServlet#doPost(javax.servlet.http.HttpServletRequest,
* javax.servlet.http.HttpServletResponse)
*/
protected void doPost(
HttpServletRequest request,
HttpServletResponse response)
throws ServletException, IOException {
response.setContentType("text/html");
PrintWriter out = response.getWriter();
out.println("<html><head><title>Edit Test v0.0.1</title></head>");
out.println("<body>");
out.println("<h1>TestEditServlet Called</h1>");
try {
EditImpl editFacade = editHome.create();
String method = request.getParameter("method");
if (method != null) {
out.println("EditFacade."+method+"()<br/>");
if (method.equals("getJob")) {
editFacade.getJob(new UserIdentifier("servlet EditTest user"), new MOIdentifier(42));
} else if (method.equals("addTaskToJob")) {
editFacade.addTaskToJob(
new EditJobIdentifier(),
new FilterPlugInIdentifier("multimonster.edit.plugin.MMThreadPlugIn"),
null);
} else if (method.equals("abortJob")) {
editFacade.abortJob(new EditJobIdentifier());
} else if (method.equals("finishJob")) {
editFacade.finishJob(new EditJobIdentifier(), new MetaData(), new QueueTime());
}else if (method.equals("getJobList")) {
editFacade.getJobList(new UserIdentifier("servlet EditTest user"));
}else if (method.equals("removeTask")) {
editFacade.removeTask(new EditTaskIdentifier(new EditJobIdentifier()));
}else if (method.equals("complexTest")){
doComplexTest(editFacade, out);
} else {
out.println("Unbekannter Request");
}
} else {
out.println("Unbekannter Request");
}
editFacade.remove();
} catch (Exception e) {
out.println("Es ist ein Fehler aufgetreten.</br>");
out.println(e);
} finally {
out.println("</body></html>");
out.close();
}
}
/**
*
*/
private void doComplexTest(EditImpl editFacade, PrintWriter out) throws RemoteException, EditException {
UserIdentifier uId = new UserIdentifier("servlet EditTest user");
MOIdentifier mOId = new MOIdentifier(42);
out.println("getJob()<br/>");
EditJobIdentifier jobId = editFacade.getJob(uId, mOId);
out.println("addTaskToJob()<br/>");
EditTaskIdentifier taskId1 = editFacade.addTaskToJob(
jobId,
new FilterPlugInIdentifier("multimonster.edit.plugin.MMThreadPlugIn"),
null);
out.println("addTaskToJob()<br/>");
EditTaskIdentifier taskId2 = editFacade.addTaskToJob(
jobId,
new FilterPlugInIdentifier("multimonster.edit.plugin.MMThreadPlugIn"),
null);
out.println("addTaskToJob()<br/>");
EditTaskIdentifier taskId3 = editFacade.addTaskToJob(jobId,
new FilterPlugInIdentifier("multimonster.edit.plugin.MMThreadPlugIn"),
null);
out.println("removeTask()<br/>");
editFacade.removeTask(taskId2);
out.println("getJob()<br/>");
EditJobIdentifier jobId1 = editFacade.getJob(uId, mOId);
out.println("getJob()<br/>");
EditJobIdentifier jobId2 = editFacade.getJob(uId, mOId);
out.println("getJob()<br/>");
EditJobIdentifier jobId3 = editFacade.getJob(uId, mOId);
out.println("getJobList() - ");
EditJobIdentifier[] list = editFacade.getJobList(uId);
if (list.length == 4){
out.println("JobList.length OK!<br/>");
}
out.println("abortJob()<br/>");
editFacade.abortJob(jobId1);
out.println("getJobList() - ");
list = editFacade.getJobList(uId);
if (list.length == 3){
out.println("JobList.length OK!<br/>");
}
MetaData metaData = new MetaData("Title","Outline");
QueueTime maxQT = new QueueTime();
out.println("finishJob()<br/>");
editFacade.finishJob(jobId, metaData, maxQT);
out.println("<br/>SUCCESS<br/>");
}
/*
* (non-Javadoc)
*
* @see javax.servlet.GenericServlet#init()
*/
public void init() throws ServletException {
try {
Context context = new InitialContext();
Object ref = context.lookup(EditImplHome.JNDI_NAME);
editHome =
(EditImplHome) PortableRemoteObject.narrow(
ref,
EditImplHome.class);
} catch (Exception e) {
throw new ServletException("Lookup of java:/comp/env/ failed");
}
super.init();
}
}