org.yestech.publish.service.JmsQueuePublishProducer.java Source code

Java tutorial

Introduction

Here is the source code for org.yestech.publish.service.JmsQueuePublishProducer.java

Source

/*
 * Copyright LGPL3
 * YES Technology Association
 * http://yestech.org
 *
 * http://www.opensource.org/licenses/lgpl-3.0.html
 */

/*
 *
 * Author:  Artie Copeland
 * Last Modified Date: $DateTime: $
 */
package org.yestech.publish.service;

import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import org.springframework.beans.factory.annotation.Required;
import org.springframework.jms.core.JmsTemplate;
import org.springframework.jms.core.MessageCreator;
import static org.yestech.lib.xml.XmlUtils.toXml;
import org.yestech.publish.IPublishConstant;
import org.yestech.publish.util.PublishUtils;
import static org.yestech.publish.util.PublishUtils.reset;
import org.yestech.publish.objectmodel.IArtifactMetaData;
import org.yestech.publish.objectmodel.IArtifact;
import org.yestech.publish.objectmodel.IFileArtifact;

import javax.jms.*;
import java.io.File;
import java.io.InputStream;
import java.net.URL;

/**
 * @author Artie Copeland
 * @version $Revision: $
 */
public class JmsQueuePublishProducer implements IPublishProducer {
    final private static Logger logger = LoggerFactory.getLogger(JmsQueuePublishProducer.class);

    private JmsTemplate jmsTemplate;
    private Queue queue;
    private String url;

    public JmsTemplate getJmsTemplate() {
        return jmsTemplate;
    }

    @Required
    public void setJmsTemplate(JmsTemplate jmsTemplate) {
        this.jmsTemplate = jmsTemplate;
    }

    public Queue getQueue() {
        return queue;
    }

    @Required
    public void setQueue(Queue queue) {
        this.queue = queue;
    }

    public String getUrl() {
        return url;
    }

    public void setUrl(String url) {
        this.url = url;
    }

    @Override
    public void send(final IArtifact artifact) {
        jmsTemplate.send(queue, new MessageCreator() {
            public Message createMessage(Session session) throws JMSException {
                ObjectMessage message = session.createObjectMessage();
                message.setObject(artifact);
                return message;
            }
        });
    }

    @Override
    public void send(final IFileArtifact artifact) {
        final File inputFile = artifact.getFile();
        if (inputFile == null) {
            throw new RuntimeException("file can't be null for file artifact");
        }
        reset(artifact);
        jmsTemplate.send(queue, new MessageCreator() {
            public Message createMessage(Session session) throws JMSException {
                ObjectMessage message = session.createObjectMessage();
                message.setObject(artifact);
                message.setStringProperty(IPublishConstant.FILE_NAME, inputFile.getName());
                message.setStringProperty(IPublishConstant.URL, url);
                return message;
            }
        });
    }
}