/* Copyright (c) 2011 GeoSolutions - http://www.geo-solutions.it/. All rights reserved. * This code is licensed under the GPL 2.0 license, available at the root * application directory. */ package it.geosolutions.geoserver.jms.server; import it.geosolutions.geoserver.jms.JMSApplicationListener; import it.geosolutions.geoserver.jms.JMSFactory; import it.geosolutions.geoserver.jms.events.ToggleType; import javax.jms.ConnectionFactory; import javax.jms.Topic; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.jms.core.JmsTemplate; /** * JMS MASTER (Producer) Listener used to provide basic functionalities to the producer implementations * * @see {@link JMSApplicationListener} * * @author Carlo Cancellieri - carlo.cancellieri@geo-solutions.it * */ public abstract class JMSAbstractProducer extends JMSApplicationListener { @Autowired public JMSFactory jmsFactory; /** * @return the jmsTemplate */ public final JmsTemplate getJmsTemplate() { final ConnectionFactory cf = jmsFactory.getConnectionFactory(config.getConfigurations()); if (cf == null) { throw new IllegalStateException("Unable to load a connectionFactory"); } return new JmsTemplate(cf); } public final Topic getTopic() { final Topic jmsTopic = jmsFactory.getTopic(config.getConfigurations()); if (jmsTopic == null) { throw new IllegalStateException("Unable to load a JMS destination"); } return jmsTopic; } /** * Constructor * * @param topicTemplate the getJmsTemplate() object used to send message to the topic queue * */ public JMSAbstractProducer() { super(ToggleType.MASTER); } }