Attempt to make the bean thread-safe.

This commit is contained in:
jeb228 2010-12-15 15:17:06 +00:00
parent a874f75644
commit bd8ce05082

View file

@ -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 + "]";