From 6025b6016517c6d898d8957d1d7e03ba71431912 Mon Sep 17 00:00:00 2001 From: tknall Date: Fri, 1 Dec 2006 12:20:24 +0000 Subject: Initial import of release 2.2. git-svn-id: https://joinup.ec.europa.eu/svn/pdf-as/trunk@4 7b5415b0-85f9-ee4d-85bd-d5d0c3b42d1c --- .../egov/egiz/web/AsynchronousDataResponder.java | 155 +++++++++++++++++++++ 1 file changed, 155 insertions(+) create mode 100644 src/main/java/at/knowcenter/wag/egov/egiz/web/AsynchronousDataResponder.java (limited to 'src/main/java/at/knowcenter/wag/egov/egiz/web/AsynchronousDataResponder.java') diff --git a/src/main/java/at/knowcenter/wag/egov/egiz/web/AsynchronousDataResponder.java b/src/main/java/at/knowcenter/wag/egov/egiz/web/AsynchronousDataResponder.java new file mode 100644 index 0000000..847bbcf --- /dev/null +++ b/src/main/java/at/knowcenter/wag/egov/egiz/web/AsynchronousDataResponder.java @@ -0,0 +1,155 @@ +/** + * Copyright (c) 2006 by Know-Center, Graz, Austria + * + * This software is the confidential and proprietary information of Know-Center, + * Graz, Austria. You shall not disclose such Confidential Information and shall + * use it only in accordance with the terms of the license agreement you entered + * into with Know-Center. + * + * KNOW-CENTER MAKES NO REPRESENTATIONS OR WARRANTIES ABOUT THE SUITABILITY OF + * THE SOFTWARE, EITHER EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE + * IMPLIED WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE, OR + * NON-INFRINGEMENT. KNOW-CENTER SHALL NOT BE LIABLE FOR ANY DAMAGES SUFFERED BY + * LICENSEE AS A RESULT OF USING, MODIFYING OR DISTRIBUTING THIS SOFTWARE OR ITS + * DERIVATIVES. + * + * $Id: AsynchronousDataResponder.java,v 1.3 2006/08/30 14:02:35 wprinz Exp $ + */ +package at.knowcenter.wag.egov.egiz.web; + +import java.io.IOException; +import java.util.List; + +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 at.knowcenter.wag.egov.egiz.cfg.ConfigLogger; +import at.knowcenter.wag.egov.egiz.cfg.SettingsReader; + +/** + * Servlet that responds to the data post requests of the local service (e.g. + * BKU). + * + * @author wprinz + */ +public class AsynchronousDataResponder extends HttpServlet +{ + + /** + * SVUID. + */ + private static final long serialVersionUID = -4992297156381763174L; + + /** + * The logger definition. + */ + private static final Logger logger_ = ConfigLogger.getLogger(AsynchronousDataResponder.class); + + protected void doGet(HttpServletRequest arg0, HttpServletResponse arg1) throws ServletException, IOException + { + logger_.debug("AsyncDataResp GET REQUEST."); + super.doGet(arg0, arg1); + } + + protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException + { + logger_.debug("AsyncDataResp !!!!!!!!!!!!!!!!!!!!!!"); + + HttpSession session = request.getSession(false); + if (session == null) + { + throw new ServletException("There is no session associated with this request."); + } + + // String session_id_string = request.getParameter("session"); + // if (session_id_string == null) + // { + // throw new ServletException("The session parameter is missing."); + // } + + SessionInformation si = (SessionInformation) session.getAttribute(SessionAttributes.ATTRIBUTE_SESSION_INFORMATION); + // long session_id = Long.parseLong(session_id_string); + // SessionInformation si = SessionTable.get(session_id); + if (si == null) + { + throw new ServletException("The session is not found or no longer valid."); + } + + // InputStream is = request.getInputStream(); + // byte [] data = new byte[request.getContentLength()]; + // is.read(data); + // is.close(); + // String enc = request.getCharacterEncoding(); + // String ct = request.getContentType(); + // Enumeration enum = request.getHeaderNames(); + // + // String dat = new String(data, "US-ASCII"); + // // dat looks like: XMLResponse=blablabla ... + // // so the actual XMLResponse begins after the = + // String resp = URLDecoder.decode(dat, "UTF-8"); + + logger_.debug("Answer from local service: content-type = '" + request.getContentType() + "', character encoding = '" + request.getCharacterEncoding() + "'"); + + // .getParameter will use the character encoding specified by the + // content-type header. + // Unfortunately BKU forgets to specify a chatacter encoding. + // Therefor, .getParameter will assume US-ASCII or something. + // ==> we explicitely set UTF-8 + if (request.getCharacterEncoding() == null) + { + request.setCharacterEncoding("UTF-8"); + logger_.debug(" no character encoding specified - set to UTF-8"); + } + + logger_.debug("AsyncDataResponder: si.current_operation = " + si.current_operation); + + String resp_string = request.getParameter("XMLResponse"); + if (resp_string == null) + { + logger_.debug("response String is null => trying multipart form"); + + DiskFileItemFactory fif = new DiskFileItemFactory(); + fif.setRepository(SettingsReader.getTemporaryDirectory()); + ServletFileUpload sfu = new ServletFileUpload(fif); + + try + { + List items = sfu.parseRequest(request); + + for (int i = 0; i < items.size(); i++) + { + FileItem item = (FileItem) items.get(i); + logger_.debug("item = " + item.getFieldName()); + + if (item.getFieldName().equals("XMLResponse")) + { + resp_string = item.getString("UTF-8"); + } + } + } + catch (FileUploadException e) + { + throw new ServletException("File Upload exception. cannot parse POST data"); + } + + } + + si.response_string[si.current_operation] = resp_string; //request.getParameter("XMLResponse"); + //logger_.debug("AsyncDataResponder: si.response_string[si.current_operation] = " + si.response_string[si.current_operation]); + + si.current_operation++; + + si.finished = true; + + LocalRequestHelper.formatBKUOkResponse(response); + } +} -- cgit v1.2.3