
net.leadware.messaging.jms.tools.message.publisher.impl.DefaultMessagePublisher Maven / Gradle / Ivy
Go to download
Show more of this group Show more artifacts with this name
Show all versions of messaging-tools-jms Show documentation
Show all versions of messaging-tools-jms Show documentation
Project Messaging Tools for JMS
The newest version!
package net.leadware.messaging.jms.tools.message.publisher.impl;
/*
* #%L
* messaging-tools
* $Id:$
* $HeadURL:$
* %%
* Copyright (C) 2013 - 2014 Leadware
* %%
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
* You may obtain a copy of the License at
*
* http://www.apache.org/licenses/LICENSE-2.0
*
* Unless required by applicable law or agreed to in writing, software
* distributed under the License is distributed on an "AS IS" BASIS,
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
* See the License for the specific language governing permissions and
* limitations under the License.
* #L%
*/
import java.io.Serializable;
import javax.jms.ConnectionFactory;
import javax.jms.Destination;
import javax.naming.Context;
import net.leadware.messaging.jms.tools.JmsTemplate;
import net.leadware.messaging.jms.tools.factory.ConnectionFactoryBuilderHelper;
import net.leadware.messaging.jms.tools.message.ApplicationMessage;
import net.leadware.messaging.jms.tools.message.configuration.Configuration;
import net.leadware.messaging.jms.tools.message.creator.impl.DefaultMessageCreator;
import net.leadware.messaging.jms.tools.message.publisher.MessagePublisher;
import org.apache.log4j.Logger;
/**
* Classe representant le producteur de message Applicatif par defaut
* @author Jean-Jacques ETUNE NGI
* @since 8 d?c. 2013 - 15:57:23
*/
public class DefaultMessagePublisher implements MessagePublisher {
/**
* Un logger
*/
private Logger log = Logger.getLogger(getClass());
/**
* Template JMS
*/
private JmsTemplate jmsTemplate;
/**
* Contexte JNDI
*/
private Context context;
/**
* Constructeur avec initialisation des parametres
* @param connectionFactory Fabrique de connection
*/
public DefaultMessagePublisher(ConnectionFactory connectionFactory) {
// Verification de la fabrique de connection
assert connectionFactory != null : "Veuillez renseigner la fabrique de connection";
// Construction du Template JMS
this.jmsTemplate = new JmsTemplate(connectionFactory);
}
/**
* Constructeur avec initialisation des parametres
* @param configuration Configuration
*/
public DefaultMessagePublisher(Configuration configuration) {
// Initialisation du contexte
this.context = ConnectionFactoryBuilderHelper.buildContext(configuration);
// Fabrique de connexion
ConnectionFactory connectionFactory = ConnectionFactoryBuilderHelper.buildConnectionfactory(configuration, this.context);
// Construction du template JMS
this.jmsTemplate = new JmsTemplate(connectionFactory);
}
/*
* (non-Javadoc)
* @see com.oci.ip.tools.jms.message.publisher.IPMessagePublisher#publish(com.oci.ip.tools.jms.message.IPMessage, java.lang.String)
*/
@Override
public void publish(ApplicationMessage extends Serializable> message, String destination) {
// On verifie que la destination n'est pas nulle
assert message != null : "DefaultMessagePublisher#publish - Veuillez renseigner le message Applicatif";
// On verifie que la destination n'est pas nulle
assert jmsTemplate != null : "DefaultMessagePublisher#publish - Veuillez renseigner le template JMS";
// On verifie que le contexte jndi n'est pas null
assert context != null : "DefaultMessagePublisher#publish - Veuillez renseigner le contexte JNDI";
// La destination JMS
Destination jmsDestination = null;
try {
// Obtention de la destination
jmsDestination = (Destination) context.lookup(destination);
} catch (Exception e) {
// Un log
log.debug("#publish - Impossible de charger la destination JMS [" + e.getMessage() + "]");
}
// Envoie du message
jmsTemplate.send(jmsDestination, getMessageCreator(message));
}
/* (non-Javadoc)
* @see com.oci.ip.tools.jms.message.publisher.IPMessagePublisher#publish(com.oci.ip.tools.jms.message.IPMessage, javax.jms.Destination)
*/
@Override
public void publish(ApplicationMessage extends Serializable> message, Destination destination) {
// On verifie que la destination n'est pas nulle
assert message != null : "DefaultMessagePublisher#publish - Veuillez renseigner le message Applicatif";
// On verifie que la destination n'est pas nulle
assert jmsTemplate != null : "DefaultMessagePublisher#publish - Veuillez renseigner le template JMS";
// Envoie du message
jmsTemplate.send(destination, getMessageCreator(message));
}
/**
* Methode d'obtention du Createur de message JMS a partir du message Applicatif
* @param message ApplicationMessage Applicatif
* @return Createur
*/
protected DefaultMessageCreator getMessageCreator(ApplicationMessage extends Serializable> message) {
// Instanciation du Createur de message
DefaultMessageCreator messageCreator = new DefaultMessageCreator(message);
// On retourne le message
return messageCreator;
}
/**
* Methode d'obtention du champ "jmsTemplate"
* @return Champ "jmsTemplate"
*/
public JmsTemplate getJmsTemplate() {
// Renvoi de la valeur du champ
return jmsTemplate;
}
/**
* Methode de mise a jour du champ "jmsTemplate"
* @param jmsTemplate Nouvelle valeur du champ "jmsTemplate"
*/
public void setJmsTemplate(JmsTemplate jmsTemplate) {
// Mise a jour de la valeur du champ
this.jmsTemplate = jmsTemplate;
}
/**
* Methode d'obtention du champ "context"
* @return Champ "context"
*/
public Context getContext() {
// Renvoi de la valeur du champ
return context;
}
/**
* Methode de mise a jour du champ "context"
* @param context Nouvelle valeur du champ "context"
*/
public void setContext(Context context) {
// Mise a jour de la valeur du champ
this.context = context;
}
}
© 2015 - 2025 Weber Informatics LLC | Privacy Policy