@ControllerAdvice public class ControllersAdvice { @ModelAttribute("headerData") public HeaderData getHeaderData(HttpServletRequest request, HttpServletResponse response, ModelMap model) { HeaderData headerData = new HeaderData(); // Get the header data and cache it. Set the cache timeframe to 1 day or whatever you want the frequency to be. This will be done using Spring @cacheable annotation. // dump all the data that you want to headerData like logo, title , link etc return headerData; } }
/** * resets all header data */ public void reset() { resetBuffer(); httpHeaders.clear(); cookies.clear(); }
@Override public void addDependency(String name, String scope, String version) { headerData.addDependency(name, scope, version); }
/** * to be called after request has been successfully processed and before * response has been committed. */ @Override public void processHttpHeaders() { // add the cookies to the response for (Cookie c : headerData.getCookies()) { containerResponse.addCookie(c); } // Add the HTTP headers to the response Map<String, List<String>> headers = headerData.getHttpHeaders(); for (String name : headers.keySet()) { for (String val : headers.get(name)) { containerResponse.addHeader(name, val); } } }
public Element createElement(String tagName) throws DOMException { return headerData.createElement(tagName); }
public void addProperty(Cookie cookie) { if (!isClosed() && isSetPropsAllowed) { if (lifecycle.matches(RESOURCE_PHASE)) { // apply headers directly to response containerResponse.addCookie(cookie); } else { headerData.addCookie(cookie); } } }
/** * saves elements for adding to the head section markup if header request or render request */ public void addProperty(String key, Element element) { if (!key.equals(MimeResponse.MARKUP_HEAD_ELEMENT)) { StringBuilder txt = new StringBuilder(128); txt.append("Ignoring attempt to add document head element with key: ").append(key); txt.append(" rather than the required: ").append(MimeResponse.MARKUP_HEAD_ELEMENT); LOG.warn(txt.toString()); } else { if (!isClosed() && isSetPropsAllowed && element != null) { if (lifecycle.equals(RENDER_PHASE) || lifecycle.equals(HEADER_PHASE)) { headerData.addHeaderTag(element); } } } }
public void addProperty(String key, String value) { if (value == null) { StringBuilder txt = new StringBuilder(128); txt.append("Ignoring attempt to add property with null value. Key: ").append(key); LOG.warn(txt.toString()); } else if (!key.matches(VALID_HEADER_CHARS)) { StringBuilder txt = new StringBuilder(128); txt.append("Ignoring attempt to add key containing disallowed characters. Key: ").append(key); txt.append(", value: ").append(value); LOG.warn(txt.toString()); } else { // header names are case insensitive. allow setting all headers // during the resource phase. if (!lifecycle.matches(RESOURCE_PHASE) && disallowedHeaders.contains(key.toUpperCase())) { StringBuilder txt = new StringBuilder(128); txt.append("Ignoring disallowed HTTP header: ").append(key); txt.append(" with value: ").append(value); LOG.warn(txt.toString()); } else { if (!isClosed() && isSetPropsAllowed) { if (lifecycle.matches(RESOURCE_PHASE)) { // apply headers directly to response containerResponse.addHeader(key, value); } else { headerData.addHttpHeader(key, value); } } } } }
@Override public int getBufferSize() { if (isHeaderBufferActive()) { // header request return headerData.getBufferSize(); } else { // render or resource request return getServletResponse().getBufferSize(); } }
@Override public OutputStream getOutputStream() throws IOException, IllegalStateException { if (isClosed()) { return null; } if (isHeaderBufferActive()) { // header request return headerData.getBaoStream(); } else { // render or resource request if (outputStream == null) { try { outputStream = getServletResponse().getOutputStream(); } catch (IllegalStateException e) { // handle situation where underlying ServletResponse its getWriter() // has been called already anyway: return a wrapped PrintWriter in that case outputStream = new PrintWriterServletOutputStream(getServletResponse().getWriter(), getServletResponse().getCharacterEncoding()); } } return outputStream; } }
HeaderData headerData = new HeaderData();
@Override public void resetBuffer() { if (!isClosed()) { if (isHeaderBufferActive()) { // header request headerData.resetBuffer(); } else { getServletResponse().resetBuffer(); } } }
@Override public void addDependency(String name, String scope, String version, String markup) { headerData.addDependency(name, scope, version, markup); } }
HeaderRequest portletRequest = envService.createHeaderRequest(requestContext, responseContext); HeaderResponse portletResponse = envService.createHeaderResponse(responseContext); HeaderData headerData = new HeaderData();