jstrachan 02/05/02 11:42:08
Modified: messenger TODO.txt build.xml
Added: messenger/src/java/org/apache/commons/messenger/task
ProducerTask.java package.html
Log:
Added a jmsSend Ant Task for sending files to a JMS provider via Ant using ants
filesets. Still needs more work and testing but its almost there
Revision Changes Path
1.8 +1 -0 jakarta-commons-sandbox/messenger/TODO.txt
Index: TODO.txt
===================================================================
RCS file: /home/cvs/jakarta-commons-sandbox/messenger/TODO.txt,v
retrieving revision 1.7
retrieving revision 1.8
diff -u -r1.7 -r1.8
--- TODO.txt 26 Feb 2002 04:12:52 -0000 1.7
+++ TODO.txt 2 May 2002 18:42:08 -0000 1.8
@@ -1,6 +1,7 @@
Project To Do List
==================
+* add an option to the producer task to allow the messenger.xml to be specified
* Allow the replyTo destination and Messenger to be overridden
in the XML deployment configuration for Messagelets and Servlets.
1.26 +15 -1 jakarta-commons-sandbox/messenger/build.xml
Index: build.xml
===================================================================
RCS file: /home/cvs/jakarta-commons-sandbox/messenger/build.xml,v
retrieving revision 1.25
retrieving revision 1.26
diff -u -r1.25 -r1.26
--- build.xml 26 Feb 2002 04:20:57 -0000 1.25
+++ build.xml 2 May 2002 18:42:08 -0000 1.26
@@ -3,7 +3,7 @@
<!--
"messenger" component of the Jakarta Commons Subproject
- $Id: build.xml,v 1.25 2002/02/26 04:20:57 jstrachan Exp $
+ $Id: build.xml,v 1.26 2002/05/02 18:42:08 jstrachan Exp $
-->
@@ -467,6 +467,20 @@
<sysproperty key="org.apache.commons.messenger" value="${messenger.xml}"/>
</java>
+ </target>
+
+ <target name="demo.send" depends="compile.tests"
+ description="Sends a number of messages to a JMS destination using the jmsSend
task">
+
+ <taskdef
+ name="jmsSend"
+ classname="org.apache.commons.messenger.task.ProducerTask">
+ <classpath refid="jms.classpath"/>
+ </taskdef>
+
+ <jmsSend messengerName="queue" subject="jms/Queue">
+ <fileset dir="src/conf" excludes="**/*.txt"/>
+ </jmsSend>
</target>
1.1
jakarta-commons-sandbox/messenger/src/java/org/apache/commons/messenger/task/ProducerTask.java
Index: ProducerTask.java
===================================================================
/*
* Copyright (C) The Apache Software Foundation. All rights reserved.
*
* This software is published under the terms of the Apache Software License
* version 1.1, a copy of which has been included with this distribution in
* the LICENSE file.
*
* $Id: ProducerTask.java,v 1.1 2002/05/02 18:42:08 jstrachan Exp $
*/
package org.apache.commons.messenger.task;
import java.io.BufferedReader;
import java.io.FileReader;
import java.io.IOException;
import java.io.Reader;
import java.util.Iterator;
import java.util.Vector;
import javax.jms.Destination;
import javax.jms.JMSException;
import javax.jms.Message;
import javax.jms.TextMessage;
import org.apache.commons.messenger.Messenger;
import org.apache.commons.messenger.MessengerManager;
import org.apache.tools.ant.Task;
import org.apache.tools.ant.BuildException;
import org.apache.tools.ant.Project;
import org.apache.tools.ant.DirectoryScanner;
import org.apache.tools.ant.types.FileSet;
import org.apache.tools.ant.types.FilterSet;
import org.apache.tools.ant.util.FileUtils;
/**
* <p><code>ProducerTask</code> is an Ant task which will
* publish all of the given text files as a JMS Text Message
* using a given JMS Connection (Messenger) and a Destination
*
* @author <a href="mailto:[EMAIL PROTECTED]">James Strachan</a>
* @version $Revision: 1.1 $
*/
public class ProducerTask extends Task {
private Vector filesets = new Vector();
private Messenger messenger;
private String messengerName;
private Destination destination;
private String subject;
// Properties
//-------------------------------------------------------------------------
/**
* Adds a set of files (nested fileset attribute).
*/
public void addFileset(FileSet set) {
filesets.addElement(set);
}
public Messenger getMessenger() throws JMSException {
if ( messenger == null ) {
messenger = MessengerManager.get( getMessengerName() );
}
return messenger;
}
/** Sets the Messenger to be used */
public void setMessenger(Messenger messenger) {
this.messenger = messenger;
}
/** Getter for property messengerName.
* @return Value of property messengerName.
*/
public String getMessengerName() {
return messengerName;
}
/** Setter for property messengerName.
* @param messengerName New value of property messengerName.
*/
public void setMessengerName(String messengerName) {
this.messengerName = messengerName;
}
/** Getter for property destination.
* @return Value of property destination.
*/
public Destination getDestination() throws JMSException {
if ( destination == null ) {
destination = getMessenger().getDestination( getSubject() );
}
return destination;
}
/** Setter for property destination.
* @param destination New value of property destination.
*/
public void setDestination(Destination destination) {
this.destination = destination;
}
/** Getter for property subject.
* @return Value of property subject.
*/
public String getSubject() {
return subject;
}
/** Setter for property subject.
* @param subject New value of property subject.
*/
public void setSubject(String subject) {
this.subject = subject;
}
// Task interface
//-------------------------------------------------------------------------
/**
* Performs the copy operation.
*/
public void execute() throws BuildException {
try {
if (filesets.size() == 0) {
throw new BuildException("Specify at least one source fileset.",
location);
}
Messenger messenger = getMessenger();
if ( messenger == null ) {
throw new BuildException("Must specify a valid Messenger", location
);
}
Destination destination = getDestination();
if ( destination == null ) {
throw new BuildException("Must specify a valid JMS Destination",
location );
}
// deal with the filesets
for (Iterator iter = filesets.iterator(); iter.hasNext(); ) {
FileSet fs = (FileSet) iter.next();
DirectoryScanner ds = fs.getDirectoryScanner(project);
ds.scan();
String[] files = ds.getIncludedFiles();
for (int i = 0; i < files.length; i++) {
sendFile( files[i], messenger, destination );
}
}
}
catch (IOException e) {
throw new BuildException(e, location);
}
catch (JMSException e) {
throw new BuildException(e, location);
}
finally {
try {
// close the JMS connection to release any background threads
messenger.close();
}
catch (Exception e) {
// ignore close exceptions
}
}
}
/**
* Sends the contents of the given file to the given Destination
* using the given Messenger instance
*/
protected void sendFile(String file, Messenger messenger, Destination
destination) throws IOException, JMSException {
log( "Sending message to: " + destination + " from file: " + file );
String text = readText(
new BufferedReader( new FileReader( file ) )
);
TextMessage message = messenger.createTextMessage( text );
messenger.send( destination, message );
}
/**
* Reads the given text stream into a single string
*/
protected String readText(Reader in) throws IOException {
// read all the text into memory
StringBuffer buffer = new StringBuffer();
BufferedReader reader = new BufferedReader( in );
for ( String line; (line = reader.readLine()) != null; ) {
buffer.append( line );
buffer.append( '\n' );
}
reader.close();
return buffer.toString();
}
}
1.1
jakarta-commons-sandbox/messenger/src/java/org/apache/commons/messenger/task/package.html
Index: package.html
===================================================================
<html>
<head>
</head>
<body>
<p>A collection of Ant tasks for working with JMS.</p>
</body>
</html>
--
To unsubscribe, e-mail: <mailto:[EMAIL PROTECTED]>
For additional commands, e-mail: <mailto:[EMAIL PROTECTED]>