=== modified file 'dhis-2/dhis-api/src/main/java/org/hisp/dhis/message/MessageConversation.java' --- dhis-2/dhis-api/src/main/java/org/hisp/dhis/message/MessageConversation.java 2014-08-19 11:16:02 +0000 +++ dhis-2/dhis-api/src/main/java/org/hisp/dhis/message/MessageConversation.java 2014-11-25 20:22:50 +0000 @@ -163,6 +163,19 @@ return false; } + public boolean isRead( User user ) + { + for( UserMessage userMessage : userMessages ) + { + if( userMessage.getUser() != null && userMessage.getUser().equals( user ) ) + { + return userMessage.isRead(); + } + } + + return false; + } + public boolean markRead( User user ) { for ( UserMessage userMessage : userMessages ) === modified file 'dhis-2/dhis-services/dhis-service-core/src/main/java/org/hisp/dhis/message/DefaultMessageService.java' --- dhis-2/dhis-services/dhis-service-core/src/main/java/org/hisp/dhis/message/DefaultMessageService.java 2014-11-18 12:55:20 +0000 +++ dhis-2/dhis-services/dhis-service-core/src/main/java/org/hisp/dhis/message/DefaultMessageService.java 2014-11-25 20:22:50 +0000 @@ -307,6 +307,23 @@ @Override public MessageConversation getMessageConversation( String uid ) { + /* + * TODO: + * This is a temporary workaround to ensure transient fields followUp and read + * are set correctly (and not just to false). Issue should be tackled in + * HibernateIdentifiableObjectStore and/or HibernateMessageConversationStore. + */ + + MessageConversation mc = messageConversationStore.getByUid( uid ); + + if( mc == null ) + { + return null; + } + + mc.setFollowUp( mc.isFollowUp( currentUserService.getCurrentUser() ) ); + mc.setRead( mc.isRead( currentUserService.getCurrentUser() ) ); + return messageConversationStore.getByUid( uid ); }