/**
* Copyright (c) 2012 GFT Appverse, S.L., Sociedad Unipersonal.
*
* This Source Code Form is subject to the terms of the Appverse Public License
* Version 2.0 (“APL v2.0”). If a copy of the APL was not distributed with this
* file, You can obtain one at http://www.appverse.mobi/licenses/apl_v2.0.pdf. [^]
*
* Redistribution and use in source and binary forms, with or without modification,
* are permitted provided that the conditions of the AppVerse Public License v2.0
* are met.
*
* THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND
* ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED
* WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
* DISCLAIMED. EXCEPT IN CASE OF WILLFUL MISCONDUCT OR GROSS NEGLIGENCE, IN NO EVENT
* SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT,
* INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
* LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR
* PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY,
* WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT(INCLUDING NEGLIGENCE OR OTHERWISE)
* ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
* POSSIBILITY OF SUCH DAMAGE.
*/
package org.test.app.web.framework.backend.messaging.services.integration.impl.live;
import javax.jms.JMSException;
import javax.jms.Message;
import org.appverse.web.framework.backend.api.helpers.log.AutowiredLogger;
import org.appverse.web.framework.backend.api.model.integration.AbstractIntegrationBean;
import org.appverse.web.framework.backend.messaging.services.integration.impl.live.JMSSyncService;
import org.slf4j.Logger;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.beans.factory.annotation.Qualifier;
import org.springframework.jms.core.JmsTemplate;
import org.springframework.stereotype.Repository;
import org.test.app.web.framework.backend.messaging.model.integration.HeaderDTO;
import org.test.app.web.framework.backend.messaging.model.integration.SampleDTO;
import org.test.app.web.framework.backend.messaging.services.integration.SampleRepository;
/**
* SampleRepository implementation.
* Purpose of this repository is testing message sending and synchronous consuming.
* In this case, the methods to produce messages accept also a Header.
*
*/
@Repository
public class SampleRepositoryImpl extends JMSSyncService<SampleDTO> implements SampleRepository {
@Autowired
@Qualifier("jmsTemplate")
JmsTemplate jmsTemplate;
@AutowiredLogger
private static Logger logger;
/*
* Simple method to produce message delegating in JMSService provided methods.
*/
@Override
public void sendSample(final SampleDTO dto) throws Exception
{
this.send(dto);
}
/*
* Simple method to produce message delegating in JMSService provided methods. It allows sending a generic AbstractIntegrationBean as header.
* When using this method, you must overwrite fillHeader (Message, AbstractIntegrationBean) method.
*/
@Override
public void sendSample(final SampleDTO dto, final HeaderDTO header) throws Exception {
this.send(dto, header);
}
/*
* This method is called from JMSTemplate when producing a message -- send(final T dto, final AbstractIntegrationBean header)
*/
@Override
public void fillHeader(final Message message, final AbstractIntegrationBean header)
throws JMSException {
message.setIntProperty("businessId", ((HeaderDTO) header).getSequenceId());
message.setLongProperty("businessDate", ((HeaderDTO) header).getDate().getTime());
}
/*
* Simple method to consume messages asynchronously
*/
@Override
public SampleDTO retrieveSample() throws Exception {
return this.syncRetrieve();
}
/*
* This method must be overwritten to provide a publishing JmsTemplate
*/
@Override
public JmsTemplate getTemplatePublisher() {
return jmsTemplate;
}
/*
* This method must be overwritten to provide a publishing JmsTemplate
*/
@Override
public JmsTemplate getTemplateConsumer() {
return jmsTemplate;
}
}