@Override public PortletRequest getObject() { return currentRequestAttributes().getRequest(); }
@Override public Object resolveReference(String key) { if (REFERENCE_REQUEST.equals(key)) { return this.request; } else if (REFERENCE_SESSION.equals(key)) { return getSession(true); } else { return null; } }
/** * Exposes the {@link PortletSession} that we're wrapping. * @param allowCreate whether to allow creation of a new session if none exists yet */ protected final PortletSession getSession(boolean allowCreate) { if (isRequestActive()) { return this.request.getPortletSession(allowCreate); } else { // Access through stored session reference, if any... if (this.session == null && allowCreate) { throw new IllegalStateException( "No session found and request already completed - cannot create new session!"); } return this.session; } }
@Override public void registerDestructionCallback(String name, Runnable callback, int scope) { if (scope == SCOPE_REQUEST) { registerRequestDestructionCallback(name, callback); } else { registerSessionDestructionCallback(name, callback); } }
@Override public WebRequest getObject() { PortletRequestAttributes requestAttr = currentRequestAttributes(); return new PortletWebRequest(requestAttr.getRequest(), requestAttr.getResponse()); }
@Override public void setAttribute(String name, Object value, int scope) { if (scope == SCOPE_REQUEST) { if (!isRequestActive()) { throw new IllegalStateException( "Cannot set request attribute - request is not active anymore!"); } this.request.setAttribute(name, value); } else { PortletSession session = getSession(true); if (scope == SCOPE_GLOBAL_SESSION) { session.setAttribute(name, value, PortletSession.APPLICATION_SCOPE); this.globalSessionAttributesToUpdate.remove(name); } else { session.setAttribute(name, value); this.sessionAttributesToUpdate.remove(name); } } }
@Override public void removeAttribute(String name, int scope) { if (scope == SCOPE_REQUEST) { if (isRequestActive()) { this.request.removeAttribute(name); removeRequestDestructionCallback(name); } } else { PortletSession session = getSession(false); if (session != null) { if (scope == SCOPE_GLOBAL_SESSION) { session.removeAttribute(name, PortletSession.APPLICATION_SCOPE); this.globalSessionAttributesToUpdate.remove(name); } else { session.removeAttribute(name); this.sessionAttributesToUpdate.remove(name); } } } }
PortletRequestAttributes requestAttributes = null; if (previousRequestAttributes == null || previousRequestAttributes.getClass().equals(PortletRequestAttributes.class)) { requestAttributes = new PortletRequestAttributes(request); RequestContextHolder.setRequestAttributes(requestAttributes, this.threadContextInheritable); if (requestAttributes != null) { RequestContextHolder.setRequestAttributes(previousRequestAttributes, this.threadContextInheritable); requestAttributes.requestCompleted();
/** * expose the request to the current thread * @param request */ public static void exposeRequest(PortletRequest request) { //use same code as requestInitialized from Spring RequestContextListener PortletRequestAttributes attributes = new PortletRequestAttributes(request); request.setAttribute(REQUEST_ATTRIBUTES_ATTRIBUTE, attributes); LocaleContextHolder.setLocale(request.getLocale()); RequestContextHolder.setRequestAttributes(attributes); }
/** * Unbind the request from the current thread. * @param requestAttributes */ public static void unbindRequest( final PortletRequestAttributes requestAttributes) { if (requestAttributes != null) { requestAttributes.requestCompleted(); } RequestContextHolder.setRequestAttributes(null); LocaleContextHolder.setLocale(null); }
public void setAttribute(String name, Object value, int scope) { if (scope == SCOPE_REQUEST) { if (!isRequestActive()) { throw new IllegalStateException( "Cannot set request attribute - request is not active anymore!"); } this.request.setAttribute(name, value); } else { PortletSession session = getSession(true); if (scope == SCOPE_GLOBAL_SESSION) { session.setAttribute(name, value, PortletSession.APPLICATION_SCOPE); synchronized (this.globalSessionAttributesToUpdate) { this.globalSessionAttributesToUpdate.remove(name); } } else { session.setAttribute(name, value); synchronized (this.sessionAttributesToUpdate) { this.sessionAttributesToUpdate.remove(name); } } } }
public void removeAttribute(String name, int scope) { if (scope == SCOPE_REQUEST) { if (isRequestActive()) { this.request.removeAttribute(name); removeRequestDestructionCallback(name); } } else { PortletSession session = getSession(false); if (session != null) { if (scope == SCOPE_GLOBAL_SESSION) { session.removeAttribute(name, PortletSession.APPLICATION_SCOPE); synchronized (this.globalSessionAttributesToUpdate) { this.globalSessionAttributesToUpdate.remove(name); } } else { session.removeAttribute(name); synchronized (this.sessionAttributesToUpdate) { this.sessionAttributesToUpdate.remove(name); } } } } }
PortletRequestAttributes.class == previousRequestAttributes.getClass() || ServletRequestAttributes.class == previousRequestAttributes.getClass()) { requestAttributes = new PortletRequestAttributes(request, response); RequestContextHolder.setRequestAttributes(requestAttributes, this.threadContextInheritable); if (requestAttributes != null) { RequestContextHolder.setRequestAttributes(previousRequestAttributes, this.threadContextInheritable); requestAttributes.requestCompleted();
public void registerDestructionCallback(String name, Runnable callback, int scope) { if (scope == SCOPE_REQUEST) { registerRequestDestructionCallback(name, callback); } else { registerSessionDestructionCallback(name, callback); } }
/** * Bind the portlet request and context to the current thread (to use Sping-scoped beans). * @param request * @param context * @return the request attributes (that should be released by unbindRequest()). */ public static PortletRequestAttributes bindRequestAndContext( final PortletRequest request, final PortletContext context) { LocaleContextHolder.setLocale(request.getLocale()); PortletRequestAttributes requestAttributes = new PortletRequestAttributes(request); RequestContextHolder.setRequestAttributes(requestAttributes); BeanUtilsWeb.initBeanFactory(context); return requestAttributes; }
/** * unexpose the request from the current thread * @param request */ public static void unexposeRequest(PortletRequest request) { //use same code as requestDestroyed from Spring RequestContextListener PortletRequestAttributes attributes = (PortletRequestAttributes) request.getAttribute(REQUEST_ATTRIBUTES_ATTRIBUTE); PortletRequestAttributes threadAttributes = (PortletRequestAttributes) RequestContextHolder.getRequestAttributes(); if (threadAttributes != null) { if (attributes == null) { attributes = threadAttributes; } LocaleContextHolder.resetLocaleContext(); RequestContextHolder.resetRequestAttributes(); } if (attributes != null) { attributes.requestCompleted(); } }
public PortletRequest getObject() { return currentRequestAttributes().getRequest(); }
@Override public Object getAttribute(String name, int scope) { if (scope == SCOPE_REQUEST) { if (!isRequestActive()) { throw new IllegalStateException( "Cannot ask for request attribute - request is not active anymore!"); } return this.request.getAttribute(name); } else { PortletSession session = getSession(false); if (session != null) { if (scope == SCOPE_GLOBAL_SESSION) { Object value = session.getAttribute(name, PortletSession.APPLICATION_SCOPE); if (value != null) { this.globalSessionAttributesToUpdate.put(name, value); } return value; } else { Object value = session.getAttribute(name); if (value != null) { this.sessionAttributesToUpdate.put(name, value); } return value; } } return null; } }
public Object resolveReference(String key) { if (REFERENCE_REQUEST.equals(key)) { return this.request; } else if (REFERENCE_SESSION.equals(key)) { return getSession(true); } else { return null; } }
/** * Exposes the {@link PortletSession} that we're wrapping. * @param allowCreate whether to allow creation of a new session if none exists yet */ protected final PortletSession getSession(boolean allowCreate) { if (isRequestActive()) { PortletSession session = this.request.getPortletSession(allowCreate); this.session = session; return session; } else { // Access through stored session reference, if any... PortletSession session = this.session; if (session == null) { if (allowCreate) { throw new IllegalStateException( "No session found and request already completed - cannot create new session!"); } else { session = this.request.getPortletSession(false); this.session = session; } } return session; } }