aboutsummaryrefslogtreecommitdiff
path: root/pdf-as-web/src/main/java/at/gv/egiz/pdfas/web/servlets/ProvidePDFServlet.java
diff options
context:
space:
mode:
Diffstat (limited to 'pdf-as-web/src/main/java/at/gv/egiz/pdfas/web/servlets/ProvidePDFServlet.java')
-rw-r--r--pdf-as-web/src/main/java/at/gv/egiz/pdfas/web/servlets/ProvidePDFServlet.java75
1 files changed, 61 insertions, 14 deletions
diff --git a/pdf-as-web/src/main/java/at/gv/egiz/pdfas/web/servlets/ProvidePDFServlet.java b/pdf-as-web/src/main/java/at/gv/egiz/pdfas/web/servlets/ProvidePDFServlet.java
index 26f42840..e1387fce 100644
--- a/pdf-as-web/src/main/java/at/gv/egiz/pdfas/web/servlets/ProvidePDFServlet.java
+++ b/pdf-as-web/src/main/java/at/gv/egiz/pdfas/web/servlets/ProvidePDFServlet.java
@@ -1,37 +1,84 @@
package at.gv.egiz.pdfas.web.servlets;
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 at.gv.egiz.pdfas.common.exceptions.PdfAsException;
+import at.gv.egiz.pdfas.web.helper.PdfAsHelper;
+
/**
* Servlet implementation class ProvidePDF
*/
public class ProvidePDFServlet extends HttpServlet {
private static final long serialVersionUID = 1L;
-
- /**
- * @see HttpServlet#HttpServlet()
- */
- public ProvidePDFServlet() {
- super();
- // TODO Auto-generated constructor stub
- }
/**
- * @see HttpServlet#doGet(HttpServletRequest request, HttpServletResponse response)
+ * @see HttpServlet#HttpServlet()
+ */
+ public ProvidePDFServlet() {
+ super();
+ }
+
+ /**
+ * @see HttpServlet#doGet(HttpServletRequest request, HttpServletResponse
+ * response)
*/
- protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
- // TODO Auto-generated method stub
+ protected void doGet(HttpServletRequest request,
+ HttpServletResponse response) throws ServletException, IOException {
+ this.process(request, response);
}
/**
- * @see HttpServlet#doPost(HttpServletRequest request, HttpServletResponse response)
+ * @see HttpServlet#doPost(HttpServletRequest request, HttpServletResponse
+ * response)
*/
- protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
- // TODO Auto-generated method stub
+ protected void doPost(HttpServletRequest request,
+ HttpServletResponse response) throws ServletException, IOException {
+ this.process(request, response);
}
+ protected void process(HttpServletRequest request,
+ HttpServletResponse response) throws ServletException, IOException {
+ try {
+ String invokeURL = PdfAsHelper.getInvokeURL(request, response);
+
+ if (invokeURL == null) {
+ // Deliver to Browser directly!
+ response.setContentType("text/html");
+ PrintWriter pw = response.getWriter();
+ pw.write("<html><body>PDF ready @: <a href='"
+ + PdfAsHelper.generatePdfURL(request, response)
+ + "' download>here</a></body></html>");
+ pw.close();
+
+ } else {
+ // Redirect Browser
+ String template = PdfAsHelper.getInvokeRedirectTemplateSL();
+ template = template.replace("##INVOKE_URL##", invokeURL);
+
+ byte[] signedData = PdfAsHelper.getSignedPdf(request, response);
+ if (signedData != null) {
+ template = template.replace("##PDFLENGTH##",
+ String.valueOf(signedData.length));
+ } else {
+ throw new PdfAsException("No Signature data available");
+ }
+
+ template = template.replace("##PDFURL##",
+ PdfAsHelper.generatePdfURL(request, response));
+ response.setContentType("text/html");
+ response.getWriter().write(template);
+ response.getWriter().close();
+ }
+ } catch (Exception e) {
+ PdfAsHelper.setSessionException(request, response, e.getMessage(),
+ e);
+ PdfAsHelper.gotoError(getServletContext(), request, response);
+ }
+ }
}