/** * The contents of this file are subject to the license and copyright * detailed in the LICENSE and NOTICE files at the root of the source * tree and available online at * * http://www.dspace.org/license/ */ package org.dspace.servicemanager.servlet; import java.io.IOException; import java.io.PrintWriter; import javax.servlet.ServletException; import javax.servlet.http.HttpServlet; import javax.servlet.http.HttpServletRequest; import javax.servlet.http.HttpServletResponse; import org.dspace.kernel.DSpaceKernel; import org.dspace.kernel.DSpaceKernelManager; import org.dspace.kernel.ServiceManager; import org.dspace.services.RequestService; import org.dspace.services.SessionService; import org.slf4j.Logger; import org.slf4j.LoggerFactory; /** * Test servlet for trying out the jetty server * * @author Aaron Zeckoski (aaron@caret.cam.ac.uk) */ public class SampleServlet extends HttpServlet { private static final long serialVersionUID = 1L; private static Logger log = LoggerFactory.getLogger(SampleServlet.class); private transient SessionService sessionService; private transient RequestService requestService; @Override public void init() throws ServletException { super.init(); try { DSpaceKernel kernel = new DSpaceKernelManager().getKernel(); if (kernel == null) { throw new IllegalStateException("Could not get the DSpace Kernel"); } if (! kernel.isRunning()) { throw new IllegalStateException("DSpace Kernel is not running, cannot startup the DirectServlet"); } ServiceManager serviceManager = kernel.getServiceManager(); sessionService = serviceManager.getServiceByName(SessionService.class.getName(), SessionService.class); if (sessionService == null) { throw new IllegalStateException("Could not get the DSpace SessionService"); } requestService = serviceManager.getServiceByName(RequestService.class.getName(), RequestService.class); if (requestService == null) { throw new IllegalStateException("Could not get the DSpace RequestService"); } log.info("Servlet initialized"); } catch (Exception e) { throw new IllegalStateException("FAILURE during init of direct servlet: " + e.getMessage(), e); } } /** * Now this will handle all kinds of requests and not just post and get */ @Override protected void service(HttpServletRequest req, HttpServletResponse res) throws ServletException, IOException { // force all response encoding to UTF-8 / html by default res.setContentType("text/html"); res.setCharacterEncoding("UTF-8"); // now handle the request PrintWriter writer = res.getWriter(); writer.print(XML_HEADER); writer.print(XHTML_HEADER); writer.print("DSpaceTest:session=" + sessionService.getCurrentSessionId() + ":request=" + requestService.getCurrentRequestId()); writer.print(XHTML_FOOTER); res.setStatus(HttpServletResponse.SC_OK); log.info("Serviced request: DSpace"); } protected static final String XML_HEADER = "<?xml version=\"1.0\" encoding=\"UTF-8\" ?>\n"; protected static final String XHTML_HEADER = "<!DOCTYPE html PUBLIC \"-//W3C//DTD XHTML 1.0 Transitional//EN\" " + "\"http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd\">\n" + "<html xmlns=\"http://www.w3.org/1999/xhtml\">\n" + "<head>\n" + " <meta http-equiv=\"Content-Type\" content=\"text/html; charset=UTF-8\" />\n" + " <title>DSpace title</title>\n" + "</head>\n" + "<body>\n"; // include versions info in the footer now protected static final String XHTML_FOOTER = "\n</body>\n</html>\n"; }