package won.owner.service.impl; import org.slf4j.Logger; import org.slf4j.LoggerFactory; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.beans.factory.annotation.Qualifier; import won.protocol.message.WonMessage; import won.protocol.message.processor.WonMessageProcessor; import won.protocol.message.sender.WonMessageSender; /** * Service that connects client-side logic (e.g. the WonWebSocketHandler in won-owner-webapp) * with facilities for sending and receiving messages. */ public class OwnerApplicationService implements WonMessageProcessor, WonMessageSender { private static final Logger logger = LoggerFactory.getLogger(OwnerApplicationService.class); @Autowired @Qualifier("default") private WonMessageSender wonMessageSenderDelegate; //when the callback is a bean in a child context, it sets itself as a dependency here //we don't do autowiring. private WonMessageProcessor messageProcessorDelegate = new NopOwnerApplicationServiceCallback(); /** * Sends a message to the won node. * @param wonMessage */ public void sendWonMessage(WonMessage wonMessage) { try { // send to node: wonMessageSenderDelegate.sendWonMessage(wonMessage); } catch (Exception e) { //TODO: send error message back to client! logger.info("could not send WonMessage", e); } } /** * Sends a message to the owner. * @param wonMessage */ @Override public WonMessage process(final WonMessage wonMessage){ return messageProcessorDelegate.process(wonMessage); } public void setMessageProcessorDelegate(final WonMessageProcessor messageProcessorDelegate) { this.messageProcessorDelegate = messageProcessorDelegate; } }