[jboss-svn-commits] JBL Code SVN: r5373 - in labs/jbossesb/trunk/product/core/common: src/org/jboss/soa/esb/notification tests/src/org/jboss/soa/esb/notification
jboss-svn-commits at lists.jboss.org
jboss-svn-commits at lists.jboss.org
Tue Aug 1 05:11:49 EDT 2006
Author: tfennelly
Date: 2006-08-01 05:11:39 -0400 (Tue, 01 Aug 2006)
New Revision: 5373
Added:
labs/jbossesb/trunk/product/core/common/tests/src/org/jboss/soa/esb/notification/NotifyFilesUnitTest.java
labs/jbossesb/trunk/product/core/common/tests/src/org/jboss/soa/esb/notification/NotifyQueuesUnitTest.java
Modified:
labs/jbossesb/trunk/product/core/common/src/org/jboss/soa/esb/notification/NotifyEmail.java
labs/jbossesb/trunk/product/core/common/src/org/jboss/soa/esb/notification/NotifyFiles.java
labs/jbossesb/trunk/product/core/common/src/org/jboss/soa/esb/notification/NotifyJMS.java
labs/jbossesb/trunk/product/core/common/src/org/jboss/soa/esb/notification/NotifyQueues.java
labs/jbossesb/trunk/product/core/common/src/org/jboss/soa/esb/notification/NotifyTopics.java
Log:
added more unit tests and fixed a few bugs
Modified: labs/jbossesb/trunk/product/core/common/src/org/jboss/soa/esb/notification/NotifyEmail.java
===================================================================
--- labs/jbossesb/trunk/product/core/common/src/org/jboss/soa/esb/notification/NotifyEmail.java 2006-07-31 22:05:07 UTC (rev 5372)
+++ labs/jbossesb/trunk/product/core/common/src/org/jboss/soa/esb/notification/NotifyEmail.java 2006-08-01 09:11:39 UTC (rev 5373)
@@ -40,19 +40,21 @@
*
* @version 1.0
*/
-public class NotifyEmail extends NotificationTarget
-{
- /**
- * Instantiate a NotifyEmail object using the information contained in <arg 1>
- * @param p_oP DomElement - See attributes and structure needed for the
- * EsbEmail(DomElement) constructor - The MESSAGE attribute will be filled
- * in at sendNotification(Serializable) time
- * @throws Exception
- * @see EsbEmail#EsbEmail(DomElement)
- * @see NotifyEmail#sendNotification(Serializable)
- */
- public NotifyEmail(DomElement p_oP) throws Exception
- { super (p_oP);
+public class NotifyEmail extends NotificationTarget {
+ /**
+ * Instantiate a NotifyEmail object using the information contained in
+ * <arg 1>
+ *
+ * @param p_oP
+ * DomElement - See attributes and structure needed for the
+ * EsbEmail(DomElement) constructor - The MESSAGE attribute will
+ * be filled in at sendNotification(Serializable) time
+ * @throws Exception
+ * @see EsbEmail#EsbEmail(DomElement)
+ * @see NotifyEmail#sendNotification(Serializable)
+ */
+ public NotifyEmail(DomElement p_oP) throws Exception {
+ super(p_oP);
String sAtt = (String) m_oParms.getAttr(EsbEmail.FROM);
if (null != sAtt)
@@ -60,32 +62,36 @@
InternetAddress.parse(m_oParms.getAttr(EsbEmail.SENDTO));
- sAtt = (String)m_oParms.getAttr(EsbEmail.COPYTO);
- if (null != sAtt) InternetAddress.parse(sAtt);
- } //__________________________________
- /**
- * Send an Email using EsbEmail() using p_o.toString() to fill in the
- * message text
- * @param p_o Object - This object's toString() method will supply contents
- * of mail message
- */
- public void sendNotification(Serializable p_o)
- { try
- { DomElement oP = m_oParms.cloneObj();
- String sMsg = oP.getAttr(EsbEmail.MESSAGE);
- sMsg = ((null==sMsg)?p_o.toString():sMsg+"\n")+p_o.toString();
- // HB added line for debugging
- //System.out.println("Sending Email Notification ->" +sMsg );
+ sAtt = (String) m_oParms.getAttr(EsbEmail.COPYTO);
+ if (null != sAtt)
+ InternetAddress.parse(sAtt);
+ } // __________________________________
- oP.setAttr(EsbEmail.MESSAGE, sMsg);
- EsbEmail esbMail = new EsbEmail(oP);
- esbMail.sendMessage();
- }
- catch (Exception e)
- {
- EsbUtil.getDefaultLogger(this.getClass()).error("Send Mail Failed", e);
- e.printStackTrace();
- }
- } // __________________________________
+ /**
+ * Send an Email using EsbEmail() using p_o.toString() to fill in the
+ * message text
+ *
+ * @param p_o
+ * Object - This object's toString() method will supply contents
+ * of mail message
+ */
+ public void sendNotification(Serializable p_o) {
+ try {
+ DomElement oP = m_oParms.cloneObj();
+ String sMsg = oP.getAttr(EsbEmail.MESSAGE);
+ sMsg = ((null == sMsg) ? p_o.toString() : sMsg + "\n")
+ + p_o.toString();
+ // HB added line for debugging
+ // System.out.println("Sending Email Notification ->" +sMsg );
+ oP.setAttr(EsbEmail.MESSAGE, sMsg);
+ EsbEmail esbMail = new EsbEmail(oP);
+ esbMail.sendMessage();
+ } catch (Exception e) {
+ EsbUtil.getDefaultLogger(this.getClass()).error("Send Mail Failed",
+ e);
+ e.printStackTrace();
+ }
+ } // __________________________________
+
} // ____________________________________________________________________________
Modified: labs/jbossesb/trunk/product/core/common/src/org/jboss/soa/esb/notification/NotifyFiles.java
===================================================================
--- labs/jbossesb/trunk/product/core/common/src/org/jboss/soa/esb/notification/NotifyFiles.java 2006-07-31 22:05:07 UTC (rev 5372)
+++ labs/jbossesb/trunk/product/core/common/src/org/jboss/soa/esb/notification/NotifyFiles.java 2006-08-01 09:11:39 UTC (rev 5373)
@@ -1,24 +1,24 @@
/*
-* JBoss, Home of Professional Open Source
-* Copyright 2006, JBoss Inc., and individual contributors as indicated
-* by the @authors tag. See the copyright.txt in the distribution for a
-* full listing of individual contributors.
-*
-* This is free software; you can redistribute it and/or modify it
-* under the terms of the GNU Lesser General Public License as
-* published by the Free Software Foundation; either version 2.1 of
-* the License, or (at your option) any later version.
-*
-* This software is distributed in the hope that it will be useful,
-* but WITHOUT ANY WARRANTY; without even the implied warranty of
-* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
-* Lesser General Public License for more details.
-*
-* You should have received a copy of the GNU Lesser General Public
-* License along with this software; if not, write to the Free
-* Software Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA
-* 02110-1301 USA, or see the FSF site: http://www.fsf.org.
-*/
+ * JBoss, Home of Professional Open Source
+ * Copyright 2006, JBoss Inc., and individual contributors as indicated
+ * by the @authors tag. See the copyright.txt in the distribution for a
+ * full listing of individual contributors.
+ *
+ * This is free software; you can redistribute it and/or modify it
+ * under the terms of the GNU Lesser General Public License as
+ * published by the Free Software Foundation; either version 2.1 of
+ * the License, or (at your option) any later version.
+ *
+ * This software is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
+ * Lesser General Public License for more details.
+ *
+ * You should have received a copy of the GNU Lesser General Public
+ * License along with this software; if not, write to the Free
+ * Software Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA
+ * 02110-1301 USA, or see the FSF site: http://www.fsf.org.
+ */
package org.jboss.soa.esb.notification;
@@ -26,119 +26,157 @@
import java.io.*;
import java.net.*;
+
/**
* Write the notification contents into a list of files specified in the
- * constructor time parameters
- * <p>Description: The constructor searches for all child elements of the
- * DomElement argument having "file" as element name, that will be used to
- * store (or append) the contents of the argument to the sendNotification(Object)
+ * constructor time parameters.
+ * <p>
+ * Description: The constructor searches for all child elements of the
+ * DomElement argument having "file" as element name, that will be used to store
+ * (or append) the contents of the argument to the sendNotification(Object)
* method, to each and every one of the files contained in the list
* </p>
- * <p>Author: Heuristica - Buenos Aires - Argentina</p>
+ * <p>
+ * Author: Heuristica - Buenos Aires - Argentina
+ * </p>
+ *
* @version 1.0
*/
-public class NotifyFiles extends NotificationTarget
-{
- /**
- * Mnemonic for the child element name that hold the files to write ("file")
- */
- public static final String CHILD_FILE = "file";
- /**
- * Attribute name that will be interpreted as the URI of the file to write to
- */
- public static final String ATT_URI = "URI";
- /**
- * Attribute name of indicator to append to an existing file
- * @see Boolean#valueOf(String)
- */
- public static final String ATT_APPEND = "append";
- /**
- * The File[] that holds the output file list
- */
- protected File[] m_oaOutF;
- /**
- * Each entry in this array corresponds to the same index entry in the m_oaOutF array
- */
- protected boolean[] m_baAppend;
+public class NotifyFiles extends NotificationTarget {
+ /**
+ * Mnemonic for the child element name that hold the files to write ("file")
+ */
+ public static final String CHILD_FILE = "file";
- /**
- * Instantiate a NotifyFiles object according to contents of <arg 1>
- * @param p_oP DomElement - Should contain a nonempty set of child elements with
- * elementName="file". Each child element must have a "URI" attribute and
- * optionally a "append" element
- * @throws Exception
- */
- public NotifyFiles(DomElement p_oP) throws Exception
- { super (p_oP);
- setFiles(p_oP.getElementChildren(CHILD_FILE));
+ /**
+ * Attribute name that will be interpreted as the URI of the file to write
+ * to
+ */
+ public static final String ATT_URI = "URI";
- } //__________________________________
+ /**
+ * Attribute name of indicator to append to an existing file
+ *
+ * @see Boolean#valueOf(String)
+ */
+ public static final String ATT_APPEND = "append";
- /**
- * Sets the value of m_oaOutF[] and m_baAppend[] to contents
- * of each element of the input argument
- * @param p_oaP DomElement[] - Each entry must have a "URI" attribute, and can
- * have an optional "append" attribute
- * @throws Exception - invoke Exception.getMessage() at runtime for details
- * @see DomElement#getAttr(String)
- */
- protected void setFiles(DomElement[] p_oaP) throws Exception
- { m_oaOutF = new File[p_oaP.length];
- m_baAppend=new boolean[m_oaOutF.length];
- for (int i1=0; i1<p_oaP.length; i1++)
- { String sAtt = p_oaP[i1].getAttr(ATT_URI);
- if (null==sAtt) throw new Exception ("Missing file URI");
- m_oaOutF[i1] = new File(new URI(sAtt));
- sAtt = p_oaP[i1].getAttr(ATT_APPEND);
- Boolean oB = Boolean.valueOf(sAtt);
- m_baAppend[i1] = (null==sAtt)?false : oB.booleanValue();
- }
- } //__________________________________
- /**
- * Writes the result of p_o into each one of the File objects
- * contained in the m_oaOutF array
- * @param p_o Object - This object's toString() results will be written to
- * (appended to) each one of the files in m_oaOutF
- * @see NotifyFiles#setFiles(DomElement[])
- * @see NotifyFiles#m_oaOutF
- */
- public void sendNotification(Serializable p_o)
- {
- FileOutputStream OS = null;
- int iCurr = 0;
- for (File oCurr : m_oaOutF)
- { try
- {
- OS = new FileOutputStream(oCurr,m_baAppend[iCurr++]);
- if (p_o instanceof String)
- stringNotification(OS,(String)p_o);
- else
- objectNotification(OS,p_o);
- }
- catch (Exception e) { /* We do nothing here for the time being */ }
- finally
- { try { OS.close(); }
- catch (Exception eCl) {/* Unable to Close - What could we do */ }
- }
- }
- } //__________________________________
+ /**
+ * The NotificationFile[] that holds the output file list.
+ */
+ protected NotificationFile[] m_oaOutF;
- private void stringNotification(FileOutputStream p_oF,String p_s)
- { try
- {
- p_oF.write(p_s.getBytes());
- if (!p_s.endsWith("\n"))
- p_oF.write("\n".getBytes());
- }
- catch (Exception e) { /* We do nothing here for the time being */ }
- } //__________________________________
+ /**
+ * Instantiate a NotifyFiles object according to contents of <arg 1>
+ *
+ * @param p_oP
+ * DomElement - Should contain a nonempty set of child elements
+ * with elementName="file". Each child element must have a "URI"
+ * attribute and optionally a "append" element
+ * @throws Exception
+ */
+ public NotifyFiles(DomElement p_oP) throws Exception {
+ super(p_oP);
+ setFiles(p_oP.getElementChildren(CHILD_FILE));
- private void objectNotification(FileOutputStream p_oF,Object p_o)
- { try
- { ObjectOutputStream OS = new ObjectOutputStream(p_oF);
- OS.writeObject(p_o);
- }
- catch (Exception e) { /* We do nothing here for the time being */ }
- } //__________________________________
+ } // __________________________________
-} //____________________________________________________________________________
+ /**
+ * Sets the value of m_oaOutF[] and m_baAppend[] to contents of each element
+ * of the input argument
+ *
+ * @param p_oaP
+ * DomElement[] - Each entry must have a "URI" attribute, and can
+ * have an optional "append" attribute
+ * @throws Exception -
+ * invoke Exception.getMessage() at runtime for details
+ * @see DomElement#getAttr(String)
+ */
+ protected void setFiles(DomElement[] p_oaP) throws Exception {
+ m_oaOutF = new NotificationFile[p_oaP.length];
+
+ for (int i = 0; i < p_oaP.length; i++) {
+ String fileURI = p_oaP[i].getAttr(ATT_URI);
+ String append = p_oaP[i].getAttr(ATT_APPEND);
+
+ if (null == fileURI) {
+ throw new IllegalArgumentException("Bad File Notification Configuration: Missing file URI attribute.");
+ }
+ m_oaOutF[i] = new NotificationFile(new URI(fileURI), Boolean.valueOf(append));
+
+ // Make sure the parent folder exists...
+ if(!m_oaOutF[i].getParentFile().exists()) {
+ throw new IllegalArgumentException("Bad File Notification Configuration: Parent folder for file [" + m_oaOutF[i].getAbsolutePath() + "] doesn't exist.");
+ }
+ }
+ } // __________________________________
+
+ /**
+ * Writes the result of p_o into each one of the File objects contained in
+ * the m_oaOutF array
+ *
+ * @param p_o
+ * Object - This object's toString() results will be written to
+ * (appended to) each one of the files in m_oaOutF
+ * @see NotifyFiles#setFiles(DomElement[])
+ * @see NotifyFiles#m_oaOutF
+ */
+ public void sendNotification(Serializable p_o) {
+ FileOutputStream fileOutStream = null;
+ int iCurr = 0;
+
+ for (NotificationFile notificationFile : m_oaOutF) {
+ try {
+ fileOutStream = new FileOutputStream(notificationFile, notificationFile.append);
+ if (p_o instanceof String) {
+ stringNotification(fileOutStream, (String) p_o);
+ } else {
+ objectNotification(fileOutStream, p_o);
+ }
+ } catch (Exception e) { /* We do nothing here for the time being */
+ } finally {
+ try {
+ fileOutStream.close();
+ } catch (Exception eCl) {/*
+ * Unable to Close - What could we
+ * do
+ */
+ }
+ }
+ }
+ } // __________________________________
+
+ private void stringNotification(FileOutputStream p_oF, String p_s) {
+ try {
+ p_oF.write(p_s.getBytes());
+ if (!p_s.endsWith("\n"))
+ p_oF.write("\n".getBytes());
+ } catch (Exception e) { /* We do nothing here for the time being */
+ }
+ } // __________________________________
+
+ private void objectNotification(FileOutputStream p_oF, Object p_o) {
+ try {
+ ObjectOutputStream OS = new ObjectOutputStream(p_oF);
+ OS.writeObject(p_o);
+ } catch (Exception e) { /* We do nothing here for the time being */
+ }
+ } // __________________________________
+
+ /**
+ * Notification File.
+ * <p/>
+ * Simply adds the "append" property to the file.
+ * @author <a href="mailto:tom.fennelly at jboss.com">tom.fennelly at jboss.com</a>
+ */
+ private class NotificationFile extends File {
+
+ private static final long serialVersionUID = 1L;
+ private boolean append = false;
+
+ private NotificationFile(URI fileURI, boolean append) {
+ super(fileURI);
+ this.append = append;
+ }
+ }
+} // ____________________________________________________________________________
Modified: labs/jbossesb/trunk/product/core/common/src/org/jboss/soa/esb/notification/NotifyJMS.java
===================================================================
--- labs/jbossesb/trunk/product/core/common/src/org/jboss/soa/esb/notification/NotifyJMS.java 2006-07-31 22:05:07 UTC (rev 5372)
+++ labs/jbossesb/trunk/product/core/common/src/org/jboss/soa/esb/notification/NotifyJMS.java 2006-08-01 09:11:39 UTC (rev 5373)
@@ -1,26 +1,25 @@
/*
-* JBoss, Home of Professional Open Source
-* Copyright 2006, JBoss Inc., and individual contributors as indicated
-* by the @authors tag. See the copyright.txt in the distribution for a
-* full listing of individual contributors.
-*
-* This is free software; you can redistribute it and/or modify it
-* under the terms of the GNU Lesser General Public License as
-* published by the Free Software Foundation; either version 2.1 of
-* the License, or (at your option) any later version.
-*
-* This software is distributed in the hope that it will be useful,
-* but WITHOUT ANY WARRANTY; without even the implied warranty of
-* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
-* Lesser General Public License for more details.
-*
-* You should have received a copy of the GNU Lesser General Public
-* License along with this software; if not, write to the Free
-* Software Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA
-* 02110-1301 USA, or see the FSF site: http://www.fsf.org.
-*/
+ * JBoss, Home of Professional Open Source
+ * Copyright 2006, JBoss Inc., and individual contributors as indicated
+ * by the @authors tag. See the copyright.txt in the distribution for a
+ * full listing of individual contributors.
+ *
+ * This is free software; you can redistribute it and/or modify it
+ * under the terms of the GNU Lesser General Public License as
+ * published by the Free Software Foundation; either version 2.1 of
+ * the License, or (at your option) any later version.
+ *
+ * This software is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
+ * Lesser General Public License for more details.
+ *
+ * You should have received a copy of the GNU Lesser General Public
+ * License along with this software; if not, write to the Free
+ * Software Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA
+ * 02110-1301 USA, or see the FSF site: http://www.fsf.org.
+ */
-
package org.jboss.soa.esb.notification;
import java.io.Serializable;
@@ -29,121 +28,150 @@
import javax.naming.*;
import org.jboss.soa.esb.helpers.*;
+
/**
* Abstract class that defines the behaviour of NotifyQueues and NotifyTopics
* (and in fact any other javax.jms.Destination object), and provides common
* methods to derived classes
- * <p>Description: </p>
- * <p>Author: Heuristica - Buenos Aires - Argentina</p>
+ * <p>
+ * Description:
+ * </p>
+ * <p>
+ * Author: Heuristica - Buenos Aires - Argentina
+ * </p>
+ *
* @version 1.0
*/
-public abstract class NotifyJMS extends NotificationTarget
-{
- /**
- * Abstract method - All classes that extend NotifyJMS must implement it
- * according to their own javax.jms.Destination needs (Queue/Topic)
- * @param p_oMsg Message
- */
- protected abstract void sendToAll(Message p_oMsg);
- /**
- * Element name mnemonic to search for child elements in the DomElement
- * at constructor time, that will hold a "name" "value" pair to be
- * included in the JMS message header
- */
- public static final String CHILD_MSG_PROP = "messageProp";
- /**
- * Attribute name mnemonic for the name of the message property to
- * fill with contents of the "value" aattribute
- */
- public static final String ATT_PROP_NAME = "name";
- /**
- * Attribute name mnemonic for the value to assign to the corresponding
- * message property
- */
- public static final String ATT_PROP_VALUE = "value";
+public abstract class NotifyJMS extends NotificationTarget {
+ /**
+ * Abstract method - All classes that extend NotifyJMS must implement it
+ * according to their own javax.jms.Destination needs (Queue/Topic)
+ *
+ * @param p_oMsg
+ * Message
+ */
+ protected abstract void sendToAll(Message p_oMsg);
- /**
- * Attribute name mnemonic for the att that will hold the JNDI name
- * of the destination javax.jms.Destination object
- */
- public static final String ATT_DEST_NAME = "jndiName";
+ /**
+ * Element name mnemonic to search for child elements in the DomElement at
+ * constructor time, that will hold a "name" "value" pair to be included in
+ * the JMS message header
+ */
+ public static final String CHILD_MSG_PROP = "messageProp";
- /**
- * This object holds the JNDI naming context that will be used to obtain
- * a JMS destination (javax.jms.Destination) to send/publish the notification
- * at sendNotification() time
- */
- protected Context m_oCtx;
- private Properties m_oProps = new Properties();
+ /**
+ * Attribute name mnemonic for the name of the message property to fill with
+ * contents of the "value" aattribute
+ */
+ public static final String ATT_PROP_NAME = "name";
- /**
- * The javax.jms.Connection instance used to talk to JMS
- */
- protected Connection m_oConn;
- /**
- * The javax.jms.Session instance used to talk to JMS
- */
- protected Session m_oSess;
- /**
- * Array with an instance of javax.jms.MessageProducer on each entry that
- * will be used to send the notification at sendNotification() time
- */
- protected MessageProducer[] m_oaMssProd;
- /**
- * Constructor that will be called by child classes to perform initialization
- * tasks that are common to all derived classes
- * @param p_oP DomElement
- * <p> Will contain a variable number of "messageProp" child elements that will
- * be added to messages sent to
- * </p>
- * @throws Exception
- */
- protected NotifyJMS(DomElement p_oP) throws Exception
- { super (p_oP);
+ /**
+ * Attribute name mnemonic for the value to assign to the corresponding
+ * message property
+ */
+ public static final String ATT_PROP_VALUE = "value";
- DomElement[] oaMsgP = p_oP.getElementChildren(CHILD_MSG_PROP);
- for (int i1=0; i1<oaMsgP.length; i1++)
- { String sKey = oaMsgP[i1].getAttr(ATT_PROP_NAME);
- if (null==sKey) continue;
- String sVal = oaMsgP[i1].getAttr(ATT_PROP_VALUE);
- if (null==sVal) continue;
+ /**
+ * Attribute name mnemonic for the att that will hold the JNDI name of the
+ * destination javax.jms.Destination object
+ */
+ public static final String ATT_DEST_NAME = "jndiName";
- m_oProps.setProperty(sKey.trim(),sVal);
- }
+ /**
+ * This object holds the JNDI naming context that will be used to obtain a
+ * JMS destination (javax.jms.Destination) to send/publish the notification
+ * at sendNotification() time
+ */
+ protected Context m_oCtx;
- m_oCtx = new InitialContext();
+ private Properties m_oProps = new Properties();
- } //__________________________________
- /**
- * Performs an orderly release of all JMS resources utilized - Well behaved
- * developers should always call this method before unreferencing this object
- */
- public void release()
- { if (null!=m_oSess)
- try { m_oSess.close(); } catch (Exception e1) {}
- if (null!=m_oConn)
- try { m_oConn.close(); } catch (Exception e2) {}
- } //__________________________________
- /**
- * Send a JMS message using p_o to fill in the message content
- * and the list of message properties that will be added to the JMS
- * message header fields
- * @param p_o Object - This object or thie object's toString() method
- * will supply contents of JMS message
- * @see NotifyJMS#CHILD_MSG_PROP
- */
- public void sendNotification(Serializable p_o) throws Exception
- { Message oMsg = null;
- if (p_o instanceof String)
- oMsg = m_oSess.createTextMessage(p_o.toString());
- else
- oMsg = m_oSess.createObjectMessage((Serializable)p_o);
- for (Iterator II=m_oProps.keySet().iterator(); II.hasNext(); )
- { String sKey = (String)II.next();
- String sVal = m_oProps.getProperty(sKey);
- oMsg.setStringProperty(sKey, sVal);
- }
- sendToAll(oMsg);
- } //__________________________________
+ /**
+ * The javax.jms.Connection instance used to talk to JMS
+ */
+ protected Connection m_oConn;
-} //____________________________________________________________________________
+ /**
+ * The javax.jms.Session instance used to talk to JMS
+ */
+ protected Session m_oSess;
+
+ /**
+ * Array with an instance of javax.jms.MessageProducer on each entry that
+ * will be used to send the notification at sendNotification() time
+ */
+ protected MessageProducer[] m_oaMssProd;
+
+ /**
+ * Constructor that will be called by child classes to perform
+ * initialization tasks that are common to all derived classes
+ *
+ * @param p_oP
+ * DomElement
+ * <p>
+ * Will contain a variable number of "messageProp" child elements
+ * that will be added to messages sent to
+ * </p>
+ * @throws Exception
+ */
+ protected NotifyJMS(DomElement p_oP) throws Exception {
+ super(p_oP);
+
+ DomElement[] oaMsgP = p_oP.getElementChildren(CHILD_MSG_PROP);
+ for (int i1 = 0; i1 < oaMsgP.length; i1++) {
+ String sKey = oaMsgP[i1].getAttr(ATT_PROP_NAME);
+ if (null == sKey)
+ continue;
+ String sVal = oaMsgP[i1].getAttr(ATT_PROP_VALUE);
+ if (null == sVal)
+ continue;
+
+ m_oProps.setProperty(sKey.trim(), sVal);
+ }
+
+ m_oCtx = new InitialContext();
+
+ } // __________________________________
+
+ /**
+ * Performs an orderly release of all JMS resources utilized - Well behaved
+ * developers should always call this method before unreferencing this
+ * object
+ */
+ public void release() {
+ if (null != m_oSess)
+ try {
+ m_oSess.close();
+ } catch (Exception e1) {
+ }
+ if (null != m_oConn)
+ try {
+ m_oConn.close();
+ } catch (Exception e2) {
+ }
+ } // __________________________________
+
+ /**
+ * Send a JMS message using p_o to fill in the message content and the list
+ * of message properties that will be added to the JMS message header fields
+ *
+ * @param p_o
+ * Object - This object or thie object's toString() method will
+ * supply contents of JMS message
+ * @see NotifyJMS#CHILD_MSG_PROP
+ */
+ public void sendNotification(Serializable p_o) throws Exception {
+ Message oMsg = null;
+ if (p_o instanceof String)
+ oMsg = m_oSess.createTextMessage(p_o.toString());
+ else
+ oMsg = m_oSess.createObjectMessage((Serializable) p_o);
+ for (Iterator II = m_oProps.keySet().iterator(); II.hasNext();) {
+ String sKey = (String) II.next();
+ String sVal = m_oProps.getProperty(sKey);
+ oMsg.setStringProperty(sKey, sVal);
+ }
+ sendToAll(oMsg);
+ } // __________________________________
+
+} // ____________________________________________________________________________
Modified: labs/jbossesb/trunk/product/core/common/src/org/jboss/soa/esb/notification/NotifyQueues.java
===================================================================
--- labs/jbossesb/trunk/product/core/common/src/org/jboss/soa/esb/notification/NotifyQueues.java 2006-07-31 22:05:07 UTC (rev 5372)
+++ labs/jbossesb/trunk/product/core/common/src/org/jboss/soa/esb/notification/NotifyQueues.java 2006-08-01 09:11:39 UTC (rev 5373)
@@ -1,81 +1,99 @@
/*
-* JBoss, Home of Professional Open Source
-* Copyright 2006, JBoss Inc., and individual contributors as indicated
-* by the @authors tag. See the copyright.txt in the distribution for a
-* full listing of individual contributors.
-*
-* This is free software; you can redistribute it and/or modify it
-* under the terms of the GNU Lesser General Public License as
-* published by the Free Software Foundation; either version 2.1 of
-* the License, or (at your option) any later version.
-*
-* This software is distributed in the hope that it will be useful,
-* but WITHOUT ANY WARRANTY; without even the implied warranty of
-* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
-* Lesser General Public License for more details.
-*
-* You should have received a copy of the GNU Lesser General Public
-* License along with this software; if not, write to the Free
-* Software Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA
-* 02110-1301 USA, or see the FSF site: http://www.fsf.org.
-*/
+ * JBoss, Home of Professional Open Source
+ * Copyright 2006, JBoss Inc., and individual contributors as indicated
+ * by the @authors tag. See the copyright.txt in the distribution for a
+ * full listing of individual contributors.
+ *
+ * This is free software; you can redistribute it and/or modify it
+ * under the terms of the GNU Lesser General Public License as
+ * published by the Free Software Foundation; either version 2.1 of
+ * the License, or (at your option) any later version.
+ *
+ * This software is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
+ * Lesser General Public License for more details.
+ *
+ * You should have received a copy of the GNU Lesser General Public
+ * License along with this software; if not, write to the Free
+ * Software Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA
+ * 02110-1301 USA, or see the FSF site: http://www.fsf.org.
+ */
package org.jboss.soa.esb.notification;
import javax.jms.*;
+import javax.naming.NamingException;
-import org.jboss.soa.esb.helpers.DomElement;;
+import org.jboss.soa.esb.helpers.DomElement;
+;
+
/**
* This class that implements abstract methods defined in it's superclass
- * <p>Description: </p>
- * <p>Author: Heuristica - Buenos Aires - Argentina</p>
+ * <p>
+ * Description:
+ * </p>
+ * <p>
+ * Author: Heuristica - Buenos Aires - Argentina
+ * </p>
+ *
* @version 1.0
*/
-public class NotifyQueues extends NotifyJMS
-{
- /**
- * Element name mnemonic to search for child elements in the DomElement
- * at constructor time, that will hold a "jndiName" attribute specifying
- * the value to look up in the JNDI context in order to obtain a queue
- * @see NotifyJMS#ATT_DEST_NAME
- */
- public static final String CHILD_QUEUE = "queue";
+public class NotifyQueues extends NotifyJMS {
+ /**
+ * Element name mnemonic to search for child elements in the DomElement at
+ * constructor time, that will hold a "jndiName" attribute specifying the
+ * value to look up in the JNDI context in order to obtain a queue
+ *
+ * @see NotifyJMS#ATT_DEST_NAME
+ */
+ public static final String CHILD_QUEUE = "queue";
+ public NotifyQueues(DomElement p_oP) throws Exception {
+ super(p_oP);
+ setQueues(p_oP.getElementChildren(CHILD_QUEUE));
+ } // __________________________________
- public NotifyQueues(DomElement p_oP) throws Exception
- { super (p_oP);
- setQueues(p_oP.getElementChildren(CHILD_QUEUE));
- } //__________________________________
+ protected void setQueues(DomElement[] p_oaP) throws Exception {
+ QueueConnectionFactory qcf = lookupQueueConnectionFactory();
+ QueueConnection oQconn = qcf.createQueueConnection();
+ QueueSession oQsess = oQconn.createQueueSession(false,
+ QueueSession.AUTO_ACKNOWLEDGE);
- protected void setQueues(DomElement[] p_oaP) throws Exception
- {
- QueueConnectionFactory qcf = (QueueConnectionFactory)
- m_oCtx.lookup("ConnectionFactory");
- QueueConnection oQconn = qcf.createQueueConnection();
- QueueSession oQsess = oQconn.createQueueSession(false
- ,QueueSession.AUTO_ACKNOWLEDGE);
+ m_oaMssProd = new MessageProducer[p_oaP.length];
+ for (int i1 = 0; i1 < p_oaP.length; i1++) {
+ String sAtt = p_oaP[i1].getAttr(ATT_DEST_NAME);
+ if (null == sAtt)
+ throw new Exception("Missing queue jndiName");
+ Queue oQ = (Queue) m_oCtx.lookup(sAtt);
+ m_oaMssProd[i1] = oQsess.createSender(oQ);
+ }
+ m_oConn = oQconn;
+ m_oSess = oQsess;
+ // m_oConn.start(); Only for incoming messages ???
+ } // __________________________________
- m_oaMssProd = new MessageProducer[p_oaP.length];
- for (int i1=0; i1<p_oaP.length; i1++)
- { String sAtt = p_oaP[i1].getAttr(ATT_DEST_NAME);
- if (null==sAtt) throw new Exception ("Missing queue jndiName");
- Queue oQ = (Queue)m_oCtx.lookup(sAtt);
- m_oaMssProd[i1] = oQsess.createSender(oQ);
- }
+ /**
+ * Get the {@link QueueConnectionFactory} to be used for this instance.
+ * <p/>
+ * Can be overridden for testing.
+ * @return The QueueConnectionFactory fro the JNDI context.
+ * @throws NamingException
+ */
+ protected QueueConnectionFactory lookupQueueConnectionFactory() throws NamingException {
+ return (QueueConnectionFactory) m_oCtx.lookup("ConnectionFactory");
+ }
- m_oConn = oQconn;
- m_oSess = oQsess;
-// m_oConn.start(); Only for incoming messages ???
- } //__________________________________
+ protected void sendToAll(Message p_oMsg) {
+ for (int i1 = 0; i1 < m_oaMssProd.length; i1++) {
+ QueueSender oCurr = (QueueSender) m_oaMssProd[i1];
+ try {
+ oCurr.send(p_oMsg);
+ } catch (Exception e) {
+ }
+ }
+ } // __________________________________
- protected void sendToAll(Message p_oMsg)
- { for (int i1=0; i1<m_oaMssProd.length;i1++)
- { QueueSender oCurr = (QueueSender)m_oaMssProd[i1];
- try { oCurr.send(p_oMsg); }
- catch (Exception e) {}
- }
- } //__________________________________
-
-} //____________________________________________________________________________
+} // ____________________________________________________________________________
Modified: labs/jbossesb/trunk/product/core/common/src/org/jboss/soa/esb/notification/NotifyTopics.java
===================================================================
--- labs/jbossesb/trunk/product/core/common/src/org/jboss/soa/esb/notification/NotifyTopics.java 2006-07-31 22:05:07 UTC (rev 5372)
+++ labs/jbossesb/trunk/product/core/common/src/org/jboss/soa/esb/notification/NotifyTopics.java 2006-08-01 09:11:39 UTC (rev 5373)
@@ -1,24 +1,24 @@
/*
-* JBoss, Home of Professional Open Source
-* Copyright 2006, JBoss Inc., and individual contributors as indicated
-* by the @authors tag. See the copyright.txt in the distribution for a
-* full listing of individual contributors.
-*
-* This is free software; you can redistribute it and/or modify it
-* under the terms of the GNU Lesser General Public License as
-* published by the Free Software Foundation; either version 2.1 of
-* the License, or (at your option) any later version.
-*
-* This software is distributed in the hope that it will be useful,
-* but WITHOUT ANY WARRANTY; without even the implied warranty of
-* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
-* Lesser General Public License for more details.
-*
-* You should have received a copy of the GNU Lesser General Public
-* License along with this software; if not, write to the Free
-* Software Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA
-* 02110-1301 USA, or see the FSF site: http://www.fsf.org.
-*/
+ * JBoss, Home of Professional Open Source
+ * Copyright 2006, JBoss Inc., and individual contributors as indicated
+ * by the @authors tag. See the copyright.txt in the distribution for a
+ * full listing of individual contributors.
+ *
+ * This is free software; you can redistribute it and/or modify it
+ * under the terms of the GNU Lesser General Public License as
+ * published by the Free Software Foundation; either version 2.1 of
+ * the License, or (at your option) any later version.
+ *
+ * This software is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
+ * Lesser General Public License for more details.
+ *
+ * You should have received a copy of the GNU Lesser General Public
+ * License along with this software; if not, write to the Free
+ * Software Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA
+ * 02110-1301 USA, or see the FSF site: http://www.fsf.org.
+ */
package org.jboss.soa.esb.notification;
@@ -26,44 +26,45 @@
import org.jboss.soa.esb.helpers.*;
-public class NotifyTopics extends NotifyJMS
-{
- public static final String CHILD_TOPIC = "topic";
+public class NotifyTopics extends NotifyJMS {
+ public static final String CHILD_TOPIC = "topic";
- public NotifyTopics(DomElement p_oP) throws Exception
- { super (p_oP);
+ public NotifyTopics(DomElement p_oP) throws Exception {
+ super(p_oP);
- setTopics(p_oP.getElementChildren(CHILD_TOPIC));
- } //__________________________________
+ setTopics(p_oP.getElementChildren(CHILD_TOPIC));
+ } // __________________________________
- protected void setTopics(DomElement[] p_oaP) throws Exception
- {
- TopicConnectionFactory qcf = (TopicConnectionFactory)
- m_oCtx.lookup("ConnectionFactory");
- TopicConnection oTconn = qcf.createTopicConnection();
- TopicSession oTsess = oTconn.createTopicSession(false
- ,TopicSession.AUTO_ACKNOWLEDGE);
+ protected void setTopics(DomElement[] p_oaP) throws Exception {
+ TopicConnectionFactory qcf = (TopicConnectionFactory) m_oCtx
+ .lookup("ConnectionFactory");
+ TopicConnection oTconn = qcf.createTopicConnection();
+ TopicSession oTsess = oTconn.createTopicSession(false,
+ TopicSession.AUTO_ACKNOWLEDGE);
- m_oaMssProd = new MessageProducer[p_oaP.length];
- for (int i1=0; i1<p_oaP.length; i1++)
- { String sAtt = p_oaP[i1].getAttr(ATT_DEST_NAME);
- if (null==sAtt) throw new Exception ("Missing topic jndiName");
- Topic oT = (Topic)m_oCtx.lookup(sAtt);
- m_oaMssProd [i1] = oTsess.createPublisher(oT);
- }
+ m_oaMssProd = new MessageProducer[p_oaP.length];
+ for (int i1 = 0; i1 < p_oaP.length; i1++) {
+ String sAtt = p_oaP[i1].getAttr(ATT_DEST_NAME);
+ if (null == sAtt)
+ throw new Exception("Missing topic jndiName");
+ Topic oT = (Topic) m_oCtx.lookup(sAtt);
+ m_oaMssProd[i1] = oTsess.createPublisher(oT);
+ }
- m_oConn = oTconn;
- m_oSess = oTsess;
-// m_oConn.start(); Only for incoming messages ???
+ m_oConn = oTconn;
+ m_oSess = oTsess;
+ // m_oConn.start(); Only for incoming messages ???
- } //__________________________________
+ } // __________________________________
- protected void sendToAll(Message p_oMsg)
- { for (int i1=0; i1<m_oaMssProd.length;i1++)
- { TopicPublisher oCurr = (TopicPublisher)m_oaMssProd[i1];
- try { oCurr.publish(p_oMsg); }
- catch (Exception e) {}
- }
- } //__________________________________
+ protected void sendToAll(Message p_oMsg) {
+ for (int i1 = 0; i1 < m_oaMssProd.length; i1++) {
+ TopicPublisher oCurr = (TopicPublisher) m_oaMssProd[i1];
+ try {
+ oCurr.publish(p_oMsg);
+ } catch (Exception e) {
+ }
+ }
+ } // __________________________________
-} //____________________________________________________________________________
+} // ____________________________________________________________________________
Added: labs/jbossesb/trunk/product/core/common/tests/src/org/jboss/soa/esb/notification/NotifyFilesUnitTest.java
===================================================================
--- labs/jbossesb/trunk/product/core/common/tests/src/org/jboss/soa/esb/notification/NotifyFilesUnitTest.java 2006-07-31 22:05:07 UTC (rev 5372)
+++ labs/jbossesb/trunk/product/core/common/tests/src/org/jboss/soa/esb/notification/NotifyFilesUnitTest.java 2006-08-01 09:11:39 UTC (rev 5373)
@@ -0,0 +1,127 @@
+/*
+ * JBoss, Home of Professional Open Source
+ * Copyright 2006, JBoss Inc., and individual contributors as indicated
+ * by the @authors tag. See the copyright.txt in the distribution for a
+ * full listing of individual contributors.
+ *
+ * This is free software; you can redistribute it and/or modify it
+ * under the terms of the GNU Lesser General Public License as
+ * published by the Free Software Foundation; either version 2.1 of
+ * the License, or (at your option) any later version.
+ *
+ * This software is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
+ * Lesser General Public License for more details.
+ *
+ * You should have received a copy of the GNU Lesser General Public
+ * License along with this software; if not, write to the Free
+ * Software Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA
+ * 02110-1301 USA, or see the FSF site: http://www.fsf.org.
+ */
+package org.jboss.soa.esb.notification;
+
+import java.io.File;
+import java.io.Serializable;
+
+import org.jboss.soa.esb.helpers.DomElement;
+
+import junit.framework.TestCase;
+
+/**
+ * NotifyFiles unit tests.
+ * @author <a href="mailto:tom.fennelly at jboss.com">tom.fennelly at jboss.com</a>
+ */
+public class NotifyFilesUnitTest extends TestCase {
+
+ public void test_BadFolderInfo() throws Exception {
+ DomElement rootEl = new DomElement("notif");
+ DomElement fileEl = new DomElement("file");
+
+ rootEl.addElemChild(fileEl);
+
+ // No file attribute defined on the DomElement
+ try {
+ new NotifyFiles(rootEl);
+ fail("Expected IllegalArgumentException");
+ } catch(IllegalArgumentException e) {
+ // Expected
+ }
+ // File attribute defined on the DomElement, but parent folder doesn't exist...
+ fileEl.setAttr("URI", new File("./").toURI().toString() + "/xyzzyx/a.txt");
+ try {
+ new NotifyFiles(rootEl);
+ fail("Expected IllegalArgumentException");
+ } catch(IllegalArgumentException e) {
+ // Expected
+ }
+ }
+
+ public void test_StringObj() throws Exception {
+ sendNotification("Hello");
+ }
+
+ public void test_NonStringObject() throws Exception {
+ sendNotification(new Integer(1234));
+ }
+
+ public void sendNotification(Serializable obj) throws Exception {
+ DomElement rootEl = new DomElement("notif");
+ NotifyFiles notifyFiles;
+
+ // Add the file configs to the config DOM for 4 files...
+ addFileConfig(rootEl, "file1.notif", true);
+ addFileConfig(rootEl, "file2.notif", true);
+ addFileConfig(rootEl, "file3.notif", false);
+ addFileConfig(rootEl, "file4.notif", null);
+
+ // Create the class and call the sendNotification method twice...
+ notifyFiles = new NotifyFiles(rootEl);
+ notifyFiles.sendNotification(obj);
+ notifyFiles.sendNotification(obj);
+
+ // Test the files. Files 1 and 2 should be the same size. Files 3 and 4 should be the
+ // same size. Files 1 and 2 should be twice as big as files 3 and 4 because append was set
+ // "true" on 1 and 2 and sendNotification() was called twice...
+ File file1Obj = getFileObject("file1.notif");
+ File file2Obj = getFileObject("file2.notif");
+ File file3Obj = getFileObject("file3.notif");
+ File file4Obj = getFileObject("file4.notif");
+ assertEquals(file1Obj.length(), file2Obj.length());
+ assertEquals(file3Obj.length(), file4Obj.length());
+ assertEquals(file1Obj.length(), file3Obj.length() * 2);
+ }
+
+ private void addFileConfig(DomElement rootEl, String file, Boolean append) {
+ File fileObj = getFileObject(file);
+ DomElement fileEl = new DomElement("file");
+
+ fileEl.setAttr("URI", fileObj.toURI().toString());
+ fileEl.setAttr("append", (append != null?append.toString():null));
+ rootEl.addElemChild(fileEl);
+
+ // Also want to delete the file incase the tests are being rerun...
+ fileObj.delete();
+ }
+
+ private File getFileObject(String file) {
+ // TF: Excuse this hack!!! It's the safest way of calculating a
+ // relative URI within the test structure. It will prob cause
+ // Maven some issues i.e. getting it to work for both Ant and Maven :-(
+ // This code assumes that the working dir is the "product" folder.
+
+ File fileObj = new File("build/tests/" + getPKg() + "/" + file);
+ if(!fileObj.getParentFile().exists()) {
+ // The build folder may not exist e.g. if running this test from
+ // inside your IDE.
+ fileObj.getParentFile().mkdirs();
+ }
+
+ return fileObj;
+ }
+
+ private String getPKg() {
+ String javaPackage = NotifyFilesUnitTest.class.getPackage().getName();
+ return javaPackage.replace('.', '/');
+ }
+}
Added: labs/jbossesb/trunk/product/core/common/tests/src/org/jboss/soa/esb/notification/NotifyQueuesUnitTest.java
===================================================================
--- labs/jbossesb/trunk/product/core/common/tests/src/org/jboss/soa/esb/notification/NotifyQueuesUnitTest.java 2006-07-31 22:05:07 UTC (rev 5372)
+++ labs/jbossesb/trunk/product/core/common/tests/src/org/jboss/soa/esb/notification/NotifyQueuesUnitTest.java 2006-08-01 09:11:39 UTC (rev 5373)
@@ -0,0 +1,71 @@
+/*
+ * JBoss, Home of Professional Open Source
+ * Copyright 2006, JBoss Inc., and individual contributors as indicated
+ * by the @authors tag. See the copyright.txt in the distribution for a
+ * full listing of individual contributors.
+ *
+ * This is free software; you can redistribute it and/or modify it
+ * under the terms of the GNU Lesser General Public License as
+ * published by the Free Software Foundation; either version 2.1 of
+ * the License, or (at your option) any later version.
+ *
+ * This software is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
+ * Lesser General Public License for more details.
+ *
+ * You should have received a copy of the GNU Lesser General Public
+ * License along with this software; if not, write to the Free
+ * Software Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA
+ * 02110-1301 USA, or see the FSF site: http://www.fsf.org.
+ */
+package org.jboss.soa.esb.notification;
+
+import javax.jms.Connection;
+import javax.jms.JMSException;
+import javax.jms.QueueConnection;
+import javax.jms.QueueConnectionFactory;
+import javax.naming.NamingException;
+
+import org.jboss.soa.esb.helpers.DomElement;
+
+import junit.framework.TestCase;
+
+/**
+ * NotifyQueues unit tests.
+ * @author <a href="mailto:tom.fennelly at jboss.com">tom.fennelly at jboss.com</a>
+ */
+public class NotifyQueuesUnitTest extends TestCase {
+
+ public void test_NotifyQueues() {
+
+ }
+
+ private class TestNotifyQueues extends NotifyQueues {
+ public TestNotifyQueues(DomElement p_oP) throws Exception {
+ super(p_oP);
+ }
+ protected QueueConnectionFactory lookupQueueConnectionFactory() throws NamingException {
+ return new MockQueueConnectionFactory();
+ }
+ }
+
+ private class MockQueueConnectionFactory implements QueueConnectionFactory {
+ public QueueConnection createQueueConnection() throws JMSException {
+ // TODO Auto-generated method stub
+ return null;
+ }
+ public QueueConnection createQueueConnection(String arg0, String arg1) throws JMSException {
+ // TODO Auto-generated method stub
+ return null;
+ }
+ public Connection createConnection() throws JMSException {
+ // TODO Auto-generated method stub
+ return null;
+ }
+ public Connection createConnection(String arg0, String arg1) throws JMSException {
+ // TODO Auto-generated method stub
+ return null;
+ }
+ }
+}
More information about the jboss-svn-commits
mailing list