aboutsummaryrefslogtreecommitdiff
path: root/src/main/java/at/knowcenter/wag/egov/egiz/web/servlets/ProvidePDFServlet.java
diff options
context:
space:
mode:
Diffstat (limited to 'src/main/java/at/knowcenter/wag/egov/egiz/web/servlets/ProvidePDFServlet.java')
-rw-r--r--src/main/java/at/knowcenter/wag/egov/egiz/web/servlets/ProvidePDFServlet.java119
1 files changed, 0 insertions, 119 deletions
diff --git a/src/main/java/at/knowcenter/wag/egov/egiz/web/servlets/ProvidePDFServlet.java b/src/main/java/at/knowcenter/wag/egov/egiz/web/servlets/ProvidePDFServlet.java
deleted file mode 100644
index 715b5be..0000000
--- a/src/main/java/at/knowcenter/wag/egov/egiz/web/servlets/ProvidePDFServlet.java
+++ /dev/null
@@ -1,119 +0,0 @@
-package at.knowcenter.wag.egov.egiz.web.servlets;
-
-import java.io.ByteArrayInputStream;
-import java.io.IOException;
-import java.io.InputStream;
-import java.util.Collections;
-import java.util.HashSet;
-import java.util.Iterator;
-import java.util.Set;
-
-import javax.servlet.RequestDispatcher;
-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 org.apache.commons.logging.Log;
-import org.apache.commons.logging.LogFactory;
-
-import at.gv.egiz.pdfas.web.SignSessionInformation;
-import at.gv.egiz.pdfas.web.helper.SignServletHelper;
-import at.knowcenter.wag.egov.egiz.exceptions.PresentableException;
-import at.knowcenter.wag.egov.egiz.web.FormFields;
-import at.knowcenter.wag.egov.egiz.web.PDFContainer;
-import at.knowcenter.wag.egov.egiz.web.SessionAttributes;
-
-public class ProvidePDFServlet extends HttpServlet {
-
- /**
- * SVUID.
- */
- private static final long serialVersionUID = 1L;
-
- /**
- * The log.
- */
- private static Log log = LogFactory.getLog(ProvidePDFServlet.class);
-
- public static Set signedDocuments = Collections.synchronizedSet(new HashSet());
-
- public void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
-
- String pdfIdString = request.getParameter(FormFields.FIELD_PDF_ID);
- HttpSession session = request.getSession();
-
- if (pdfIdString == null) {
- log.debug("No " + FormFields.FIELD_PDF_ID + " provided. Trying to retrieve PDF from session (" + session.getId() + ").");
- SignSessionInformation si = (SignSessionInformation) session.getAttribute(SessionAttributes.SIGNED_PDF_DOCUMENT);
- if (si == null) {
- log.warn("Unable to find signed pdf in session (" + session.getId() + ").");
- SignServlet.prepareDispatchToErrorPage(new PresentableException(600, "Das signierte Dokument konnte nicht gefunden werden."), request);
- response.setContentType("text/html");
- response.setCharacterEncoding("UTF-8");
- RequestDispatcher disp = super.getServletContext().getRequestDispatcher("/jsp/error.jsp");
- disp.forward(request, response);
- return;
- } else {
- log.debug("Signed pdf found.");
- // do NOT remove signed pdf document from session since IE9 loads this page/servlet twice...)
- // Popup-Blocker, Link-Prefetching, IE 9 SmartScreen-Filter...???
- // session.removeAttribute(SessionAttributes.SIGNED_PDF_DOCUMENT);
- log.debug("Returning signed pdf to browser.");
- SignServletHelper.returnSignResponse(si, request, response);
- log.debug("Removing free text (if any) from session.");
- session.removeAttribute(UpdateFormServlet.UPLOADFORM_FREETEXT_KEY);
- return;
- }
- } else {
- long pdfId = Long.parseLong(pdfIdString);
-
- byte[] pdf = null;
-
- synchronized (signedDocuments) {
- Iterator it = signedDocuments.iterator();
-
- while (it.hasNext() && pdf == null) {
- PDFContainer current = (PDFContainer) it.next();
- if (current.id == pdfId) {
- pdf = current.pdf;
- signedDocuments.remove(current);
- }
- }
- }
-
- if (pdf != null) {
- try {
-
- SignServletHelper.disableBrowserCacheForResponse(response);
- response.setContentType("application/pdf");
- response.setContentLength(pdf.length);
-
- InputStream is = new ByteArrayInputStream(pdf);
- final int bufferSize = 1024;
- byte[] buffer = new byte[bufferSize];
- int len = -1;
- while ((len = is.read(buffer)) != -1) {
- response.getOutputStream().write(buffer, 0, len);
- }
- response.getOutputStream().flush();
- log.debug("File sent. Invalidating session.");
- session.invalidate();
- } catch (IOException e) {
- log.error("IO excepton while providing pdf document: " + e.getMessage(), e);
- }
- } else {
- log.error("Unable to find signed pdf (id=" + pdfId + ") in session (" + session.getId() + ").");
- return;
- }
-
- }
-
- }
-
- public void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
- doPost(request, response);
- }
-
-}