From f4c61a145d4f9a537c87fe67db36de8c28f2e352 Mon Sep 17 00:00:00 2001
From: tknall
Date: Thu, 3 Apr 2008 12:28:41 +0000
Subject: Web application adapted for Maven2 (/webapps -> /src/main/webapps).
Recognition of citizen card environment integrated. New style sheets. Web app
classes adapted in order to avoid popup blocker of ie7 and to avoid an ITS
bku bug. Maven2 repository updated. Eclipse project settings adapted in order
to enable Eclipse Web Tools Platform usage.
git-svn-id: https://joinup.ec.europa.eu/svn/pdf-as/trunk@256 7b5415b0-85f9-ee4d-85bd-d5d0c3b42d1c
---
.../egiz/pdfas/web/helper/SignServletHelper.java | 5 +-
.../at/gv/egiz/pdfas/web/helper/TempDirHelper.java | 3 +-
.../wag/egov/egiz/web/SessionAttributes.java | 11 ++
.../wag/egov/egiz/web/servlets/DataURLServlet.java | 14 ++-
.../egov/egiz/web/servlets/ProvidePDFServlet.java | 124 +++++++++++++--------
.../egiz/web/servlets/VerifyPreviewServlet.java | 38 +++----
.../wag/egov/egiz/web/servlets/VerifyServlet.java | 4 +-
7 files changed, 118 insertions(+), 81 deletions(-)
(limited to 'src/main/java/at')
diff --git a/src/main/java/at/gv/egiz/pdfas/web/helper/SignServletHelper.java b/src/main/java/at/gv/egiz/pdfas/web/helper/SignServletHelper.java
index 46cf1c8..5dbc8b6 100644
--- a/src/main/java/at/gv/egiz/pdfas/web/helper/SignServletHelper.java
+++ b/src/main/java/at/gv/egiz/pdfas/web/helper/SignServletHelper.java
@@ -23,7 +23,6 @@ import at.gv.egiz.pdfas.impl.output.FileBasedDataSink;
import at.gv.egiz.pdfas.web.SignSessionInformation;
import at.knowcenter.wag.egov.egiz.PdfASID;
import at.knowcenter.wag.egov.egiz.exceptions.PresentableException;
-import at.knowcenter.wag.egov.egiz.framework.SignResult;
import at.knowcenter.wag.egov.egiz.framework.signators.DetachedSignator_1_0_0;
import at.knowcenter.wag.egov.egiz.sig.ConnectorFactory;
import at.knowcenter.wag.egov.egiz.sig.connectors.Connector;
@@ -45,7 +44,7 @@ public class SignServletHelper
*/
private static Log log = LogFactory.getLog(SignServletHelper.class);
- protected static void dispatch(HttpServletRequest request, HttpServletResponse response, String resource, ServletContext context) throws ServletException, IOException
+ public static void dispatch(HttpServletRequest request, HttpServletResponse response, String resource, ServletContext context) throws ServletException, IOException
{
response.setContentType("text/html");
response.setCharacterEncoding("UTF-8");
@@ -142,8 +141,8 @@ public class SignServletHelper
signator.finishSign(si.si, si.output);
returnSignResponse(si, response);
-
log.debug("finishSign finished."); //$NON-NLS-1$
+
}
/**
diff --git a/src/main/java/at/gv/egiz/pdfas/web/helper/TempDirHelper.java b/src/main/java/at/gv/egiz/pdfas/web/helper/TempDirHelper.java
index 1b7971c..e3f10ed 100644
--- a/src/main/java/at/gv/egiz/pdfas/web/helper/TempDirHelper.java
+++ b/src/main/java/at/gv/egiz/pdfas/web/helper/TempDirHelper.java
@@ -26,7 +26,6 @@ import at.gv.egiz.pdfas.framework.input.TextDataSource;
import at.gv.egiz.pdfas.framework.output.DataSink;
import at.gv.egiz.pdfas.impl.input.ByteArrayPdfDataSourceImpl;
import at.gv.egiz.pdfas.impl.input.FileBased;
-import at.gv.egiz.pdfas.impl.input.FileBasedPdfDataSourceImpl;
import at.gv.egiz.pdfas.impl.input.FileBasedTextDataSourceImpl;
import at.gv.egiz.pdfas.impl.input.TextDataSourceImpl;
import at.gv.egiz.pdfas.impl.input.helper.DataSourceHelper;
@@ -241,6 +240,8 @@ public class TempDirHelper
{
ByteArrayDataSink bads = (ByteArrayDataSink)ds;
os.write(bads.getByteArray());
+ os.flush();
+
}
os.close();
diff --git a/src/main/java/at/knowcenter/wag/egov/egiz/web/SessionAttributes.java b/src/main/java/at/knowcenter/wag/egov/egiz/web/SessionAttributes.java
index 02b6855..f4956be 100644
--- a/src/main/java/at/knowcenter/wag/egov/egiz/web/SessionAttributes.java
+++ b/src/main/java/at/knowcenter/wag/egov/egiz/web/SessionAttributes.java
@@ -43,4 +43,15 @@ public abstract class SessionAttributes
*
*/
public static final String ATTRIBUTE_SESSION_INFORMATION = "session_information";
+
+ /**
+ * The signed pdf document.
+ */
+ public static final String SIGNED_PDF_DOCUMENT = "at.gv.egiz.pdfas.web.SignSessionInformation:signedPDF";
+
+ /**
+ * The download URL for the signed pdf document.
+ */
+ public static final String DOWNLOAD_URL_FOR_SIGNED_PDF_DOCUMENT = "java.lang.String:downloadURL";
+
}
diff --git a/src/main/java/at/knowcenter/wag/egov/egiz/web/servlets/DataURLServlet.java b/src/main/java/at/knowcenter/wag/egov/egiz/web/servlets/DataURLServlet.java
index 01e60fa..3c2ba28 100644
--- a/src/main/java/at/knowcenter/wag/egov/egiz/web/servlets/DataURLServlet.java
+++ b/src/main/java/at/knowcenter/wag/egov/egiz/web/servlets/DataURLServlet.java
@@ -16,6 +16,7 @@ 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;
@@ -40,6 +41,7 @@ import at.knowcenter.wag.egov.egiz.sig.connectors.LocalConnector;
import at.knowcenter.wag.egov.egiz.sig.connectors.bku.BKUPostConnection;
import at.knowcenter.wag.egov.egiz.web.FormFields;
import at.knowcenter.wag.egov.egiz.web.LocalRequest;
+import at.knowcenter.wag.egov.egiz.web.SessionAttributes;
/**
* @author wprinz
@@ -162,7 +164,7 @@ public class DataURLServlet extends HttpServlet
}
else
{
- log.debug("Recieved a normal response -> storing the response."); //$NON-NLS-1$
+ log.debug("Received a normal response -> storing the response."); //$NON-NLS-1$
Properties response_properties = new Properties();
response_properties.setProperty(BKUPostConnection.RESPONSE_STRING_KEY, xml_response);
@@ -203,7 +205,15 @@ public class DataURLServlet extends HttpServlet
}
else
{
- SignServletHelper.returnSignResponse(si, response);
+ HttpSession session = request.getSession(true);
+ log.debug("Putting signed document into session (" + session.getId() + ").");
+ session.setAttribute(SessionAttributes.SIGNED_PDF_DOCUMENT, si);
+ session.setAttribute(SessionAttributes.DOWNLOAD_URL_FOR_SIGNED_PDF_DOCUMENT, response.encodeRedirectURL("/pdf-as/ProvidePDF"));
+ String redirectURL = response.encodeRedirectURL("/pdf-as/jsp/download.jsp");
+ log.debug("Redirecting to " + redirectURL + ".");
+ response.sendRedirect(redirectURL);
+ return;
+// SignServletHelper.returnSignResponse(si, response);
}
}
}
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
index cd4cf43..6d486a5 100644
--- 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
@@ -8,66 +8,94 @@ 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
- {
-
- long pdfId = Long.parseLong(request.getParameter(FormFields.FIELD_PDF_ID));
-
- Iterator it = signedDocuments.iterator();
-
- while(it.hasNext()) {
- PDFContainer current = (PDFContainer) it.next();
- if(current.id == pdfId) {
- try {
- byte[] pdf = current.pdf;
-
- 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();
- signedDocuments.remove(current);
- } catch(IOException e) {
- log.warn("IO excepton while providing pdf document: " + e.getMessage());
- }
+ /**
+ * 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);
+
+ if (pdfIdString == null) {
+ HttpSession session = request.getSession(true);
+ 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. Removing from session.");
+ session.removeAttribute(SessionAttributes.SIGNED_PDF_DOCUMENT);
+ log.debug("Returning signed pdf to browser.");
+ SignServletHelper.returnSignResponse(si, response);
+ return;
+ }
+ } else {
+ long pdfId = Long.parseLong(pdfIdString);
+
+ Iterator it = signedDocuments.iterator();
+
+ while (it.hasNext()) {
+ PDFContainer current = (PDFContainer) it.next();
+ if (current.id == pdfId) {
+ try {
+ byte[] pdf = current.pdf;
+
+ 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();
+ signedDocuments.remove(current);
+ } catch (IOException e) {
+ log.warn("IO excepton while providing pdf document: " + e.getMessage());
+ }
+ }
+ }
}
- }
- }
-
- public void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException
- {
- doPost(request, response);
- }
-
+
+ }
+
+ public void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
+ doPost(request, response);
+ }
+
}
diff --git a/src/main/java/at/knowcenter/wag/egov/egiz/web/servlets/VerifyPreviewServlet.java b/src/main/java/at/knowcenter/wag/egov/egiz/web/servlets/VerifyPreviewServlet.java
index 732e6cc..571a8e1 100644
--- a/src/main/java/at/knowcenter/wag/egov/egiz/web/servlets/VerifyPreviewServlet.java
+++ b/src/main/java/at/knowcenter/wag/egov/egiz/web/servlets/VerifyPreviewServlet.java
@@ -315,14 +315,14 @@ public class VerifyPreviewServlet extends HttpServlet
}
writer.println(" ");
- writer.println(" " + caption + ": | ");
+ writer.println(" " + caption + ": | ");
writer.println(" ");
value = value.replaceAll("\\s", " ");
value = value.replaceAll("\\\"", "\\\"");
String input_key = name_prefix + key;
- writer.println(" ");
+ writer.println(" ");
writer.println(" | ");
writer.println("
");
@@ -337,25 +337,10 @@ public class VerifyPreviewServlet extends HttpServlet
StringWriter sw = new StringWriter();
PrintWriter writer = new PrintWriter(sw);
- String title = "alte PDF-AS Signatur";
- try
- {
- PdfASID kz = signature_object.getKZ();
- if (kz != null)
- {
- title = kz.toString();
- }
- }
- catch (InvalidIDException e)
- {
- e.printStackTrace();
- }
- writer.println("Signatur: " + title + "
");
- writer.println("");
+ writer.println("");
// just render useful information
- String[] rkeys = { SignatureTypes.SIG_DATE, SignatureTypes.SIG_ISSUER,
- SignatureTypes.SIG_NUMBER, SignatureTypes.SIG_KZ}; // SignatureTypes.REQUIRED_SIG_KEYS;
+ String[] rkeys = { SignatureTypes.SIG_NAME, SignatureTypes.SIG_DATE, SignatureTypes.SIG_ISSUER, SignatureTypes.SIG_NUMBER}; // SignatureTypes.REQUIRED_SIG_KEYS;
for (int key_idx = 0; key_idx < rkeys.length; key_idx++)
{
@@ -363,15 +348,18 @@ public class VerifyPreviewServlet extends HttpServlet
SignatureEntry entry = signature_object.getSigEntry(key);
String caption = entry.getCaption();
String value = entry.getValue();
-
- if (SignatureTypes.SIG_KZ.equals(key) && value == null)
- {
- continue;
+ if (caption == null || value == null) {
+ continue;
}
+// if (SignatureTypes.SIG_KZ.equals(key) && value == null)
+// {
+// continue;
+// }
+
writer.println(" ");
- writer.println(" " + caption + ": | ");
- writer.println(" ");
+ writer.println(" | " + caption + ": | ");
+ writer.println(" ");
value = value.replaceAll("\\s", " ");
value = value.replaceAll("\\\"", "\\\"");
diff --git a/src/main/java/at/knowcenter/wag/egov/egiz/web/servlets/VerifyServlet.java b/src/main/java/at/knowcenter/wag/egov/egiz/web/servlets/VerifyServlet.java
index eb07828..001b8b3 100644
--- a/src/main/java/at/knowcenter/wag/egov/egiz/web/servlets/VerifyServlet.java
+++ b/src/main/java/at/knowcenter/wag/egov/egiz/web/servlets/VerifyServlet.java
@@ -170,13 +170,13 @@ public class VerifyServlet extends HttpServlet
{
request.setAttribute("error", "Fehler beim Upload der Daten");
request.setAttribute("cause", "Beim Upload der Daten ist ein Fehler aufgetreten.");
- dispatch(request, response, "/jsp/error.jsp");
+ dispatch(request, response, "/jsp/error_verify.jsp");
}
catch (PresentableException e)
{
e.printStackTrace();
SignServlet.prepareDispatchToErrorPage(e, request);
- dispatch(request, response, "/jsp/error.jsp");
+ dispatch(request, response, "/jsp/error_verify.jsp");
}
}
--
cgit v1.2.3
|