Attempt to make the bean thread-safe.
This commit is contained in:
parent
a874f75644
commit
bd8ce05082
1 changed files with 38 additions and 22 deletions
|
@ -149,6 +149,11 @@ public class LoginProcessBean {
|
|||
public String formatMessage(Object[] args) {
|
||||
return new MessageFormat(this.format).format(args);
|
||||
}
|
||||
|
||||
@Override
|
||||
public String toString() {
|
||||
return "Message[" + messageLevel + ", '" + format + "']";
|
||||
}
|
||||
}
|
||||
|
||||
// ----------------------------------------------------------------------
|
||||
|
@ -158,18 +163,21 @@ public class LoginProcessBean {
|
|||
/** Where are we in the process? */
|
||||
private State currentState = State.NOWHERE;
|
||||
|
||||
/** Where is the interaction taking place? */
|
||||
private volatile String loginPageUrl;
|
||||
|
||||
/** Where do we go when finished? */
|
||||
private volatile String afterLoginUrl;
|
||||
|
||||
/** message and messageArguments must be kept consistent. */
|
||||
private final Object messageSynchronizer = new Object();
|
||||
|
||||
/** What message should we display on the screen? */
|
||||
private Message message = Message.NO_MESSAGE;
|
||||
|
||||
/** What arguments are needed to format the message? */
|
||||
private Object[] messageArguments = NO_ARGUMENTS;
|
||||
|
||||
/** Where is the interaction taking place? */
|
||||
private String loginPageUrl;
|
||||
|
||||
/** Where do we go when finished? */
|
||||
private String afterLoginUrl;
|
||||
|
||||
/**
|
||||
* What username was submitted to the form? This isn't just for display --
|
||||
* if they are changing passwords, we need to remember who it is.
|
||||
|
@ -185,16 +193,21 @@ public class LoginProcessBean {
|
|||
}
|
||||
|
||||
public void clearMessage() {
|
||||
synchronized (messageSynchronizer) {
|
||||
this.message = Message.NO_MESSAGE;
|
||||
this.messageArguments = NO_ARGUMENTS;
|
||||
}
|
||||
}
|
||||
|
||||
public void setMessage(Message message, Object... args) {
|
||||
synchronized (messageSynchronizer) {
|
||||
this.message = message;
|
||||
this.messageArguments = args;
|
||||
}
|
||||
}
|
||||
|
||||
public String getInfoMessageAndClear() {
|
||||
synchronized (messageSynchronizer) {
|
||||
String text = "";
|
||||
if (message.getMessageLevel() == MLevel.INFO) {
|
||||
text = message.formatMessage(messageArguments);
|
||||
|
@ -202,8 +215,10 @@ public class LoginProcessBean {
|
|||
}
|
||||
return text;
|
||||
}
|
||||
}
|
||||
|
||||
public String getErrorMessageAndClear() {
|
||||
synchronized (messageSynchronizer) {
|
||||
String text = "";
|
||||
if (message.getMessageLevel() == MLevel.ERROR) {
|
||||
text = message.formatMessage(messageArguments);
|
||||
|
@ -211,6 +226,7 @@ public class LoginProcessBean {
|
|||
}
|
||||
return text;
|
||||
}
|
||||
}
|
||||
|
||||
public String getUsername() {
|
||||
return username;
|
||||
|
@ -238,8 +254,8 @@ public class LoginProcessBean {
|
|||
|
||||
@Override
|
||||
public String toString() {
|
||||
return "LoginProcessBean[state=" + currentState + ", message="
|
||||
+ message + ", messageArguments="
|
||||
return "LoginProcessBean(" + hashCode() + ")[state=" + currentState
|
||||
+ ", message=" + message + ", messageArguments="
|
||||
+ Arrays.deepToString(messageArguments) + ", username="
|
||||
+ username + ", loginPageUrl=" + loginPageUrl
|
||||
+ ", afterLoginUrl=" + afterLoginUrl + "]";
|
||||
|
|
Loading…
Add table
Reference in a new issue