aboutsummaryrefslogtreecommitdiff
path: root/src/main/java/at/knowcenter/wag/egov/egiz/web/servlets/VerifyPreviewServlet.java
diff options
context:
space:
mode:
Diffstat (limited to 'src/main/java/at/knowcenter/wag/egov/egiz/web/servlets/VerifyPreviewServlet.java')
-rw-r--r--src/main/java/at/knowcenter/wag/egov/egiz/web/servlets/VerifyPreviewServlet.java155
1 files changed, 76 insertions, 79 deletions
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 150b592..732e6cc 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
@@ -20,6 +20,7 @@ package at.knowcenter.wag.egov.egiz.web.servlets;
import java.io.IOException;
import java.io.PrintWriter;
import java.io.StringWriter;
+import java.net.MalformedURLException;
import java.net.URL;
import java.util.ArrayList;
import java.util.Iterator;
@@ -30,19 +31,22 @@ 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.fileupload.FileItem;
import org.apache.commons.fileupload.FileUploadException;
import org.apache.commons.fileupload.disk.DiskFileItemFactory;
import org.apache.commons.fileupload.servlet.ServletFileUpload;
-import org.apache.log4j.Logger;
-
+import org.apache.commons.logging.Log;
+import org.apache.commons.logging.LogFactory;
+
+import at.gv.egiz.pdfas.framework.input.TextDataSource;
+import at.gv.egiz.pdfas.utils.StreamUtils;
+import at.gv.egiz.pdfas.web.VerifySessionInformation;
+import at.gv.egiz.pdfas.web.helper.SessionHelper;
+import at.gv.egiz.pdfas.web.helper.TempDirHelper;
import at.knowcenter.wag.egov.egiz.PdfAS;
import at.knowcenter.wag.egov.egiz.PdfASID;
-import at.knowcenter.wag.egov.egiz.cfg.ConfigLogger;
import at.knowcenter.wag.egov.egiz.cfg.SettingsReader;
-import at.knowcenter.wag.egov.egiz.exceptions.ErrorCodeException;
import at.knowcenter.wag.egov.egiz.exceptions.InvalidIDException;
import at.knowcenter.wag.egov.egiz.exceptions.PresentableException;
import at.knowcenter.wag.egov.egiz.exceptions.SignatureException;
@@ -55,8 +59,6 @@ import at.knowcenter.wag.egov.egiz.sig.SignatureObject;
import at.knowcenter.wag.egov.egiz.sig.SignatureTypes;
import at.knowcenter.wag.egov.egiz.web.FormFields;
import at.knowcenter.wag.egov.egiz.web.LocalRequestHelper;
-import at.knowcenter.wag.egov.egiz.web.SessionAttributes;
-import at.knowcenter.wag.egov.egiz.web.SessionInformation;
/**
* @author wprinz
@@ -71,7 +73,7 @@ public class VerifyPreviewServlet extends HttpServlet
/**
* The logger.
*/
- private static final Logger logger_ = ConfigLogger.getLogger(VerifyPreviewServlet.class);
+ private static final Log logger_ = LogFactory.getLog(VerifyPreviewServlet.class);
protected void dispatch(HttpServletRequest request,
HttpServletResponse response, String resource) throws ServletException, IOException
@@ -82,7 +84,29 @@ public class VerifyPreviewServlet extends HttpServlet
RequestDispatcher disp = getServletContext().getRequestDispatcher(resource);
disp.forward(request, response);
}
+
+ protected void dispatchToPreview(HttpServletRequest request, HttpServletResponse response, int verify_which)throws ServletException, IOException
+ {
+ request.setAttribute(FormFields.FIELD_VERIFY_WHICH, new Integer(verify_which));
+ request.setAttribute("btlurl", formBackToListURL(request, response));
+ dispatch(request, response, "/jsp/verifypreview.jsp");
+
+ }
+ protected void dispatchToDataOk(HttpServletRequest request, HttpServletResponse response)throws ServletException, IOException
+ {
+ request.setAttribute("btlurl", formBackToListURL(request, response));
+ dispatch(request, response, "/jsp/dataok.jsp");
+ }
+
+ protected String formBackToListURL(HttpServletRequest request, HttpServletResponse response) throws MalformedURLException
+ {
+ URL btlURL = new URL(request.getScheme(), request.getServerName(), request.getServerPort(), request.getContextPath() + "/jsp/verifylist.jsp");
+ String backToListURL = response.encodeURL(btlURL.toString());
+
+ return backToListURL;
+ }
+
protected static String generateNamePrefix(int num)
{
return SIG_INPUT_PREFIX + num + "_";
@@ -249,6 +273,10 @@ public class VerifyPreviewServlet extends HttpServlet
{
continue;
}
+ if (SignatureTypes.SIG_KZ.equals(key) && value == null)
+ {
+ continue;
+ }
value = value.replaceAll("\\s", " ");
value = value.replaceAll("\\\"", "\\\"");
@@ -281,6 +309,10 @@ public class VerifyPreviewServlet extends HttpServlet
{
continue;
}
+ if (SignatureTypes.SIG_KZ.equals(key) && value == null)
+ {
+ continue;
+ }
writer.println(" <tr>");
writer.println(" <td width=\"10%\"><span class=\"sca\">" + caption + ":</span></td>");
@@ -355,10 +387,11 @@ public class VerifyPreviewServlet extends HttpServlet
}
protected void dispatchToResults(List results, HttpServletRequest request,
- HttpServletResponse response, boolean backbutton) throws ServletException, IOException
+ HttpServletResponse response, boolean backbutton, String backToListURL) throws ServletException, IOException
{
request.setAttribute("results", results);
request.setAttribute("backbutton", backbutton ? "true" : "false");
+ request.setAttribute("btlurl", backToListURL);
dispatch(request, response, "/jsp/results.jsp");
}
@@ -459,37 +492,12 @@ public class VerifyPreviewServlet extends HttpServlet
protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException
{
- SessionInformation si = null;
- HttpSession session = null;
- try
- {
- session = request.getSession(false);
- // String session_id_string = request.getParameter("session");
- if (session == null)
- {
- throw new ErrorCodeException(600, "The session is missing.");
- }
-
- si = (SessionInformation) session.getAttribute(SessionAttributes.ATTRIBUTE_SESSION_INFORMATION);
- // long session_id = Long.parseLong(session_id_string);
- // si = SessionTable.get(session_id);
- if (si == null)
- {
- throw new ErrorCodeException(600, "The session is not found or is no longer valid.");
- }
-
- }
- catch (PresentableException e)
- {
- e.printStackTrace();
- SignServlet.prepareDispatchToErrorPage(e, request);
- dispatch(request, response, "/jsp/error.jsp");
-
- return;
- }
-
try
{
+ Object sessionObject = SessionHelper.getSession(request);
+
+ VerifySessionInformation si = (VerifySessionInformation)sessionObject;
+
int verify_which = -1;
boolean preview = false;
@@ -526,7 +534,7 @@ public class VerifyPreviewServlet extends HttpServlet
}
SignatureHolder holder = (SignatureHolder) si.signature_holders.get(verify_which);
- si.current_operation = verify_which;
+// si.current_operation = verify_which;
holders_to_verify = new ArrayList();
holders_to_verify.add(holder);
@@ -536,15 +544,17 @@ public class VerifyPreviewServlet extends HttpServlet
{
BinarySignatureHolder binary_holder = (BinarySignatureHolder) holder;
response.setContentType("application/pdf");
- response.getOutputStream().write(binary_holder.getSignedPdf(), 0, binary_holder.getSignedPdfLength());
+ StreamUtils.writeInputStreamToOutputStream(binary_holder.getSignedPdf().createInputStream(), response.getOutputStream());
+// response.getOutputStream().write(binary_holder.getSignedPdf(), 0, binary_holder.getSignedPdfLength());
}
else
// if (holder.getSignatureObject().isTextual())
{
// formatPreview(holders_to_verify, si.connector, request,
// response);
- request.setAttribute(FormFields.FIELD_VERIFY_WHICH, new Integer(verify_which));
- dispatch(request, response, "/jsp/verifypreview.jsp");
+// request.setAttribute(FormFields.FIELD_VERIFY_WHICH, new Integer(verify_which));
+
+ dispatchToPreview(request, response, verify_which);
}
return;
@@ -554,10 +564,12 @@ public class VerifyPreviewServlet extends HttpServlet
if (ConnectorFactory.isConnectorLocal(si.connector))
{
- List temp_holder = new ArrayList(si.signature_holders);
-
- si.copy_of_signature_holders = temp_holder;
- si.signature_holders = holders_to_verify;
+ // what is this for? si.signature_holders must not be modified after extraction
+ // TODO this seems to be buggy bug fixing - remove
+// List temp_holder = new ArrayList(si.signature_holders);
+//
+// si.copy_of_signature_holders = temp_holder;
+// si.signature_holders = holders_to_verify;
String dispatch_to = LocalRequestHelper.processLocalVerify(si, holders_to_verify, request, response);
dispatch(request, response, dispatch_to);
@@ -575,7 +587,9 @@ public class VerifyPreviewServlet extends HttpServlet
{
backbutton = false;
}
- dispatchToResults(results, request, response, backbutton);
+ URL btlURL = new URL(request.getScheme(), request.getServerName(), request.getServerPort(), request.getContextPath() + "/jsp/verifylist.jsp");
+ String backToListURL = response.encodeURL(btlURL.toString());
+ dispatchToResults(results, request, response, backbutton, backToListURL);
}
catch (PresentableException e)
@@ -588,41 +602,17 @@ public class VerifyPreviewServlet extends HttpServlet
protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException
{
- SessionInformation si = null;
- HttpSession session = null;
- try
- {
- session = request.getSession(false);
- // String session_id_string = request.getParameter("session");
- if (session == null)
- {
- throw new ErrorCodeException(600, "The session is missing.");
- }
-
- si = (SessionInformation) session.getAttribute(SessionAttributes.ATTRIBUTE_SESSION_INFORMATION);
- // long session_id = Long.parseLong(session_id_string);
- // si = SessionTable.get(session_id);
- if (si == null)
- {
- throw new ErrorCodeException(600, "The session is not found or is no longer valid.");
- }
-
- }
- catch (PresentableException e)
- {
- e.printStackTrace();
- SignServlet.prepareDispatchToErrorPage(e, request);
- dispatch(request, response, "/jsp/error.jsp");
-
- return;
- }
-
DiskFileItemFactory fif = new DiskFileItemFactory();
fif.setRepository(SettingsReader.getTemporaryDirectory());
ServletFileUpload sfu = new ServletFileUpload(fif);
try
{
+ Object sessionObject = SessionHelper.getSession(request);
+
+ VerifySessionInformation si = (VerifySessionInformation)sessionObject;
+
+
String text_to_be_verified = null;
SignatureObject signature_object = new SignatureObject();
@@ -671,13 +661,17 @@ public class VerifyPreviewServlet extends HttpServlet
logger_.debug("sig_obj_number" + key + " = " + value);
}
- SignatureHolder new_holder = new TextualSignatureHolder(text_to_be_verified, signature_object);
+ SignatureHolder old_holder = (SignatureHolder) si.signature_holders.get(verify_which);
+ TempDirHelper.deleteDataSourceIfFileBased(old_holder.getDataSource());
+
+ TextDataSource tds = TempDirHelper.placeTextIntoTempDir(text_to_be_verified, "_previewholder.utf8.txt");
+ SignatureHolder new_holder = new TextualSignatureHolder(tds, signature_object);
si.signature_holders.set(verify_which, new_holder);
if (verify == false)
{
- dispatch(request, response, "/dataok.html");
+ dispatchToDataOk(request, response);
return;
}
@@ -707,7 +701,10 @@ public class VerifyPreviewServlet extends HttpServlet
String loc_ref_url = response.encodeURL(loc_ref_URL.toString());
List results = PdfAS.verifySignatureHoldersWeb(holders_to_verify, si, loc_ref_url);
- dispatchToResults(results, request, response, true);
+
+ URL btlURL = new URL(request.getScheme(), request.getServerName(), request.getServerPort(), request.getContextPath() + "/jsp/verifylist.jsp");
+ String backToListURL = response.encodeURL(btlURL.toString());
+ dispatchToResults(results, request, response, true, backToListURL);
}
catch (FileUploadException e)
{