diff options
Diffstat (limited to 'BKUOnline/src/main/java')
| -rw-r--r-- | BKUOnline/src/main/java/at/gv/egiz/bku/online/webapp/BKURequestHandler.java | 60 | 
1 files changed, 38 insertions, 22 deletions
| diff --git a/BKUOnline/src/main/java/at/gv/egiz/bku/online/webapp/BKURequestHandler.java b/BKUOnline/src/main/java/at/gv/egiz/bku/online/webapp/BKURequestHandler.java index 3aa6bc19..12166a5a 100644 --- a/BKUOnline/src/main/java/at/gv/egiz/bku/online/webapp/BKURequestHandler.java +++ b/BKUOnline/src/main/java/at/gv/egiz/bku/online/webapp/BKURequestHandler.java @@ -24,6 +24,7 @@ import java.util.HashMap;  import java.util.Locale;  import java.util.Map; +import javax.servlet.RequestDispatcher;  import javax.servlet.ServletException;  import javax.servlet.http.HttpServletRequest;  import javax.servlet.http.HttpServletResponse; @@ -32,12 +33,12 @@ import javax.servlet.http.HttpSession;  import org.apache.commons.logging.Log;  import org.apache.commons.logging.LogFactory; +import at.gv.egiz.bku.binding.BindingProcessor;  import at.gv.egiz.bku.binding.HTTPBindingProcessor;  import at.gv.egiz.bku.binding.HttpUtil;  import at.gv.egiz.bku.binding.IdFactory;  import at.gv.egiz.bku.utils.StreamUtil;  import at.gv.egiz.org.apache.tomcat.util.http.AcceptLanguage; -import javax.servlet.RequestDispatcher;  /**   * Handles SL requests and instantiates BindingProcessors @@ -52,7 +53,8 @@ public class BKURequestHandler extends SpringBKUServlet {    protected Log log = LogFactory.getLog(BKURequestHandler.class); -  private static String getStringFromStream(InputStream is, String encoding) throws IOException { +  private static String getStringFromStream(InputStream is, String encoding) +      throws IOException {      if (is == null) {        return null;      } @@ -63,8 +65,7 @@ public class BKURequestHandler extends SpringBKUServlet {      StreamUtil.copyStream(is, os);      return new String(os.toByteArray(), encoding);    } -   -   +    protected void doPost(HttpServletRequest req, HttpServletResponse resp)        throws ServletException, java.io.IOException {      log.debug("Got new request"); @@ -75,21 +76,28 @@ public class BKURequestHandler extends SpringBKUServlet {      HttpSession session = req.getSession(false);      if (session != null) {        log.warn("Already a session with id: " + session.getId() -          + " active, continuing"); -      RequestDispatcher dispatcher = getServletContext().getNamedDispatcher(BKU_APPLET_JSP); -      log.debug("forward to applet"); -      dispatcher.forward(req, resp); -      return; +          + " active, trying to get Bindingprocessor"); +      BindingProcessor bp = getBindingProcessorManager().getBindingProcessor( +          IdFactory.getInstance().createId(session.getId())); +      if (bp != null) { +        log.debug("Found binding processor, using this one"); +        RequestDispatcher dispatcher = getServletContext().getNamedDispatcher( +            BKU_APPLET_JSP); +        log.debug("forward to applet"); +        dispatcher.forward(req, resp); +        return; +      } +      log.debug("Did not find a binding processor, creating new ...");      }      session = req.getSession(true);      if (log.isDebugEnabled()) {        log.debug("Using session id: " + session.getId());      } -     -    HTTPBindingProcessor bindingProcessor; +    HTTPBindingProcessor bindingProcessor;      bindingProcessor = (HTTPBindingProcessor) getBindingProcessorManager() -        .createBindingProcessor(req.getRequestURL().toString(), session.getId(), locale); +        .createBindingProcessor(req.getRequestURL().toString(), +            session.getId(), locale);      Map<String, String> headerMap = new HashMap<String, String>();      for (Enumeration<String> headerName = req.getHeaderNames(); headerName @@ -109,14 +117,20 @@ public class BKURequestHandler extends SpringBKUServlet {      bindingProcessor.consumeRequestStream(req.getInputStream());      req.getInputStream().close();      getBindingProcessorManager().process(bindingProcessor); -     +      log.trace("Trying to find applet parameters in request"); -    String width = getStringFromStream(bindingProcessor.getFormData("appletWidth"), charset); -    String height = getStringFromStream(bindingProcessor.getFormData("appletHeight"), charset); -    String background = getStringFromStream(bindingProcessor.getFormData("appletBackground"), charset); -    String guiStyle = getStringFromStream(bindingProcessor.getFormData("appletGuiStyle"), charset); -    String hashDataDisplay = getStringFromStream(bindingProcessor.getFormData("appletHashDataDisplay"), charset); -    String localeFormParam = getStringFromStream(bindingProcessor.getFormData("locale"), charset); +    String width = getStringFromStream(bindingProcessor +        .getFormData("appletWidth"), charset); +    String height = getStringFromStream(bindingProcessor +        .getFormData("appletHeight"), charset); +    String background = getStringFromStream(bindingProcessor +        .getFormData("appletBackground"), charset); +    String guiStyle = getStringFromStream(bindingProcessor +        .getFormData("appletGuiStyle"), charset); +    String hashDataDisplay = getStringFromStream(bindingProcessor +        .getFormData("appletHashDataDisplay"), charset); +    String localeFormParam = getStringFromStream(bindingProcessor +        .getFormData("locale"), charset);      if (width != null) {        try {          log.trace("Found applet width parameter: " + width); @@ -148,7 +162,8 @@ public class BKURequestHandler extends SpringBKUServlet {        session.setAttribute("appletHashDataDisplay", hashDataDisplay);      }      if (localeFormParam != null) { -      log.debug("overrule accept-language locale " + locale + " with form param " + localeFormParam); +      log.debug("overrule accept-language locale " + locale +          + " with form param " + localeFormParam);        locale = new Locale(localeFormParam);      }      if (locale != null) { @@ -156,8 +171,9 @@ public class BKURequestHandler extends SpringBKUServlet {        session.setAttribute("locale", locale.toString());      } -    //TODO error if no dispatcher found -    RequestDispatcher dispatcher = getServletContext().getNamedDispatcher(BKU_APPLET_JSP); +    // TODO error if no dispatcher found +    RequestDispatcher dispatcher = getServletContext().getNamedDispatcher( +        BKU_APPLET_JSP);      log.debug("forward to applet");      dispatcher.forward(req, resp);    } | 
