You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@myfaces.apache.org by lo...@apache.org on 2022/03/25 10:53:23 UTC
[myfaces-tobago] branch tobago-5.x updated: fix: TobagoContext: No state
This is an automated email from the ASF dual-hosted git repository.
lofwyr pushed a commit to branch tobago-5.x
in repository https://gitbox.apache.org/repos/asf/myfaces-tobago.git
The following commit(s) were added to refs/heads/tobago-5.x by this push:
new 5a538d8 fix: TobagoContext: No state
5a538d8 is described below
commit 5a538d8d731538e135d851c90f50567bf9b22976
Author: Udo Schnurpfeil <ud...@irian.eu>
AuthorDate: Fri Mar 25 11:11:35 2022 +0100
fix: TobagoContext: No state
issue: TOBAGO-2122
---
.../myfaces/tobago/context/TobagoContext.java | 80 +++++++++++-----------
1 file changed, 40 insertions(+), 40 deletions(-)
diff --git a/tobago-core/src/main/java/org/apache/myfaces/tobago/context/TobagoContext.java b/tobago-core/src/main/java/org/apache/myfaces/tobago/context/TobagoContext.java
index f2a4ae5..ab49cb7 100644
--- a/tobago-core/src/main/java/org/apache/myfaces/tobago/context/TobagoContext.java
+++ b/tobago-core/src/main/java/org/apache/myfaces/tobago/context/TobagoContext.java
@@ -44,13 +44,10 @@ public class TobagoContext implements Serializable {
public static final String BEAN_NAME = "tobagoContext";
- private static final Logger LOG = LoggerFactory.getLogger(MethodHandles.lookup().lookupClass());
+ public static final String FOCUS_ID_KEY = "tobago.focusId";
+ public static final String ENCTYPE_KEY = "tobago.enctype";
- private TobagoConfig tobagoConfig;
- private Theme theme;
- private UserAgent userAgent;
- private String focusId;
- private String enctype;
+ private static final Logger LOG = LoggerFactory.getLogger(MethodHandles.lookup().lookupClass());
/**
* @deprecated since 5.0.0. Please use {@link org.apache.myfaces.tobago.util.ResourceUtils#getString} in Java or
@@ -78,19 +75,17 @@ public class TobagoContext implements Serializable {
}
public TobagoConfig getTobagoConfig() {
- if (tobagoConfig == null) {
- tobagoConfig = TobagoConfig.getInstance(FacesContext.getCurrentInstance());
- }
- return tobagoConfig;
+ return TobagoConfig.getInstance(FacesContext.getCurrentInstance());
}
public Theme getTheme() {
-
+ // load it from faces context
+ final FacesContext facesContext = FacesContext.getCurrentInstance();
+ Theme theme = (Theme) facesContext.getAttributes().get(Theme.THEME_KEY);
if (theme != null) {
return theme;
}
- final FacesContext facesContext = FacesContext.getCurrentInstance();
final ExternalContext externalContext = facesContext.getExternalContext();
final Object request = externalContext.getRequest();
final Object session = externalContext.getSession(false);
@@ -104,31 +99,32 @@ public class TobagoContext implements Serializable {
}
}
- if (theme != null) {
- return theme;
- }
-
// or load it from cookie
- if (request instanceof HttpServletRequest && getTobagoConfig().isThemeCookie()) {
- final String themeName = CookieUtils.getThemeNameFromCookie((HttpServletRequest) request);
- theme = getTobagoConfig().getTheme(themeName);
- if (LOG.isDebugEnabled()) {
- LOG.debug("from cookie theme='{}'", theme.getName());
+ if (theme == null) {
+ if (request instanceof HttpServletRequest && getTobagoConfig().isThemeCookie()) {
+ final String themeName = CookieUtils.getThemeNameFromCookie((HttpServletRequest) request);
+ theme = getTobagoConfig().getTheme(themeName);
+ if (LOG.isDebugEnabled()) {
+ LOG.debug("from cookie theme='{}'", theme.getName());
+ }
}
}
- if (theme != null) {
- return theme;
+ // or use default
+ if (theme == null) {
+ theme = getTobagoConfig().getDefaultTheme();
}
- // or use default
- return getTobagoConfig().getDefaultTheme();
+ facesContext.getAttributes().put(Theme.THEME_KEY, theme);
+
+ return theme;
}
public void setTheme(final Theme theme) {
- this.theme = theme;
-
+ // save in faces context
final FacesContext facesContext = FacesContext.getCurrentInstance();
+ facesContext.getAttributes().put(Theme.THEME_KEY, theme);
+
final ExternalContext externalContext = facesContext.getExternalContext();
final Object request = externalContext.getRequest();
final Object response = externalContext.getResponse();
@@ -147,38 +143,42 @@ public class TobagoContext implements Serializable {
public UserAgent getUserAgent() {
- if (userAgent == null) {
- final FacesContext facesContext = FacesContext.getCurrentInstance();
- final ExternalContext externalContext = facesContext.getExternalContext();
+ UserAgent userAgent;
- final String requestUserAgent = externalContext.getRequestHeaderMap().get("User-Agent");
- userAgent = UserAgent.getInstance(requestUserAgent);
- if (LOG.isDebugEnabled()) {
- LOG.debug("userAgent='" + userAgent + "' from header " + "'User-Agent: " + requestUserAgent + "'");
- }
+ final FacesContext facesContext = FacesContext.getCurrentInstance();
+ final ExternalContext externalContext = facesContext.getExternalContext();
+
+ final String requestUserAgent = externalContext.getRequestHeaderMap().get("User-Agent");
+ userAgent = UserAgent.getInstance(requestUserAgent);
+ if (LOG.isDebugEnabled()) {
+ LOG.debug("userAgent='" + userAgent + "' from header " + "'User-Agent: " + requestUserAgent + "'");
}
return userAgent;
}
public void setUserAgent(final UserAgent userAgent) {
- this.userAgent = userAgent;
+ LOG.warn("Setting user agent ignored! param={}", userAgent);
}
public String getFocusId() {
- return focusId;
+ final FacesContext facesContext = FacesContext.getCurrentInstance();
+ return (String) facesContext.getAttributes().get(FOCUS_ID_KEY);
}
public void setFocusId(final String focusId) {
- this.focusId = focusId;
+ final FacesContext facesContext = FacesContext.getCurrentInstance();
+ facesContext.getAttributes().put(FOCUS_ID_KEY, focusId);
}
public String getEnctype() {
- return enctype;
+ final FacesContext facesContext = FacesContext.getCurrentInstance();
+ return (String) facesContext.getAttributes().get(ENCTYPE_KEY);
}
public void setEnctype(final String enctype) {
- this.enctype = enctype;
+ final FacesContext facesContext = FacesContext.getCurrentInstance();
+ facesContext.getAttributes().put(ENCTYPE_KEY, enctype);
}
public static TobagoContext getInstance(final FacesContext facesContext) {