package fi.otavanopisto.muikku.plugins.websocket; import java.util.Arrays; import java.util.logging.Level; import java.util.logging.Logger; import javax.enterprise.event.Observes; import javax.enterprise.event.TransactionPhase; import javax.inject.Inject; import javax.transaction.Transactional; import javax.transaction.Transactional.TxType; import fi.otavanopisto.muikku.model.users.UserEntity; import fi.otavanopisto.muikku.plugins.communicator.events.CommunicatorMessageSent; import fi.otavanopisto.muikku.users.UserEntityController; public class CommunicatorListener { @Inject private Logger logger; @Inject private UserEntityController userEntityController; @Inject private WebSocketMessenger webSocketMessenger; @Transactional (value = TxType.REQUIRES_NEW) public void onCommunicatorMessageSent(@Observes (during = TransactionPhase.AFTER_COMPLETION) CommunicatorMessageSent event) { UserEntity userEntity = userEntityController.findUserEntityById(event.getRecipientUserEntityId()); if (userEntity != null) { webSocketMessenger.sendMessage("Communicator:newmessagereceived", null, Arrays.asList(userEntity)); } else { logger.log(Level.SEVERE, String.format("Could not find message recipient user entity %d", event.getRecipientUserEntityId())); } } }