Collection refreshing?
maciekpazur Apr 29, 2009 2:13 PMI'm fighting a very strange problem while trying to implement simple message system for my application.
I use Hibernate for persistence and have three entities - User, MessageFolder and Message. User has two elements of type MessageFolder: inbox and sentMessages. MessageFolder contains a list of Messages.
I have a bean MessagesUI, which main method is:
public void sendMessage() {
message.setFrom(loggedUser);
message.getTo().receiveMessage(receivedMessage);
entityManager.merge(receivedMessage.getTo());
message.getFrom().sendMessage(message);
entityManager.merge(message.getFrom());
}The code for sendMessage and receiveMessage is almost identical:
public void sendMessage(Message message) {
if (sentMessages == null) {
sentMessages = new MessageFolder();
sentMessages.setName("sent messages");
}
message.setFolder(sentMessages);
sentMessages.add(message);
}
public void receiveMessage(Message message) {
if (inbox == null) {
inbox = new MessageFolder();
inbox.setName("inbox");
}
message.setFolder(inbox);
inbox.add(message);
}To show the list of messages I use a simple Factory methods:
@Factory(value = "sentList", scope = ScopeType.PAGE)
public List<Message> getSentList() {
return loggedUser.getSentMessages().getMessages();
}
@Factory(value = "inboxList", scope = ScopeType.PAGE)
public List<Message> getInboxList() {
return loggedUser.getSentMessages().getMessages();
}As you can see receiving and sending a message is totally symmetrical. Thus, I am extremely surprised with a following scenario. I log in and senda message to myself. Then I enter the page with message lists. The just-sent message appears only in the sent, not in the inbox. But in the database everything is ok - there are two messages, one in each folder! Only when I log out and log in again, everything's fine - the message appears in both the lists.
I tried a lot of things, but still can't find out why this happens. Can anybody help me?