@Override public Map<String, List<String>> getHeaders() { Map<String, List<String>> headers = new HashMap<>(); Enumeration<String> names = request.getHeaderNames(); if (names != null) { while (names.hasMoreElements()) { String name = names.nextElement(); String value = request.getHeader(name); if (value == null || value.trim().equals("")) { headers.put(name, Collections.emptyList()); } else { if (value.indexOf(',') > -1) { headers.put(name, Arrays.asList(value.split(","))); } else { headers.put(name, Collections.singletonList(value)); } } } } return headers; }
/** * The request.getContentLength() is limited to "int" by the Servlet * specification. To support larger file uploads manually evaluate the * Content-Length header which can contain long values. */ private long getContentLength(VaadinRequest request) { try { return Long.parseLong(request.getHeader("Content-Length")); } catch (NumberFormatException e) { return -1l; } }
@Override public boolean synchronizedHandleRequest(VaadinSession session, VaadinRequest request, VaadinResponse response) throws IOException { // Check if the browser is supported WebBrowser browser = session.getBrowser(); final String cookie = request.getHeader("Cookie"); if (browser.isTooOldToFunctionProperly()) { // bypass if cookie set if (cookie == null || !cookie.contains(FORCE_LOAD_COOKIE)) { writeBrowserTooOldPage(request, response); return true; // request handled } } // check for trying to run ie11 in development mode if (browser.isIE() && !session.getConfiguration().isProductionMode()) { // bypass if cookie set if (cookie == null || !cookie.contains(FORCE_LOAD_COOKIE)) { writeIE11InDevelopmentModePage(response); return true; } } return false; // pass to next handler }
/** * For internal use only. Updates all properties in the class according to * the given information. * * @param request * the Vaadin request to read the information from */ public void updateRequestDetails(VaadinRequest request) { locale = request.getLocale(); address = request.getRemoteAddr(); secureConnection = request.isSecure(); // Headers are case insensitive according to the specification but are // case sensitive in Weblogic portal... String agent = request.getHeader("User-Agent"); if (agent != null) { browserApplication = agent; browserDetails = new BrowserDetails(agent); } if (request.getParameter("v-sw") != null) { updateClientSideDetails(request.getParameter("v-sw"), request.getParameter("v-sh"), request.getParameter("v-tzo"), request.getParameter("v-rtzo"), request.getParameter("v-dstd"), request.getParameter("v-dston"), request.getParameter("v-tzid"), request.getParameter("v-curdate"), request.getParameter("v-td") != null); } }