[jboss-svn-commits] JBL Code SVN: r5385 - in labs/jbossesb/branches/refactor/product: . core/common/src/org/jboss/soa/esb/common/bizclasses core/common/src/org/jboss/soa/esb/helpers core/common/src/org/jboss/soa/esb/notification core/common/src/org/jboss/soa/esb/services core/common/src/org/jboss/soa/esb/util core/common/tests core/common/tests/src/org/jboss/soa/esb core/common/tests/src/org/jboss/soa/esb/common core/common/tests/src/org/jboss/soa/esb/common/bizclasses core/common/tests/src/org/jboss/soa/esb/helpers core/common/tests/src/org/jboss/soa/esb/notification core/common/tests/src/org/jboss/soa/esb/util core/services/src/org/jboss/soa/esb/internal/core/objectstore docs docs/Install/database docs/Install/deploy docs/samples/trailblazer/bankloanbrokerdemo/banks docs/samples/trailblazer/bankloanbrokerdemo/banks/src/org/jboss/soa/esb/samples/loanbroker/banks lib/ext

jboss-svn-commits at lists.jboss.org jboss-svn-commits at lists.jboss.org
Tue Aug 1 15:50:53 EDT 2006


Author: arvinder
Date: 2006-08-01 15:50:06 -0400 (Tue, 01 Aug 2006)
New Revision: 5385

Added:
   labs/jbossesb/branches/refactor/product/core/common/tests/src/org/jboss/soa/esb/common/bizclasses/
   labs/jbossesb/branches/refactor/product/core/common/tests/src/org/jboss/soa/esb/common/bizclasses/BatchProcessUnitTest.java
   labs/jbossesb/branches/refactor/product/core/common/tests/src/org/jboss/soa/esb/notification/
   labs/jbossesb/branches/refactor/product/core/common/tests/src/org/jboss/soa/esb/notification/MacroExpanderUnitTest.java
   labs/jbossesb/branches/refactor/product/core/common/tests/src/org/jboss/soa/esb/notification/MacroExpanderUnitTest_expected1.xml
   labs/jbossesb/branches/refactor/product/core/common/tests/src/org/jboss/soa/esb/notification/NotificationListUnitTest.java
   labs/jbossesb/branches/refactor/product/core/common/tests/src/org/jboss/soa/esb/notification/NotificationListUnitTest_testfile1.xml
   labs/jbossesb/branches/refactor/product/core/common/tests/src/org/jboss/soa/esb/notification/NotifyEmailUnitTest.java
   labs/jbossesb/branches/refactor/product/core/common/tests/src/org/jboss/soa/esb/notification/NotifyFilesUnitTest.java
   labs/jbossesb/branches/refactor/product/core/common/tests/src/org/jboss/soa/esb/notification/NotifyQueuesUnitTest.java
   labs/jbossesb/branches/refactor/product/core/common/tests/src/org/jboss/soa/esb/notification/NotifySqlTableUnitTest.java
   labs/jbossesb/branches/refactor/product/core/common/tests/src/org/jboss/soa/esb/notification/NotifySqlTable_testfile1.xml
   labs/jbossesb/branches/refactor/product/core/common/tests/src/org/jboss/soa/esb/notification/NotifyTopicsUnitTest.java
   labs/jbossesb/branches/refactor/product/core/common/tests/src/org/jboss/soa/esb/notification/NotifyUtilUnitTest.java
   labs/jbossesb/branches/refactor/product/core/common/tests/src/org/jboss/soa/esb/notification/TestNotificationTarget1.java
   labs/jbossesb/branches/refactor/product/core/common/tests/src/org/jboss/soa/esb/notification/TestNotificationTarget2.java
   labs/jbossesb/branches/refactor/product/core/common/tests/src/org/jboss/soa/esb/util/BaseBusinessObjectUnitTest.java
   labs/jbossesb/branches/refactor/product/core/common/tests/src/org/jboss/soa/esb/util/BaseBusinessObjectUnitTest_testfile1.xml
   labs/jbossesb/branches/refactor/product/core/common/tests/src/org/jboss/soa/esb/util/TestBob.java
   labs/jbossesb/branches/refactor/product/docs/Install/database/README_POSTGRES.TXT
   labs/jbossesb/branches/refactor/product/docs/samples/trailblazer/bankloanbrokerdemo/banks/JBoss ESB Loan Broker Banks Guide.doc
   labs/jbossesb/branches/refactor/product/docs/samples/trailblazer/bankloanbrokerdemo/banks/JBoss ESB Loan Broker Banks Guide.html
   labs/jbossesb/branches/refactor/product/lib/ext/cglib-full-2.0-RC2.jar
   labs/jbossesb/branches/refactor/product/lib/ext/jakarta-oro-2.0.8.jar
   labs/jbossesb/branches/refactor/product/lib/ext/mockejb.jar
   labs/jbossesb/branches/refactor/product/lib/ext/xjavadoc-1.5-snapshot050611.jar
Removed:
   labs/jbossesb/branches/refactor/product/core/common/tests/src/org/jboss/soa/esb/common/bizclasses/BatchProcessUnitTest.java
   labs/jbossesb/branches/refactor/product/core/common/tests/src/org/jboss/soa/esb/notification/MacroExpanderUnitTest.java
   labs/jbossesb/branches/refactor/product/core/common/tests/src/org/jboss/soa/esb/notification/MacroExpanderUnitTest_expected1.xml
   labs/jbossesb/branches/refactor/product/core/common/tests/src/org/jboss/soa/esb/notification/NotificationListUnitTest.java
   labs/jbossesb/branches/refactor/product/core/common/tests/src/org/jboss/soa/esb/notification/NotificationListUnitTest_testfile1.xml
   labs/jbossesb/branches/refactor/product/core/common/tests/src/org/jboss/soa/esb/notification/NotifyEmailUnitTest.java
   labs/jbossesb/branches/refactor/product/core/common/tests/src/org/jboss/soa/esb/notification/NotifyFilesUnitTest.java
   labs/jbossesb/branches/refactor/product/core/common/tests/src/org/jboss/soa/esb/notification/NotifyQueuesUnitTest.java
   labs/jbossesb/branches/refactor/product/core/common/tests/src/org/jboss/soa/esb/notification/NotifySqlTableUnitTest.java
   labs/jbossesb/branches/refactor/product/core/common/tests/src/org/jboss/soa/esb/notification/NotifySqlTable_testfile1.xml
   labs/jbossesb/branches/refactor/product/core/common/tests/src/org/jboss/soa/esb/notification/NotifyTopicsUnitTest.java
   labs/jbossesb/branches/refactor/product/core/common/tests/src/org/jboss/soa/esb/notification/NotifyUtilUnitTest.java
   labs/jbossesb/branches/refactor/product/core/common/tests/src/org/jboss/soa/esb/notification/TestNotificationTarget1.java
   labs/jbossesb/branches/refactor/product/core/common/tests/src/org/jboss/soa/esb/notification/TestNotificationTarget2.java
   labs/jbossesb/branches/refactor/product/lib/ext/xjavadoc-1.1.jar
Modified:
   labs/jbossesb/branches/refactor/product/build.xml
   labs/jbossesb/branches/refactor/product/core/common/src/org/jboss/soa/esb/common/bizclasses/BatchProcess.java
   labs/jbossesb/branches/refactor/product/core/common/src/org/jboss/soa/esb/common/bizclasses/OneValue.java
   labs/jbossesb/branches/refactor/product/core/common/src/org/jboss/soa/esb/helpers/DomElement.java
   labs/jbossesb/branches/refactor/product/core/common/src/org/jboss/soa/esb/notification/MacroExpander.java
   labs/jbossesb/branches/refactor/product/core/common/src/org/jboss/soa/esb/notification/NotificationList.java
   labs/jbossesb/branches/refactor/product/core/common/src/org/jboss/soa/esb/notification/NotificationTarget.java
   labs/jbossesb/branches/refactor/product/core/common/src/org/jboss/soa/esb/notification/NotifyEmail.java
   labs/jbossesb/branches/refactor/product/core/common/src/org/jboss/soa/esb/notification/NotifyFiles.java
   labs/jbossesb/branches/refactor/product/core/common/src/org/jboss/soa/esb/notification/NotifyJMS.java
   labs/jbossesb/branches/refactor/product/core/common/src/org/jboss/soa/esb/notification/NotifyQueues.java
   labs/jbossesb/branches/refactor/product/core/common/src/org/jboss/soa/esb/notification/NotifySqlTable.java
   labs/jbossesb/branches/refactor/product/core/common/src/org/jboss/soa/esb/notification/NotifyTopics.java
   labs/jbossesb/branches/refactor/product/core/common/src/org/jboss/soa/esb/notification/NotifyUtil.java
   labs/jbossesb/branches/refactor/product/core/common/src/org/jboss/soa/esb/services/InotificationHandler.java
   labs/jbossesb/branches/refactor/product/core/common/src/org/jboss/soa/esb/util/BaseBusinessObject.java
   labs/jbossesb/branches/refactor/product/core/common/tests/build.xml
   labs/jbossesb/branches/refactor/product/core/common/tests/src/org/jboss/soa/esb/helpers/DomElementUnitTest.java
   labs/jbossesb/branches/refactor/product/core/common/tests/src/org/jboss/soa/esb/util/BobjStdDTOUnitTest.java
   labs/jbossesb/branches/refactor/product/core/services/src/org/jboss/soa/esb/internal/core/objectstore/AbstractBobjStore.java
   labs/jbossesb/branches/refactor/product/docs/Install/deploy/JBossESB-ds.xml
   labs/jbossesb/branches/refactor/product/docs/JBossESB Getting Started Guide.rtf
   labs/jbossesb/branches/refactor/product/docs/samples/trailblazer/bankloanbrokerdemo/banks/bank.properties
   labs/jbossesb/branches/refactor/product/docs/samples/trailblazer/bankloanbrokerdemo/banks/build.xml
   labs/jbossesb/branches/refactor/product/docs/samples/trailblazer/bankloanbrokerdemo/banks/src/org/jboss/soa/esb/samples/loanbroker/banks/ManagerJMS.java
Log:
Synch with trunk to prepare for merge after http://jira.jboss.com/jira/browse/JBESB-99

Modified: labs/jbossesb/branches/refactor/product/build.xml
===================================================================
--- labs/jbossesb/branches/refactor/product/build.xml	2006-08-01 18:47:29 UTC (rev 5384)
+++ labs/jbossesb/branches/refactor/product/build.xml	2006-08-01 19:50:06 UTC (rev 5385)
@@ -139,12 +139,12 @@
 			</fileset>
 		</copy>
 
-		<echo message="Installing xml"/>
+		<echo message="Installing xml ${org.jboss.esb.installationdirectory}"/>
 		<mkdir dir="${org.jboss.esb.installationdirectory}/xml"/>
 		<copy
 			todir="${org.jboss.esb.installationdirectory}/xml"
 		>
-			<fileset dir="xml"/>
+			<fileset dir="etc/schemas/xml"/>
 		</copy>
 
 		<!--

Modified: labs/jbossesb/branches/refactor/product/core/common/src/org/jboss/soa/esb/common/bizclasses/BatchProcess.java
===================================================================
--- labs/jbossesb/branches/refactor/product/core/common/src/org/jboss/soa/esb/common/bizclasses/BatchProcess.java	2006-08-01 18:47:29 UTC (rev 5384)
+++ labs/jbossesb/branches/refactor/product/core/common/src/org/jboss/soa/esb/common/bizclasses/BatchProcess.java	2006-08-01 19:50:06 UTC (rev 5385)
@@ -1,223 +1,265 @@
 /*
-* 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.common.bizclasses;
 
-import java.util.*;
-import java.text.*;
+import java.text.SimpleDateFormat;
+import java.util.ArrayList;
+import java.util.Date;
+import java.util.EnumMap;
+import java.util.List;
 
-import org.jboss.soa.esb.util.*;
+import org.jboss.soa.esb.util.BaseBusinessObject;
+import org.jboss.soa.esb.util.BobjStdDTO;
+import org.jboss.soa.esb.util.EsbUtil;
 
-public class BatchProcess extends BaseBusinessObject
-{
-	  public enum ATTRIB
-	  	{srcApp
-		,batchNum
-		,createStamp
-		,commitStamp
-		};
-	  private EnumMap<ATTRIB,String>m_oData;
+public class BatchProcess extends BaseBusinessObject {
 
-	  public enum CHLD_LIST
-	    {Hdrs
-		 ,Itms
-	    };
-  public List<OneValue> m_olHeaders, m_olItems;
+	public enum ATTRIB {
+		srcApp, batchNum, createStamp, commitStamp
+	};
 
-  /**
-   * @param p_sElem String
-   * @see BaseBusinessObject#BaseBusinessObject(String)
-   */
-  public BatchProcess(String p_sElem)    {super(p_sElem);}
-  /**
-   * @param p_sElem String
-   * @param p_lUid long
-   * @see  BaseBusinessObject#BaseBusinessObject(String,long)
-   */
-  public BatchProcess(String p_sElem, long p_lUid)    {super(p_sElem, p_lUid);}
-  /**
-   *
-   * @param p_oDto BobjStdDTO
-   * @throws Exception
-   * @see  BaseBusinessObject#BaseBusinessObject(BobjStdDTO)
-   */
+	private EnumMap<ATTRIB, String> m_oData;
 
-  @SuppressWarnings("unchecked")
-  public BatchProcess(BobjStdDTO  p_oDto)  throws Exception
-  { super(p_oDto);
-  	for (ATTRIB oCurr : ATTRIB.values())
-  		setField(oCurr,p_oDto.getAttr(oCurr.toString()));
+	public enum CHLD_LIST {
+		Hdrs, Itms
+	};
 
-    m_olHeaders = (List<OneValue>)p_oDto.getChildObjList
-    	(CHLD_LIST.Hdrs.toString(),OneValue.class);
-    m_olItems   = (List<OneValue>)p_oDto.getChildObjList
-		(CHLD_LIST.Itms.toString(),OneValue.class);
-  }//__________________________________________
-  /**
-   *
-   * @throws Exception
-   * @return BobjStdDTO
-   * @see  BusinessObject#toDTO()
-   */
-  public BobjStdDTO toDTO() throws Exception
-  { BobjStdDTO oRet = super.toDTO();
-	for (ATTRIB oCurr : ATTRIB.values())
-  		oRet.addAttr(oCurr.toString(),getField(oCurr));
+	public List<OneValue> m_olHeaders, m_olItems;
 
-    oRet.addDto(CHLD_LIST.Hdrs.toString() ,getDtoList(OneValue.class, m_olItems));
-    oRet.addDto(CHLD_LIST.Itms.toString()   ,getDtoList(OneValue.class, m_olHeaders));
-    return oRet;
+	/**
+	 * @param p_sElem
+	 *            String
+	 * @param p_lUid
+	 *            long
+	 * @see BaseBusinessObject#BaseBusinessObject(String,long)
+	 */
+	public BatchProcess(String p_sElem, long p_lUid) {
+		super(p_sElem, p_lUid);
+	}
 
-  }//_________________________________________
-   //Setters
-   /**
-    * Add a reference to a BusinessObject (it's UID) to the list of batch
-    * header BusinessObjects
-    * @param p_l long - The UID of the BusinessObject to add to the header list
-    * @see BatchProcess#m_olHeaders
-    */
-   public   void addHeaderUid(long p_l)
-   { if(null==m_olHeaders) m_olHeaders = new ArrayList<OneValue>();
-     m_olHeaders.add(OneValue.getLongValue(p_l));
-   }//_____________________________________________
-   /**
-    * Remove an object from the header list
-    * @param p_i int - index of header to remove
-    * @return long - UID of the object removed
-    * @see BatchProcess#addHeaderUid(long)
-    */
-   public long rmvHeaderAt (int p_i)
-   { if (null == m_olHeaders) return -1;
-     if(p_i < 0 || p_i >=m_olHeaders.size()) return -1;
-     return Long.parseLong(((OneValue) m_olHeaders.remove(p_i)).m_sVal);
-   }//_____________________________________________
+	/**
+	 * 
+	 * @param p_oDto
+	 *            BobjStdDTO
+	 * @throws Exception
+	 * @see BaseBusinessObject#BaseBusinessObject(BobjStdDTO)
+	 */
 
-   /**
-    * Add a reference to a BusinessObject (it's UID) to the list of batch
-    * items BusinessObjects
-    * @param p_l long - The UID of the BusinessObject to add to the item list
-    * @see BatchProcess#m_olItems
-    */
-   public   void addChildUid(long p_l)
-   { if(null==m_olItems) m_olItems = new ArrayList<OneValue>();
-     m_olItems.add(OneValue.getLongValue(p_l));
-   }//_____________________________________________
+	@SuppressWarnings("unchecked")
+	public BatchProcess(BobjStdDTO p_oDto) throws Exception {
+		super(p_oDto);
+		for (ATTRIB oCurr : ATTRIB.values())
+			setField(oCurr, p_oDto.getAttr(oCurr.toString()));
 
-   /**
-    * Remove an object from the item list
-    * @param p_i int - index of item to remove
-    * @return long - UID of the object removed
-    * @see BatchProcess#addChildUid(long)
-    */
-   public long rmvChildAt (int p_i)
-   { if (null == m_olItems) return -1;
-     if(p_i < 0 || p_i >=m_olItems.size()) return -1;
-     return Long.parseLong(((OneValue) m_olItems.remove(p_i)).m_sVal);
-   }//_____________________________________________
+		m_olHeaders = (List<OneValue>) p_oDto.getChildObjList(CHLD_LIST.Hdrs
+				.toString(), OneValue.class);
+		m_olItems = (List<OneValue>) p_oDto.getChildObjList(CHLD_LIST.Itms
+				.toString(), OneValue.class);
+	}// __________________________________________
 
-   //getters
-   /**
-    * Return the number of header objects in this batch
-    * @return int - The size of the header list
-    * @see BatchProcess#m_olHeaders
-    */
-   public int getHeaderCount ()
-   {  return (null == m_olHeaders)? 0 : m_olHeaders.size();
-   }//_______________________________
+	/**
+	 * 
+	 * @throws Exception
+	 * @return BobjStdDTO
+	 * @see BusinessObject#toDTO()
+	 */
+	public BobjStdDTO toDTO() throws Exception {
+		BobjStdDTO oRet = super.toDTO();
+		for (ATTRIB oCurr : ATTRIB.values())
+			oRet.addAttr(oCurr.toString(), getField(oCurr));
 
-   /**
-    * Get an object from the header list
-    * @param p_i int - index of header object to get
-    * @return long - UID of the object at requested position - or minus 1 (-1) if invalid index
-    * @see BatchProcess#m_olHeaders
-    */
-   public long getHeaderAt (int p_i)
-   { if (null == m_olHeaders) return -1;
-     if(p_i < 0 || p_i >=m_olHeaders.size()) return -1;
-     return Long.parseLong(((OneValue) m_olHeaders.get(p_i)).m_sVal);
-   }//_____________________________________________
+		oRet.addDto(CHLD_LIST.Hdrs.toString(), getDtoList(OneValue.class,
+				m_olItems));
+		oRet.addDto(CHLD_LIST.Itms.toString(), getDtoList(OneValue.class,
+				m_olHeaders));
+		return oRet;
 
-   /**
-    * Return the number of item objects in this batch
-    * @return int - The size of the item list
-    * @see BatchProcess#m_olItems
-    */
-   public int getChildCount ()
-   {  return (null == m_olItems)? 0 : m_olItems.size();
-   }//_______________________________
+	}// _________________________________________
 
-   /**
-    * Get an object from the item list
-    * @param p_i int - index of item object to get
-    * @return long - UID of the object at requested position - or minus 1 (-1) if invalid index
-    * @see BatchProcess#m_olItems
-    */
-   public long getChildAt (int p_i)
-   { if (null == m_olItems) return -1;
-     if(p_i < 0 || p_i >=m_olItems.size()) return -1;
-     return Long.parseLong(((OneValue) m_olItems.get(p_i)).m_sVal);
-   }//_____________________________________________
+	// Setters
+	/**
+	 * Add a reference to a BusinessObject (it's UID) to the list of batch
+	 * header BusinessObjects
+	 * 
+	 * @param p_l
+	 *            long - The UID of the BusinessObject to add to the header list
+	 * @see BatchProcess#m_olHeaders
+	 */
+	public void addHeaderUid(long p_l) {
+		if (null == m_olHeaders)
+			m_olHeaders = new ArrayList<OneValue>();
+		m_olHeaders.add(OneValue.getLongValue(p_l));
+	}// _____________________________________________
 
-   private static final SimpleDateFormat s_FD
-       = new SimpleDateFormat("yyyyMMdd HH:mm:ss.S");
-   protected final String showStamp(ATTRIB pFld)
-   { long lMillis = EsbUtil.parseLong(getField(pFld));
-	 if (lMillis < 1) return "";
-     return s_FD.format(new Date(lMillis));
-   }//_____________________________________________
-   /**
-    * Obtain a String[] of 'human readable' attributes that will help
-    * identify the BatchProcess object
-    * <p>These attributes will be stored in the batch_index table in the
-    * Object store to allow for standard SQL queries.  Once the desired
-    * object is identified, we can access the Object table using the Object's
-    * that is referenced in the batch_index table UID</p>
-    * @return String[] - Batch number, Creation time, Commit time
-    */
-   public String[] locator()
-   { String sFrom = getField(ATTRIB.srcApp);
-   	 String sNumber = getField(ATTRIB.batchNum);
-	 return new String[]
-     { (null==sFrom)	? "":sFrom.substring(0,Math.min(50,sFrom.length()))
-      ,(null==sNumber)	? "":sNumber
-      ,showStamp(ATTRIB.createStamp)
-      ,showStamp(ATTRIB.commitStamp)
-     };
-   } //__________________________________
+	/**
+	 * Remove an object from the header list
+	 * 
+	 * @param p_i
+	 *            int - index of header to remove
+	 * @return long - UID of the object removed
+	 * @see BatchProcess#addHeaderUid(long)
+	 */
+	public long rmvHeaderAt(int p_i) {
+		if (null == m_olHeaders)
+			return -1;
+		if (p_i < 0 || p_i >= m_olHeaders.size())
+			return -1;
+		return Long.parseLong(((OneValue) m_olHeaders.remove(p_i)).m_sVal);
+	}// _____________________________________________
 
-   public String setField(ATTRIB pKey, String pVal)
-   { if (null==pKey)	return null;
-   	 String sRet	= (null==m_oData)? null : m_oData.remove(pKey);
-   	 if (! EsbUtil.isNullString(pVal))
-   	 {	if (null==m_oData)
-   		 	m_oData = new EnumMap<ATTRIB,String>(ATTRIB.class);
-   	 	m_oData.put(pKey,pVal);
-   	 }
-   	 return sRet;
-   } //__________________________________
+	/**
+	 * Add a reference to a BusinessObject (it's UID) to the list of batch items
+	 * BusinessObjects
+	 * 
+	 * @param p_l
+	 *            long - The UID of the BusinessObject to add to the item list
+	 * @see BatchProcess#m_olItems
+	 */
+	public void addChildUid(long p_l) {
+		if (null == m_olItems)
+			m_olItems = new ArrayList<OneValue>();
+		m_olItems.add(OneValue.getLongValue(p_l));
+	}// _____________________________________________
 
-   public String getField(ATTRIB pKey)
-   {	if (null==pKey)		return null;
- 	if (null==m_oData)	return null;
-   	return m_oData.get(pKey);
-   } //__________________________________
-} //____________________________________________________________________________
+	/**
+	 * Remove an object from the item list
+	 * 
+	 * @param p_i
+	 *            int - index of item to remove
+	 * @return long - UID of the object removed
+	 * @see BatchProcess#addChildUid(long)
+	 */
+	public long rmvChildAt(int p_i) {
+		if (null == m_olItems)
+			return -1;
+		if (p_i < 0 || p_i >= m_olItems.size())
+			return -1;
+		return Long.parseLong(((OneValue) m_olItems.remove(p_i)).m_sVal);
+	}// _____________________________________________
+
+	// getters
+	/**
+	 * Return the number of header objects in this batch
+	 * 
+	 * @return int - The size of the header list
+	 * @see BatchProcess#m_olHeaders
+	 */
+	public int getHeaderCount() {
+		return (null == m_olHeaders) ? 0 : m_olHeaders.size();
+	}// _______________________________
+
+	/**
+	 * Get an object from the header list
+	 * 
+	 * @param p_i
+	 *            int - index of header object to get
+	 * @return long - UID of the object at requested position - or minus 1 (-1)
+	 *         if invalid index
+	 * @see BatchProcess#m_olHeaders
+	 */
+	public long getHeaderAt(int p_i) {
+		if (null == m_olHeaders)
+			return -1;
+		if (p_i < 0 || p_i >= m_olHeaders.size())
+			return -1;
+		return Long.parseLong(((OneValue) m_olHeaders.get(p_i)).m_sVal);
+	}// _____________________________________________
+
+	/**
+	 * Return the number of item objects in this batch
+	 * 
+	 * @return int - The size of the item list
+	 * @see BatchProcess#m_olItems
+	 */
+	public int getChildCount() {
+		return (null == m_olItems) ? 0 : m_olItems.size();
+	}// _______________________________
+
+	/**
+	 * Get an object from the item list
+	 * 
+	 * @param p_i
+	 *            int - index of item object to get
+	 * @return long - UID of the object at requested position - or minus 1 (-1)
+	 *         if invalid index
+	 * @see BatchProcess#m_olItems
+	 */
+	public long getChildAt(int p_i) {
+		if (null == m_olItems)
+			return -1;
+		if (p_i < 0 || p_i >= m_olItems.size())
+			return -1;
+		return Long.parseLong(((OneValue) m_olItems.get(p_i)).m_sVal);
+	}// _____________________________________________
+
+	private static final SimpleDateFormat s_FD = new SimpleDateFormat(
+			"yyyyMMdd HH:mm:ss.S");
+
+	protected final String showStamp(ATTRIB pFld) {
+		long lMillis = EsbUtil.parseLong(getField(pFld));
+		if (lMillis < 1)
+			return "";
+		return s_FD.format(new Date(lMillis));
+	}// _____________________________________________
+
+	/**
+	 * Obtain a String[] of 'human readable' attributes that will help identify
+	 * the BatchProcess object.
+	 * <p>
+	 * These attributes will be stored in the batch_index table in the Object
+	 * store to allow for standard SQL queries. Once the desired object is
+	 * identified, we can access the Object table using the Object's that are
+	 * referenced in the batch_index table UID
+	 * </p>
+	 * 
+	 * @return String[] - Batch number, Creation time, Commit time
+	 */
+	public String[] locator() {
+		String sFrom = getField(ATTRIB.srcApp);
+		String sNumber = getField(ATTRIB.batchNum);
+		return new String[] {
+				(null == sFrom) ? "" : sFrom.substring(0, Math.min(50, sFrom
+						.length())), (null == sNumber) ? "" : sNumber,
+				showStamp(ATTRIB.createStamp), showStamp(ATTRIB.commitStamp) };
+	} // __________________________________
+
+	public String setField(ATTRIB pKey, String pVal) {
+		if (null == pKey)
+			return null;
+		String sRet = (null == m_oData) ? null : m_oData.remove(pKey);
+		if (!EsbUtil.isNullString(pVal)) {
+			if (null == m_oData)
+				m_oData = new EnumMap<ATTRIB, String>(ATTRIB.class);
+			m_oData.put(pKey, pVal);
+		}
+		return sRet;
+	} // __________________________________
+
+	public String getField(ATTRIB pKey) {
+		if (null == pKey)
+			return null;
+		if (null == m_oData)
+			return null;
+		return m_oData.get(pKey);
+	} // __________________________________
+} // ____________________________________________________________________________

Modified: labs/jbossesb/branches/refactor/product/core/common/src/org/jboss/soa/esb/common/bizclasses/OneValue.java
===================================================================
--- labs/jbossesb/branches/refactor/product/core/common/src/org/jboss/soa/esb/common/bizclasses/OneValue.java	2006-08-01 18:47:29 UTC (rev 5384)
+++ labs/jbossesb/branches/refactor/product/core/common/src/org/jboss/soa/esb/common/bizclasses/OneValue.java	2006-08-01 19:50:06 UTC (rev 5385)
@@ -1,89 +1,98 @@
 /*
-* 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.common.bizclasses;
 
 import org.jboss.soa.esb.util.*;
 
 /**
- * Utility class used to serialize a String within a list
- * of child BusinessObjects
- * It provides no functionality other than allowing the inclusion of
- * a String (eventually with a role and an element name) in a list of children
+ * Utility class used to serialize a String within a list of child
+ * BusinessObjects It provides no functionality other than allowing the
+ * inclusion of a String (eventually with a role and an element name) in a list
+ * of children
  */
 
-public class OneValue extends BaseBusinessObject
-{
-  private static final String A_VAL   = "v";
-  public String         m_sVal;
+public class OneValue extends BaseBusinessObject {
+	private static final String A_VAL = "v";
 
-  /**
-   * @see BaseBusinessObject#BaseBusinessObject(BobjStdDTO)
-   * @param p_sElem String
-   */
-  public OneValue(String p_sElem)    {super(p_sElem);}
-  /**
-   * @see BaseBusinessObject#BaseBusinessObject(BobjStdDTO)
-   * @param p_sElem String
-   * @param p_lUid long
-   */
-  public OneValue(String p_sElem, long p_lUid)    {super(p_sElem, p_lUid);}
+	public String m_sVal;
 
-  /**
-   * @see BaseBusinessObject#BaseBusinessObject(BobjStdDTO)
-   * @param p_oDto BobjStdDTO
-   * @throws Exception
-   */
-  public OneValue(BobjStdDTO  p_oDto)  throws Exception
-  {super(p_oDto);
-    m_sVal = p_oDto.getAttr(A_VAL);
-  } //___________________________________
+	/**
+	 * @see BaseBusinessObject#BaseBusinessObject(BobjStdDTO)
+	 * @param p_sElem
+	 *            String
+	 */
+	public OneValue(String p_sElem) {
+		super(p_sElem);
+	}
 
-  /**
-   * @see BusinessObject#toDTO()
-   * @throws Exception
-   * @return BobjStdDTO
-   */
-  public BobjStdDTO toDTO() throws Exception
- { BobjStdDTO oRet = super.toDTO();
-   oRet.addAttr(A_VAL, m_sVal);
-   return oRet;
- } //___________________________________
+	/**
+	 * @see BaseBusinessObject#BaseBusinessObject(BobjStdDTO)
+	 * @param p_sElem
+	 *            String
+	 * @param p_lUid
+	 *            long
+	 */
+	public OneValue(String p_sElem, long p_lUid) {
+		super(p_sElem, p_lUid);
+	}
 
-  public static final OneValue getLongValue(Long p_l)
-  {	OneValue oCurr = new OneValue((String)null);
-  	if (null!=p_l)
-  		oCurr.m_sVal = Long.toString(p_l);
-	return oCurr;
-  } //___________________________________
+	/**
+	 * @see BaseBusinessObject#BaseBusinessObject(BobjStdDTO)
+	 * @param p_oDto
+	 *            BobjStdDTO
+	 * @throws Exception
+	 */
+	public OneValue(BobjStdDTO p_oDto) throws Exception {
+		super(p_oDto);
+		m_sVal = p_oDto.getAttr(A_VAL);
+	} // ___________________________________
 
-  public static final OneValue getStringValue(String p_sVal)
-  {	return getStringValue(p_sVal,null);
-  } //___________________________________
+	/**
+	 * @see BusinessObject#toDTO()
+	 * @throws Exception
+	 * @return BobjStdDTO
+	 */
+	public BobjStdDTO toDTO() throws Exception {
+		BobjStdDTO oRet = super.toDTO();
+		oRet.addAttr(A_VAL, m_sVal);
+		return oRet;
+	} // ___________________________________
 
-  public static final OneValue getStringValue(String p_sVal, String p_sRole)
-  {	OneValue oCurr	= new OneValue((String)null);
-  	oCurr.m_sVal	= p_sVal;
-  	oCurr.setRole(p_sRole);
-	return oCurr;
-  } //___________________________________
+	public static final OneValue getLongValue(Long p_l) {
+		OneValue oCurr = new OneValue((String) null);
+		if (null != p_l)
+			oCurr.m_sVal = Long.toString(p_l);
+		return oCurr;
+	} // ___________________________________
 
-} //____________________________________________________________________________
+	public static final OneValue getStringValue(String p_sVal) {
+		return getStringValue(p_sVal, null);
+	} // ___________________________________
+
+	public static final OneValue getStringValue(String p_sVal, String p_sRole) {
+		OneValue oCurr = new OneValue((String) null);
+		oCurr.m_sVal = p_sVal;
+		oCurr.setRole(p_sRole);
+		return oCurr;
+	} // ___________________________________
+
+} // ____________________________________________________________________________

Modified: labs/jbossesb/branches/refactor/product/core/common/src/org/jboss/soa/esb/helpers/DomElement.java
===================================================================
--- labs/jbossesb/branches/refactor/product/core/common/src/org/jboss/soa/esb/helpers/DomElement.java	2006-08-01 18:47:29 UTC (rev 5384)
+++ labs/jbossesb/branches/refactor/product/core/common/src/org/jboss/soa/esb/helpers/DomElement.java	2006-08-01 19:50:06 UTC (rev 5385)
@@ -32,6 +32,18 @@
 import javax.xml.transform.dom.*;
 import javax.xml.transform.stream.*;
 
+/**
+ * Wrapper class around the W3C DOM API.
+ * <p/>
+ * This clas attempts to remove some of the complexity of dealing with the W3C
+ * DOM API.  It's basically a wrapper class around the {@link org.w3c.dom.Element}
+ * and {@link org.w3c.dom.Document} classes.
+ * <p/>
+ * It provides utility methods for constructing a DOM from a stream, adding/removing
+ * elements and attributes from the DOM, and methods for serializing the DOM.
+ * 
+ * @author <a href="mailto:schifest at gmail.com">Esteban Shifman</a>
+ */
 public class DomElement {
 	protected static final String LINE_BREAK = System.getProperty("line.separator");
 
@@ -294,10 +306,15 @@
 	      addTextChild(p_sKey,p_saVal[i1]);
 	  } //__________________________________
 
-	public void addElemChild(DomElement p_oE) {
-		p_oE.m_oParentDomElement = this;
+	public void addElemChild(DomElement p_oElementChild) {
+		p_oElementChild.m_oParentDomElement = this;
 		Document oDoc = m_oRootW3CElement.getOwnerDocument();
-		m_oRootW3CElement.appendChild(oDoc.importNode(p_oE.m_oRootW3CElement, true));
+		// Need to clone the node because the Elements are from different Document - you'll get
+		// an exception if you simply try to append it.
+		Element clonedElement = (Element) oDoc.importNode(p_oElementChild.m_oRootW3CElement, true);
+		m_oRootW3CElement.appendChild(clonedElement);
+		// Reset W3C element of the child DomElement to be the cloned element.
+		p_oElementChild.m_oRootW3CElement = clonedElement;
 	} // __________________________________
 
 	public void rmvChildsByName(String p_sTagName) {

Modified: labs/jbossesb/branches/refactor/product/core/common/src/org/jboss/soa/esb/notification/MacroExpander.java
===================================================================
--- labs/jbossesb/branches/refactor/product/core/common/src/org/jboss/soa/esb/notification/MacroExpander.java	2006-08-01 18:47:29 UTC (rev 5384)
+++ labs/jbossesb/branches/refactor/product/core/common/src/org/jboss/soa/esb/notification/MacroExpander.java	2006-08-01 19:50:06 UTC (rev 5385)
@@ -25,7 +25,20 @@
 import java.util.*;
 
 import org.jboss.soa.esb.helpers.*;
+import org.w3c.dom.Attr;
+import org.w3c.dom.Element;
+import org.w3c.dom.NamedNodeMap;
+import org.w3c.dom.Node;
+import org.w3c.dom.NodeList;
 
+/**
+ * MacroExpander class.
+ * <p/>
+ * This class takes a DOM and iterates over it, replacing all "macro" tokens in 
+ * any attribute values using the values from the supplied Map.
+ * 
+ * @author <a href="mailto:schifest at gmail.com">Esteban Shifman</a>
+ */
 public class MacroExpander {
 	private static final String CTX_PREFIX = "@@ctx@@";
 
@@ -37,39 +50,61 @@
 
 	public static final String CTX_POST_FILE = CTX_PREFIX + "postFile";
 
-	private static final String[] s_saMacros = { CTX_BATCH_UID, CTX_BATCH_NUM,
-			CTX_INPUT_FILE, CTX_POST_FILE };
+	private static final String[] s_saMacros = { 
+		CTX_BATCH_UID, CTX_BATCH_NUM, CTX_INPUT_FILE, CTX_POST_FILE };
 
-	public static void replaceMacros(DomElement p_oParm, Map p_oMap) {
-		String[] saAtt = p_oParm.getAttrKeys();
-		
-		for (int i1 = 0; i1 < saAtt.length; i1++) {
-			String sKey = saAtt[i1];
-			String sVal = p_oParm.getAttr(sKey);
+	/**
+	 * Perform a macro replacement on the DOM tree attribute values
+	 * of the supplied DomElement using the supplied macro token
+	 * replacement map.
+	 * @param domTree The DOM Tree to be operated on.
+	 * @param replacementTokenMapMap The token replacement map.
+	 */
+	public static void replaceMacros(DomElement domTree, Map replacementTokenMapMap) {
+		replaceMacros(domTree.getDomElement(), replacementTokenMapMap);
+	}
+	
+	private static void replaceMacros(Element element, Map p_oMap) {
+		NamedNodeMap attributes = element.getAttributes();
+		int attribCount = attributes.getLength();
+
+		for (int i = 0; i < attribCount; i++) {
+			Attr attribute = (Attr) attributes.item(i);
+			String sVal = attribute.getValue();
 			boolean bSubst = false;
-			int iWh = 0;
 			int iPos = 0;
 
-			while (0 <= (iPos = sVal.indexOf(CTX_PREFIX, iWh))) {
+			while (0 <= (iPos = sVal.indexOf(CTX_PREFIX, 0))) {
 				String sRest = sVal.substring(iPos);
-				for (int i2 = 0; i2 < s_saMacros.length; i2++) {
-					String sMac = s_saMacros[i2];
-					if (!sRest.startsWith(sMac))
+				for (int ii = 0; ii < s_saMacros.length; ii++) {
+					String sMac = s_saMacros[ii];
+					if (!sRest.startsWith(sMac)) {
 						continue;
+					}
 					Object oRpl = (null != p_oMap) ? p_oMap.get(sMac) : null;
-					if (null == oRpl)
+					if (null == oRpl) {
 						continue;
+					}
 					bSubst = true;
-					sVal = sVal.substring(0, iPos) + oRpl.toString()
-							+ sVal.substring(iPos + sMac.length());
+					sVal = sVal.substring(0, iPos) + oRpl.toString() + sVal.substring(iPos + sMac.length());
+					break;
 				}
 			}
-			if (bSubst)
-				p_oParm.setAttr(sKey, sVal);
+			if (bSubst) {
+				attribute.setValue(sVal);
+			}
 		}
-		DomElement[] oaChilds = p_oParm.getAllElemChildren();
-		for (int i1 = 0; i1 < oaChilds.length; i1++) {
-			replaceMacros(oaChilds[i1], p_oMap);
+		
+		// Iterate over the child elements and recursively call this method...
+		NodeList children = element.getChildNodes();
+		int childCount = children.getLength();
+		for (int i = 0; i < childCount; i++) {
+			Node child = children.item(i);
+			
+			if(child.getNodeType() != Node.ELEMENT_NODE) {
+				continue;
+			}
+			replaceMacros((Element)child, p_oMap);
 		}
-	} // _________________________
+	}
 }

Modified: labs/jbossesb/branches/refactor/product/core/common/src/org/jboss/soa/esb/notification/NotificationList.java
===================================================================
--- labs/jbossesb/branches/refactor/product/core/common/src/org/jboss/soa/esb/notification/NotificationList.java	2006-08-01 18:47:29 UTC (rev 5384)
+++ labs/jbossesb/branches/refactor/product/core/common/src/org/jboss/soa/esb/notification/NotificationList.java	2006-08-01 19:50:06 UTC (rev 5385)
@@ -76,8 +76,10 @@
 	private NotificationTarget[] getTargets() throws Exception {
 		DomElement[] oaTgts = super.getElementChildren(CHILD_TGT);
 		NotificationTarget[] oaRet = new NotificationTarget[oaTgts.length];
-		for (int i1 = 0; i1 < oaRet.length; i1++)
+		
+		for (int i1 = 0; i1 < oaRet.length; i1++) {
 			oaRet[i1] = NotificationTarget.fromParams(oaTgts[i1]);
+		}
 
 		return oaRet;
 	} // __________________________________

Modified: labs/jbossesb/branches/refactor/product/core/common/src/org/jboss/soa/esb/notification/NotificationTarget.java
===================================================================
--- labs/jbossesb/branches/refactor/product/core/common/src/org/jboss/soa/esb/notification/NotificationTarget.java	2006-08-01 18:47:29 UTC (rev 5384)
+++ labs/jbossesb/branches/refactor/product/core/common/src/org/jboss/soa/esb/notification/NotificationTarget.java	2006-08-01 19:50:06 UTC (rev 5385)
@@ -45,7 +45,7 @@
    */
   public abstract void sendNotification(java.io.Serializable p_o) throws Exception;
 
-  private static final String NOTIF_PFX = "org.jboss.soa.esb.notification";
+  private static final String NOTIF_PFX = NotificationTarget.class.getPackage().getName();
 
   public static final String PRM_NOTIF_CLASS    = "class";
 

Modified: labs/jbossesb/branches/refactor/product/core/common/src/org/jboss/soa/esb/notification/NotifyEmail.java
===================================================================
--- labs/jbossesb/branches/refactor/product/core/common/src/org/jboss/soa/esb/notification/NotifyEmail.java	2006-08-01 18:47:29 UTC (rev 5384)
+++ labs/jbossesb/branches/refactor/product/core/common/src/org/jboss/soa/esb/notification/NotifyEmail.java	2006-08-01 19:50:06 UTC (rev 5385)
@@ -24,6 +24,7 @@
 
 import java.io.Serializable;
 
+import javax.mail.MessagingException;
 import javax.mail.internet.*;
 
 import org.jboss.soa.esb.helpers.*;
@@ -40,19 +41,21 @@
  * 
  * @version 1.0
  */
-public class NotifyEmail extends NotificationTarget
-{
-  /**
-   * Instantiate a NotifyEmail object using the information contained in &lt;arg 1&gt;
-   * @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
+	 * &lt;arg 1&gt;
+	 * 
+	 * @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 +63,42 @@
 
 		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();
+			oP.setAttr(EsbEmail.MESSAGE, sMsg);
+			sendEmailNotification(oP);
+		} catch (Exception e) {
+			EsbUtil.getDefaultLogger(this.getClass()).error("Send Mail Failed",
+					e);
+			e.printStackTrace();
+		}
+	} // __________________________________
+
+	/**
+	 * Send an email notification based on the supplied parameters.
+	 * <p/>
+	 * This method allows overriding for test purposes.
+	 * @param messageParams Message parameters.
+	 */
+	protected void sendEmailNotification(DomElement messageParams) throws AddressException, MessagingException {
+		EsbEmail esbMail = new EsbEmail(messageParams);
+		esbMail.sendMessage();
 	}
-  } // __________________________________
 
 } // ____________________________________________________________________________

Modified: labs/jbossesb/branches/refactor/product/core/common/src/org/jboss/soa/esb/notification/NotifyFiles.java
===================================================================
--- labs/jbossesb/branches/refactor/product/core/common/src/org/jboss/soa/esb/notification/NotifyFiles.java	2006-08-01 18:47:29 UTC (rev 5384)
+++ labs/jbossesb/branches/refactor/product/core/common/src/org/jboss/soa/esb/notification/NotifyFiles.java	2006-08-01 19:50:06 UTC (rev 5385)
@@ -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 &lt;arg 1&gt;
-   * @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 &lt;arg 1&gt;
+	 * 
+	 * @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/branches/refactor/product/core/common/src/org/jboss/soa/esb/notification/NotifyJMS.java
===================================================================
--- labs/jbossesb/branches/refactor/product/core/common/src/org/jboss/soa/esb/notification/NotifyJMS.java	2006-08-01 18:47:29 UTC (rev 5384)
+++ labs/jbossesb/branches/refactor/product/core/common/src/org/jboss/soa/esb/notification/NotifyJMS.java	2006-08-01 19:50:06 UTC (rev 5385)
@@ -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,153 @@
 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/branches/refactor/product/core/common/src/org/jboss/soa/esb/notification/NotifyQueues.java
===================================================================
--- labs/jbossesb/branches/refactor/product/core/common/src/org/jboss/soa/esb/notification/NotifyQueues.java	2006-08-01 18:47:29 UTC (rev 5384)
+++ labs/jbossesb/branches/refactor/product/core/common/src/org/jboss/soa/esb/notification/NotifyQueues.java	2006-08-01 19:50:06 UTC (rev 5385)
@@ -1,81 +1,104 @@
 /*
-* 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 {
+	/**
+	 * Connection Factory JNDI name.
+	 */
+	public static final String CONNECTION_FACTORY = "ConnectionFactory";
+	/**
+	 * 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 {
+		// REVIEW: The connection factory name is hardcoded and is the same as that of the topic connection factory.
+		return (QueueConnectionFactory) m_oCtx.lookup(CONNECTION_FACTORY);
+	}
 
-    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/branches/refactor/product/core/common/src/org/jboss/soa/esb/notification/NotifySqlTable.java
===================================================================
--- labs/jbossesb/branches/refactor/product/core/common/src/org/jboss/soa/esb/notification/NotifySqlTable.java	2006-08-01 18:47:29 UTC (rev 5384)
+++ labs/jbossesb/branches/refactor/product/core/common/src/org/jboss/soa/esb/notification/NotifySqlTable.java	2006-08-01 19:50:06 UTC (rev 5385)
@@ -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;
 
@@ -28,79 +28,96 @@
 import org.jboss.soa.esb.helpers.*;
 import org.jboss.soa.esb.helpers.persist.*;
 
-public class NotifySqlTable extends NotificationTarget
-{
-  public    static final String CHILD_COLUMN= "column";
+public class NotifySqlTable extends NotificationTarget {
+	public static final String CHILD_COLUMN = "column";
 
-  public    static final String ATT_TABLE       = "table";
-  public    static final String ATT_DATA        = "dataColumn";
+	public static final String ATT_TABLE = "table";
 
-  public    static final String ATT_NAME        = "name";
-  public    static final String ATT_VALUE       = "value";
+	public static final String ATT_DATA = "dataColumn";
 
-  private String    m_sDriver   ,m_sURL   ,m_sUser    ,m_sPwd
-                    ,m_sTable   ,m_sDataCol;
-  private Properties m_oCols;
+	public static final String ATT_NAME = "name";
 
-  public NotifySqlTable(DomElement p_oP) throws Exception
-  { super (p_oP);
-    m_sDriver   = getAttr(SimpleDataSource.DRIVER);
-    m_sURL      = getAttr(SimpleDataSource.URL);
-    m_sUser     = getAttr(SimpleDataSource.USER);
-    m_sPwd      = getAttr(SimpleDataSource.PASSWORD);
-    m_sTable    = getAttr(ATT_TABLE);
-    m_sDataCol  = getAttr(ATT_DATA);
+	public static final String ATT_VALUE = "value";
 
-    m_oCols     = new Properties();
-    DomElement[] oaP  = p_oP.getElementChildren(CHILD_COLUMN);
-    for (int i1=0; i1<oaP.length;i1++)
-    { DomElement oCurr  = oaP[i1];
-      String sCol = oCurr.getAttr(ATT_NAME);
-      if (null==sCol)           continue;
-      sCol  = sCol.trim();
-      if (sCol.length()<1)      continue;
-      String sVal = oCurr.getAttr(ATT_VALUE);
-      if (null==sVal) sVal  = "";
-      m_oCols.setProperty(sCol,sVal);
-    }
-  } //__________________________________
+	protected String m_sDriver, m_sURL, m_sUser, m_sPwd, m_sTable, m_sDataCol;
 
-  private String getAttr(String p_sAtt) throws Exception
-  { String sRet = m_oParms.getAttr(p_sAtt);
-    if (null==sRet) throw new Exception ("Missing "+p_sAtt+" attribute");
-    sRet  = sRet.trim();
-    if (p_sAtt.equals(SimpleDataSource.PASSWORD))   return sRet;
-    if (sRet.length()<1) throw new Exception ("Empty "+p_sAtt+" attribute");
-    return sRet;
-  } //__________________________________
+	protected Properties m_oCols;
 
-  public String getInsertStmt()
-  { String[] saCols = new String[m_oCols.size()];
-    m_oCols.keySet().toArray(saCols);
+	public NotifySqlTable(DomElement p_oP) throws Exception {
+		super(p_oP);
+		m_sDriver = getAttr(SimpleDataSource.DRIVER);
+		m_sURL = getAttr(SimpleDataSource.URL);
+		m_sUser = getAttr(SimpleDataSource.USER);
+		m_sPwd = getAttr(SimpleDataSource.PASSWORD);
+		m_sTable = getAttr(ATT_TABLE);
+		m_sDataCol = getAttr(ATT_DATA);
 
-    StringBuffer sbCol = new StringBuffer("insert into ").append(m_sTable).append(" ");
-    StringBuffer sbPrm = new StringBuffer(" values ");
-    for (int i1=0; i1<saCols.length; i1++)
-    { String sIn = (i1==0) ? "(" : ",";
-      String sCurrCol = saCols[i1];
-      sbCol.append(sIn).append("\"").append(sCurrCol).append("\"");
-      sbPrm.append(sIn).append("'").append(m_oCols.getProperty(sCurrCol)).append("'");
-    }
-    return sbCol.append(")").append(sbPrm).append(")").toString();
- } //__________________________________
+		m_oCols = new Properties();
+		DomElement[] oaP = p_oP.getElementChildren(CHILD_COLUMN);
+		for (int i1 = 0; i1 < oaP.length; i1++) {
+			DomElement oCurr = oaP[i1];
+			String sCol = oCurr.getAttr(ATT_NAME);
+			if (null == sCol) {
+				continue;
+			}
+			sCol = sCol.trim();
+			if (sCol.length() < 1) {
+				continue;
+			}
+			String sVal = oCurr.getAttr(ATT_VALUE);
+			if (null == sVal) {
+				sVal = "";
+			}
+			m_oCols.setProperty(sCol, sVal);
+		}
+	} // __________________________________
 
-  public void sendNotification(java.io.Serializable p_o)
-  { m_oCols.setProperty(m_sDataCol,p_o.toString());
-    JdbcCleanConn oConn = null;
-    try
-    { oConn = new JdbcCleanConn(new SimpleDataSource
-    		(m_sDriver,m_sURL,m_sUser,m_sPwd));
-      PreparedStatement PS = oConn.prepareStatement(getInsertStmt());
-      oConn.execUpdWait(PS,3);
-      oConn.commit();
-    }
-    catch (Exception e) {e.printStackTrace(System.err); }
-    finally {if (null != oConn) oConn.release();}
-  } //__________________________________
+	private String getAttr(String p_sAtt) throws Exception {
+		String sRet = m_oParms.getAttr(p_sAtt);
+		if (null == sRet) {
+			throw new Exception("Missing " + p_sAtt + " attribute");
+		}
+		sRet = sRet.trim();
+		if (p_sAtt.equals(SimpleDataSource.PASSWORD)) {
+			return sRet;
+		}
+		if (sRet.length() < 1) {
+			throw new Exception("Empty " + p_sAtt + " attribute");
+		}
+		return sRet;
+	} // __________________________________
 
-} //____________________________________________________________________________
+	public String getInsertStmt() {
+		String[] saCols = new String[m_oCols.size()];
+		m_oCols.keySet().toArray(saCols);
+
+		StringBuffer sbCol = new StringBuffer("insert into ").append(m_sTable).append(" ");
+		StringBuffer sbPrm = new StringBuffer(" values ");
+		for (int i1 = 0; i1 < saCols.length; i1++) {
+			String sIn = (i1 == 0) ? "(" : ",";
+			String sCurrCol = saCols[i1];
+			sbCol.append(sIn).append("\"").append(sCurrCol).append("\"");
+			sbPrm.append(sIn).append("'").append(m_oCols.getProperty(sCurrCol)).append("'");
+			// REVIEW: Does the value being inserted not need to be escaped e.g. what if it has a quote in its value??
+		}
+		return sbCol.append(")").append(sbPrm).append(")").toString();
+	} // __________________________________
+
+	public void sendNotification(java.io.Serializable p_o) {
+		m_oCols.setProperty(m_sDataCol, p_o.toString());
+		JdbcCleanConn oConn = null;
+		try {
+			oConn = new JdbcCleanConn(new SimpleDataSource(m_sDriver, m_sURL, m_sUser, m_sPwd));
+			PreparedStatement PS = oConn.prepareStatement(getInsertStmt());
+			oConn.execUpdWait(PS, 3);
+			oConn.commit();
+		} catch (Exception e) {
+			e.printStackTrace(System.err);
+		} finally {
+			if (null != oConn) {
+				oConn.release();
+			}
+		}
+	} // __________________________________
+
+} // ____________________________________________________________________________

Modified: labs/jbossesb/branches/refactor/product/core/common/src/org/jboss/soa/esb/notification/NotifyTopics.java
===================================================================
--- labs/jbossesb/branches/refactor/product/core/common/src/org/jboss/soa/esb/notification/NotifyTopics.java	2006-08-01 18:47:29 UTC (rev 5384)
+++ labs/jbossesb/branches/refactor/product/core/common/src/org/jboss/soa/esb/notification/NotifyTopics.java	2006-08-01 19:50:06 UTC (rev 5385)
@@ -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,47 @@
 
 import org.jboss.soa.esb.helpers.*;
 
-public class NotifyTopics extends NotifyJMS
-{
-  public static final String CHILD_TOPIC = "topic";
+public class NotifyTopics extends NotifyJMS {
 
-  public NotifyTopics(DomElement p_oP) throws Exception
-  { super (p_oP);
+	public static final String CONNECTION_FACTORY = "ConnectionFactory";
+	public static final String CHILD_TOPIC = "topic";
 
-    setTopics(p_oP.getElementChildren(CHILD_TOPIC));
-  } //__________________________________
+	public NotifyTopics(DomElement p_oP) throws Exception {
+		super(p_oP);
 
-  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);
+		setTopics(p_oP.getElementChildren(CHILD_TOPIC));
+	} // __________________________________
 
-    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);
-    }
+	protected void setTopics(DomElement[] p_oaP) throws Exception {
+		// REVIEW: The connection factory name is hardcoded and is the same as that of the queue connection factory.
+		TopicConnectionFactory qcf = (TopicConnectionFactory) m_oCtx.lookup(CONNECTION_FACTORY);
+		TopicConnection oTconn = qcf.createTopicConnection();
+		TopicSession oTsess = oTconn.createTopicSession(false,
+				TopicSession.AUTO_ACKNOWLEDGE);
 
-    m_oConn   = oTconn;
-    m_oSess   = oTsess;
-//    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 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 ???
 
-  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) {
+			}
+		}
+	} // __________________________________
+
+} // ____________________________________________________________________________

Modified: labs/jbossesb/branches/refactor/product/core/common/src/org/jboss/soa/esb/notification/NotifyUtil.java
===================================================================
--- labs/jbossesb/branches/refactor/product/core/common/src/org/jboss/soa/esb/notification/NotifyUtil.java	2006-08-01 18:47:29 UTC (rev 5384)
+++ labs/jbossesb/branches/refactor/product/core/common/src/org/jboss/soa/esb/notification/NotifyUtil.java	2006-08-01 19:50:06 UTC (rev 5385)
@@ -33,8 +33,7 @@
 	public static void notifyOK(InotificationHandler p_oNH,
 			DomElement p_oParent, Serializable p_o, Map p_oCtx) {
 		try {
-			DomElement[] oaP = p_oParent
-					.getElementChildren(NotificationList.ELEMENT);
+			DomElement[] oaP = p_oParent.getElementChildren(NotificationList.ELEMENT);
 			for (int i1 = 0; i1 < oaP.length; i1++) {
 				NotificationList oCurr = new NotificationList(oaP[i1]);
 				if (!oCurr.isOK())
@@ -54,14 +53,20 @@
 		PrintStream oPS = new PrintStream(oBO);
 		try {
 			oPS.println(p_o.toString());
-			if (null != p_e)
+			if (null != p_e) {
 				p_e.printStackTrace(oPS);
+			}
 			oPS.close();
 
 			String sMsg = oBO.toString();
-			DomElement[] oaP = p_oParent
-					.getElementChildren(NotificationList.ELEMENT);
+			DomElement[] oaP = p_oParent.getElementChildren(NotificationList.ELEMENT);
 			// if (oaP.length<1) // Uncomment this line to send only to the list
+			
+			// REVIEW: What's going on here?  What's the difference between sending an
+			// error notification and sending a regular notification apart from there being an 
+			// error message? What's the difference between how the InotificationHandler
+			// interface is used on the notifyOK and notifyError methods?
+			
 			p_oNH.sendNotifications(sMsg);
 			for (int i1 = 0; i1 < oaP.length; i1++) {
 				NotificationList oCurr = new NotificationList(oaP[i1]);

Modified: labs/jbossesb/branches/refactor/product/core/common/src/org/jboss/soa/esb/services/InotificationHandler.java
===================================================================
--- labs/jbossesb/branches/refactor/product/core/common/src/org/jboss/soa/esb/services/InotificationHandler.java	2006-08-01 18:47:29 UTC (rev 5384)
+++ labs/jbossesb/branches/refactor/product/core/common/src/org/jboss/soa/esb/services/InotificationHandler.java	2006-08-01 19:50:06 UTC (rev 5385)
@@ -1,34 +1,35 @@
 /*
-* 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.services;
 
 import org.jboss.soa.esb.helpers.*;
 import java.io.Serializable;
 
-public interface InotificationHandler
-{
-  public void sendNotifications (DomElement p_oP, Serializable p_o) throws Exception;
-  public void sendNotifications (Serializable p_o)                  throws Exception;
-} //____________________________________________________________________________
+public interface InotificationHandler {
+	
+	// REVIEW: Add some Javadoc for this interface!!!
+	
+	public void sendNotifications(DomElement p_oP, Serializable p_o) throws Exception;
+
+	public void sendNotifications(Serializable p_o) throws Exception;
+} // ____________________________________________________________________________

Modified: labs/jbossesb/branches/refactor/product/core/common/src/org/jboss/soa/esb/util/BaseBusinessObject.java
===================================================================
--- labs/jbossesb/branches/refactor/product/core/common/src/org/jboss/soa/esb/util/BaseBusinessObject.java	2006-08-01 18:47:29 UTC (rev 5384)
+++ labs/jbossesb/branches/refactor/product/core/common/src/org/jboss/soa/esb/util/BaseBusinessObject.java	2006-08-01 19:50:06 UTC (rev 5385)
@@ -25,19 +25,20 @@
 import java.util.*;
 import java.lang.reflect.*;
 
-public class BaseBusinessObject {
+public abstract class BaseBusinessObject {
+	
 	public BobjStdDTO toDTO() throws Exception {
-		return getBaseDTO();
+		String sClass = getClass().getSimpleName();
+		BobjStdDTO oRet = new BobjStdDTO(sClass, getElemNm(), null);
+		if (hasUid())
+			try {
+				oRet.addAttr(HIDDEN.uid.toString(), Long.toString(m_lUid));
+			} catch (Exception e) {
+			}
+		putStdAtts(oRet);
+		return oRet;
 	}
 
-	public String classNm() {
-		return this.getClass().getSimpleName();
-	}
-
-	public boolean isNull() {
-		return false;
-	}
-
 	public String toString() {
 		try {
 			return this.toDTO().toXml();
@@ -50,10 +51,6 @@
 		return new String[] {};
 	}
 
-	public String[] locator(int p_i) {
-		return (0 == p_i) ? locator() : new String[] {};
-	}
-
 	/**
 	 * Get all locators for a given BaseBusinessObject
 	 * <p />
@@ -65,14 +62,6 @@
 		return new String[][] { locator() };
 	}
 
-	public final ObjLocator getObjLocator() {
-		return getObjLocator(0);
-	}
-
-	public final ObjLocator getObjLocator(int p_i) {
-		return new ObjLocator(m_lUid, locator(p_i));
-	}
-
 	private enum ATTRIB {
 		elem, rol
 	};
@@ -83,7 +72,7 @@
 
 	private EnumMap<ATTRIB, String> m_oData;
 
-	public String setField(ATTRIB pKey, String pVal) {
+	private String setField(ATTRIB pKey, String pVal) {
 		if (null == pKey)
 			return null;
 		String sRet = (null == m_oData) ? null : m_oData.remove(pKey);
@@ -95,7 +84,7 @@
 		return sRet;
 	} // __________________________________
 
-	public String getField(ATTRIB pKey) {
+	private String getField(ATTRIB pKey) {
 		if (null == pKey)
 			return null;
 		if (null == m_oData)
@@ -190,11 +179,16 @@
 	protected BaseBusinessObject(String p_sElem, long p_lUid) {
 		setField(ATTRIB.elem, p_sElem);
 		m_lUid = p_lUid;
-		if (null != getElemNm())
+		
+		if (null != getElemNm()) {
 			return;
+		}
+		
 		String sClass = getClass().getSimpleName();
-		if (null == p_sElem)
+		
+		if (null == p_sElem) {
 			setField(ATTRIB.elem, sClass);
+		}
 	} // ________________________________
 
 	protected BaseBusinessObject(BobjStdDTO p_oDto) throws Exception {
@@ -231,10 +225,10 @@
 
 	public static final BaseBusinessObject getFromDTO(BobjStdDTO p_oDto)
 			throws Exception {
-		return new BaseBusinessObject().fromDTO(p_oDto);
+		return BaseBusinessObject.fromDTO(p_oDto);
 	} // ________________________________
 
-	private BaseBusinessObject fromDTO(BobjStdDTO p_oDto) throws Exception {
+	private static BaseBusinessObject fromDTO(BobjStdDTO p_oDto) throws Exception {
 		if (null == p_oDto)
 			return null;
 
@@ -248,19 +242,7 @@
 		return oRet;
 	} // ________________________________
 
-	protected BobjStdDTO getBaseDTO() {
-		String sClass = getClass().getSimpleName();
-		BobjStdDTO oRet = new BobjStdDTO(sClass, getElemNm(), null);
-		if (hasUid())
-			try {
-				oRet.addAttr(HIDDEN.uid.toString(), Long.toString(m_lUid));
-			} catch (Exception e) {
-			}
-		putStdAtts(oRet);
-		return oRet;
-	} // ________________________________
-
-	protected void putStdAtts(BobjStdDTO p_oRet) {
+	private void putStdAtts(BobjStdDTO p_oRet) {
 		try {
 			p_oRet.addAttr(ATTRIB.rol.toString(), getRole());
 			// if (this instanceof XtfStorable)
@@ -284,14 +266,20 @@
 	} // ________________________________
 
 	public static final BobjStdDTO getDtoList(Class p_Class,
-			List<? extends BaseBusinessObject> p_oList) throws Exception {
-		if (null == p_oList)
+			List<? extends BaseBusinessObject> p_oBobList) throws Exception {
+		
+		if (null == p_oBobList || p_oBobList.isEmpty()) {
 			return null;
-		List<BobjStdDTO> LL = new ArrayList<BobjStdDTO>();
-		for (BaseBusinessObject oCurr : p_oList)
-			LL.add(oCurr.toDTO());
-		String sElem = p_Class.getSimpleName();
-		return (LL.size() < 1) ? null : new BobjStdDTO(sElem, null, LL);
+		}
+		
+		// Create a list of DTOs from the BaseBusinessObject list...
+		List<BobjStdDTO> dtoList = new ArrayList<BobjStdDTO>();
+		for (BaseBusinessObject oCurr : p_oBobList) {
+			dtoList.add(oCurr.toDTO());
+		}
+		
+		// Package up the DTO list in a parent DTO and return ...
+		return new BobjStdDTO(p_Class.getSimpleName(), null, dtoList);
 	} // __________________________________
 
 	public static BaseBusinessObject getRoleFromList(String p_sRole,
@@ -305,58 +293,4 @@
 				return oCurr;
 		return null;
 	} // __________________________________
-
-	public static BaseBusinessObject getElemFromList(String p_sElemNm,
-			List<? extends BaseBusinessObject> p_oL) {
-		if (null == p_sElemNm)
-			return null;
-		if (null == p_oL)
-			return null;
-		for (BaseBusinessObject oCurr : p_oL)
-			if (p_sElemNm.equals(oCurr.getElemNm()))
-				return oCurr;
-		return null;
-	} // __________________________________
-
-	public static BaseBusinessObject rmvElemFromList(String p_sElemNm,
-			List<BaseBusinessObject> p_oL) {
-		if (null == p_sElemNm)
-			return null;
-		if (null == p_oL)
-			return null;
-		for (ListIterator<BaseBusinessObject> II = p_oL.listIterator(); II
-				.hasNext();) {
-			BaseBusinessObject oCurr = II.next();
-			if (p_sElemNm.equals(oCurr.getElemNm())) {
-				II.remove();
-				return oCurr;
-			}
-		}
-		return null;
-	} // __________________________________
-
-	public static boolean anyFieldNull(String[] p_sa) {
-		if (null == p_sa)
-			return false;
-		for (int i1 = 0; i1 < p_sa.length; i1++)
-			if (null == p_sa[i1])
-				return true;
-		return false;
-	} // __________________________________
-
-	public static boolean allFieldsNull(String[] p_sa) {
-		if (null == p_sa)
-			return false;
-		if (p_sa.length < 1)
-			return false;
-		for (int i1 = 0; i1 < p_sa.length; i1++) {
-			String sCurr = p_sa[i1];
-			if (null == sCurr)
-				continue;
-			if (sCurr.trim().length() > 0)
-				return false;
-		}
-		return true;
-	} // __________________________________
-
 } // ____________________________________________________________________________

Modified: labs/jbossesb/branches/refactor/product/core/common/tests/build.xml
===================================================================
--- labs/jbossesb/branches/refactor/product/core/common/tests/build.xml	2006-08-01 18:47:29 UTC (rev 5384)
+++ labs/jbossesb/branches/refactor/product/core/common/tests/build.xml	2006-08-01 19:50:06 UTC (rev 5385)
@@ -15,8 +15,7 @@
     </condition>
 
     <path id="org.jboss.esb.tests.base.classpath">
-        <fileset dir="../${org.jboss.esb.ext.lib.dir}"
-                 includes="activation.jar jbossall-client.jar log4j.jar mail.jar junit.jar emma.jar emma_ant.jar"/>
+        <fileset dir="../${org.jboss.esb.ext.lib.dir}" includes="*.jar"/>
         <pathelement location="${org.jboss.esb.module.classes.dir}"/>
     </path>
 

Copied: labs/jbossesb/branches/refactor/product/core/common/tests/src/org/jboss/soa/esb/common/bizclasses (from rev 5384, labs/jbossesb/trunk/product/core/common/tests/src/org/jboss/soa/esb/common/bizclasses)

Deleted: labs/jbossesb/branches/refactor/product/core/common/tests/src/org/jboss/soa/esb/common/bizclasses/BatchProcessUnitTest.java
===================================================================
--- labs/jbossesb/trunk/product/core/common/tests/src/org/jboss/soa/esb/common/bizclasses/BatchProcessUnitTest.java	2006-08-01 18:47:29 UTC (rev 5384)
+++ labs/jbossesb/branches/refactor/product/core/common/tests/src/org/jboss/soa/esb/common/bizclasses/BatchProcessUnitTest.java	2006-08-01 19:50:06 UTC (rev 5385)
@@ -1,35 +0,0 @@
-/*
- * 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.common.bizclasses;
-
-import junit.framework.TestCase;
-
-/**
- * BatchProcess unit tests.
- * @author <a href="mailto:tom.fennelly at jboss.com">tom.fennelly at jboss.com</a>
- */
-public class BatchProcessUnitTest extends TestCase {
-	
-	public void test_BatchProcess() {
-		
-	}
-}

Copied: labs/jbossesb/branches/refactor/product/core/common/tests/src/org/jboss/soa/esb/common/bizclasses/BatchProcessUnitTest.java (from rev 5384, labs/jbossesb/trunk/product/core/common/tests/src/org/jboss/soa/esb/common/bizclasses/BatchProcessUnitTest.java)

Modified: labs/jbossesb/branches/refactor/product/core/common/tests/src/org/jboss/soa/esb/helpers/DomElementUnitTest.java
===================================================================
--- labs/jbossesb/branches/refactor/product/core/common/tests/src/org/jboss/soa/esb/helpers/DomElementUnitTest.java	2006-08-01 18:47:29 UTC (rev 5384)
+++ labs/jbossesb/branches/refactor/product/core/common/tests/src/org/jboss/soa/esb/helpers/DomElementUnitTest.java	2006-08-01 19:50:06 UTC (rev 5385)
@@ -226,8 +226,7 @@
 		domElement1.addElemChild(domElementX);
 		domElement1.addElemChild(domElementY1);
 		domElementX.addElemChild(domElementY2);
-		assertEquals("<newDomElement><X/><Y1/></newDomElement>", domElement1.toString().trim());
-		// REVIEW: Note how Y2 wasn't added to X???
+		assertEquals("<newDomElement><X><Y2/></X><Y1/></newDomElement>", domElement1.toString().trim());
 	}
 	
 	public void test_rmvChildsByName() throws SAXException, IOException {
@@ -239,9 +238,9 @@
 		domElement1.addElemChild(domElementX);
 		domElement1.addElemChild(domElementY1);
 		domElementX.addElemChild(domElementY2);
-		assertEquals("<newDomElement><X/><Y1/></newDomElement>", domElement1.toString().trim());
+		assertEquals("<newDomElement><X><Y2/></X><Y1/></newDomElement>", domElement1.toString().trim());
 		domElement1.rmvChildsByName("Y1");
-		assertEquals("<newDomElement><X/></newDomElement>", domElement1.toString().trim());
+		assertEquals("<newDomElement><X><Y2/></X></newDomElement>", domElement1.toString().trim());
 	}
 	
 	public void test_cloneObj() throws SAXException, IOException {

Copied: labs/jbossesb/branches/refactor/product/core/common/tests/src/org/jboss/soa/esb/notification (from rev 5384, labs/jbossesb/trunk/product/core/common/tests/src/org/jboss/soa/esb/notification)

Deleted: labs/jbossesb/branches/refactor/product/core/common/tests/src/org/jboss/soa/esb/notification/MacroExpanderUnitTest.java
===================================================================
--- labs/jbossesb/trunk/product/core/common/tests/src/org/jboss/soa/esb/notification/MacroExpanderUnitTest.java	2006-08-01 18:47:29 UTC (rev 5384)
+++ labs/jbossesb/branches/refactor/product/core/common/tests/src/org/jboss/soa/esb/notification/MacroExpanderUnitTest.java	2006-08-01 19:50:06 UTC (rev 5385)
@@ -1,53 +0,0 @@
-/*
- * 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.util.HashMap;
-
-import org.jboss.soa.esb.StreamUtils;
-import org.jboss.soa.esb.helpers.DomElement;
-
-import junit.framework.TestCase;
-
-/**
- * MacroExpander unit tests.
- * @author <a href="mailto:tom.fennelly at jboss.com">tom.fennelly at jboss.com</a>
- */
-public class MacroExpanderUnitTest extends TestCase {
-
-	public void testReplaceMacros() {
-		DomElement rootDomEl = new DomElement("rootEl");
-		DomElement childDomEl = new DomElement("childEl");
-		HashMap map = new HashMap();
-		
-		rootDomEl.addElemChild(childDomEl);
-		rootDomEl.setAttr("attrb1", "value1");
-		rootDomEl.setAttr("attrb2", MacroExpander.CTX_BATCH_NUM + "BatchNumValue");
-		childDomEl.setAttr("attrb1", MacroExpander.CTX_BATCH_UID + "UIDValue");
-		map.put(MacroExpander.CTX_BATCH_NUM, "ReplacementBNV!");
-		map.put(MacroExpander.CTX_BATCH_UID, "ReplacementUIDV!");
-		
-		MacroExpander.replaceMacros(rootDomEl, map);
-		String expected = new String(StreamUtils.readStream(getClass().getResourceAsStream("MacroExpanderUnitTest_expected1.xml")));
-		assertEquals(expected.trim(), rootDomEl.toString().trim());
-	}	
-}

Copied: labs/jbossesb/branches/refactor/product/core/common/tests/src/org/jboss/soa/esb/notification/MacroExpanderUnitTest.java (from rev 5384, labs/jbossesb/trunk/product/core/common/tests/src/org/jboss/soa/esb/notification/MacroExpanderUnitTest.java)

Deleted: labs/jbossesb/branches/refactor/product/core/common/tests/src/org/jboss/soa/esb/notification/MacroExpanderUnitTest_expected1.xml
===================================================================
--- labs/jbossesb/trunk/product/core/common/tests/src/org/jboss/soa/esb/notification/MacroExpanderUnitTest_expected1.xml	2006-08-01 18:47:29 UTC (rev 5384)
+++ labs/jbossesb/branches/refactor/product/core/common/tests/src/org/jboss/soa/esb/notification/MacroExpanderUnitTest_expected1.xml	2006-08-01 19:50:06 UTC (rev 5385)
@@ -1 +0,0 @@
-<rootEl attrb1="value1" attrb2="ReplacementBNV!BatchNumValue"><childEl attrb1="ReplacementUIDV!UIDValue"/></rootEl>
\ No newline at end of file

Copied: labs/jbossesb/branches/refactor/product/core/common/tests/src/org/jboss/soa/esb/notification/MacroExpanderUnitTest_expected1.xml (from rev 5384, labs/jbossesb/trunk/product/core/common/tests/src/org/jboss/soa/esb/notification/MacroExpanderUnitTest_expected1.xml)

Deleted: labs/jbossesb/branches/refactor/product/core/common/tests/src/org/jboss/soa/esb/notification/NotificationListUnitTest.java
===================================================================
--- labs/jbossesb/trunk/product/core/common/tests/src/org/jboss/soa/esb/notification/NotificationListUnitTest.java	2006-08-01 18:47:29 UTC (rev 5384)
+++ labs/jbossesb/branches/refactor/product/core/common/tests/src/org/jboss/soa/esb/notification/NotificationListUnitTest.java	2006-08-01 19:50:06 UTC (rev 5385)
@@ -1,75 +0,0 @@
-/*
- * 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.util.ArrayList;
-import java.util.List;
-
-import org.jboss.soa.esb.helpers.DomElement;
-
-import junit.framework.TestCase;
-
-/**
- * NotificationList unit tests.
- * @author <a href="mailto:tom.fennelly at jboss.com">tom.fennelly at jboss.com</a>
- */
-public class NotificationListUnitTest extends TestCase {
-
-	public void test_NotificationList() throws Exception {
-		DomElement domEl = DomElement.fromInputStream(getClass().getResourceAsStream("NotificationListUnitTest_testfile1.xml"));
-		NotificationList nList = new NotificationList(domEl);
-		
-		List<String> messageList = new ArrayList<String>();
-		TestNotificationTarget1.messageList = messageList; 
-		TestNotificationTarget2.messageList = messageList;
-		
-		nList.sendNotification("tom");
-		assertEquals(4, messageList.size());
-		assertEquals("message 1-tom", messageList.get(0));
-		assertEquals("message 2-tom", messageList.get(1));
-		assertEquals("message 3-tom", messageList.get(2));
-		assertEquals("message 4-tom", messageList.get(3));
-	}
-	
-	public void test_assertionMethods() throws Exception {
-		DomElement domEl;
-		NotificationList nList;
-		
-		domEl = new DomElement("notif");
-		nList = new NotificationList(domEl);
-		assertTrue(nList.isOK());
-		assertTrue(nList.isErr());
-		// REVIEW: Is this behavior OK??  Can be OK and Err at the same time!!
-		
-		domEl = new DomElement("notif");
-		domEl.setAttr(NotificationList.TYPE, "ok");
-		nList = new NotificationList(domEl);
-		assertTrue(nList.isOK());
-		assertTrue(!nList.isErr());
-
-		domEl = new DomElement("notif");
-		domEl.setAttr(NotificationList.TYPE, "err");
-		nList = new NotificationList(domEl);
-		assertTrue(!nList.isOK());
-		assertTrue(nList.isErr());
-	}
-}

Copied: labs/jbossesb/branches/refactor/product/core/common/tests/src/org/jboss/soa/esb/notification/NotificationListUnitTest.java (from rev 5384, labs/jbossesb/trunk/product/core/common/tests/src/org/jboss/soa/esb/notification/NotificationListUnitTest.java)

Deleted: labs/jbossesb/branches/refactor/product/core/common/tests/src/org/jboss/soa/esb/notification/NotificationListUnitTest_testfile1.xml
===================================================================
--- labs/jbossesb/trunk/product/core/common/tests/src/org/jboss/soa/esb/notification/NotificationListUnitTest_testfile1.xml	2006-08-01 18:47:29 UTC (rev 5384)
+++ labs/jbossesb/branches/refactor/product/core/common/tests/src/org/jboss/soa/esb/notification/NotificationListUnitTest_testfile1.xml	2006-08-01 19:50:06 UTC (rev 5385)
@@ -1,6 +0,0 @@
-<notif type="ok">
-	<target class="TestNotificationTarget1" message="message 1" />
-	<target class="TestNotificationTarget1" message="message 2" />
-	<target class="TestNotificationTarget2" message="message 3" />
-	<target class="TestNotificationTarget2" message="message 4" />
-</notif>
\ No newline at end of file

Copied: labs/jbossesb/branches/refactor/product/core/common/tests/src/org/jboss/soa/esb/notification/NotificationListUnitTest_testfile1.xml (from rev 5384, labs/jbossesb/trunk/product/core/common/tests/src/org/jboss/soa/esb/notification/NotificationListUnitTest_testfile1.xml)

Deleted: labs/jbossesb/branches/refactor/product/core/common/tests/src/org/jboss/soa/esb/notification/NotifyEmailUnitTest.java
===================================================================
--- labs/jbossesb/trunk/product/core/common/tests/src/org/jboss/soa/esb/notification/NotifyEmailUnitTest.java	2006-08-01 18:47:29 UTC (rev 5384)
+++ labs/jbossesb/branches/refactor/product/core/common/tests/src/org/jboss/soa/esb/notification/NotifyEmailUnitTest.java	2006-08-01 19:50:06 UTC (rev 5385)
@@ -1,58 +0,0 @@
-/*
- * 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.mail.MessagingException;
-import javax.mail.internet.AddressException;
-
-import org.jboss.soa.esb.helpers.DomElement;
-import org.jboss.soa.esb.helpers.EsbEmail;
-
-import junit.framework.TestCase;
-
-/**
- * NotifyEmail unit tests.
- * @author <a href="mailto:tom.fennelly at jboss.com">tom.fennelly at jboss.com</a>
- */
-public class NotifyEmailUnitTest extends TestCase {
-
-	public void test_NotifyEmail() throws Exception {
-		DomElement emailMessageEl = new DomElement("email");
-		
-		emailMessageEl.setAttr(EsbEmail.FROM, "a.b at c.com");
-		emailMessageEl.setAttr(EsbEmail.SENDTO, "d.e at f.com");
-		emailMessageEl.setAttr(EsbEmail.COPYTO, "g.h at i.com");
-		emailMessageEl.setAttr(EsbEmail.MESSAGE, "Hi there!!!");
-		
-		NotifyEmail ne = new TestNotifyEmail(emailMessageEl);
-		ne.sendNotification("Hello");
-	}
-	
-	private class TestNotifyEmail extends NotifyEmail {
-		public TestNotifyEmail(DomElement p_oP) throws Exception {
-			super(p_oP);
-		}
-		protected void sendEmailNotification(DomElement messageParams) throws AddressException, MessagingException {
-			assertEquals("Hi there!!!\nHello", messageParams.getAttr(EsbEmail.MESSAGE));
-		}		
-	}
-}

Copied: labs/jbossesb/branches/refactor/product/core/common/tests/src/org/jboss/soa/esb/notification/NotifyEmailUnitTest.java (from rev 5384, labs/jbossesb/trunk/product/core/common/tests/src/org/jboss/soa/esb/notification/NotifyEmailUnitTest.java)

Deleted: labs/jbossesb/branches/refactor/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-08-01 18:47:29 UTC (rev 5384)
+++ labs/jbossesb/branches/refactor/product/core/common/tests/src/org/jboss/soa/esb/notification/NotifyFilesUnitTest.java	2006-08-01 19:50:06 UTC (rev 5385)
@@ -1,127 +0,0 @@
-/*
- * 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_NonStringObj() 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('.', '/');
-	}
-}

Copied: labs/jbossesb/branches/refactor/product/core/common/tests/src/org/jboss/soa/esb/notification/NotifyFilesUnitTest.java (from rev 5384, labs/jbossesb/trunk/product/core/common/tests/src/org/jboss/soa/esb/notification/NotifyFilesUnitTest.java)

Deleted: labs/jbossesb/branches/refactor/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-08-01 18:47:29 UTC (rev 5384)
+++ labs/jbossesb/branches/refactor/product/core/common/tests/src/org/jboss/soa/esb/notification/NotifyQueuesUnitTest.java	2006-08-01 19:50:06 UTC (rev 5385)
@@ -1,138 +0,0 @@
-/*
- * 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.JMSException;
-import javax.jms.Message;
-import javax.jms.ObjectMessage;
-import javax.jms.TextMessage;
-import javax.naming.Context;
-import javax.naming.InitialContext;
-import javax.naming.NamingException;
-
-import org.jboss.soa.esb.helpers.DomElement;
-import org.mockejb.jms.MockQueue;
-import org.mockejb.jms.MockTopic;
-import org.mockejb.jms.QueueConnectionFactoryImpl;
-import org.mockejb.jndi.MockContextFactory;
-
-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 {
-
-	private MockQueue mockQueue1;;
-	private MockQueue mockQueue2;
-	private NotifyQueues notifyQueues;
-	
-	protected void setUp() throws Exception {
-		MockContextFactory.setAsInitial();		
-		Context ctx = new InitialContext();
-		ctx.rebind(NotifyQueues.CONNECTION_FACTORY, new QueueConnectionFactoryImpl());
-
-		DomElement rootEl = new DomElement("rootEl");
-
-		addMessagePropertyConfigs(rootEl);
-		addQueueConfig(rootEl, "queue1");
-		addQueueConfig(rootEl, "queue2");
-		mockQueue1 = createAndBindQueue("queue1");
-		mockQueue2 = createAndBindQueue("queue2");
-		
-		notifyQueues = new NotifyQueues(rootEl);
-	}
-
-	protected void tearDown() throws Exception {
-		notifyQueues.release();
-		MockContextFactory.revertSetAsInitial();		
-	}
-
-	public void test_StringObj() throws Exception {
-		notifyQueues.sendNotification("Hello");
-		
-		checkQueueTextMessage(mockQueue1, 0, "Hello");
-		checkQueueTextMessage(mockQueue2, 0, "Hello");
-	}
-	
-	public void test_NonStringObj() throws Exception {
-		notifyQueues.sendNotification(new Integer(123));
-		
-		checkQueueObjectMessage(mockQueue1, 0, new Integer(123));
-		checkQueueObjectMessage(mockQueue2, 0, new Integer(123));
-	}
-
-	private void checkQueueTextMessage(MockQueue mockQueue, int messageIdx, String expectedText) throws JMSException {
-		assertTrue(mockQueue.getMessages().size() > messageIdx);		
-		Message message = mockQueue.getMessageAt(0);
-		assertTrue(message instanceof TextMessage);
-		assertEquals(expectedText, ((TextMessage)message).getText());
-		assertEquals("testpropvalue", message.getStringProperty("testpropname"));
-	}
-
-	private void checkQueueObjectMessage(MockQueue mockQueue, int messageIdx, Object expectedObj) throws JMSException {
-		assertTrue(mockQueue.getMessages().size() > messageIdx);		
-		Message message = mockQueue.getMessageAt(0);
-		assertTrue(message instanceof ObjectMessage);
-		assertEquals(expectedObj, ((ObjectMessage)message).getObject());
-		
-		// Note that the property bindings don't seem to work in this test i.e.
-		// it's returning null but should be returning the same as for a 
-		// TextMessage (See above).  This is most likely a mockejb lib issue
-		// and so we're ignoring it :-)
-		assertEquals(null, message.getStringProperty("testpropname"));
-	}
-	
-	private void addMessagePropertyConfigs(DomElement rootEl) {
-		DomElement propEl = new DomElement(NotifyQueues.CHILD_MSG_PROP);
-		
-		propEl.setAttr(NotifyJMS.ATT_PROP_NAME, "testpropname");
-		propEl.setAttr(NotifyJMS.ATT_PROP_VALUE, "testpropvalue");
-		rootEl.addElemChild(propEl);		
-	}
-
-	private void addQueueConfig(DomElement rootEl, String queueName) {
-		DomElement queueEl = new DomElement(NotifyQueues.CHILD_QUEUE);
-		
-		queueEl.setAttr(NotifyJMS.ATT_DEST_NAME, queueName);
-		rootEl.addElemChild(queueEl);		
-	}
-
-	private MockQueue createAndBindQueue(String queueName) throws NamingException {
-		MockQueue mockQueue = new MockQueue(queueName);
-				
-		Context ctx = new InitialContext();
-		ctx.rebind(queueName, mockQueue);
-		
-		return mockQueue;
-	}
-
-	private MockTopic createAndBindTopic(String topicName) throws NamingException {
-		MockTopic mockTopic = new MockTopic(topicName);
-		
-		Context ctx = new InitialContext();
-		ctx.rebind(topicName, mockTopic);
-		
-		return mockTopic;
-	}
-}

Copied: labs/jbossesb/branches/refactor/product/core/common/tests/src/org/jboss/soa/esb/notification/NotifyQueuesUnitTest.java (from rev 5384, labs/jbossesb/trunk/product/core/common/tests/src/org/jboss/soa/esb/notification/NotifyQueuesUnitTest.java)

Deleted: labs/jbossesb/branches/refactor/product/core/common/tests/src/org/jboss/soa/esb/notification/NotifySqlTableUnitTest.java
===================================================================
--- labs/jbossesb/trunk/product/core/common/tests/src/org/jboss/soa/esb/notification/NotifySqlTableUnitTest.java	2006-08-01 18:47:29 UTC (rev 5384)
+++ labs/jbossesb/branches/refactor/product/core/common/tests/src/org/jboss/soa/esb/notification/NotifySqlTableUnitTest.java	2006-08-01 19:50:06 UTC (rev 5385)
@@ -1,52 +0,0 @@
-/*
- * 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 org.jboss.soa.esb.helpers.DomElement;
-
-import junit.framework.TestCase;
-
-/**
- * NotifySqlTable unit tests.
- * @author <a href="mailto:tom.fennelly at jboss.com">tom.fennelly at jboss.com</a>
- */
-public class NotifySqlTableUnitTest extends TestCase {
-
-	public void test_NotifySqlTable() throws Exception {
-		DomElement domEl = DomElement.fromInputStream(getClass().getResourceAsStream("NotifySqlTable_testfile1.xml"));
-		NotifySqlTable nst = new NotifySqlTable(domEl);
-		
-		assertEquals("driver-class", nst.m_sDriver);
-		assertEquals("connection-url", nst.m_sURL);
-		assertEquals("user-name", nst.m_sUser);
-		assertEquals("password", nst.m_sPwd);
-		assertEquals("table", nst.m_sTable);
-		assertEquals("dataColumn", nst.m_sDataCol);
-		
-		assertEquals(3, nst.m_oCols.size());
-		assertEquals("colvalue1", nst.m_oCols.getProperty("colname1"));
-		assertEquals("colvalue2", nst.m_oCols.getProperty("colname2"));
-		assertEquals("colvalue3", nst.m_oCols.getProperty("colname3"));
-
-		assertEquals("insert into table (\"colname3\",\"colname2\",\"colname1\") values ('colvalue3','colvalue2','colvalue1')", nst.getInsertStmt());
-	}
-}

Copied: labs/jbossesb/branches/refactor/product/core/common/tests/src/org/jboss/soa/esb/notification/NotifySqlTableUnitTest.java (from rev 5384, labs/jbossesb/trunk/product/core/common/tests/src/org/jboss/soa/esb/notification/NotifySqlTableUnitTest.java)

Deleted: labs/jbossesb/branches/refactor/product/core/common/tests/src/org/jboss/soa/esb/notification/NotifySqlTable_testfile1.xml
===================================================================
--- labs/jbossesb/trunk/product/core/common/tests/src/org/jboss/soa/esb/notification/NotifySqlTable_testfile1.xml	2006-08-01 18:47:29 UTC (rev 5384)
+++ labs/jbossesb/branches/refactor/product/core/common/tests/src/org/jboss/soa/esb/notification/NotifySqlTable_testfile1.xml	2006-08-01 19:50:06 UTC (rev 5385)
@@ -1,12 +0,0 @@
-<notif	driver-class="driver-class" 
-		connection-url="connection-url" 
-		user-name="user-name" 
-		password="password" 
-		table="table"
-		dataColumn="dataColumn">
-		
-		<column name="colname1" value="colvalue1"/>
-		<column name="colname2" value="colvalue2"/>
-		<column name="colname3" value="colvalue3"/>
-		
-</notif>
\ No newline at end of file

Copied: labs/jbossesb/branches/refactor/product/core/common/tests/src/org/jboss/soa/esb/notification/NotifySqlTable_testfile1.xml (from rev 5384, labs/jbossesb/trunk/product/core/common/tests/src/org/jboss/soa/esb/notification/NotifySqlTable_testfile1.xml)

Deleted: labs/jbossesb/branches/refactor/product/core/common/tests/src/org/jboss/soa/esb/notification/NotifyTopicsUnitTest.java
===================================================================
--- labs/jbossesb/trunk/product/core/common/tests/src/org/jboss/soa/esb/notification/NotifyTopicsUnitTest.java	2006-08-01 18:47:29 UTC (rev 5384)
+++ labs/jbossesb/branches/refactor/product/core/common/tests/src/org/jboss/soa/esb/notification/NotifyTopicsUnitTest.java	2006-08-01 19:50:06 UTC (rev 5385)
@@ -1,128 +0,0 @@
-/*
- * 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.JMSException;
-import javax.jms.Message;
-import javax.jms.ObjectMessage;
-import javax.jms.TextMessage;
-import javax.naming.Context;
-import javax.naming.InitialContext;
-import javax.naming.NamingException;
-
-import org.jboss.soa.esb.helpers.DomElement;
-import org.mockejb.jms.MockTopic;
-import org.mockejb.jms.TopicConnectionFactoryImpl;
-import org.mockejb.jndi.MockContextFactory;
-
-import junit.framework.TestCase;
-
-/**
- * NotifyTopics unit tests.
- * @author <a href="mailto:tom.fennelly at jboss.com">tom.fennelly at jboss.com</a>
- */
-public class NotifyTopicsUnitTest extends TestCase {
-
-	private MockTopic mockTopic1;;
-	private MockTopic mockTopic2;
-	private NotifyTopics notifyTopics;
-	
-	protected void setUp() throws Exception {
-		MockContextFactory.setAsInitial();		
-		Context ctx = new InitialContext();
-		ctx.rebind(NotifyTopics.CONNECTION_FACTORY, new TopicConnectionFactoryImpl());
-
-		DomElement rootEl = new DomElement("rootEl");
-
-		addMessagePropertyConfigs(rootEl);
-		addTopicConfig(rootEl, "topic1");
-		addTopicConfig(rootEl, "topic2");
-		mockTopic1 = createAndBindTopic("topic1");
-		mockTopic2 = createAndBindTopic("topic2");
-		
-		notifyTopics = new NotifyTopics(rootEl);
-	}
-
-	protected void tearDown() throws Exception {
-		notifyTopics.release();
-		MockContextFactory.revertSetAsInitial();		
-	}
-
-	public void test_StringObj() throws Exception {
-		notifyTopics.sendNotification("Hello");
-		
-		checkTopicTextMessage(mockTopic1, 0, "Hello");
-		checkTopicTextMessage(mockTopic2, 0, "Hello");
-	}
-	
-	public void test_NonStringObj() throws Exception {
-		notifyTopics.sendNotification(new Integer(123));
-		
-		checkTopicObjectMessage(mockTopic1, 0, new Integer(123));
-		checkTopicObjectMessage(mockTopic2, 0, new Integer(123));
-	}
-
-	private void checkTopicTextMessage(MockTopic mockTopic, int messageIdx, String expectedText) throws JMSException {
-		assertTrue(mockTopic.getMessages().size() > messageIdx);		
-		Message message = mockTopic.getMessageAt(0);
-		assertTrue(message instanceof TextMessage);
-		assertEquals(expectedText, ((TextMessage)message).getText());
-		assertEquals("testpropvalue", message.getStringProperty("testpropname"));
-	}
-
-	private void checkTopicObjectMessage(MockTopic mockTopic, int messageIdx, Object expectedObj) throws JMSException {
-		assertTrue(mockTopic.getMessages().size() > messageIdx);		
-		Message message = mockTopic.getMessageAt(0);
-		assertTrue(message instanceof ObjectMessage);
-		assertEquals(expectedObj, ((ObjectMessage)message).getObject());
-		
-		// Note that the property bindings don't seem to work in this test i.e.
-		// it's returning null but should be returning the same as for a 
-		// TextMessage (See above).  This is most likely a mockejb lib issue
-		// and so we're ignoring it :-)
-		assertEquals(null, message.getStringProperty("testpropname"));
-	}
-	
-	private void addMessagePropertyConfigs(DomElement rootEl) {
-		DomElement propEl = new DomElement(NotifyTopics.CHILD_MSG_PROP);
-		
-		propEl.setAttr(NotifyJMS.ATT_PROP_NAME, "testpropname");
-		propEl.setAttr(NotifyJMS.ATT_PROP_VALUE, "testpropvalue");
-		rootEl.addElemChild(propEl);		
-	}
-
-	private void addTopicConfig(DomElement rootEl, String topicName) {
-		DomElement topicEl = new DomElement(NotifyTopics.CHILD_TOPIC);
-		
-		topicEl.setAttr(NotifyJMS.ATT_DEST_NAME, topicName);
-		rootEl.addElemChild(topicEl);		
-	}
-
-	private MockTopic createAndBindTopic(String topicName) throws NamingException {
-		MockTopic mockTopic = new MockTopic(topicName);
-		
-		Context ctx = new InitialContext();
-		ctx.rebind(topicName, mockTopic);
-		
-		return mockTopic;
-	}
-}

Copied: labs/jbossesb/branches/refactor/product/core/common/tests/src/org/jboss/soa/esb/notification/NotifyTopicsUnitTest.java (from rev 5384, labs/jbossesb/trunk/product/core/common/tests/src/org/jboss/soa/esb/notification/NotifyTopicsUnitTest.java)

Deleted: labs/jbossesb/branches/refactor/product/core/common/tests/src/org/jboss/soa/esb/notification/NotifyUtilUnitTest.java
===================================================================
--- labs/jbossesb/trunk/product/core/common/tests/src/org/jboss/soa/esb/notification/NotifyUtilUnitTest.java	2006-08-01 18:47:29 UTC (rev 5384)
+++ labs/jbossesb/branches/refactor/product/core/common/tests/src/org/jboss/soa/esb/notification/NotifyUtilUnitTest.java	2006-08-01 19:50:06 UTC (rev 5385)
@@ -1,79 +0,0 @@
-/*
- * 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;
-import java.util.ArrayList;
-import java.util.HashMap;
-import java.util.List;
-
-import org.jboss.soa.esb.helpers.DomElement;
-import org.jboss.soa.esb.services.InotificationHandler;
-
-import junit.framework.TestCase;
-
-/**
- * NotifyUtil unit tests.
- * @author <a href="mailto:tom.fennelly at jboss.com">tom.fennelly at jboss.com</a>
- */
-public class NotifyUtilUnitTest extends TestCase {
-
-	public void test_NotifyUtil() {
-		DomElement rootEl = new DomElement("rootEl");
-		
-		addNotificationConfig(rootEl, "message1", "ok");
-		addNotificationConfig(rootEl, "message2", "err");
-		addNotificationConfig(rootEl, "message3", "ok");
-		addNotificationConfig(rootEl, "message4", "err");
-		
-		TestNotificationHandler handler = new TestNotificationHandler();
-		NotifyUtil.notifyOK(handler, rootEl, "somemessage", new HashMap());
-		assertEquals(2, handler.messages.size());
-		assertEquals("message1 - somemessage", handler.messages.get(0));
-		assertEquals("message3 - somemessage", handler.messages.get(1));
-
-		handler.messages.clear();
-		NotifyUtil.notifyError(handler, rootEl, "somemessage", new HashMap(), new Exception("test"));
-		assertEquals(3, handler.messages.size());
-		assertTrue(handler.messages.get(0).startsWith("somemessage"));
-		assertTrue(handler.messages.get(1).startsWith("message2 - somemessage"));
-		assertTrue(handler.messages.get(2).startsWith("message4 - somemessage"));
-	}
-	
-	private void addNotificationConfig(DomElement rootEl, String message, String type) {
-		DomElement notifEl = new DomElement(NotificationList.ELEMENT);
-		notifEl.setAttr("message", message);
-		notifEl.setAttr(NotificationList.TYPE, type);
-		rootEl.addElemChild(notifEl);
-	}
-
-	private class TestNotificationHandler implements InotificationHandler {
-		private List<String> messages = new ArrayList<String>();
-		
-		public void sendNotifications(DomElement p_oP, Serializable p_o) throws Exception {
-			messages.add(p_oP.getAttr("message") + " - " + p_o);
-		}
-		public void sendNotifications(Serializable p_o) throws Exception {
-			messages.add(p_o.toString());
-		}
-	}
-}

Copied: labs/jbossesb/branches/refactor/product/core/common/tests/src/org/jboss/soa/esb/notification/NotifyUtilUnitTest.java (from rev 5384, labs/jbossesb/trunk/product/core/common/tests/src/org/jboss/soa/esb/notification/NotifyUtilUnitTest.java)

Deleted: labs/jbossesb/branches/refactor/product/core/common/tests/src/org/jboss/soa/esb/notification/TestNotificationTarget1.java
===================================================================
--- labs/jbossesb/trunk/product/core/common/tests/src/org/jboss/soa/esb/notification/TestNotificationTarget1.java	2006-08-01 18:47:29 UTC (rev 5384)
+++ labs/jbossesb/branches/refactor/product/core/common/tests/src/org/jboss/soa/esb/notification/TestNotificationTarget1.java	2006-08-01 19:50:06 UTC (rev 5385)
@@ -1,24 +0,0 @@
-package org.jboss.soa.esb.notification;
-
-
-import java.io.Serializable;
-import java.util.List;
-
-import org.jboss.soa.esb.helpers.DomElement;
-
-public class TestNotificationTarget1 extends NotificationTarget {
-
-	private DomElement config;
-	
-	public static List<String> messageList;
-	
-	public TestNotificationTarget1(DomElement targetConf) {
-		super(targetConf);
-		config = targetConf;
-	}
-
-	@Override
-	public void sendNotification(Serializable obj) throws Exception {
-		messageList.add(config.getAttr("message") + "-" + obj);
-	}
-}

Copied: labs/jbossesb/branches/refactor/product/core/common/tests/src/org/jboss/soa/esb/notification/TestNotificationTarget1.java (from rev 5384, labs/jbossesb/trunk/product/core/common/tests/src/org/jboss/soa/esb/notification/TestNotificationTarget1.java)

Deleted: labs/jbossesb/branches/refactor/product/core/common/tests/src/org/jboss/soa/esb/notification/TestNotificationTarget2.java
===================================================================
--- labs/jbossesb/trunk/product/core/common/tests/src/org/jboss/soa/esb/notification/TestNotificationTarget2.java	2006-08-01 18:47:29 UTC (rev 5384)
+++ labs/jbossesb/branches/refactor/product/core/common/tests/src/org/jboss/soa/esb/notification/TestNotificationTarget2.java	2006-08-01 19:50:06 UTC (rev 5385)
@@ -1,10 +0,0 @@
-package org.jboss.soa.esb.notification;
-
-import org.jboss.soa.esb.helpers.DomElement;
-
-public class TestNotificationTarget2 extends TestNotificationTarget1 {
-
-	public TestNotificationTarget2(DomElement targetConf) {
-		super(targetConf);
-	}
-}

Copied: labs/jbossesb/branches/refactor/product/core/common/tests/src/org/jboss/soa/esb/notification/TestNotificationTarget2.java (from rev 5384, labs/jbossesb/trunk/product/core/common/tests/src/org/jboss/soa/esb/notification/TestNotificationTarget2.java)

Copied: labs/jbossesb/branches/refactor/product/core/common/tests/src/org/jboss/soa/esb/util/BaseBusinessObjectUnitTest.java (from rev 5384, labs/jbossesb/trunk/product/core/common/tests/src/org/jboss/soa/esb/util/BaseBusinessObjectUnitTest.java)

Copied: labs/jbossesb/branches/refactor/product/core/common/tests/src/org/jboss/soa/esb/util/BaseBusinessObjectUnitTest_testfile1.xml (from rev 5384, labs/jbossesb/trunk/product/core/common/tests/src/org/jboss/soa/esb/util/BaseBusinessObjectUnitTest_testfile1.xml)

Modified: labs/jbossesb/branches/refactor/product/core/common/tests/src/org/jboss/soa/esb/util/BobjStdDTOUnitTest.java
===================================================================
--- labs/jbossesb/branches/refactor/product/core/common/tests/src/org/jboss/soa/esb/util/BobjStdDTOUnitTest.java	2006-08-01 18:47:29 UTC (rev 5384)
+++ labs/jbossesb/branches/refactor/product/core/common/tests/src/org/jboss/soa/esb/util/BobjStdDTOUnitTest.java	2006-08-01 19:50:06 UTC (rev 5385)
@@ -21,9 +21,13 @@
  */
 package org.jboss.soa.esb.util;
 
+import java.util.ArrayList;
+import java.util.List;
+
 import org.jboss.soa.esb.StreamUtils;
 import org.jboss.soa.esb.StringUtils;
 import org.jboss.soa.esb.W3CDomUtils;
+import org.jboss.soa.esb.common.bizclasses.Address;
 import org.w3c.dom.Document;
 
 import junit.framework.TestCase;
@@ -96,6 +100,32 @@
 		assertTrue(StringUtils.equalsIgnoreLinebreaks(source, serialisedVer, false));
 	}
 	
+	public void test_getChildObjList() throws Exception {
+		String source = new String(StreamUtils.readStream(
+				getClass().getResourceAsStream("BobjStdDTOUnitTest_testfile1.xml")));
+		BobjStdDTO dto = BobjStdDTO.getFromXml(source);
+				
+		
+		List<? extends BaseBusinessObject> bobList = dto.getChildObjList("Laddr", Address.class);
+		
+		assertEquals(1, bobList.size());
+		assertTrue(bobList.get(0) instanceof Address);
+		Address address = (Address) bobList.get(0);
+		assertEquals("Argentina", address.getField(Address.ATTRIB.cntry));
+		assertEquals("1642", address.getField(Address.ATTRIB.postalZip));
+		assertEquals("Buenos Aires", address.getField(Address.ATTRIB.provSt));
+		assertEquals("Balcarce", address.getField(Address.ATTRIB.strLine1));
+		assertEquals(null, address.getField(Address.ATTRIB.strLine2));
+		assertEquals("50", address.getField(Address.ATTRIB.strNum));
+		assertEquals(null, address.getField(Address.ATTRIB.suite));
+		assertEquals("San Isidro", address.getField(Address.ATTRIB.twnCty1));
+		assertEquals(null, address.getField(Address.ATTRIB.twnCty2));
+		assertEquals(2, address.getPhoneCount());
+		assertEquals("(416)555-1212", address.getPhoneAt(0).toString());
+		assertEquals("+54(11)4555-1111 Ext 7", address.getPhoneAt(1).toString());
+		
+	}
+	
 	public void test_MiscTests() throws Exception {
 		String source = new String(StreamUtils.readStream(
 				getClass().getResourceAsStream("BobjStdDTOUnitTest_testfile1.xml")));

Copied: labs/jbossesb/branches/refactor/product/core/common/tests/src/org/jboss/soa/esb/util/TestBob.java (from rev 5384, labs/jbossesb/trunk/product/core/common/tests/src/org/jboss/soa/esb/util/TestBob.java)

Modified: labs/jbossesb/branches/refactor/product/core/services/src/org/jboss/soa/esb/internal/core/objectstore/AbstractBobjStore.java
===================================================================
--- labs/jbossesb/branches/refactor/product/core/services/src/org/jboss/soa/esb/internal/core/objectstore/AbstractBobjStore.java	2006-08-01 18:47:29 UTC (rev 5384)
+++ labs/jbossesb/branches/refactor/product/core/services/src/org/jboss/soa/esb/internal/core/objectstore/AbstractBobjStore.java	2006-08-01 19:50:06 UTC (rev 5385)
@@ -172,7 +172,7 @@
    * @see BobjStore#getStore(String)
    */
  public AbstractBobjStore getStore (BaseBusinessObject p_o)
- { return  (null != p_o) ? getStore(p_o.classNm()) : null;
+ { return  (null != p_o) ? getStore(p_o.getClass().getSimpleName()) : null;
  } //__________________________________
 
  /**

Copied: labs/jbossesb/branches/refactor/product/docs/Install/database/README_POSTGRES.TXT (from rev 5384, labs/jbossesb/trunk/product/docs/Install/database/README_POSTGRES.TXT)

Modified: labs/jbossesb/branches/refactor/product/docs/Install/deploy/JBossESB-ds.xml
===================================================================
--- labs/jbossesb/branches/refactor/product/docs/Install/deploy/JBossESB-ds.xml	2006-08-01 18:47:29 UTC (rev 5384)
+++ labs/jbossesb/branches/refactor/product/docs/Install/deploy/JBossESB-ds.xml	2006-08-01 19:50:06 UTC (rev 5385)
@@ -2,7 +2,7 @@
   <local-tx-datasource>
     <jndi-name>JBossESBDS</jndi-name>
 
-    <connection-url>jdbc:postgresql://localhost:5432/JBossESB</connection-url>
+    <connection-url>jdbc:postgresql://localhost:5432/jbossesb</connection-url>
     <driver-class>org.postgresql.Driver</driver-class>
     <user-name>postgres</user-name>
     <password>postgres</password>

Modified: labs/jbossesb/branches/refactor/product/docs/JBossESB Getting Started Guide.rtf
===================================================================
--- labs/jbossesb/branches/refactor/product/docs/JBossESB Getting Started Guide.rtf	2006-08-01 18:47:29 UTC (rev 5384)
+++ labs/jbossesb/branches/refactor/product/docs/JBossESB Getting Started Guide.rtf	2006-08-01 19:50:06 UTC (rev 5385)
@@ -1 +1,285 @@
-{\rtf1\mac\ansicpg10000\uc1\deff0\stshfdbch0\stshfloch0\stshfhich0\stshfbi0\deflang1033\deflangfe1033{\upr{\fonttbl{\f0\fnil\fcharset256\fprq2{\*\panose 00020206030504050203}Times New Roman;}
{\f1\fnil\fcharset256\fprq2{\*\panose 00020b06040202020202}Arial;}{\f2\fnil\fcharset256\fprq2{\*\panose 00020703090202050204}Courier New;}{\f3\fnil\fcharset2\fprq2{\*\panose 00020005000000000000}Symbol;}
{\f14\fnil\fcharset2\fprq2{\*\panose 00050201020108040807}Wingdings;}}{\*\ud{\fonttbl{\f0\fnil\fcharset256\fprq2{\*\panose 00020206030504050203}Times New Roman;}{\f1\fnil\fcharset256\fprq2{\*\panose 00020b06040202020202}Arial;}
{\f2\fnil\fcharset256\fprq2{\*\panose 00020703090202050204}Courier New;}{\f3\fnil\fcharset2\fprq2{\*\panose 00020005000000000000}Symbol;}{\f14\fnil\fcharset2\fprq2{\*\panose 00050201020108040807}Wingdings;}}}}{\colortbl;\red0\green0\blue0;
\red0\green0\blue255;\red0\green255\blue255;\red0\green255\blue0;\red255\green0\blue255;\red255\green0\blue0;\red255\green255\blue0;\red255\green255\blue255;\red0\green0\blue128;\red0\green128\blue128;\red0\green128\blue0;\red128\green0\blue128;
\red128\green0\blue0;\red128\green128\blue0;\red128\green128\blue128;\red192\green192\blue192;}{\stylesheet{\ql \li0\ri0\widctlpar\aspalpha\aspnum\faauto\adjustright\rin0\lin0\itap0 \lang1033\langfe1033\cgrid\langnp1033\langfenp1033 \snext0 Normal;}{
\s1\ql \li0\ri0\sb240\sa60\keepn\widctlpar\aspalpha\aspnum\faauto\outlinelevel0\adjustright\rin0\lin0\itap0 \b\f1\fs32\lang1033\langfe1033\kerning32\cgrid\langnp1033\langfenp1033 \sbasedon0 \snext0 heading 1;}{
\s2\ql \li0\ri0\sb240\sa60\keepn\widctlpar\aspalpha\aspnum\faauto\outlinelevel1\adjustright\rin0\lin0\itap0 \b\i\f1\fs28\lang1033\langfe1033\cgrid\langnp1033\langfenp1033 \sbasedon0 \snext0 heading 2;}{
\s3\ql \li0\ri0\sb240\sa60\keepn\widctlpar\aspalpha\aspnum\faauto\outlinelevel2\adjustright\rin0\lin0\itap0 \b\f1\fs26\lang1033\langfe1033\cgrid\langnp1033\langfenp1033 \sbasedon0 \snext0 heading 3;}{\*\cs10 \additive Default Paragraph Font;}{\*
\ts11\tsrowd\trftsWidthB3\trpaddl108\trpaddr108\trpaddfl3\trpaddft3\trpaddfb3\trpaddfr3\trcbpat1\trcfpat1\tscellwidthfts0\tsvertalt\tsbrdrt\tsbrdrl\tsbrdrb\tsbrdrr\tsbrdrdgl\tsbrdrdgr\tsbrdrh\tsbrdrv 
\ql \li0\ri0\widctlpar\aspalpha\aspnum\faauto\adjustright\rin0\lin0\itap0 \fs20\lang1024\langfe1024\cgrid\langnp1024\langfenp1024 \snext11 Normal Table;}{\s15\ql \li0\ri0\widctlpar\aspalpha\aspnum\faauto\adjustright\rin0\lin0\itap0 
\f1\fs22\lang1033\langfe1033\cgrid\langnp1033\langfenp1033 \sbasedon0 \snext15 Body Text;}{\*\cs16 \additive \ul\cf2 \sbasedon10 Hyperlink;}}{\*\listtable{\list\listtemplateid-433178152\listhybrid{\listlevel\levelnfc23\levelnfcn23\leveljc0\leveljcn0
\levelfollow0\levelstartat0\levelspace720\levelindent0{\leveltext\leveltemplateid-1717533548\'01-;}{\levelnumbers;}\loch\af1\hich\af1\dbch\f0\chbrdr\brdrnone\brdrcf1 \chshdng0\chcfpat1\chcbpat1\fbias0 \fi-360\li1080\jclisttab\tx1080\lin1080 }{\listlevel
\levelnfc23\levelnfcn23\leveljc0\leveljcn0\levelfollow0\levelstartat1\levelspace0\levelindent0{\leveltext\leveltemplateid197641\'01o;}{\levelnumbers;}\f2\chbrdr\brdrnone\brdrcf1 \chshdng0\chcfpat1\chcbpat1\fbias0 \fi-360\li1800\jclisttab\tx1800\lin1800 }
{\listlevel\levelnfc23\levelnfcn23\leveljc0\leveljcn0\levelfollow0\levelstartat1\levelspace0\levelindent0{\leveltext\leveltemplateid328713\'01\u-3929 _;}{\levelnumbers;}\f14\chbrdr\brdrnone\brdrcf1 \chshdng0\chcfpat1\chcbpat1\fbias0 \fi-360\li2520
\jclisttab\tx2520\lin2520 }{\listlevel\levelnfc23\levelnfcn23\leveljc0\leveljcn0\levelfollow0\levelstartat1\levelspace360\levelindent0{\leveltext\leveltemplateid66569\'01\u-3913 _;}{\levelnumbers;}\loch\af3\dbch\af0\hich\f3 \f3\chbrdr\brdrnone\brdrcf1 
\chshdng0\chcfpat1\chcbpat1\fbias0 \fi-360\li3240\jclisttab\tx3240\lin3240 }{\listlevel\levelnfc23\levelnfcn23\leveljc0\leveljcn0\levelfollow0\levelstartat1\levelspace0\levelindent0{\leveltext\leveltemplateid197641\'01o;}{\levelnumbers;}\f2\chbrdr
\brdrnone\brdrcf1 \chshdng0\chcfpat1\chcbpat1\fbias0 \fi-360\li3960\jclisttab\tx3960\lin3960 }{\listlevel\levelnfc23\levelnfcn23\leveljc0\leveljcn0\levelfollow0\levelstartat1\levelspace0\levelindent0{\leveltext\leveltemplateid328713
\'01\u-3929 _;}{\levelnumbers;}\f14\chbrdr\brdrnone\brdrcf1 \chshdng0\chcfpat1\chcbpat1\fbias0 \fi-360\li4680\jclisttab\tx4680\lin4680 }{\listlevel\levelnfc23\levelnfcn23\leveljc0\leveljcn0\levelfollow0\levelstartat1\levelspace0\levelindent0{\leveltext
\leveltemplateid66569\'01\u-3913 _;}{\levelnumbers;}\loch\af3\dbch\af0\hich\f3 \f3\chbrdr\brdrnone\brdrcf1 \chshdng0\chcfpat1\chcbpat1\fbias0 \fi-360\li5400\jclisttab\tx5400\lin5400 }{\listlevel\levelnfc23\levelnfcn23\leveljc0\leveljcn0\levelfollow0
\levelstartat1\levelspace0\levelindent0{\leveltext\leveltemplateid197641\'01o;}{\levelnumbers;}\f2\chbrdr\brdrnone\brdrcf1 \chshdng0\chcfpat1\chcbpat1\fbias0 \fi-360\li6120\jclisttab\tx6120\lin6120 }{\listlevel\levelnfc23\levelnfcn23\leveljc0\leveljcn0
\levelfollow0\levelstartat1\levelspace0\levelindent0{\leveltext\leveltemplateid328713\'01\u-3929 _;}{\levelnumbers;}\f14\chbrdr\brdrnone\brdrcf1 \chshdng0\chcfpat1\chcbpat1\fbias0 \fi-360\li6840\jclisttab\tx6840\lin6840 }{\listname ;}\listid88232598}
{\list\listtemplateid-870289146\listhybrid{\listlevel\levelnfc23\levelnfcn23\leveljc0\leveljcn0\levelfollow0\levelstartat1\levelspace360\levelindent0{\leveltext\leveltemplateid66569\'01\u-3913 _;}{\levelnumbers;}\loch\af3\dbch\af0\hich\f3 \f3\chbrdr
\brdrnone\brdrcf1 \chshdng0\chcfpat1\chcbpat1\fbias0 \fi-360\li1080\jclisttab\tx1080\lin1080 }{\listlevel\levelnfc23\levelnfcn23\leveljc0\leveljcn0\levelfollow0\levelstartat1\levelspace360\levelindent0{\leveltext\leveltemplateid197641\'01o;}{\levelnumbers
;}\f2\chbrdr\brdrnone\brdrcf1 \chshdng0\chcfpat1\chcbpat1\fbias0 \fi-360\li1800\jclisttab\tx1800\lin1800 }{\listlevel\levelnfc23\levelnfcn23\leveljc0\leveljcn0\levelfollow0\levelstartat1\levelspace360\levelindent0{\leveltext\leveltemplateid328713
\'01\u-3929 _;}{\levelnumbers;}\f14\chbrdr\brdrnone\brdrcf1 \chshdng0\chcfpat1\chcbpat1\fbias0 \fi-360\li2520\jclisttab\tx2520\lin2520 }{\listlevel\levelnfc23\levelnfcn23\leveljc0\leveljcn0\levelfollow0\levelstartat1\levelspace360\levelindent0{\leveltext
\leveltemplateid66569\'01\u-3913 _;}{\levelnumbers;}\loch\af3\dbch\af0\hich\f3 \f3\chbrdr\brdrnone\brdrcf1 \chshdng0\chcfpat1\chcbpat1\fbias0 \fi-360\li3240\jclisttab\tx3240\lin3240 }{\listlevel\levelnfc23\levelnfcn23\leveljc0\leveljcn0\levelfollow0
\levelstartat1\levelspace360\levelindent0{\leveltext\leveltemplateid197641\'01o;}{\levelnumbers;}\f2\chbrdr\brdrnone\brdrcf1 \chshdng0\chcfpat1\chcbpat1\fbias0 \fi-360\li3960\jclisttab\tx3960\lin3960 }{\listlevel\levelnfc23\levelnfcn23\leveljc0\leveljcn0
\levelfollow0\levelstartat1\levelspace360\levelindent0{\leveltext\leveltemplateid328713\'01\u-3929 _;}{\levelnumbers;}\f14\chbrdr\brdrnone\brdrcf1 \chshdng0\chcfpat1\chcbpat1\fbias0 \fi-360\li4680\jclisttab\tx4680\lin4680 }{\listlevel\levelnfc23
\levelnfcn23\leveljc0\leveljcn0\levelfollow0\levelstartat1\levelspace360\levelindent0{\leveltext\leveltemplateid66569\'01\u-3913 _;}{\levelnumbers;}\loch\af3\dbch\af0\hich\f3 \f3\chbrdr\brdrnone\brdrcf1 \chshdng0\chcfpat1\chcbpat1\fbias0 \fi-360\li5400
\jclisttab\tx5400\lin5400 }{\listlevel\levelnfc23\levelnfcn23\leveljc0\leveljcn0\levelfollow0\levelstartat1\levelspace360\levelindent0{\leveltext\leveltemplateid197641\'01o;}{\levelnumbers;}\f2\chbrdr\brdrnone\brdrcf1 \chshdng0\chcfpat1\chcbpat1\fbias0 
\fi-360\li6120\jclisttab\tx6120\lin6120 }{\listlevel\levelnfc23\levelnfcn23\leveljc0\leveljcn0\levelfollow0\levelstartat1\levelspace360\levelindent0{\leveltext\leveltemplateid328713\'01\u-3929 _;}{\levelnumbers;}\f14\chbrdr\brdrnone\brdrcf1 
\chshdng0\chcfpat1\chcbpat1\fbias0 \fi-360\li6840\jclisttab\tx6840\lin6840 }{\listname ;}\listid138814588}{\list\listtemplateid1846689302\listhybrid{\listlevel\levelnfc0\levelnfcn0\leveljc0\leveljcn0\levelfollow0\levelstartat1\levelspace360\levelindent0
{\leveltext\leveltemplateid984073\'02\'00.;}{\levelnumbers\'01;}\chbrdr\brdrnone\brdrcf1 \chshdng0\chcfpat1\chcbpat1 \fi-360\li360\jclisttab\tx360\lin360 }{\listlevel\levelnfc0\levelnfcn0\leveljc0\leveljcn0\levelfollow0\levelstartat1\levellegal
\levelspace0\levelindent0{\leveltext\leveltemplateid1639433\'03\'00.\'01;}{\levelnumbers\'01\'03;}\chbrdr\brdrnone\brdrcf1 \chshdng0\chcfpat1\chcbpat1\fbias0 \fi-720\li720\jclisttab\tx720\lin720 }{\listlevel\levelnfc0\levelnfcn0\leveljc0\leveljcn0
\levelfollow0\levelstartat1\levellegal\levelspace0\levelindent0{\leveltext\leveltemplateid1770505\'05\'00.\'01.\'02;}{\levelnumbers\'01\'03\'05;}\chbrdr\brdrnone\brdrcf1 \chshdng0\chcfpat1\chcbpat1\fbias0 \fi-720\li720\jclisttab\tx720\lin720 }{\listlevel
\levelnfc0\levelnfcn0\leveljc0\leveljcn0\levelfollow0\levelstartat1\levellegal\levelspace0\levelindent0{\leveltext\leveltemplateid984073\'07\'00.\'01.\'02.\'03;}{\levelnumbers\'01\'03\'05\'07;}\chbrdr\brdrnone\brdrcf1 \chshdng0\chcfpat1\chcbpat1\fbias0 
\fi-720\li720\jclisttab\tx720\lin720 }{\listlevel\levelnfc0\levelnfcn0\leveljc0\leveljcn0\levelfollow0\levelstartat1\levellegal\levelspace0\levelindent0{\leveltext\leveltemplateid1639433\'09\'00.\'01.\'02.\'03.\'04;}{\levelnumbers\'01\'03\'05\'07\'09;}
\chbrdr\brdrnone\brdrcf1 \chshdng0\chcfpat1\chcbpat1\fbias0 \fi-1080\li1080\jclisttab\tx1080\lin1080 }{\listlevel\levelnfc0\levelnfcn0\leveljc0\leveljcn0\levelfollow0\levelstartat1\levellegal\levelspace0\levelindent0{\leveltext\leveltemplateid1770505
\'0b\'00.\'01.\'02.\'03.\'04.\'05;}{\levelnumbers\'01\'03\'05\'07\'09\'0b;}\chbrdr\brdrnone\brdrcf1 \chshdng0\chcfpat1\chcbpat1\fbias0 \fi-1080\li1080\jclisttab\tx1080\lin1080 }{\listlevel\levelnfc0\levelnfcn0\leveljc0\leveljcn0\levelfollow0\levelstartat1
\levellegal\levelspace0\levelindent0{\leveltext\leveltemplateid984073\'0d\'00.\'01.\'02.\'03.\'04.\'05.\'06;}{\levelnumbers\'01\'03\'05\'07\'09\'0b\'0d;}\chbrdr\brdrnone\brdrcf1 \chshdng0\chcfpat1\chcbpat1\fbias0 \fi-1440\li1440\jclisttab\tx1440\lin1440 }
{\listlevel\levelnfc0\levelnfcn0\leveljc0\leveljcn0\levelfollow0\levelstartat1\levellegal\levelspace0\levelindent0{\leveltext\leveltemplateid1639433\'0f\'00.\'01.\'02.\'03.\'04.\'05.\'06.\'07;}{\levelnumbers\'01\'03\'05\'07\'09\'0b\'0d\'0f;}\chbrdr
\brdrnone\brdrcf1 \chshdng0\chcfpat1\chcbpat1\fbias0 \fi-1440\li1440\jclisttab\tx1440\lin1440 }{\listlevel\levelnfc0\levelnfcn0\leveljc0\leveljcn0\levelfollow0\levelstartat1\levellegal\levelspace0\levelindent0{\leveltext\leveltemplateid1770505
\'11\'00.\'01.\'02.\'03.\'04.\'05.\'06.\'07.\'08;}{\levelnumbers\'01\'03\'05\'07\'09\'0b\'0d\'0f\'11;}\chbrdr\brdrnone\brdrcf1 \chshdng0\chcfpat1\chcbpat1\fbias0 \fi-1800\li1800\jclisttab\tx1800\lin1800 }{\listname ;}\listid168302149}
{\list\listtemplateid1502011006\listhybrid{\listlevel\levelnfc4\levelnfcn4\leveljc0\leveljcn0\levelfollow0\levelstartat1\levelspace360\levelindent0{\leveltext\leveltemplateid1639433\'02\'00.;}{\levelnumbers\'01;}\chbrdr\brdrnone\brdrcf1 
\chshdng0\chcfpat1\chcbpat1 \fi-360\li720\jclisttab\tx720\lin720 }{\listlevel\levelnfc4\levelnfcn4\leveljc0\leveljcn0\levelfollow0\levelstartat1\levelspace360\levelindent0{\leveltext\leveltemplateid1639433\'02\'01.;}{\levelnumbers\'01;}\chbrdr
\brdrnone\brdrcf1 \chshdng0\chcfpat1\chcbpat1 \fi-360\li1440\jclisttab\tx1440\lin1440 }{\listlevel\levelnfc2\levelnfcn2\leveljc2\leveljcn2\levelfollow0\levelstartat1\levelspace360\levelindent0{\leveltext\leveltemplateid1770505\'02\'02.;}{\levelnumbers
\'01;}\chbrdr\brdrnone\brdrcf1 \chshdng0\chcfpat1\chcbpat1 \fi-180\li2160\jclisttab\tx2160\lin2160 }{\listlevel\levelnfc0\levelnfcn0\leveljc0\leveljcn0\levelfollow0\levelstartat1\levelspace360\levelindent0{\leveltext\leveltemplateid984073
\'02\'03.;}{\levelnumbers\'01;}\chbrdr\brdrnone\brdrcf1 \chshdng0\chcfpat1\chcbpat1 \fi-360\li2880\jclisttab\tx2880\lin2880 }{\listlevel\levelnfc4\levelnfcn4\leveljc0\leveljcn0\levelfollow0\levelstartat1\levelspace360\levelindent0{\leveltext
\leveltemplateid1639433\'02\'04.;}{\levelnumbers\'01;}\chbrdr\brdrnone\brdrcf1 \chshdng0\chcfpat1\chcbpat1 \fi-360\li3600\jclisttab\tx3600\lin3600 }{\listlevel\levelnfc2\levelnfcn2\leveljc2\leveljcn2\levelfollow0\levelstartat1\levelspace360\levelindent0
{\leveltext\leveltemplateid1770505\'02\'05.;}{\levelnumbers\'01;}\chbrdr\brdrnone\brdrcf1 \chshdng0\chcfpat1\chcbpat1 \fi-180\li4320\jclisttab\tx4320\lin4320 }{\listlevel\levelnfc0\levelnfcn0\leveljc0\leveljcn0\levelfollow0\levelstartat1\levelspace360
\levelindent0{\leveltext\leveltemplateid984073\'02\'06.;}{\levelnumbers\'01;}\chbrdr\brdrnone\brdrcf1 \chshdng0\chcfpat1\chcbpat1 \fi-360\li5040\jclisttab\tx5040\lin5040 }{\listlevel\levelnfc4\levelnfcn4\leveljc0\leveljcn0\levelfollow0\levelstartat1
\levelspace360\levelindent0{\leveltext\leveltemplateid1639433\'02\'07.;}{\levelnumbers\'01;}\chbrdr\brdrnone\brdrcf1 \chshdng0\chcfpat1\chcbpat1 \fi-360\li5760\jclisttab\tx5760\lin5760 }{\listlevel\levelnfc2\levelnfcn2\leveljc2\leveljcn2\levelfollow0
\levelstartat1\levelspace360\levelindent0{\leveltext\leveltemplateid1770505\'02\'08.;}{\levelnumbers\'01;}\chbrdr\brdrnone\brdrcf1 \chshdng0\chcfpat1\chcbpat1 \fi-180\li6480\jclisttab\tx6480\lin6480 }{\listname ;}\listid529537610}
{\list\listtemplateid-1041347676\listhybrid{\listlevel\levelnfc23\levelnfcn23\leveljc0\leveljcn0\levelfollow0\levelstartat1\levelspace0\levelindent0{\leveltext\leveltemplateid66569\'01\u-3913 _;}{\levelnumbers;}\loch\af3\dbch\af0\hich\f3 \f3\chbrdr
\brdrnone\brdrcf1 \chshdng0\chcfpat1\chcbpat1\fbias0 \fi-360\li720\jclisttab\tx720\lin720 }{\listlevel\levelnfc23\levelnfcn23\leveljc0\leveljcn0\levelfollow0\levelstartat1\levelspace0\levelindent0{\leveltext\leveltemplateid197641\'01o;}{\levelnumbers;}\f2
\chbrdr\brdrnone\brdrcf1 \chshdng0\chcfpat1\chcbpat1\fbias0 \fi-360\li1440\jclisttab\tx1440\lin1440 }{\listlevel\levelnfc23\levelnfcn23\leveljc0\leveljcn0\levelfollow0\levelstartat1\levelspace0\levelindent0{\leveltext\leveltemplateid328713
\'01\u-3929 _;}{\levelnumbers;}\f14\chbrdr\brdrnone\brdrcf1 \chshdng0\chcfpat1\chcbpat1\fbias0 \fi-360\li2160\jclisttab\tx2160\lin2160 }{\listlevel\levelnfc23\levelnfcn23\leveljc0\leveljcn0\levelfollow0\levelstartat1\levelspace0\levelindent0{\leveltext
\leveltemplateid66569\'01\u-3913 _;}{\levelnumbers;}\loch\af3\dbch\af0\hich\f3 \f3\chbrdr\brdrnone\brdrcf1 \chshdng0\chcfpat1\chcbpat1\fbias0 \fi-360\li2880\jclisttab\tx2880\lin2880 }{\listlevel\levelnfc23\levelnfcn23\leveljc0\leveljcn0\levelfollow0
\levelstartat1\levelspace0\levelindent0{\leveltext\leveltemplateid197641\'01o;}{\levelnumbers;}\f2\chbrdr\brdrnone\brdrcf1 \chshdng0\chcfpat1\chcbpat1\fbias0 \fi-360\li3600\jclisttab\tx3600\lin3600 }{\listlevel\levelnfc23\levelnfcn23\leveljc0\leveljcn0
\levelfollow0\levelstartat1\levelspace0\levelindent0{\leveltext\leveltemplateid328713\'01\u-3929 _;}{\levelnumbers;}\f14\chbrdr\brdrnone\brdrcf1 \chshdng0\chcfpat1\chcbpat1\fbias0 \fi-360\li4320\jclisttab\tx4320\lin4320 }{\listlevel\levelnfc23\levelnfcn23
\leveljc0\leveljcn0\levelfollow0\levelstartat1\levelspace0\levelindent0{\leveltext\leveltemplateid66569\'01\u-3913 _;}{\levelnumbers;}\loch\af3\dbch\af0\hich\f3 \f3\chbrdr\brdrnone\brdrcf1 \chshdng0\chcfpat1\chcbpat1\fbias0 \fi-360\li5040
\jclisttab\tx5040\lin5040 }{\listlevel\levelnfc23\levelnfcn23\leveljc0\leveljcn0\levelfollow0\levelstartat1\levelspace0\levelindent0{\leveltext\leveltemplateid197641\'01o;}{\levelnumbers;}\f2\chbrdr\brdrnone\brdrcf1 \chshdng0\chcfpat1\chcbpat1\fbias0 
\fi-360\li5760\jclisttab\tx5760\lin5760 }{\listlevel\levelnfc23\levelnfcn23\leveljc0\leveljcn0\levelfollow0\levelstartat1\levelspace0\levelindent0{\leveltext\leveltemplateid328713\'01\u-3929 _;}{\levelnumbers;}\f14\chbrdr\brdrnone\brdrcf1 
\chshdng0\chcfpat1\chcbpat1\fbias0 \fi-360\li6480\jclisttab\tx6480\lin6480 }{\listname ;}\listid718937965}{\list\listtemplateid-1467567266\listhybrid{\listlevel\levelnfc23\levelnfcn23\leveljc0\leveljcn0\levelfollow0\levelstartat1\levelspace360
\levelindent0{\leveltext\leveltemplateid66569\'01\u-3913 _;}{\levelnumbers;}\loch\af3\dbch\af0\hich\f3 \f3\chbrdr\brdrnone\brdrcf1 \chshdng0\chcfpat1\chcbpat1\fbias0 \fi-360\li720\jclisttab\tx720\lin720 }{\listlevel\levelnfc23\levelnfcn23\leveljc0
\leveljcn0\levelfollow0\levelstartat1\levelspace360\levelindent0{\leveltext\leveltemplateid197641\'01o;}{\levelnumbers;}\f2\chbrdr\brdrnone\brdrcf1 \chshdng0\chcfpat1\chcbpat1\fbias0 \fi-360\li1440\jclisttab\tx1440\lin1440 }{\listlevel\levelnfc23
\levelnfcn23\leveljc0\leveljcn0\levelfollow0\levelstartat1\levelspace360\levelindent0{\leveltext\leveltemplateid328713\'01\u-3929 _;}{\levelnumbers;}\f14\chbrdr\brdrnone\brdrcf1 \chshdng0\chcfpat1\chcbpat1\fbias0 \fi-360\li2160\jclisttab\tx2160\lin2160 }
{\listlevel\levelnfc23\levelnfcn23\leveljc0\leveljcn0\levelfollow0\levelstartat1\levelspace360\levelindent0{\leveltext\leveltemplateid66569\'01\u-3913 _;}{\levelnumbers;}\loch\af3\dbch\af0\hich\f3 \f3\chbrdr\brdrnone\brdrcf1 
\chshdng0\chcfpat1\chcbpat1\fbias0 \fi-360\li2880\jclisttab\tx2880\lin2880 }{\listlevel\levelnfc23\levelnfcn23\leveljc0\leveljcn0\levelfollow0\levelstartat1\levelspace360\levelindent0{\leveltext\leveltemplateid197641\'01o;}{\levelnumbers;}\f2\chbrdr
\brdrnone\brdrcf1 \chshdng0\chcfpat1\chcbpat1\fbias0 \fi-360\li3600\jclisttab\tx3600\lin3600 }{\listlevel\levelnfc23\levelnfcn23\leveljc0\leveljcn0\levelfollow0\levelstartat1\levelspace360\levelindent0{\leveltext\leveltemplateid328713
\'01\u-3929 _;}{\levelnumbers;}\f14\chbrdr\brdrnone\brdrcf1 \chshdng0\chcfpat1\chcbpat1\fbias0 \fi-360\li4320\jclisttab\tx4320\lin4320 }{\listlevel\levelnfc23\levelnfcn23\leveljc0\leveljcn0\levelfollow0\levelstartat1\levelspace360\levelindent0{\leveltext
\leveltemplateid66569\'01\u-3913 _;}{\levelnumbers;}\loch\af3\dbch\af0\hich\f3 \f3\chbrdr\brdrnone\brdrcf1 \chshdng0\chcfpat1\chcbpat1\fbias0 \fi-360\li5040\jclisttab\tx5040\lin5040 }{\listlevel\levelnfc23\levelnfcn23\leveljc0\leveljcn0\levelfollow0
\levelstartat1\levelspace360\levelindent0{\leveltext\leveltemplateid197641\'01o;}{\levelnumbers;}\f2\chbrdr\brdrnone\brdrcf1 \chshdng0\chcfpat1\chcbpat1\fbias0 \fi-360\li5760\jclisttab\tx5760\lin5760 }{\listlevel\levelnfc23\levelnfcn23\leveljc0\leveljcn0
\levelfollow0\levelstartat1\levelspace360\levelindent0{\leveltext\leveltemplateid328713\'01\u-3929 _;}{\levelnumbers;}\f14\chbrdr\brdrnone\brdrcf1 \chshdng0\chcfpat1\chcbpat1\fbias0 \fi-360\li6480\jclisttab\tx6480\lin6480 }{\listname ;}\listid838035434}
{\list\listtemplateid1734899192\listhybrid{\listlevel\levelnfc0\levelnfcn0\leveljc0\leveljcn0\levelfollow0\levelstartat1\levelspace0\levelindent0{\leveltext\leveltemplateid984073\'02\'00.;}{\levelnumbers\'01;}\chbrdr\brdrnone\brdrcf1 
\chshdng0\chcfpat1\chcbpat1\fbias0 \fi-360\li720\jclisttab\tx720\lin720 }{\listlevel\levelnfc23\levelnfcn23\leveljc0\leveljcn0\levelfollow0\levelstartat1\levelspace0\levelindent0{\leveltext\leveltemplateid195572928\'01\u-3913 _;}{\levelnumbers;}
\loch\af3\dbch\af0\hich\f3 \loch\af3\hich\af3\dbch\f0\chbrdr\brdrnone\brdrcf1 \chshdng0\chcfpat1\chcbpat1\fbias0 \fi-360\li1440\jclisttab\tx1440\lin1440 }{\listlevel\levelnfc2\levelnfcn2\leveljc2\leveljcn2\levelfollow0\levelstartat1\levelspace0
\levelindent0{\leveltext\leveltemplateid1770505\'02\'02.;}{\levelnumbers\'01;}\chbrdr\brdrnone\brdrcf1 \chshdng0\chcfpat1\chcbpat1 \fi-180\li2160\jclisttab\tx2160\lin2160 }{\listlevel\levelnfc0\levelnfcn0\leveljc0\leveljcn0\levelfollow0\levelstartat1
\levelspace0\levelindent0{\leveltext\leveltemplateid984073\'02\'03.;}{\levelnumbers\'01;}\chbrdr\brdrnone\brdrcf1 \chshdng0\chcfpat1\chcbpat1 \fi-360\li2880\jclisttab\tx2880\lin2880 }{\listlevel\levelnfc4\levelnfcn4\leveljc0\leveljcn0\levelfollow0
\levelstartat1\levelspace0\levelindent0{\leveltext\leveltemplateid1639433\'02\'04.;}{\levelnumbers\'01;}\chbrdr\brdrnone\brdrcf1 \chshdng0\chcfpat1\chcbpat1 \fi-360\li3600\jclisttab\tx3600\lin3600 }{\listlevel\levelnfc2\levelnfcn2\leveljc2\leveljcn2
\levelfollow0\levelstartat1\levelspace0\levelindent0{\leveltext\leveltemplateid1770505\'02\'05.;}{\levelnumbers\'01;}\chbrdr\brdrnone\brdrcf1 \chshdng0\chcfpat1\chcbpat1 \fi-180\li4320\jclisttab\tx4320\lin4320 }{\listlevel\levelnfc0\levelnfcn0\leveljc0
\leveljcn0\levelfollow0\levelstartat1\levelspace0\levelindent0{\leveltext\leveltemplateid984073\'02\'06.;}{\levelnumbers\'01;}\chbrdr\brdrnone\brdrcf1 \chshdng0\chcfpat1\chcbpat1 \fi-360\li5040\jclisttab\tx5040\lin5040 }{\listlevel\levelnfc4\levelnfcn4
\leveljc0\leveljcn0\levelfollow0\levelstartat1\levelspace0\levelindent0{\leveltext\leveltemplateid1639433\'02\'07.;}{\levelnumbers\'01;}\chbrdr\brdrnone\brdrcf1 \chshdng0\chcfpat1\chcbpat1 \fi-360\li5760\jclisttab\tx5760\lin5760 }{\listlevel\levelnfc2
\levelnfcn2\leveljc2\leveljcn2\levelfollow0\levelstartat1\levelspace0\levelindent0{\leveltext\leveltemplateid1770505\'02\'08.;}{\levelnumbers\'01;}\chbrdr\brdrnone\brdrcf1 \chshdng0\chcfpat1\chcbpat1 \fi-180\li6480\jclisttab\tx6480\lin6480 }{\listname 
;}\listid955793474}{\list\listtemplateid248405116\listhybrid{\listlevel\levelnfc0\levelnfcn0\leveljc0\leveljcn0\levelfollow0\levelstartat1\levelspace360\levelindent0{\leveltext\leveltemplateid984073\'02\'00.;}{\levelnumbers\'01;}\chbrdr\brdrnone\brdrcf1 
\chshdng0\chcfpat1\chcbpat1 \fi-360\li360\jclisttab\tx360\lin360 }{\listlevel\levelnfc23\levelnfcn23\leveljc0\leveljcn0\levelfollow0\levelstartat1\levelspace360\levelindent0{\leveltext\leveltemplateid197641\'01o;}{\levelnumbers;}\f2\chbrdr
\brdrnone\brdrcf1 \chshdng0\chcfpat1\chcbpat1\fbias0 \fi-360\li1440\jclisttab\tx1440\lin1440 }{\listlevel\levelnfc23\levelnfcn23\leveljc0\leveljcn0\levelfollow0\levelstartat1\levelspace360\levelindent0{\leveltext\leveltemplateid328713
\'01\u-3929 _;}{\levelnumbers;}\f14\chbrdr\brdrnone\brdrcf1 \chshdng0\chcfpat1\chcbpat1\fbias0 \fi-360\li2160\jclisttab\tx2160\lin2160 }{\listlevel\levelnfc23\levelnfcn23\leveljc0\leveljcn0\levelfollow0\levelstartat1\levelspace360\levelindent0{\leveltext
\leveltemplateid66569\'01\u-3913 _;}{\levelnumbers;}\loch\af3\dbch\af0\hich\f3 \f3\chbrdr\brdrnone\brdrcf1 \chshdng0\chcfpat1\chcbpat1\fbias0 \fi-360\li2880\jclisttab\tx2880\lin2880 }{\listlevel\levelnfc23\levelnfcn23\leveljc0\leveljcn0\levelfollow0
\levelstartat1\levelspace360\levelindent0{\leveltext\leveltemplateid197641\'01o;}{\levelnumbers;}\f2\chbrdr\brdrnone\brdrcf1 \chshdng0\chcfpat1\chcbpat1\fbias0 \fi-360\li3600\jclisttab\tx3600\lin3600 }{\listlevel\levelnfc23\levelnfcn23\leveljc0\leveljcn0
\levelfollow0\levelstartat1\levelspace360\levelindent0{\leveltext\leveltemplateid328713\'01\u-3929 _;}{\levelnumbers;}\f14\chbrdr\brdrnone\brdrcf1 \chshdng0\chcfpat1\chcbpat1\fbias0 \fi-360\li4320\jclisttab\tx4320\lin4320 }{\listlevel\levelnfc23
\levelnfcn23\leveljc0\leveljcn0\levelfollow0\levelstartat1\levelspace360\levelindent0{\leveltext\leveltemplateid66569\'01\u-3913 _;}{\levelnumbers;}\loch\af3\dbch\af0\hich\f3 \f3\chbrdr\brdrnone\brdrcf1 \chshdng0\chcfpat1\chcbpat1\fbias0 \fi-360\li5040
\jclisttab\tx5040\lin5040 }{\listlevel\levelnfc23\levelnfcn23\leveljc0\leveljcn0\levelfollow0\levelstartat1\levelspace360\levelindent0{\leveltext\leveltemplateid197641\'01o;}{\levelnumbers;}\f2\chbrdr\brdrnone\brdrcf1 \chshdng0\chcfpat1\chcbpat1\fbias0 
\fi-360\li5760\jclisttab\tx5760\lin5760 }{\listlevel\levelnfc23\levelnfcn23\leveljc0\leveljcn0\levelfollow0\levelstartat1\levelspace360\levelindent0{\leveltext\leveltemplateid328713\'01\u-3929 _;}{\levelnumbers;}\f14\chbrdr\brdrnone\brdrcf1 
\chshdng0\chcfpat1\chcbpat1\fbias0 \fi-360\li6480\jclisttab\tx6480\lin6480 }{\listname ;}\listid1302230321}{\list\listtemplateid248405116\listhybrid{\listlevel\levelnfc23\levelnfcn23\leveljc0\leveljcn0\levelfollow0\levelstartat1\levelspace360\levelindent0
{\leveltext\leveltemplateid66569\'01\u-3913 _;}{\levelnumbers;}\loch\af3\dbch\af0\hich\f3 \f3\chbrdr\brdrnone\brdrcf1 \chshdng0\chcfpat1\chcbpat1\fbias0 \fi-360\li360\jclisttab\tx360\lin360 }{\listlevel\levelnfc23\levelnfcn23\leveljc0\leveljcn0
\levelfollow0\levelstartat1\levelspace360\levelindent0{\leveltext\leveltemplateid197641\'01o;}{\levelnumbers;}\f2\chbrdr\brdrnone\brdrcf1 \chshdng0\chcfpat1\chcbpat1\fbias0 \fi-360\li1080\jclisttab\tx1080\lin1080 }{\listlevel\levelnfc23\levelnfcn23
\leveljc0\leveljcn0\levelfollow0\levelstartat1\levelspace360\levelindent0{\leveltext\leveltemplateid328713\'01\u-3929 _;}{\levelnumbers;}\f14\chbrdr\brdrnone\brdrcf1 \chshdng0\chcfpat1\chcbpat1\fbias0 \fi-360\li1800\jclisttab\tx1800\lin1800 }{\listlevel
\levelnfc23\levelnfcn23\leveljc0\leveljcn0\levelfollow0\levelstartat1\levelspace360\levelindent0{\leveltext\leveltemplateid66569\'01\u-3913 _;}{\levelnumbers;}\loch\af3\dbch\af0\hich\f3 \f3\chbrdr\brdrnone\brdrcf1 \chshdng0\chcfpat1\chcbpat1\fbias0 
\fi-360\li2520\jclisttab\tx2520\lin2520 }{\listlevel\levelnfc23\levelnfcn23\leveljc0\leveljcn0\levelfollow0\levelstartat1\levelspace360\levelindent0{\leveltext\leveltemplateid197641\'01o;}{\levelnumbers;}\f2\chbrdr\brdrnone\brdrcf1 
\chshdng0\chcfpat1\chcbpat1\fbias0 \fi-360\li3240\jclisttab\tx3240\lin3240 }{\listlevel\levelnfc23\levelnfcn23\leveljc0\leveljcn0\levelfollow0\levelstartat1\levelspace360\levelindent0{\leveltext\leveltemplateid328713\'01\u-3929 _;}{\levelnumbers;}\f14
\chbrdr\brdrnone\brdrcf1 \chshdng0\chcfpat1\chcbpat1\fbias0 \fi-360\li3960\jclisttab\tx3960\lin3960 }{\listlevel\levelnfc23\levelnfcn23\leveljc0\leveljcn0\levelfollow0\levelstartat1\levelspace360\levelindent0{\leveltext\leveltemplateid66569
\'01\u-3913 _;}{\levelnumbers;}\loch\af3\dbch\af0\hich\f3 \f3\chbrdr\brdrnone\brdrcf1 \chshdng0\chcfpat1\chcbpat1\fbias0 \fi-360\li4680\jclisttab\tx4680\lin4680 }{\listlevel\levelnfc23\levelnfcn23\leveljc0\leveljcn0\levelfollow0\levelstartat1
\levelspace360\levelindent0{\leveltext\leveltemplateid197641\'01o;}{\levelnumbers;}\f2\chbrdr\brdrnone\brdrcf1 \chshdng0\chcfpat1\chcbpat1\fbias0 \fi-360\li5400\jclisttab\tx5400\lin5400 }{\listlevel\levelnfc23\levelnfcn23\leveljc0\leveljcn0\levelfollow0
\levelstartat1\levelspace360\levelindent0{\leveltext\leveltemplateid328713\'01\u-3929 _;}{\levelnumbers;}\f14\chbrdr\brdrnone\brdrcf1 \chshdng0\chcfpat1\chcbpat1\fbias0 \fi-360\li6120\jclisttab\tx6120\lin6120 }{\listname ;}\listid1362244777}
{\list\listtemplateid1464628240\listhybrid{\listlevel\levelnfc0\levelnfcn0\leveljc0\leveljcn0\levelfollow0\levelstartat1\levelspace360\levelindent0{\leveltext\leveltemplateid984073\'02\'00.;}{\levelnumbers\'01;}\chbrdr\brdrnone\brdrcf1 
\chshdng0\chcfpat1\chcbpat1 \fi-360\li360\jclisttab\tx360\lin360 }{\listlevel\levelnfc4\levelnfcn4\leveljc0\leveljcn0\levelfollow0\levelstartat1\levelspace360\levelindent0{\leveltext\leveltemplateid1639433\'02\'01.;}{\levelnumbers\'01;}\chbrdr
\brdrnone\brdrcf1 \chshdng0\chcfpat1\chcbpat1 \fi-360\li1080\jclisttab\tx1080\lin1080 }{\listlevel\levelnfc2\levelnfcn2\leveljc2\leveljcn2\levelfollow0\levelstartat1\levelspace360\levelindent0{\leveltext\leveltemplateid1770505\'02\'02.;}{\levelnumbers
\'01;}\chbrdr\brdrnone\brdrcf1 \chshdng0\chcfpat1\chcbpat1 \fi-180\li1800\jclisttab\tx1800\lin1800 }{\listlevel\levelnfc0\levelnfcn0\leveljc0\leveljcn0\levelfollow0\levelstartat1\levelspace360\levelindent0{\leveltext\leveltemplateid984073
\'02\'03.;}{\levelnumbers\'01;}\chbrdr\brdrnone\brdrcf1 \chshdng0\chcfpat1\chcbpat1 \fi-360\li2520\jclisttab\tx2520\lin2520 }{\listlevel\levelnfc4\levelnfcn4\leveljc0\leveljcn0\levelfollow0\levelstartat1\levelspace360\levelindent0{\leveltext
\leveltemplateid1639433\'02\'04.;}{\levelnumbers\'01;}\chbrdr\brdrnone\brdrcf1 \chshdng0\chcfpat1\chcbpat1 \fi-360\li3240\jclisttab\tx3240\lin3240 }{\listlevel\levelnfc2\levelnfcn2\leveljc2\leveljcn2\levelfollow0\levelstartat1\levelspace360\levelindent0
{\leveltext\leveltemplateid1770505\'02\'05.;}{\levelnumbers\'01;}\chbrdr\brdrnone\brdrcf1 \chshdng0\chcfpat1\chcbpat1 \fi-180\li3960\jclisttab\tx3960\lin3960 }{\listlevel\levelnfc0\levelnfcn0\leveljc0\leveljcn0\levelfollow0\levelstartat1\levelspace360
\levelindent0{\leveltext\leveltemplateid984073\'02\'06.;}{\levelnumbers\'01;}\chbrdr\brdrnone\brdrcf1 \chshdng0\chcfpat1\chcbpat1 \fi-360\li4680\jclisttab\tx4680\lin4680 }{\listlevel\levelnfc4\levelnfcn4\leveljc0\leveljcn0\levelfollow0\levelstartat1
\levelspace360\levelindent0{\leveltext\leveltemplateid1639433\'02\'07.;}{\levelnumbers\'01;}\chbrdr\brdrnone\brdrcf1 \chshdng0\chcfpat1\chcbpat1 \fi-360\li5400\jclisttab\tx5400\lin5400 }{\listlevel\levelnfc2\levelnfcn2\leveljc2\leveljcn2\levelfollow0
\levelstartat1\levelspace360\levelindent0{\leveltext\leveltemplateid1770505\'02\'08.;}{\levelnumbers\'01;}\chbrdr\brdrnone\brdrcf1 \chshdng0\chcfpat1\chcbpat1 \fi-180\li6120\jclisttab\tx6120\lin6120 }{\listname ;}\listid1388650458}
{\list\listtemplateid-1467567266\listhybrid{\listlevel\levelnfc0\levelnfcn0\leveljc0\leveljcn0\levelfollow0\levelstartat1\levelspace360\levelindent0{\leveltext\leveltemplateid984073\'02\'00.;}{\levelnumbers\'01;}\chbrdr\brdrnone\brdrcf1 
\chshdng0\chcfpat1\chcbpat1 \fi-360\li360\jclisttab\tx360\lin360 }{\listlevel\levelnfc23\levelnfcn23\leveljc0\leveljcn0\levelfollow0\levelstartat1\levelspace360\levelindent0{\leveltext\leveltemplateid197641\'01o;}{\levelnumbers;}\f2\chbrdr
\brdrnone\brdrcf1 \chshdng0\chcfpat1\chcbpat1\fbias0 \fi-360\li1440\jclisttab\tx1440\lin1440 }{\listlevel\levelnfc23\levelnfcn23\leveljc0\leveljcn0\levelfollow0\levelstartat1\levelspace360\levelindent0{\leveltext\leveltemplateid328713
\'01\u-3929 _;}{\levelnumbers;}\f14\chbrdr\brdrnone\brdrcf1 \chshdng0\chcfpat1\chcbpat1\fbias0 \fi-360\li2160\jclisttab\tx2160\lin2160 }{\listlevel\levelnfc23\levelnfcn23\leveljc0\leveljcn0\levelfollow0\levelstartat1\levelspace360\levelindent0{\leveltext
\leveltemplateid66569\'01\u-3913 _;}{\levelnumbers;}\loch\af3\dbch\af0\hich\f3 \f3\chbrdr\brdrnone\brdrcf1 \chshdng0\chcfpat1\chcbpat1\fbias0 \fi-360\li2880\jclisttab\tx2880\lin2880 }{\listlevel\levelnfc23\levelnfcn23\leveljc0\leveljcn0\levelfollow0
\levelstartat1\levelspace360\levelindent0{\leveltext\leveltemplateid197641\'01o;}{\levelnumbers;}\f2\chbrdr\brdrnone\brdrcf1 \chshdng0\chcfpat1\chcbpat1\fbias0 \fi-360\li3600\jclisttab\tx3600\lin3600 }{\listlevel\levelnfc23\levelnfcn23\leveljc0\leveljcn0
\levelfollow0\levelstartat1\levelspace360\levelindent0{\leveltext\leveltemplateid328713\'01\u-3929 _;}{\levelnumbers;}\f14\chbrdr\brdrnone\brdrcf1 \chshdng0\chcfpat1\chcbpat1\fbias0 \fi-360\li4320\jclisttab\tx4320\lin4320 }{\listlevel\levelnfc23
\levelnfcn23\leveljc0\leveljcn0\levelfollow0\levelstartat1\levelspace360\levelindent0{\leveltext\leveltemplateid66569\'01\u-3913 _;}{\levelnumbers;}\loch\af3\dbch\af0\hich\f3 \f3\chbrdr\brdrnone\brdrcf1 \chshdng0\chcfpat1\chcbpat1\fbias0 \fi-360\li5040
\jclisttab\tx5040\lin5040 }{\listlevel\levelnfc23\levelnfcn23\leveljc0\leveljcn0\levelfollow0\levelstartat1\levelspace360\levelindent0{\leveltext\leveltemplateid197641\'01o;}{\levelnumbers;}\f2\chbrdr\brdrnone\brdrcf1 \chshdng0\chcfpat1\chcbpat1\fbias0 
\fi-360\li5760\jclisttab\tx5760\lin5760 }{\listlevel\levelnfc23\levelnfcn23\leveljc0\leveljcn0\levelfollow0\levelstartat1\levelspace360\levelindent0{\leveltext\leveltemplateid328713\'01\u-3929 _;}{\levelnumbers;}\f14\chbrdr\brdrnone\brdrcf1 
\chshdng0\chcfpat1\chcbpat1\fbias0 \fi-360\li6480\jclisttab\tx6480\lin6480 }{\listname ;}\listid1612400476}{\list\listtemplateid2057746814\listhybrid{\listlevel\levelnfc0\levelnfcn0\leveljc0\leveljcn0\levelfollow0\levelstartat1\levelspace360\levelindent0
{\leveltext\leveltemplateid984073\'02\'00.;}{\levelnumbers\'01;}\chbrdr\brdrnone\brdrcf1 \chshdng0\chcfpat1\chcbpat1 \fi-360\li360\jclisttab\tx360\lin360 }{\listlevel\levelnfc4\levelnfcn4\leveljc0\leveljcn0\levelfollow0\levelstartat1\levelspace360
\levelindent0{\leveltext\leveltemplateid1639433\'02\'01.;}{\levelnumbers\'01;}\chbrdr\brdrnone\brdrcf1 \chshdng0\chcfpat1\chcbpat1 \fi-360\li1080\jclisttab\tx1080\lin1080 }{\listlevel\levelnfc2\levelnfcn2\leveljc2\leveljcn2\levelfollow0\levelstartat1
\levelspace360\levelindent0{\leveltext\leveltemplateid1770505\'02\'02.;}{\levelnumbers\'01;}\chbrdr\brdrnone\brdrcf1 \chshdng0\chcfpat1\chcbpat1 \fi-180\li1800\jclisttab\tx1800\lin1800 }{\listlevel\levelnfc0\levelnfcn0\leveljc0\leveljcn0\levelfollow0
\levelstartat1\levelspace360\levelindent0{\leveltext\leveltemplateid984073\'02\'03.;}{\levelnumbers\'01;}\chbrdr\brdrnone\brdrcf1 \chshdng0\chcfpat1\chcbpat1 \fi-360\li2520\jclisttab\tx2520\lin2520 }{\listlevel\levelnfc4\levelnfcn4\leveljc0\leveljcn0
\levelfollow0\levelstartat1\levelspace360\levelindent0{\leveltext\leveltemplateid1639433\'02\'04.;}{\levelnumbers\'01;}\chbrdr\brdrnone\brdrcf1 \chshdng0\chcfpat1\chcbpat1 \fi-360\li3240\jclisttab\tx3240\lin3240 }{\listlevel\levelnfc2\levelnfcn2\leveljc2
\leveljcn2\levelfollow0\levelstartat1\levelspace360\levelindent0{\leveltext\leveltemplateid1770505\'02\'05.;}{\levelnumbers\'01;}\chbrdr\brdrnone\brdrcf1 \chshdng0\chcfpat1\chcbpat1 \fi-180\li3960\jclisttab\tx3960\lin3960 }{\listlevel\levelnfc0\levelnfcn0
\leveljc0\leveljcn0\levelfollow0\levelstartat1\levelspace360\levelindent0{\leveltext\leveltemplateid984073\'02\'06.;}{\levelnumbers\'01;}\chbrdr\brdrnone\brdrcf1 \chshdng0\chcfpat1\chcbpat1 \fi-360\li4680\jclisttab\tx4680\lin4680 }{\listlevel\levelnfc4
\levelnfcn4\leveljc0\leveljcn0\levelfollow0\levelstartat1\levelspace360\levelindent0{\leveltext\leveltemplateid1639433\'02\'07.;}{\levelnumbers\'01;}\chbrdr\brdrnone\brdrcf1 \chshdng0\chcfpat1\chcbpat1 \fi-360\li5400\jclisttab\tx5400\lin5400 }{\listlevel
\levelnfc2\levelnfcn2\leveljc2\leveljcn2\levelfollow0\levelstartat1\levelspace360\levelindent0{\leveltext\leveltemplateid1770505\'02\'08.;}{\levelnumbers\'01;}\chbrdr\brdrnone\brdrcf1 \chshdng0\chcfpat1\chcbpat1 \fi-180\li6120\jclisttab\tx6120\lin6120 }
{\listname ;}\listid1621766678}}{\*\listoverridetable{\listoverride\listid1621766678\listoverridecount0\ls1}{\listoverride\listid1388650458\listoverridecount0\ls2}{\listoverride\listid168302149\listoverridecount0\ls3}{\listoverride\listid838035434
\listoverridecount0\ls4}{\listoverride\listid1612400476\listoverridecount0\ls5}{\listoverride\listid1362244777\listoverridecount0\ls6}{\listoverride\listid1302230321\listoverridecount0\ls7}{\listoverride\listid718937965\listoverridecount0\ls8}
{\listoverride\listid529537610\listoverridecount0\ls9}{\listoverride\listid138814588\listoverridecount0\ls10}{\listoverride\listid88232598\listoverridecount0\ls11}{\listoverride\listid955793474\listoverridecount0\ls12}}{\info
{\title High level description of Rosetta}{\author Esteban}{\operator Mark Little}{\creatim\yr2006\mo7\dy13\hr11\min23}{\revtim\yr2006\mo7\dy13\hr11\min23}{\printim\yr2006\mo6\dy19\hr9\min3}{\version2}{\edmins0}{\nofpages8}{\nofwords1820}{\nofchars10376}
{\*\company CGU Group Canada Ltd.}{\nofcharsws12742}{\vern24839}}\widowctrl\ftnbj\aenddoc\noxlattoyen\expshrtn\noultrlspc\dntblnsbdb\nospaceforul\formshade\horzdoc\dgmargin\dghspace180\dgvspace180\dghorigin1800\dgvorigin1440\dghshow1\dgvshow1
\jexpand\viewkind1\viewscale100\pgbrdrhead\pgbrdrfoot\splytwnine\ftnlytwnine\htmautsp\nolnhtadjtbl\useltbaln\alntblind\lytcalctblwd\lyttblrtgr\lnbrkrule\rsidroot13457462 \fet0\sectd \linex0\endnhere\sectlinegrid360\sectdefaultcl\sftnbj {\*\pnseclvl1
\pnucrm\pnstart1\pnindent720\pnhang{\pntxta .}}{\*\pnseclvl2\pnucltr\pnstart1\pnindent720\pnhang{\pntxta .}}{\*\pnseclvl3\pndec\pnstart1\pnindent720\pnhang{\pntxta .}}{\*\pnseclvl4\pnlcltr\pnstart1\pnindent720\pnhang{\pntxta )}}{\*\pnseclvl5
\pndec\pnstart1\pnindent720\pnhang{\pntxtb (}{\pntxta )}}{\*\pnseclvl6\pnlcltr\pnstart1\pnindent720\pnhang{\pntxtb (}{\pntxta )}}{\*\pnseclvl7\pnlcrm\pnstart1\pnindent720\pnhang{\pntxtb (}{\pntxta )}}{\*\pnseclvl8\pnlcltr\pnstart1\pnindent720\pnhang
{\pntxtb (}{\pntxta )}}{\*\pnseclvl9\pnlcrm\pnstart1\pnindent720\pnhang{\pntxtb (}{\pntxta )}}\pard\plain \s2\ql \li0\ri0\sb240\sa60\keepn\widctlpar\aspalpha\aspnum\faauto\outlinelevel1\adjustright\rin0\lin0\itap0 
\b\i\f1\fs28\lang1033\langfe1033\cgrid\langnp1033\langfenp1033 {\insrsid13457462 JBoss ESB Getting Started Guide and Programmers Guide}{\insrsid6031830 
\par }\pard\plain \ql \li0\ri0\widctlpar\aspalpha\aspnum\faauto\adjustright\rin0\lin0\itap0\pararsid15608600 \lang1033\langfe1033\cgrid\langnp1033\langfenp1033 {\insrsid15608600 
\par By: Daniel Brum (}{\field{\*\fldinst {\insrsid10236317  HYPERLINK "mailto:}{\insrsid10236317\charrsid10236317 daniel.brum at Jboss.com}{\insrsid10236317 " }{\insrsid10236317 {\*\datafield 
00d0c9ea79f9bace118c8200aa004ba90b020000001700000016000000640061006e00690065006c002e006200720075006d0040004a0062006f00730073002e0063006f006d000000e0c9ea79f9bace118c8200aa004ba90b3a0000006d00610069006c0074006f003a00640061006e00690065006c002e00620072007500
6d0040004a0062006f00730073002e0063006f006d000000}}}{\fldrslt {\cs16\ul\cf2\insrsid10236317\charrsid1074628 daniel.brum at Jboss.com}}}{\insrsid15608600 )
\par 
\par JBoss ESB JBoss Labs Home Page: }{\field{\*\fldinst {\insrsid15608600  HYPERLINK "}{\insrsid15608600\charrsid15608600 http://labs.jboss.com/portal/jbossesb}{\insrsid15608600 " }{\insrsid15608600 {\*\datafield 
00d0c9ea79f9bace118c8200aa004ba90b02000000170000002600000068007400740070003a002f002f006c006100620073002e006a0062006f00730073002e0063006f006d002f0070006f007200740061006c002f006a0062006f00730073006500730062000000e0c9ea79f9bace118c8200aa004ba90b4c0000006800
7400740070003a002f002f006c006100620073002e006a0062006f00730073002e0063006f006d002f0070006f007200740061006c002f006a0062006f00730073006500730062000000}}}{\fldrslt {\cs16\ul\cf2\insrsid15608600\charrsid8929992 http://labs.jboss.com/portal/jbossesb}}}{
\insrsid15608600 
\par 
\par JBoss ESB Developer Community Forums: }{\field{\*\fldinst {\insrsid15608600  HYPERLINK "}{\insrsid15608600\charrsid15608600 http://www.jboss.com/index.html?module=bb&op=viewforum&f=220}{\insrsid15608600 " }{\insrsid15608600 {\*\datafield 
00d0c9ea79f9bace118c8200aa004ba90b02000000170000003d00000068007400740070003a002f002f007700770077002e006a0062006f00730073002e0063006f006d002f0069006e006400650078002e00680074006d006c003f006d006f00640075006c0065003d006200620026006f0070003d007600690065007700
66006f00720075006d00260066003d003200320030000000e0c9ea79f9bace118c8200aa004ba90b7a00000068007400740070003a002f002f007700770077002e006a0062006f00730073002e0063006f006d002f0069006e006400650078002e00680074006d006c003f006d006f00640075006c0065003d006200620026
006f0070003d00760069006500770066006f00720075006d00260066003d003200320030000000}}}{\fldrslt {\cs16\ul\cf2\insrsid15608600\charrsid8929992 http://www.jboss.com/index.html?module=bb&op=viewforum&f=220}}}{\insrsid15608600 
\par }{\insrsid10236317 
\par }\pard \ql \li0\ri0\widctlpar\aspalpha\aspnum\faauto\adjustright\rin0\lin0\itap0\pararsid10236317 {\insrsid10236317 ########################################################################
\par # JBoss, Home of Professional Open Source
\par # Copyright 2006, JBoss Inc., and individual contributors as indicated
\par # by the @authors tag. See the copyright.txt in the distribution for a
\par }\pard \ql \li0\ri0\widctlpar\aspalpha\aspnum\faauto\adjustright\rin0\lin0\itap0\pararsid10236317 {\insrsid10236317 # full listing of individual contributors.
\par #
\par # This is free software; you can redistribute it and/or modify it
\par # under the terms of the GNU Lesser General Public License as
\par # published by the Free Software Foundation; either version 2.1 of
\par # the License, or (at your option) any later version.
\par #
\par # This software is distributed in the hope that it will be useful,
\par # but WITHOUT ANY WARRANTY; without even the implied warranty of
\par # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
\par # Lesser General Public License for more details.
\par #
\par # You should have received a copy of the GNU Lesser General Public
\par # License along with this software; if not, write to the Free
\par # Software Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA
\par # 02110-1301 USA, or see the FSF site: http://www.fsf.org.
\par }\pard \ql \li0\ri0\widctlpar\aspalpha\aspnum\faauto\adjustright\rin0\lin0\itap0\pararsid10236317 {\insrsid10236317 ########################################################################\page 
\par }\pard \ql \li0\ri0\widctlpar\aspalpha\aspnum\faauto\adjustright\rin0\lin0\itap0\pararsid15608600 {\insrsid15608600 
\par }\pard \ql \li0\ri0\widctlpar\aspalpha\aspnum\faauto\adjustright\rin0\lin0\itap0 {\f1\fs22\insrsid6031830 
\par {\listtext\pard\plain\s3 \b\f1\fs26\insrsid6031830 \hich\af1\dbch\af0\loch\f1 1.\tab}}\pard\plain \s3\ql \fi-360\li360\ri0\sb240\sa60\keepn\widctlpar\jclisttab\tx360\aspalpha\aspnum\faauto\ls3\outlinelevel2\adjustright\rin0\lin360\itap0 
\b\f1\fs26\lang1033\langfe1033\cgrid\langnp1033\langfenp1033 {\insrsid6031830 Background
\par }\pard\plain \ql \li0\ri0\widctlpar\aspalpha\aspnum\faauto\adjustright\rin0\lin0\itap0 \lang1033\langfe1033\cgrid\langnp1033\langfenp1033 {\f1\fs22\insrsid6031830 
\par }\pard\plain \s15\ql \li0\ri0\widctlpar\aspalpha\aspnum\faauto\adjustright\rin0\lin0\itap0 \f1\fs22\lang1033\langfe1033\cgrid\langnp1033\langfenp1033 {\insrsid6031830 The purpose of this document is to introduce the main ideas behind the Rosetta}{
\insrsid13457462  ESB}{\insrsid6031830 , what it is, how it was used in it\rquote s first real world scenario}{\insrsid13457462  at a large insurance and financial services company.}{\insrsid6031830 
\par }\pard\plain \ql \li0\ri0\widctlpar\aspalpha\aspnum\faauto\adjustright\rin0\lin0\itap0 \lang1033\langfe1033\cgrid\langnp1033\langfenp1033 {\f1\fs22\insrsid6031830 
\par }\pard\plain \s15\ql \li0\ri0\widctlpar\aspalpha\aspnum\faauto\adjustright\rin0\lin0\itap0 \f1\fs22\lang1033\langfe1033\cgrid\langnp1033\langfenp1033 {\insrsid13457462 
The introduction of an Oracle Financials implementation into the I.T projects menu of projects to handle and plan for, clearly identified the need for a common solution to the problem of integrating several dozen interfaces from the mainframe and newer 
portal applications to and from the Oracle Financials deployment.  It was not feasible to continue with the creation and maintenance of point-to-point and \ldblquote swivel chair\rdblquote 
 integration as was the common practice inside of the I.T data center.  The answer was to create a \ldblquote bus\rdblquote 
 that would consume data from systems (producers) and then to provide the data to recipient systems in whatever format and input method required (consumers) without any side ever knowing anything about the what/when/where/how with any other system.}{
\insrsid6031830 
\par 
\par Rosetta borrowed it\rquote s name from the stone found in 1799 by French soldiers in the Nile delta\rquote s town of Rosetta (french for Rashid) that was instrumental in Jean-Fran\u231\'8dois Champollion deciphering of hieroglyphs.
\par 
\par {\listtext\pard\plain\s3 \b\f1\fs26\insrsid6031830 \hich\af1\dbch\af0\loch\f1 2.\tab}}\pard\plain \s3\ql \fi-360\li360\ri0\sb240\sa60\keepn\widctlpar\jclisttab\tx360\aspalpha\aspnum\faauto\ls3\outlinelevel2\adjustright\rin0\lin360\itap0 
\b\f1\fs26\lang1033\langfe1033\cgrid\langnp1033\langfenp1033 {\insrsid6031830 Design highlights
\par }\pard\plain \s15\ql \li0\ri0\widctlpar\aspalpha\aspnum\faauto\adjustright\rin0\lin0\itap0 \f1\fs22\lang1033\langfe1033\cgrid\langnp1033\langfenp1033 {\insrsid6031830 
\par The code}{\insrsid14708790 base}{\insrsid6031830  as it stands at present, is compliant with all the guidelines and concepts that follow.
\par 
\par {\listtext\pard\plain\s3 \b\f1\fs26\insrsid6031830 \hich\af1\dbch\af0\loch\f1 2.1\tab}}\pard\plain \s3\ql \fi-720\li720\ri0\sb240\sa60\keepn\widctlpar\jclisttab\tx720\aspalpha\aspnum\faauto\ls3\ilvl1\outlinelevel2\adjustright\rin0\lin720\itap0 
\b\f1\fs26\lang1033\langfe1033\cgrid\langnp1033\langfenp1033 {\insrsid6031830 XML serialization 
\par }\pard\plain \s15\ql \li720\ri0\widctlpar\aspalpha\aspnum\faauto\adjustright\rin0\lin720\itap0 \f1\fs22\lang1033\langfe1033\cgrid\langnp1033\langfenp1033 {\insrsid6031830 
\par Business objects would be represented in Java classes.  There would be a \ldblquote standard\rdblquote   serialization of all of these classes into }{\i\insrsid6031830 visible}{\insrsid6031830  format(s).  We chose not to override the:
\par }\pard \s15\ql \li1440\ri0\widctlpar\aspalpha\aspnum\faauto\adjustright\rin0\lin1440\itap0 {\i\insrsid6031830 writeObject(ObjectOutputStream)  }{\insrsid6031830 and  }{\i\insrsid6031830 readObject(ObjectInputStream)}{\insrsid6031830  of the }{
\i\insrsid6031830 Serializable }{\insrsid6031830 interface
\par }\pard \s15\ql \li720\ri0\widctlpar\aspalpha\aspnum\faauto\adjustright\rin0\lin720\itap0 {\insrsid6031830 but to provide a pair of extra methods:
\par }\pard \s15\ql \fi720\li720\ri0\widctlpar\aspalpha\aspnum\faauto\adjustright\rin0\lin720\itap0 {\insrsid6031830 String toXml()   and it\rquote s inverse
\par static <T> fromXml(String sXml)
\par so that  X.equals(<T>.fromXml(X.toXml())
\par }\pard \s15\ql \li720\ri0\widctlpar\aspalpha\aspnum\faauto\adjustright\rin0\lin720\itap0 {\insrsid6031830 
\par Every class is thus responsible of knowing it\rquote s }{\i\insrsid6031830 standard}{\insrsid6031830  XML  representation (in fact }{\b\insrsid6031830 only }{\insrsid6031830 this serialized form), and of instantiating objects from this XML representation

\par 
\par All }{\insrsid10236317 of JBoss ESB\rquote s}{\insrsid6031830  }{\i\insrsid6031830 BusinessObject}{\insrsid6031830  derived classes must provide a:
\par }\pard \s15\ql \li1440\ri0\widctlpar\aspalpha\aspnum\faauto\adjustright\rin0\lin1440\itap0 {\insrsid6031830 public String[] getLocator()   method
\par }\pard \s15\ql \li720\ri0\widctlpar\aspalpha\aspnum\faauto\adjustright\rin0\lin720\itap0 {\insrsid6031830 and can choose to provide a
\par \tab public String[] getLocator(int iLocIndex)   
\par (in which case getLocator() will translate to getLocator(0); )
\par 
\par that will provide }{\i\insrsid6031830 visible}{\insrsid6031830  RDBMS indexing information for possible searches using standard SQL queries
\par }\pard \s15\ql \li360\ri0\widctlpar\aspalpha\aspnum\faauto\adjustright\rin0\lin360\itap0 {\insrsid6031830 
\par {\listtext\pard\plain\s3 \b\f1\fs26\insrsid6031830 \hich\af1\dbch\af0\loch\f1 2.2\tab}}\pard\plain \s3\ql \fi-720\li720\ri0\sb240\sa60\keepn\widctlpar\jclisttab\tx720\aspalpha\aspnum\faauto\ls3\ilvl1\outlinelevel2\adjustright\rin0\lin720\itap0 
\b\f1\fs26\lang1033\langfe1033\cgrid\langnp1033\langfenp1033 {\insrsid6031830 Encapsulate data transformation/formatting in \ldblquote Format adapters\rdblquote 
\par }\pard\plain \s15\ql \li720\ri0\widctlpar\aspalpha\aspnum\faauto\adjustright\rin0\lin720\itap0 \f1\fs22\lang1033\langfe1033\cgrid\langnp1033\langfenp1033 {\insrsid6031830 
\par Format adapters were implemented as classes with only static methods, whose sole responsibility is data transformation. In order to minimize coupling it is essential that the business class itself is unaware of any format other than it\rquote 
s standard XML.
\par 
\par Format adapters should be the }{\b\insrsid6031830 only}{\insrsid6031830  place that needs to be aware of coupling between different applications\rquote  representation of the same business object
\par }\pard \s15\ql \li360\ri0\widctlpar\aspalpha\aspnum\faauto\adjustright\rin0\lin360\itap0 {\insrsid6031830 
\par {\listtext\pard\plain\s3 \b\f1\fs26\insrsid6031830 \hich\af1\dbch\af0\loch\f1 2.3\tab}}\pard\plain \s3\ql \fi-720\li720\ri0\sb240\sa60\keepn\widctlpar\jclisttab\tx720\aspalpha\aspnum\faauto\ls3\ilvl1\outlinelevel2\adjustright\rin0\lin720\itap0 
\b\f1\fs26\lang1033\langfe1033\cgrid\langnp1033\langfenp1033 {\insrsid6031830 Encapsulate communication mechanisms and protocols in \ldblquote Transport adapters\rdblquote 
\par }\pard\plain \s15\ql \li720\ri0\widctlpar\aspalpha\aspnum\faauto\adjustright\rin0\lin720\itap0 \f1\fs22\lang1033\langfe1033\cgrid\langnp1033\langfenp1033 {\insrsid6031830 
\par Only }{\i\insrsid6031830 Listeners}{\insrsid6031830  and }{\i\insrsid6031830 Processors}{\insrsid6031830  should be concerned about transport.
\par 
\par {\listtext\pard\plain\s3 \b\f1\fs26\insrsid6031830 \hich\af1\dbch\af0\loch\f1 2.4\tab}}\pard\plain \s3\ql \fi-720\li720\ri0\sb240\sa60\keepn\widctlpar\jclisttab\tx720\aspalpha\aspnum\faauto\ls3\ilvl1\outlinelevel2\adjustright\rin0\lin720\itap0 
\b\f1\fs26\lang1033\langfe1033\cgrid\langnp1033\langfenp1033 {\insrsid6031830 Encapsulate triggering of processes into }{\i\insrsid6031830 Listener}{\insrsid6031830  classes
\par }\pard\plain \s15\ql \li0\ri0\widctlpar\aspalpha\aspnum\faauto\adjustright\rin0\lin0\itap0 \f1\fs22\lang1033\langfe1033\cgrid\langnp1033\langfenp1033 {\insrsid6031830 
\par }\pard \s15\ql \li720\ri0\widctlpar\aspalpha\aspnum\faauto\adjustright\rin0\lin720\itap0 {\insrsid6031830 There are many ways of triggering processes  (in our case integration processes): 
\par }\pard \s15\ql \li1440\ri0\widctlpar\aspalpha\aspnum\faauto\adjustright\rin0\lin1440\itap0 {\insrsid6031830 
Queue/Topic listeners (in independent processes and/or as MDBs within a J2EE container), raw or protocol specific socket listeners, directory pollers with FilenameFilters (in independent processes and/or as MBeans), RDBMS triggers and/or table
 listeners, email listeners, }{\insrsid2580469 S/FTP, }{\insrsid6031830 etc.  The list goes on and on
\par }\pard \s15\ql \li720\ri0\widctlpar\aspalpha\aspnum\faauto\adjustright\rin0\lin720\itap0 {\insrsid6031830 
\par The main responsibility of a }{\i\insrsid6031830 Listener}{\insrsid6031830  is to trigger }{\i\insrsid6031830 Processors}{\insrsid6031830  and }{\i\insrsid6031830 notify}{\insrsid6031830  other }{\i\insrsid6031830 Listeners}{\insrsid6031830 
 about the outcome of the processes, by calling the Processors\rquote  notify methods
\par {\listtext\pard\plain\s3 \b\f1\fs26\insrsid6031830 \hich\af1\dbch\af0\loch\f1 2.5\tab}}\pard\plain \s3\ql \fi-720\li720\ri0\sb240\sa60\keepn\widctlpar\jclisttab\tx720\aspalpha\aspnum\faauto\ls3\ilvl1\outlinelevel2\adjustright\rin0\lin720\itap0 
\b\f1\fs26\lang1033\langfe1033\cgrid\langnp1033\langfenp1033 {\insrsid6031830 Provide base abstract }{\i\insrsid6031830 Processor}{\insrsid6031830  classes 
\par }\pard\plain \s15\ql \li720\ri0\widctlpar\aspalpha\aspnum\faauto\adjustright\rin0\lin720\itap0 \f1\fs22\lang1033\langfe1033\cgrid\langnp1033\langfenp1033 {\insrsid6031830 
\par These hold protected common methods for it\rquote s children, and demand these to implement the abstract methods that will be later invoked at runtime using reflection
\par 
\par A }{\i\insrsid6031830 Processor}{\insrsid6031830   that uses }{\i\insrsid6031830 BusinessObjects}{\insrsid6031830  performs (but is not limited to) data transformation using }{\i\insrsid6031830 FormatAdapters}{\insrsid6031830 , is triggered by a }{
\i\insrsid6031830 Listener}{\insrsid6031830 , and provides methods (and/or throws Exceptions) to learn about it\rquote s outcome
\par }{\i\insrsid6031830 
\par Outcome notification}{\insrsid6031830  only differs from (and in fact is configured as) any other }{\i\insrsid6031830 Processor}{\insrsid6031830 , except for the fact
 that you very often wish to notify the outcome of a normal process, and seldom wish to notify the outcome of a simple notification
\par 
\par Two dummy overrideable  methods are provided in the Processor base class and automatically called at the end of the Processor\rquote s lifecycle
\par 
\par }\pard \s15\ql \li1440\ri0\widctlpar\aspalpha\aspnum\faauto\adjustright\rin0\lin1440\itap0 {\insrsid6031830 notifyOkListeners(List<NotificationListener> oList)
\par notifyErrListeners(List<NotificationListener> oList)
\par }\pard \s15\ql \li720\ri0\widctlpar\aspalpha\aspnum\faauto\adjustright\rin0\lin720\itap0 {\insrsid6031830 
\par }\pard \s15\ql \li0\ri0\widctlpar\aspalpha\aspnum\faauto\adjustright\rin0\lin0\itap0\pararsid2580469 {\insrsid6031830 A few real (non abstract) Processor classes can be reused to tailor the most frequent type of processors:
\par }\pard \s15\ql \li720\ri0\widctlpar\aspalpha\aspnum\faauto\adjustright\rin0\lin720\itap0 {\insrsid6031830 
\par }\pard \s15\ql \li1440\ri0\widctlpar\aspalpha\aspnum\faauto\adjustright\rin0\lin1440\itap0 {\insrsid6031830 FileProcessor (Object oConfig, File oF)
\par FileCopier  }{\b\insrsid6031830 extends}{\insrsid6031830  FileProcessor
\par MessageProcessor(Object oConfig, javax.jms.Message oM)
\par 
\par }\pard \s15\ql \li720\ri0\widctlpar\aspalpha\aspnum\faauto\adjustright\rin0\lin720\itap0 {\insrsid6031830 
The configuration tree of these derived classes, has the same configuration subtree as the parent class, and typically a specific subtree whose root is a node of the parent class\rquote  configuration tree.
\par 
\par {\listtext\pard\plain\s3 \b\f1\fs26\insrsid6031830 \hich\af1\dbch\af0\loch\f1 2.6\tab}}\pard\plain \s3\ql \fi-720\li720\ri0\sb240\sa60\keepn\widctlpar\jclisttab\tx720\aspalpha\aspnum\faauto\ls3\ilvl1\outlinelevel2\adjustright\rin0\lin720\itap0 
\b\f1\fs26\lang1033\langfe1033\cgrid\langnp1033\langfenp1033 {\insrsid6031830 Centralized configuration
\par }\pard\plain \s15\ql \li720\ri0\widctlpar\aspalpha\aspnum\faauto\adjustright\rin0\lin720\itap0 \f1\fs22\lang1033\langfe1033\cgrid\langnp1033\langfenp1033 {\insrsid6031830 
\par All Processors receive their configuration parameters as an XML tree, known both to they themselves, and to whoever is responsible  for their configuration.
\par 
\par }{\insrsid10236317 JBoss ESB}{\insrsid6031830  chose to store configuration information for all of it\rquote s components (Listeners, Processors, Notifiers, Factories, etc), in an LDAP repository.  
\par 
\par Access to this repository is encapsulated in a }{\i\insrsid6031830 Configurator}{\insrsid6031830  class.  An immediate consequence of this encapsulation is that by changing the implementation of the Configurator class (but not it\rquote 
s signatures), configuration information can be stored anywhere (as long as it\rquote s known by the }{\i\insrsid6031830 Configurator}{\insrsid6031830  class)  The idea is to use a ConfiguratorFactory instead of instantiating a }{\i\insrsid6031830 new 
LdapConfigurator()}{\insrsid6031830 
\par }\pard \s15\ql \li0\ri0\widctlpar\aspalpha\aspnum\faauto\adjustright\rin0\lin0\itap0 {\insrsid6031830 
\par {\listtext\pard\plain\s3 \b\f1\fs26\insrsid6031830 \hich\af1\dbch\af0\loch\f1 2.7\tab}}\pard\plain \s3\ql \fi-720\li720\ri0\sb240\sa60\keepn\widctlpar\jclisttab\tx720\aspalpha\aspnum\faauto\ls3\ilvl1\outlinelevel2\adjustright\rin0\lin720\itap0 
\b\f1\fs26\lang1033\langfe1033\cgrid\langnp1033\langfenp1033 {\insrsid6031830 General purpose Object Repository 
\par }\pard\plain \s15\ql \li720\ri0\widctlpar\aspalpha\aspnum\faauto\adjustright\rin0\lin720\itap0 \f1\fs22\lang1033\langfe1033\cgrid\langnp1033\langfenp1033 {\insrsid6031830 
\par The ability to store }{\i\insrsid6031830 BusinessObjects}{\insrsid6031830  and }{\i\insrsid6031830 ProcessingBatches}{\insrsid6031830  in persistent media, provides a simple mechanism for }{\b\insrsid6031830 decoupling successive steps}{\insrsid6031830 
 in a chain of individual asynchronous }{\i\insrsid6031830 Processor}{\insrsid6031830   steps.  
\par 
\par It is a simple (albeit effective) scheme that allows for storage of the serialized object itself (in the standard XML format), plus index information (Object\rquote 
s UID, batch UID, timestamp, etc.) in a single SQL table (and as many SQL index tables as configured in the }{\i\insrsid6031830 ObjectStore}{\insrsid6031830  configuration class.
\par 
\par The purpose of this repository is }{\b\insrsid6031830 NOT}{\insrsid6031830  to act as a high performance general purpose database.  It is used to store }{\i\insrsid6031830 Batches}{\insrsid6031830  until the batch is commited/rolled back, and/or to store 
}{\i\insrsid6031830 BusinessObjects}{\insrsid6031830  for future retrieval, together with the RDBMS index tables according to the }{\i\insrsid6031830 BusinessObject}{\insrsid6031830 \rquote s getLocator(int) methods
\par 
\par The object storage and retrieval functionality is usable only through the business delegate of the actual implementation (in the current versions of Rosetta, a J2EE stateless session bean)  that can be obtained by the }{\i\insrsid6031830 Processor}{
\insrsid6031830  classes using the }{\i\insrsid6031830 PersistHandlerFactory}{\insrsid6031830  class:
\par }\pard \s15\ql \li1440\ri0\widctlpar\aspalpha\aspnum\faauto\adjustright\rin0\lin1440\itap0 {\insrsid6031830 \page 
\par Interface }{\i\insrsid6031830 PersistHandler \{\u8230\'c9\}
\par }\pard \s15\ql \li2160\ri0\widctlpar\aspalpha\aspnum\faauto\adjustright\rin0\lin2160\itap0 {\insrsid6031830 The contract of the }{\i\insrsid6031830 ObjectRepository}{\insrsid6031830  service is published in this interface
\par }\pard \s15\ql \li1440\ri0\widctlpar\aspalpha\aspnum\faauto\adjustright\rin0\lin1440\itap0 {\insrsid6031830 
\par }{\i\insrsid6031830 PersistHandler }{\insrsid6031830 handler}{\i\insrsid6031830  = PersistHandlerFactory}{\insrsid6031830 .getHandler();
\par }\pard \s15\ql \li2160\ri0\widctlpar\aspalpha\aspnum\faauto\adjustright\rin0\lin2160\itap0 {\insrsid6031830 Nobody but this factory needs to know that the services are provided by an EJB (or any other implementation mechanism, should that be the case)

\par }{\insrsid14708790 
\par }\pard\plain \s2\ql \li0\ri0\sb240\sa60\keepn\widctlpar\aspalpha\aspnum\faauto\outlinelevel1\adjustright\rin0\lin0\itap0\pararsid14179073 \b\i\f1\fs28\lang1033\langfe1033\cgrid\langnp1033\langfenp1033 {\insrsid14179073 Building and deploying JBoss ESB}{
\insrsid14708790 
\par }\pard\plain \s15\ql \li2160\ri0\widctlpar\aspalpha\aspnum\faauto\adjustright\rin0\lin2160\itap0 \f1\fs22\lang1033\langfe1033\cgrid\langnp1033\langfenp1033 {\insrsid14179073 
\par }\pard \s15\ql \li720\ri0\widctlpar\aspalpha\aspnum\faauto\adjustright\rin0\lin720\itap0\pararsid14179073 {\insrsid5332965 Building and deploying the JBoss ESB is prett
y straight-forward.  It is a J2EE/Java application, and as such uses all the customary ways in which you should all be used to doing this.  You will need to define the following environment variables:}{\insrsid14179073 
\par {\listtext\pard\plain\s15 \f1\fs22\insrsid5332965 \hich\af1\dbch\af0\loch\f1 -\tab}}\pard \s15\ql \fi-360\li1080\ri0\widctlpar\jclisttab\tx1080\aspalpha\aspnum\faauto\ls11\adjustright\rin0\lin1080\itap0\pararsid5332965 {\insrsid5332965 JAVA_HOME
\par {\listtext\pard\plain\s15 \f1\fs22\insrsid5332965 \hich\af1\dbch\af0\loch\f1 -\tab}XDOCLET_HOME
\par {\listtext\pard\plain\s15 \f1\fs22\insrsid5332965 \hich\af1\dbch\af0\loch\f1 -\tab}ANT_HOME
\par {\listtext\pard\plain\s15 \f1\fs22\insrsid5332965 \hich\af1\dbch\af0\loch\f1 -\tab}JBOSS_HOME
\par }\pard \s15\ql \li0\ri0\widctlpar\aspalpha\aspnum\faauto\adjustright\rin0\lin0\itap0\pararsid15608600 {\insrsid15608600 
\par }\pard \s15\ql \li720\ri0\widctlpar\aspalpha\aspnum\faauto\adjustright\rin0\lin720\itap0\pararsid15608600 {\i\insrsid15608600\charrsid15608600 What\rquote s required to run JBoss ESB:}{\i\insrsid15608600 
\par {\listtext\pard\plain\s15 \f2\fs22\insrsid15608600 \hich\af2\dbch\af0\loch\f2 o\tab}}\pard \s15\ql \fi-360\li1800\ri0\widctlpar\jclisttab\tx1800\aspalpha\aspnum\faauto\ls11\ilvl1\adjustright\rin0\lin1800\itap0\pararsid15608600 {\i\insrsid15608600 
JBoss Application Server 4.0.x \endash  You could deploy this to another app. Server if you migrate the deployment files.
\par {\listtext\pard\plain\s15 \f2\fs22\insrsid15608600 \hich\af2\dbch\af0\loch\f2 o\tab}PostGreSQL \endash  if you want to use something like MySQL you will need to migrate the DB schema provided for your database.  Please send us your migrated schema\rquote 
s so we can add them to the distribution.}{\i\insrsid15608600\charrsid15608600 
\par }\pard \s15\ql \li0\ri0\widctlpar\aspalpha\aspnum\faauto\adjustright\rin0\lin0\itap0\pararsid15608600 {\insrsid15608600 
\par }\pard \s15\ql \li720\ri0\widctlpar\aspalpha\aspnum\faauto\adjustright\rin0\lin720\itap0\pararsid15608600 {\i\insrsid15608600 Environment Settings Required to Build JBoss ESB:}{\i\insrsid5332965 
\par }{\i\insrsid15608600\charrsid15608600 
\par {\listtext\pard\plain\s15 \f1\fs22\insrsid5332965 \hich\af1\dbch\af0\loch\f1 -\tab}}\pard \s15\ql \fi-360\li1080\ri0\widctlpar\jclisttab\tx1080\aspalpha\aspnum\faauto\ls11\adjustright\rin0\lin1080\itap0\pararsid5332965 {\insrsid5332965 
JAVA_HOME should point to your JDK 1.5.x root directory. This is required to build any of the code.
\par }\pard \s15\ql \li0\ri0\widctlpar\aspalpha\aspnum\faauto\adjustright\rin0\lin0\itap0\pararsid5332965 {\insrsid5332965 
\par {\listtext\pard\plain\s15 \f1\fs22\insrsid5332965 \hich\af1\dbch\af0\loch\f1 -\tab}}\pard \s15\ql \fi-360\li1080\ri0\widctlpar\jclisttab\tx1080\aspalpha\aspnum\faauto\ls11\adjustright\rin0\lin1080\itap0\pararsid5332965 {\insrsid5332965 
XDOCLET_HOME should point to the root directory of your XDoclet 1.2.x distribution.  XDoclet is used to generate the EJB2.1 artifacts.  Most of this will be replaced by the migration to EJB3 in the near future and we will no longer require XDoclet.
\par }\pard \s15\ql \li0\ri0\widctlpar\aspalpha\aspnum\faauto\adjustright\rin0\lin0\itap0\pararsid5332965 {\insrsid5332965 
\par {\listtext\pard\plain\s15 \f1\fs22\insrsid5332965 \hich\af1\dbch\af0\loch\f1 -\tab}}\pard \s15\ql \fi-360\li1080\ri0\widctlpar\jclisttab\tx1080\aspalpha\aspnum\faauto\ls11\adjustright\rin0\lin1080\itap0\pararsid5332965 {\insrsid5332965 
ANT_HOME required to build the project and all the associated artifacts
\par }\pard \s15\ql \li0\ri0\widctlpar\aspalpha\aspnum\faauto\adjustright\rin0\lin0\itap0\pararsid5332965 {\insrsid5332965 
\par {\listtext\pard\plain\s15 \f1\fs22\insrsid5332965 \hich\af1\dbch\af0\loch\f1 -\tab}}\pard \s15\ql \fi-360\li1080\ri0\widctlpar\jclisttab\tx1080\aspalpha\aspnum\faauto\ls11\adjustright\rin0\lin1080\itap0\pararsid5332965 {\insrsid5332965 
JBOSS_HOME used to identify where the required client-side libraries are for building JBoss ESB.  It could also easily be used to add a new ANT task to actually deploy the artifacts right into your JBoss server instance.
\par }\pard \s15\ql \li0\ri0\widctlpar\aspalpha\aspnum\faauto\adjustright\rin0\lin0\itap0\pararsid5332965 {\insrsid5332965 
\par 
\par To build the artifacts, at t}{\insrsid16068642 he JBoss ESB Home directory (i.e}{\insrsid5332965 : c:\\JbossESB) }{\insrsid2580469 run the}{\insrsid5332965  ANT all}{\insrsid2580469  task.}{\insrsid5332965 
\par The \ldblquote all\rdblquote  ant task will clean up, compile, and package up the source code and create an EAR file which you can deploy into your JBoss server.
\par }{\insrsid16068642 
\par {\listtext\pard\plain\s15 \f1\fs22\insrsid16068642 \hich\af1\dbch\af0\loch\f1 1.\tab}}\pard \s15\ql \fi-360\li720\ri0\sl360\slmult1\widctlpar\jclisttab\tx720\aspalpha\aspnum\faauto\ls12\adjustright\rin0\lin720\itap0\pararsid212399 {\insrsid16068642 Copy
 the }{\i\insrsid14051247 <JBoss ESB Home>/dist/}{\i\insrsid16068642\charrsid212399 JbossEsbAppl.ear}{\insrsid16068642  to your }{\i\insrsid14051247 <JBOSS_HOME>/server/all/}{\i\insrsid16068642\charrsid212399 deploy}{\insrsid16068642  directory
\par {\listtext\pard\plain\s15 \f1\fs22\insrsid16068642 \hich\af1\dbch\af0\loch\f1 2.\tab}Edit the properties-servic}{\insrsid14051247 e.xml in your <JBOSS_HOME>/server/all/d}{\insrsid16068642 eploy directory and add the following attribute entry:
\par }\pard \s15\ql \fi360\li720\ri0\sl360\slmult1\widctlpar\aspalpha\aspnum\faauto\adjustright\rin0\lin720\itap0\pararsid212399 {\i\insrsid16068642\charrsid212399 <attribute name="URLList">\line \~\~\~\~\~ \tab ./conf/jbossEsb.properties\line \~\~\~
 </attribute>
\par {\listtext\pard\plain\s15 \f3\fs22\insrsid16068642 \loch\af3\dbch\af0\hich\f3 \u-3913\'b7\tab}}\pard \s15\ql \fi-360\li1440\ri0\sl360\slmult1\widctlpar\jclisttab\tx1440\aspalpha\aspnum\faauto\ls12\ilvl1\adjustright\rin0\lin1440\itap0\pararsid212399 {
\insrsid16068642 This let\rquote s the JBoss ESB }{\insrsid14051247 application }{\insrsid16068642 know where to find it\rquote s config file
\par {\listtext\pard\plain\s15 \f1\fs22\insrsid16068642 \hich\af1\dbch\af0\loch\f1 3.\tab}}\pard \s15\ql \fi-360\li720\ri0\sl360\slmult1\widctlpar\jclisttab\tx720\aspalpha\aspnum\faauto\ls12\adjustright\rin0\lin720\itap0\pararsid212399 {\insrsid16068642 
Copy the }{\i\insrsid16068642\charrsid212399 <JBoss ESB HOM}{\i\insrsid14051247 E>/docs/install/conf/}{\i\insrsid16068642\charrsid212399 jbossEsb.properties}{\insrsid16068642  to your }{\insrsid16068642\charrsid212399 <JBOSS_HOME>\\server\\all\\conf}{
\insrsid14051247  director}{\insrsid16068642 
\par {\listtext\pard\plain\s15 \f1\fs22\insrsid7021789 \hich\af1\dbch\af0\loch\f1 4.\tab}}{\insrsid7021789 Load the database schema located in }{\i\insrsid14051247 <J}{\i\insrsid6620530 Boss ESB HOME>/docs/install/}{\i\insrsid14051247 database/}{
\i\insrsid7021789\charrsid212399 JBossESB-DB.sql}{\insrsid7021789  into your PostGreSQL database \endash  create a new database of your choice.}{\insrsid16068642 
\par {\listtext\pard\plain\s15 \f1\fs22\insrsid7021789 \hich\af1\dbch\af0\loch\f1 5.\tab}}{\insrsid7021789 Copy the }{\i\insrsid7021789\charrsid212399 <JBoss ESB HOM}{\i\insrsid6620530 E>/doc/install/}{\i\insrsid14051247 deploy/}{
\i\insrsid7021789\charrsid212399 JBossESB-DS.xml}{\insrsid7021789  to your }{\i\insrsid14051247 <JBOSS_HOME>/server/all/}{\i\insrsid7021789\charrsid212399 deploy}{\insrsid7021789  directory.
\par {\listtext\pard\plain\s15 \f1\fs22\insrsid7021789 \hich\af1\dbch\af0\loch\f1 6.\tab}Edit the }{\i\insrsid7021789\charrsid212399 JBossESB-DS.xml}{\insrsid7021789  and change as required for your database settings
\par {\listtext\pard\plain\s15 \f1\fs22\insrsid7021789 \hich\af1\dbch\af0\loch\f1 7.\tab}Copy the PostGreSQL JDBC driver into your }{\i\insrsid14051247 <JBOSS_HOME>/server/all/}{\i\insrsid7021789\charrsid212399 lib}{\insrsid7021789  directory
\par {\listtext\pard\plain\s15 \f1\fs22\insrsid5915745 \hich\af1\dbch\af0\loch\f1 8.\tab}}\pard \s15\ql \fi-360\li720\ri0\widctlpar\jclisttab\tx720\aspalpha\aspnum\faauto\ls12\adjustright\rin0\lin720\itap0\pararsid16068642 {\insrsid5915745 
Launch JBoss Application Server}{\insrsid7021789 
\par }\pard \s15\ql \li0\ri0\widctlpar\aspalpha\aspnum\faauto\adjustright\rin0\lin0\itap0\pararsid5332965 {\insrsid16068642\charrsid16068642 
\par }{\insrsid2580469 
\par 
\par }{\insrsid8270832 
\par }\pard\plain \s2\ql \li0\ri0\sb240\sa60\keepn\widctlpar\aspalpha\aspnum\faauto\outlinelevel1\adjustright\rin0\lin0\itap0\pararsid6258257 \b\i\f1\fs28\lang1033\langfe1033\cgrid\langnp1033\langfenp1033 {\insrsid8270832 \page DEPLOYING A }{\insrsid15740327 
TEST}{\insrsid8270832  EXAMPLE
\par }\pard\plain \s15\ql \li0\ri0\widctlpar\aspalpha\aspnum\faauto\adjustright\rin0\lin0\itap0\pararsid5332965 \f1\fs22\lang1033\langfe1033\cgrid\langnp1033\langfenp1033 {\insrsid8270832 
\par }{\insrsid15740327\charrsid15740327 This very }{\insrsid15740327 simple example will allow }{\insrsid10236317 you to \ldblquote test\rdblquote  JBossESB and verif}{\insrsid15740327 
y that it is running as a deployed application inside of JBoss app. server.}{\insrsid8270832 
\par }{\insrsid15740327 
\par }{\insrsid15740327\charrsid15740327 
\par }{\insrsid10236317 Once JBoss ESB is running inside of your JBoss App. Server, you can find a sample File Copier test case in the <JBoss ESB HOME>/docs/samples directory.}{\insrsid8270832 
\par }{\insrsid10236317 
\par Launch the TestJBossESB.bat.  This will launch a DirListener process which will scan for files with a .INP suffix.  All configuration settings and directory structures can be seen and modified in the JBoss ESB HOME>}{\insrsid10236317\charrsid10236317  }{
\insrsid10236317 /docs/samples/TestJBossESB/}{\insrsid10236317\charrsid10236317 paramsDir}{\insrsid10236317 /}{\insrsid10236317\charrsid10236317  FileMoverConfigExample.xml}{\insrsid10236317 
.  More documentation on the contents and available options on this file are in progress.  For now, it should be pretty evident by just looking at the contents to see what this param file does.  A DirListener process with 1 thread (maxThreads) polls
 the InputDirURI for files with the \ldblquote .inp\rdblquote 
 (InputSuffix).  Once a file is found, it will invoke the FileCopier actionClass among other things.  The NotificationList specifies this example to notify by way of the NotifyFiles and NotifyEmail classes if \ldblquote OK\rdblquote ,
 and just to a file if \ldblquote err\rdblquote .
\par 
\par }\pard \s15\ql \li0\ri0\widctlpar\aspalpha\aspnum\faauto\adjustright\rin0\lin0\itap0\pararsid5332965 {\insrsid10236317 
Drop a file, or a set of files in the InputDirURI with the .INP suffix and the Listener will move those, notifying on each one of those found.  This is a very basic e}{\insrsid13772669 xample, with no transformation, no routing, etc.  More exam
ples will come with future releases.}{\insrsid10236317 
\par 
\par }\pard \s15\ql \li0\ri0\widctlpar\aspalpha\aspnum\faauto\adjustright\rin0\lin0\itap0\pararsid5332965 {\insrsid10236317 
\par }{\insrsid10236317\charrsid10236317 
\par }}
\ No newline at end of file
+{\rtf1\ansi\deff0\adeflang1025
+{\fonttbl{\f0\froman\fprq2\fcharset0 Bitstream Vera Serif;}{\f1\froman\fprq2\fcharset0 Bitstream Vera Serif;}{\f2\fswiss\fprq2\fcharset0 Bitstream Vera Sans;}{\f3\fmodern\fprq1\fcharset0 Courier{\*\falt Courier New};}{\f4\fnil\fprq0\fcharset2 StarSymbol{\*\falt Arial Unicode MS};}{\f5\froman\fprq0\fcharset0 Times-Roman{\*\falt Times New Roman};}{\f6\fnil\fprq2\fcharset0 Bitstream Vera Sans;}{\f7\fnil\fprq2\fcharset0 Mincho{\*\falt msmincho};}{\f8\fnil\fprq2\fcharset0 Lucidasans;}{\f9\fnil\fprq0\fcharset0 Lucidasans;}}
+{\colortbl;\red0\green0\blue0;\red0\green0\blue128;\red0\green0\blue153;\red128\green128\blue128;}
+{\stylesheet{\s1\cf0{\*\hyphen2\hyphlead2\hyphtrail2\hyphmax0}\aspalpha\ql\rtlch\af8\afs24\lang255\ltrch\dbch\af6\langfe255\hich\f0\fs24\lang1033\loch\f0\fs24\lang1033\snext1 Normal;}
+{\s2\sa120\cf0{\*\hyphen2\hyphlead2\hyphtrail2\hyphmax0}\aspalpha\ql\rtlch\af8\afs24\lang255\ltrch\dbch\af6\langfe255\hich\f0\fs24\lang1033\loch\f0\fs24\lang1033\sbasedon1\snext2 Body Text;}
+{\s3\sb240\sa120\keepn\cf0{\*\hyphen2\hyphlead2\hyphtrail2\hyphmax0}\aspalpha\ql\rtlch\afs28\lang255\ltrch\dbch\af7\langfe255\hich\f2\fs28\lang1033\loch\f2\fs28\lang1033\sbasedon1\snext2 Heading;}
+{\s4\sb240\sa120\keepn\cf0{\*\hyphen2\hyphlead2\hyphtrail2\hyphmax0}\aspalpha\ql\rtlch\afs32\lang255\ab\ltrch\dbch\af7\langfe255\hich\f2\fs32\lang1033\b\loch\f2\fs32\lang1033\b\sbasedon3\snext2 heading 1;}
+{\s5\sb240\sa120\keepn\cf0{\*\hyphen2\hyphlead2\hyphtrail2\hyphmax0}\aspalpha\ql\rtlch\afs28\lang255\ai\ab\ltrch\dbch\af7\langfe255\hich\f2\fs28\lang1033\i\b\loch\f2\fs28\lang1033\i\b\sbasedon3\snext2 heading 2;}
+{\s6\li360\ri0\lin360\rin0\fi0\sb240\sa120\keepn\cf0{\*\hyphen2\hyphlead2\hyphtrail2\hyphmax0}\aspalpha\ql\rtlch\afs28\lang255\ltrch\dbch\af7\langfe255\hich\f2\fs28\lang1033\loch\f2\fs28\lang1033\sbasedon3\snext2{\*\soutlvl2} heading 3;}
+{\s7\sa120\cf0{\*\hyphen2\hyphlead2\hyphtrail2\hyphmax0}\aspalpha\ql\rtlch\af9\afs24\lang255\ltrch\dbch\af6\langfe255\hich\f0\fs24\lang1033\loch\f0\fs24\lang1033\sbasedon2\snext7 List;}
+{\s8\sb120\sa120\cf0{\*\hyphen2\hyphlead2\hyphtrail2\hyphmax0}\aspalpha\ql\rtlch\af9\afs24\lang255\ai\ltrch\dbch\af6\langfe255\hich\f0\fs24\lang1033\i\loch\f0\fs24\lang1033\i\sbasedon1\snext8 caption;}
+{\s9\cf0{\*\hyphen2\hyphlead2\hyphtrail2\hyphmax0}\aspalpha\ql\rtlch\af9\afs24\lang255\ltrch\dbch\af6\langfe255\hich\f0\fs24\lang1033\loch\f0\fs24\lang1033\sbasedon1\snext9 Index;}
+{\s10\li360\ri0\lin360\rin0\fi0\sb240\sa120\keepn\cf0{\*\hyphen2\hyphlead2\hyphtrail2\hyphmax0}\aspalpha\ql\rtlch\afs28\lang255\ltrch\dbch\af7\langfe255\hich\f2\fs28\lang1033\loch\f2\fs28\lang1033\sbasedon3\snext2{\*\soutlvl0} heading 1;}
+{\s11\li360\ri0\lin360\rin0\fi0\sb240\sa120\keepn\cf0{\*\hyphen2\hyphlead2\hyphtrail2\hyphmax0}\aspalpha\ql\rtlch\afs28\lang255\ltrch\dbch\af7\langfe255\hich\f2\fs28\lang1033\loch\f2\fs28\lang1033\sbasedon3\snext2{\*\soutlvl1} heading 2;}
+{\*\cs13\cf0\rtlch\af8\afs24\lang255\ltrch\dbch\af6\langfe255\hich\f0\fs24\lang1033\loch\f0\fs24\lang1033 Numbering Symbols;}
+{\*\cs14\cf0\rtlch\af4\afs18\lang255\ltrch\dbch\af4\langfe255\hich\f4\fs18\lang1033\loch\f4\fs18\lang1033 Bullet Symbols;}
+{\*\cs15\cf2\ul\ulc0\rtlch\af8\afs24\lang255\ltrch\dbch\af6\langfe255\hich\f0\fs24\lang1033\loch\f0\fs24\lang1033 Internet link;}
+}{\*\listtable{\list\listtemplateid1
+{\listlevel\levelnfc0\leveljc0\levelstartat1\levelfollow0{\leveltext \'02\'00.;}{\levelnumbers\'01;}\fi-360\li720}
+{\listlevel\levelnfc1\leveljc0\levelstartat1\levelfollow0{\leveltext \'02\'01.;}{\levelnumbers\'01;}\fi-360\li1080}
+{\listlevel\levelnfc0\leveljc0\levelstartat1\levelfollow0{\leveltext \'02\'02.;}{\levelnumbers\'01;}\fi-360\li1440}
+{\listlevel\levelnfc0\leveljc0\levelstartat1\levelfollow0{\leveltext \'02\'03.;}{\levelnumbers\'01;}\fi-360\li1800}
+{\listlevel\levelnfc0\leveljc0\levelstartat1\levelfollow0{\leveltext \'02\'04.;}{\levelnumbers\'01;}\fi-360\li2160}
+{\listlevel\levelnfc0\leveljc0\levelstartat1\levelfollow0{\leveltext \'02\'05.;}{\levelnumbers\'01;}\fi-360\li2520}
+{\listlevel\levelnfc0\leveljc0\levelstartat1\levelfollow0{\leveltext \'02\'06.;}{\levelnumbers\'01;}\fi-360\li2880}
+{\listlevel\levelnfc0\leveljc0\levelstartat1\levelfollow0{\leveltext \'02\'07.;}{\levelnumbers\'01;}\fi-360\li3240}
+{\listlevel\levelnfc0\leveljc0\levelstartat1\levelfollow0{\leveltext \'02\'08.;}{\levelnumbers\'01;}\fi-360\li3600}
+{\*\soutlvl{\listlevel\levelnfc0\leveljc0\levelstartat1\levelfollow0{\leveltext \'02\'09.;}{\levelnumbers\'01;}\fi-360\li3960}}\listid1}
+{\list\listtemplateid2
+{\listlevel\levelnfc23\leveljc0\levelstartat1\levelfollow0{\leveltext \'01\u9679 ?;}{\levelnumbers;}\f4\fs18\f4\fs18\f4\fs18\f4\fi-360\li720}
+{\listlevel\levelnfc23\leveljc0\levelstartat1\levelfollow0{\leveltext \'01\u9675 ?;}{\levelnumbers;}\f4\fs18\f4\fs18\f4\fs18\f4\fi-360\li1080}
+{\listlevel\levelnfc23\leveljc0\levelstartat1\levelfollow0{\leveltext \'01\u9632 ?;}{\levelnumbers;}\f4\fs18\f4\fs18\f4\fs18\f4\fi-360\li1440}
+{\listlevel\levelnfc23\leveljc0\levelstartat1\levelfollow0{\leveltext \'01\u9679 ?;}{\levelnumbers;}\f4\fs18\f4\fs18\f4\fs18\f4\fi-360\li1800}
+{\listlevel\levelnfc23\leveljc0\levelstartat1\levelfollow0{\leveltext \'01\u9675 ?;}{\levelnumbers;}\f4\fs18\f4\fs18\f4\fs18\f4\fi-360\li2160}
+{\listlevel\levelnfc23\leveljc0\levelstartat1\levelfollow0{\leveltext \'01\u9632 ?;}{\levelnumbers;}\f4\fs18\f4\fs18\f4\fs18\f4\fi-360\li2520}
+{\listlevel\levelnfc23\leveljc0\levelstartat1\levelfollow0{\leveltext \'01\u9679 ?;}{\levelnumbers;}\f4\fs18\f4\fs18\f4\fs18\f4\fi-360\li2880}
+{\listlevel\levelnfc23\leveljc0\levelstartat1\levelfollow0{\leveltext \'01\u9675 ?;}{\levelnumbers;}\f4\fs18\f4\fs18\f4\fs18\f4\fi-360\li3240}
+{\listlevel\levelnfc23\leveljc0\levelstartat1\levelfollow0{\leveltext \'01\u9632 ?;}{\levelnumbers;}\f4\fs18\f4\fs18\f4\fs18\f4\fi-360\li3600}
+{\*\soutlvl{\listlevel\levelnfc23\leveljc0\levelstartat1\levelfollow0{\leveltext \'01\u9679 ?;}{\levelnumbers;}\f4\fs18\f4\fs18\f4\fs18\f4\fi-360\li3960}}\listid2}
+{\list\listtemplateid3
+{\listlevel\levelnfc0\leveljc0\levelstartat6\levelfollow0{\leveltext \'02\'00.;}{\levelnumbers\'01;}\fi-360\li720}
+{\listlevel\levelnfc0\leveljc0\levelstartat1\levelfollow0{\leveltext \'02\'01.;}{\levelnumbers\'01;}\fi-360\li1080}
+{\listlevel\levelnfc0\leveljc0\levelstartat1\levelfollow0{\leveltext \'02\'02.;}{\levelnumbers\'01;}\fi-360\li1440}
+{\listlevel\levelnfc0\leveljc0\levelstartat1\levelfollow0{\leveltext \'02\'03.;}{\levelnumbers\'01;}\fi-360\li1800}
+{\listlevel\levelnfc0\leveljc0\levelstartat1\levelfollow0{\leveltext \'02\'04.;}{\levelnumbers\'01;}\fi-360\li2160}
+{\listlevel\levelnfc0\leveljc0\levelstartat1\levelfollow0{\leveltext \'02\'05.;}{\levelnumbers\'01;}\fi-360\li2520}
+{\listlevel\levelnfc0\leveljc0\levelstartat1\levelfollow0{\leveltext \'02\'06.;}{\levelnumbers\'01;}\fi-360\li2880}
+{\listlevel\levelnfc0\leveljc0\levelstartat1\levelfollow0{\leveltext \'02\'07.;}{\levelnumbers\'01;}\fi-360\li3240}
+{\listlevel\levelnfc0\leveljc0\levelstartat1\levelfollow0{\leveltext \'02\'08.;}{\levelnumbers\'01;}\fi-360\li3600}
+{\*\soutlvl{\listlevel\levelnfc0\leveljc0\levelstartat1\levelfollow0{\leveltext \'02\'09.;}{\levelnumbers\'01;}\fi-360\li3960}}\listid3}
+{\list\listtemplateid4
+{\listlevel\levelnfc0\leveljc0\levelstartat5\levelfollow0{\leveltext \'02\'00.;}{\levelnumbers\'01;}\fi-360\li720}
+{\listlevel\levelnfc0\leveljc0\levelstartat1\levelfollow0{\leveltext \'02\'01.;}{\levelnumbers\'01;}\fi-360\li1080}
+{\listlevel\levelnfc0\leveljc0\levelstartat1\levelfollow0{\leveltext \'02\'02.;}{\levelnumbers\'01;}\fi-360\li1440}
+{\listlevel\levelnfc0\leveljc0\levelstartat1\levelfollow0{\leveltext \'02\'03.;}{\levelnumbers\'01;}\fi-360\li1800}
+{\listlevel\levelnfc0\leveljc0\levelstartat1\levelfollow0{\leveltext \'02\'04.;}{\levelnumbers\'01;}\fi-360\li2160}
+{\listlevel\levelnfc0\leveljc0\levelstartat1\levelfollow0{\leveltext \'02\'05.;}{\levelnumbers\'01;}\fi-360\li2520}
+{\listlevel\levelnfc0\leveljc0\levelstartat1\levelfollow0{\leveltext \'02\'06.;}{\levelnumbers\'01;}\fi-360\li2880}
+{\listlevel\levelnfc0\leveljc0\levelstartat1\levelfollow0{\leveltext \'02\'07.;}{\levelnumbers\'01;}\fi-360\li3240}
+{\listlevel\levelnfc0\leveljc0\levelstartat1\levelfollow0{\leveltext \'02\'08.;}{\levelnumbers\'01;}\fi-360\li3600}
+{\*\soutlvl{\listlevel\levelnfc0\leveljc0\levelstartat1\levelfollow0{\leveltext \'02\'09.;}{\levelnumbers\'01;}\fi-360\li3960}}\listid4}
+{\list\listtemplateid5
+{\listlevel\levelnfc0\leveljc0\levelstartat4\levelfollow0{\leveltext \'02\'00.;}{\levelnumbers\'01;}\fi-360\li720}
+{\listlevel\levelnfc0\leveljc0\levelstartat1\levelfollow0{\leveltext \'02\'01.;}{\levelnumbers\'01;}\fi-360\li1080}
+{\listlevel\levelnfc0\leveljc0\levelstartat1\levelfollow0{\leveltext \'02\'02.;}{\levelnumbers\'01;}\fi-360\li1440}
+{\listlevel\levelnfc0\leveljc0\levelstartat1\levelfollow0{\leveltext \'02\'03.;}{\levelnumbers\'01;}\fi-360\li1800}
+{\listlevel\levelnfc0\leveljc0\levelstartat1\levelfollow0{\leveltext \'02\'04.;}{\levelnumbers\'01;}\fi-360\li2160}
+{\listlevel\levelnfc0\leveljc0\levelstartat1\levelfollow0{\leveltext \'02\'05.;}{\levelnumbers\'01;}\fi-360\li2520}
+{\listlevel\levelnfc0\leveljc0\levelstartat1\levelfollow0{\leveltext \'02\'06.;}{\levelnumbers\'01;}\fi-360\li2880}
+{\listlevel\levelnfc0\leveljc0\levelstartat1\levelfollow0{\leveltext \'02\'07.;}{\levelnumbers\'01;}\fi-360\li3240}
+{\listlevel\levelnfc0\leveljc0\levelstartat1\levelfollow0{\leveltext \'02\'08.;}{\levelnumbers\'01;}\fi-360\li3600}
+{\*\soutlvl{\listlevel\levelnfc0\leveljc0\levelstartat1\levelfollow0{\leveltext \'02\'09.;}{\levelnumbers\'01;}\fi-360\li3960}}\listid5}
+{\list\listtemplateid6
+{\listlevel\levelnfc0\leveljc0\levelstartat3\levelfollow0{\leveltext \'02\'00.;}{\levelnumbers\'01;}\fi-360\li720}
+{\listlevel\levelnfc0\leveljc0\levelstartat1\levelfollow0{\leveltext \'02\'01.;}{\levelnumbers\'01;}\fi-360\li1080}
+{\listlevel\levelnfc0\leveljc0\levelstartat1\levelfollow0{\leveltext \'02\'02.;}{\levelnumbers\'01;}\fi-360\li1440}
+{\listlevel\levelnfc0\leveljc0\levelstartat1\levelfollow0{\leveltext \'02\'03.;}{\levelnumbers\'01;}\fi-360\li1800}
+{\listlevel\levelnfc0\leveljc0\levelstartat1\levelfollow0{\leveltext \'02\'04.;}{\levelnumbers\'01;}\fi-360\li2160}
+{\listlevel\levelnfc0\leveljc0\levelstartat1\levelfollow0{\leveltext \'02\'05.;}{\levelnumbers\'01;}\fi-360\li2520}
+{\listlevel\levelnfc0\leveljc0\levelstartat1\levelfollow0{\leveltext \'02\'06.;}{\levelnumbers\'01;}\fi-360\li2880}
+{\listlevel\levelnfc0\leveljc0\levelstartat1\levelfollow0{\leveltext \'02\'07.;}{\levelnumbers\'01;}\fi-360\li3240}
+{\listlevel\levelnfc0\leveljc0\levelstartat1\levelfollow0{\leveltext \'02\'08.;}{\levelnumbers\'01;}\fi-360\li3600}
+{\*\soutlvl{\listlevel\levelnfc0\leveljc0\levelstartat1\levelfollow0{\leveltext \'02\'09.;}{\levelnumbers\'01;}\fi-360\li3960}}\listid6}
+{\list\listtemplateid7
+{\listlevel\levelnfc0\leveljc0\levelstartat1\levelfollow0{\leveltext \'02\'00.;}{\levelnumbers\'01;}\fi-360\li720}
+{\listlevel\levelnfc0\leveljc0\levelstartat1\levelfollow0{\leveltext \'02\'01.;}{\levelnumbers\'01;}\fi-360\li1080}
+{\listlevel\levelnfc0\leveljc0\levelstartat1\levelfollow0{\leveltext \'02\'02.;}{\levelnumbers\'01;}\fi-360\li1440}
+{\listlevel\levelnfc0\leveljc0\levelstartat1\levelfollow0{\leveltext \'02\'03.;}{\levelnumbers\'01;}\fi-360\li1800}
+{\listlevel\levelnfc0\leveljc0\levelstartat1\levelfollow0{\leveltext \'02\'04.;}{\levelnumbers\'01;}\fi-360\li2160}
+{\listlevel\levelnfc0\leveljc0\levelstartat1\levelfollow0{\leveltext \'02\'05.;}{\levelnumbers\'01;}\fi-360\li2520}
+{\listlevel\levelnfc0\leveljc0\levelstartat1\levelfollow0{\leveltext \'02\'06.;}{\levelnumbers\'01;}\fi-360\li2880}
+{\listlevel\levelnfc0\leveljc0\levelstartat1\levelfollow0{\leveltext \'02\'07.;}{\levelnumbers\'01;}\fi-360\li3240}
+{\listlevel\levelnfc0\leveljc0\levelstartat1\levelfollow0{\leveltext \'02\'08.;}{\levelnumbers\'01;}\fi-360\li3600}
+{\*\soutlvl{\listlevel\levelnfc0\leveljc0\levelstartat1\levelfollow0{\leveltext \'02\'09.;}{\levelnumbers\'01;}\fi-360\li3960}}\listid7}
+{\list\listtemplateid8
+{\listlevel\levelnfc0\leveljc0\levelstartat2\levelfollow0{\leveltext \'02\'00.;}{\levelnumbers\'01;}\fi-360\li720}
+{\listlevel\levelnfc0\leveljc0\levelstartat1\levelfollow0{\leveltext \'02\'01.;}{\levelnumbers\'01;}\fi-360\li1080}
+{\listlevel\levelnfc0\leveljc0\levelstartat1\levelfollow0{\leveltext \'02\'02.;}{\levelnumbers\'01;}\fi-360\li1440}
+{\listlevel\levelnfc0\leveljc0\levelstartat1\levelfollow0{\leveltext \'02\'03.;}{\levelnumbers\'01;}\fi-360\li1800}
+{\listlevel\levelnfc0\leveljc0\levelstartat1\levelfollow0{\leveltext \'02\'04.;}{\levelnumbers\'01;}\fi-360\li2160}
+{\listlevel\levelnfc0\leveljc0\levelstartat1\levelfollow0{\leveltext \'02\'05.;}{\levelnumbers\'01;}\fi-360\li2520}
+{\listlevel\levelnfc0\leveljc0\levelstartat1\levelfollow0{\leveltext \'02\'06.;}{\levelnumbers\'01;}\fi-360\li2880}
+{\listlevel\levelnfc0\leveljc0\levelstartat1\levelfollow0{\leveltext \'02\'07.;}{\levelnumbers\'01;}\fi-360\li3240}
+{\listlevel\levelnfc0\leveljc0\levelstartat1\levelfollow0{\leveltext \'02\'08.;}{\levelnumbers\'01;}\fi-360\li3600}
+{\*\soutlvl{\listlevel\levelnfc0\leveljc0\levelstartat1\levelfollow0{\leveltext \'02\'09.;}{\levelnumbers\'01;}\fi-360\li3960}}\listid8}
+{\list\listtemplateid9
+{\listlevel\levelnfc0\leveljc0\levelstartat1\levelfollow0{\leveltext \'02\'00.;}{\levelnumbers\'01;}\fi-360\li720}
+{\listlevel\levelnfc0\leveljc0\levelstartat1\levelfollow0{\leveltext \'02\'01.;}{\levelnumbers\'01;}\fi-360\li1080}
+{\listlevel\levelnfc0\leveljc0\levelstartat1\levelfollow0{\leveltext \'02\'02.;}{\levelnumbers\'01;}\fi-360\li1440}
+{\listlevel\levelnfc0\leveljc0\levelstartat1\levelfollow0{\leveltext \'02\'03.;}{\levelnumbers\'01;}\fi-360\li1800}
+{\listlevel\levelnfc0\leveljc0\levelstartat1\levelfollow0{\leveltext \'02\'04.;}{\levelnumbers\'01;}\fi-360\li2160}
+{\listlevel\levelnfc0\leveljc0\levelstartat1\levelfollow0{\leveltext \'02\'05.;}{\levelnumbers\'01;}\fi-360\li2520}
+{\listlevel\levelnfc0\leveljc0\levelstartat1\levelfollow0{\leveltext \'02\'06.;}{\levelnumbers\'01;}\fi-360\li2880}
+{\listlevel\levelnfc0\leveljc0\levelstartat1\levelfollow0{\leveltext \'02\'07.;}{\levelnumbers\'01;}\fi-360\li3240}
+{\listlevel\levelnfc0\leveljc0\levelstartat1\levelfollow0{\leveltext \'02\'08.;}{\levelnumbers\'01;}\fi-360\li3600}
+{\*\soutlvl{\listlevel\levelnfc0\leveljc0\levelstartat1\levelfollow0{\leveltext \'02\'09.;}{\levelnumbers\'01;}\fi-360\li3960}}\listid9}
+{\list\listtemplateid10
+{\listlevel\levelnfc0\leveljc0\levelstartat1\levelfollow0{\leveltext \'02\'00.;}{\levelnumbers\'01;}\fi-360\li720}
+{\listlevel\levelnfc0\leveljc0\levelstartat1\levelfollow0{\leveltext \'02\'01.;}{\levelnumbers\'01;}\fi-360\li1080}
+{\listlevel\levelnfc0\leveljc0\levelstartat1\levelfollow0{\leveltext \'02\'02.;}{\levelnumbers\'01;}\fi-360\li1440}
+{\listlevel\levelnfc0\leveljc0\levelstartat1\levelfollow0{\leveltext \'02\'03.;}{\levelnumbers\'01;}\fi-360\li1800}
+{\listlevel\levelnfc0\leveljc0\levelstartat1\levelfollow0{\leveltext \'02\'04.;}{\levelnumbers\'01;}\fi-360\li2160}
+{\listlevel\levelnfc0\leveljc0\levelstartat1\levelfollow0{\leveltext \'02\'05.;}{\levelnumbers\'01;}\fi-360\li2520}
+{\listlevel\levelnfc0\leveljc0\levelstartat1\levelfollow0{\leveltext \'02\'06.;}{\levelnumbers\'01;}\fi-360\li2880}
+{\listlevel\levelnfc0\leveljc0\levelstartat1\levelfollow0{\leveltext \'02\'07.;}{\levelnumbers\'01;}\fi-360\li3240}
+{\listlevel\levelnfc0\leveljc0\levelstartat1\levelfollow0{\leveltext \'02\'08.;}{\levelnumbers\'01;}\fi-360\li3600}
+{\*\soutlvl{\listlevel\levelnfc0\leveljc0\levelstartat1\levelfollow0{\leveltext \'02\'09.;}{\levelnumbers\'01;}\fi-360\li3960}}\listid10}
+}{\listoverridetable{\listoverride\listid1\listoverridecount0\ls0}{\listoverride\listid2\listoverridecount0\ls1}{\listoverride\listid3\listoverridecount0\ls2}{\listoverride\listid4\listoverridecount0\ls3}{\listoverride\listid5\listoverridecount0\ls4}{\listoverride\listid6\listoverridecount0\ls5}{\listoverride\listid7\listoverridecount0\ls6}{\listoverride\listid8\listoverridecount0\ls7}{\listoverride\listid9\listoverridecount0\ls8}{\listoverride\listid10\listoverridecount0\ls9}}
+
+{\info{\author Jason Lenhart}{\creatim\yr2006\mo7\dy6\hr12\min50}{\author Jason Lenhart}{\revtim\yr2006\mo7\dy7\hr19\min43}{\printim\yr1601\mo1\dy1\hr0\min0}{\comment StarWriter}{\vern6800}}\deftab709
+{\*\pgdsctbl
+{\pgdsc0\pgdscuse195\pgwsxn12240\pghsxn15840\marglsxn1134\margrsxn1134\margtsxn1134\margbsxn1134\pgdscnxt0 Standard;}}
+\paperh15840\paperw12240\margl1134\margr1134\margt1134\margb1134\sectd\sbknone\pgwsxn12240\pghsxn15840\marglsxn1134\margrsxn1134\margtsxn1134\margbsxn1134\ftnbj\ftnstart1\ftnrstcont\ftnnar\aenddoc\aftnrstcont\aftnstart1\aftnnrlc
+\pard\plain \ltrpar\s3\cf0\qc{\*\hyphen2\hyphlead2\hyphtrail2\hyphmax0}\aspalpha\sb240\sa120\keepn\rtlch\afs28\lang255\ltrch\dbch\af7\langfe255\hich\f2\fs28\lang1033\loch\f2\fs28\lang1033 {\rtlch \ltrch\loch\f2\fs28\lang1033\i0\b0 JBoss Enterprise Service Bus}
+\par \pard\plain \ltrpar\s1\cf1{\*\tlswg8236}\tx560{\*\tlswg8236}\tx1120{\*\tlswg8236}\tx1680{\*\tlswg8236}\tx2240{\*\tlswg8236}\tx2800{\*\tlswg8236}\tx3360{\*\tlswg8236}\tx3920{\*\tlswg8236}\tx4480{\*\tlswg8236}\tx5040{\*\tlswg8236}\tx5600{\*\tlswg8236}\tx6160{\*\tlswg8236}\tx6720{\*\hyphen2\hyphlead2\hyphtrail2\hyphmax0}\aspalpha\sa120\ql\rtlch\af5\afs24\lang255\ltrch\dbch\af5\langfe255\hich\f5\fs24\lang1033\loch\f5\fs24\lang1033 
+\par \pard\plain \ltrpar\s1\cf0{\*\hyphen2\hyphlead2\hyphtrail2\hyphmax0}\aspalpha\ql\rtlch\af8\afs24\lang255\ltrch\dbch\af6\langfe255\hich\f0\fs24\lang1033\loch\f0\fs24\lang1033 
+\par \pard\plain \ltrpar\s4\cf0{\*\hyphen2\hyphlead2\hyphtrail2\hyphmax0}\aspalpha\sb240\sa120\keepn\ql\rtlch\afs32\lang255\ab\ltrch\dbch\af7\langfe255\hich\f2\fs32\lang1033\b\loch\f2\fs32\lang1033\b {\rtlch \ltrch\loch\f2\fs32\lang1033\i0\b JBoss Enterprise Service Bus 4.0 Alpha 1}
+\par \pard\plain \ltrpar\s5\cf0{\*\hyphen2\hyphlead2\hyphtrail2\hyphmax0}\aspalpha\sb240\sa120\keepn\ql\rtlch\afs28\lang255\ai\ab\ltrch\dbch\af7\langfe255\hich\f2\fs28\lang1033\i\b\loch\f2\fs28\lang1033\i\b {\rtlch \ltrch\loch\f2\fs28\lang1033\i\b Getting Started Guide}
+\par \pard\plain \ltrpar\s1\cf1{\*\tlswg8236}\tx560{\*\tlswg8236}\tx1120{\*\tlswg8236}\tx1680{\*\tlswg8236}\tx2240{\*\tlswg8236}\tx2800{\*\tlswg8236}\tx3360{\*\tlswg8236}\tx3920{\*\tlswg8236}\tx4480{\*\tlswg8236}\tx5040{\*\tlswg8236}\tx5600{\*\tlswg8236}\tx6160{\*\tlswg8236}\tx6720{\*\hyphen2\hyphlead2\hyphtrail2\hyphmax0}\aspalpha\sa120\ql\rtlch\af5\afs24\lang255\ltrch\dbch\af5\langfe255\hich\f5\fs24\lang1033\loch\f5\fs24\lang1033 
+\par \pard\plain \ltrpar\s1\cf1{\*\tlswg8236}\tx560{\*\tlswg8236}\tx1120{\*\tlswg8236}\tx1680{\*\tlswg8236}\tx2240{\*\tlswg8236}\tx2800{\*\tlswg8236}\tx3360{\*\tlswg8236}\tx3920{\*\tlswg8236}\tx4480{\*\tlswg8236}\tx5040{\*\tlswg8236}\tx5600{\*\tlswg8236}\tx6160{\*\tlswg8236}\tx6720{\*\hyphen2\hyphlead2\hyphtrail2\hyphmax0}\aspalpha\sa120\ql\rtlch\af8\afs24\lang255\ab\ltrch\dbch\af6\langfe255\hich\f0\fs24\lang1033\b\loch\f0\fs24\lang1033\b {\rtlch \ltrch\loch\f0\fs24\lang1033\i0\b Daniel Brum}
+\par \pard\plain \ltrpar\s1\cf0{\*\tlswg8236}\tx560{\*\tlswg8236}\tx1120{\*\tlswg8236}\tx1680{\*\tlswg8236}\tx2240{\*\tlswg8236}\tx2800{\*\tlswg8236}\tx3360{\*\tlswg8236}\tx3920{\*\tlswg8236}\tx4480{\*\tlswg8236}\tx5040{\*\tlswg8236}\tx5600{\*\tlswg8236}\tx6160{\*\tlswg8236}\tx6720{\*\hyphen2\hyphlead2\hyphtrail2\hyphmax0}\aspalpha\sa120\ql\rtlch\af8\afs24\lang255\ltrch\dbch\af6\langfe255\hich\f5\fs24\lang1033\loch\f5\fs24\lang1033{\rtlch \ltrch\loch\f5\fs24\lang1033\i0\b0{\cf1 <}}{\rtlch \ltrch\loch\f5\fs24\lang1033\i0\b0{\field{\*\fldinst HYPERLINK "mailto:daniel.brum at jboss.com" }{\fldrslt \*\cs15\cf2\ul\ulc0\rtlch\ltrch\dbch\hich\f0\fs24\lang1033\loch\f0\fs24\lang1033{\ul\ulc3\cf3 daniel.brum at jboss.com}}}{\cf1 >}}
+\par \pard\plain \ltrpar\s1\cf1{\*\tlswg8236}\tx560{\*\tlswg8236}\tx1120{\*\tlswg8236}\tx1680{\*\tlswg8236}\tx2240{\*\tlswg8236}\tx2800{\*\tlswg8236}\tx3360{\*\tlswg8236}\tx3920{\*\tlswg8236}\tx4480{\*\tlswg8236}\tx5040{\*\tlswg8236}\tx5600{\*\tlswg8236}\tx6160{\*\tlswg8236}\tx6720{\*\hyphen2\hyphlead2\hyphtrail2\hyphmax0}\aspalpha\ql\rtlch\af5\afs24\lang255\ltrch\dbch\af5\langfe255\hich\f5\fs24\lang1033\loch\f5\fs24\lang1033 
+\par \pard\plain \ltrpar\s1\cf1{\*\tlswg8236}\tx560{\*\tlswg8236}\tx1120{\*\tlswg8236}\tx1680{\*\tlswg8236}\tx2240{\*\tlswg8236}\tx2800{\*\tlswg8236}\tx3360{\*\tlswg8236}\tx3920{\*\tlswg8236}\tx4480{\*\tlswg8236}\tx5040{\*\tlswg8236}\tx5600{\*\tlswg8236}\tx6160{\*\tlswg8236}\tx6720{\*\hyphen2\hyphlead2\hyphtrail2\hyphmax0}\aspalpha\sa120\ql\rtlch\af8\afs24\lang255\ab\ltrch\dbch\af6\langfe255\hich\f0\fs24\lang1033\b\loch\f0\fs24\lang1033\b {\rtlch \ltrch\loch\f0\fs24\lang1033\i0\b Jason Lenhart}
+\par \pard\plain \ltrpar\s1\cf0{\*\tlswg8236}\tx560{\*\tlswg8236}\tx1120{\*\tlswg8236}\tx1680{\*\tlswg8236}\tx2240{\*\tlswg8236}\tx2800{\*\tlswg8236}\tx3360{\*\tlswg8236}\tx3920{\*\tlswg8236}\tx4480{\*\tlswg8236}\tx5040{\*\tlswg8236}\tx5600{\*\tlswg8236}\tx6160{\*\tlswg8236}\tx6720{\*\hyphen2\hyphlead2\hyphtrail2\hyphmax0}\aspalpha\sa120\ql\rtlch\af8\afs24\lang255\ltrch\dbch\af6\langfe255\hich\f5\fs24\lang1033\loch\f5\fs24\lang1033{\rtlch \ltrch\loch\f5\fs24\lang1033\i0\b0{\cf1 <}}{\rtlch \ltrch\loch\f5\fs24\lang1033\i0\b0{\field{\*\fldinst HYPERLINK "mailto:jplenhart at yahoo.com" }{\fldrslt \*\cs15\cf2\ul\ulc0\rtlch\ltrch\dbch\hich\f0\fs24\lang1033\loch\f0\fs24\lang1033{\ul\ulc3\cf3 jplenhart at yahoo.com}}}{\cf1 >}}
+\par \pard\plain \ltrpar\s1\cf1{\*\tlswg8236}\tx560{\*\tlswg8236}\tx1120{\*\tlswg8236}\tx1680{\*\tlswg8236}\tx2240{\*\tlswg8236}\tx2800{\*\tlswg8236}\tx3360{\*\tlswg8236}\tx3920{\*\tlswg8236}\tx4480{\*\tlswg8236}\tx5040{\*\tlswg8236}\tx5600{\*\tlswg8236}\tx6160{\*\tlswg8236}\tx6720{\*\hyphen2\hyphlead2\hyphtrail2\hyphmax0}\aspalpha\ql\rtlch\af5\afs24\lang255\ltrch\dbch\af5\langfe255\hich\f5\fs24\lang1033\loch\f5\fs24\lang1033 
+\par \pard\plain \ltrpar\s5\cf0{\*\hyphen2\hyphlead2\hyphtrail2\hyphmax0}\aspalpha\sb240\sa120\keepn\ql\rtlch\afs28\lang255\ai\ab\ltrch\dbch\af7\langfe255\hich\f2\fs28\lang1033\i\b\loch\f2\fs28\lang1033\i\b {\rtlch \ltrch\loch\f2\fs28\lang1033\i\b Table of Contents}
+\par \pard\plain \ltrpar\s2\cf0{\*\hyphen2\hyphlead2\hyphtrail2\hyphmax0}\aspalpha\sa120\ql\rtlch\af8\afs24\lang255\ltrch\dbch\af6\langfe255\hich\f0\fs24\lang1033\loch\f0\fs24\lang1033 
+\par \pard\plain {\listtext\pard\plain \li720\ri0\lin720\rin0\fi-360\sa120 1.\tab}\ilvl0 \ltrpar\s2\cf0{\*\hyphen2\hyphlead2\hyphtrail2\hyphmax0}\ls9\aspalpha\li720\ri0\lin720\rin0\fi-360\sa120\ql\rtlch\af8\afs24\lang255\ltrch\dbch\af6\langfe255\hich\f0\fs24\lang1033\loch\f0\fs24\lang1033 {\rtlch \ltrch\loch\f0\fs24\lang1033\i0\b0 How to Build the Bus from Source}
+\par \pard\plain {\listtext\pard\plain \li720\ri0\lin720\rin0\fi-360\sa120 2.\tab}\ilvl0 \ltrpar\s2\cf0{\*\hyphen2\hyphlead2\hyphtrail2\hyphmax0}\ls9\aspalpha\li720\ri0\lin720\rin0\fi-360\sa120\ql\rtlch\af8\afs24\lang255\ltrch\dbch\af6\langfe255\hich\f0\fs24\lang1033\loch\f0\fs24\lang1033 {\rtlch \ltrch\loch\f0\fs24\lang1033\i0\b0 Deploying the Bus on the JBoss Application Server}
+\par \pard\plain {\listtext\pard\plain \li720\ri0\lin720\rin0\fi-360\sa120 3.\tab}\ilvl0 \ltrpar\s2\cf0{\*\hyphen2\hyphlead2\hyphtrail2\hyphmax0}\ls9\aspalpha\li720\ri0\lin720\rin0\fi-360\sa120\ql\rtlch\af8\afs24\lang255\ltrch\dbch\af6\langfe255\hich\f0\fs24\lang1033\loch\f0\fs24\lang1033 {\rtlch \ltrch\loch\f0\fs24\lang1033\i0\b0 Appendix}
+\par \pard\plain \ltrpar\s2\cf0{\*\hyphen2\hyphlead2\hyphtrail2\hyphmax0}\aspalpha\sa120\ql\rtlch\af8\afs24\lang255\ltrch\dbch\af6\langfe255\hich\f0\fs24\lang1033\loch\f0\fs24\lang1033 
+\par \pard\plain \ltrpar\s2\cf0{\*\hyphen2\hyphlead2\hyphtrail2\hyphmax0}\aspalpha\sa120\ql\rtlch\af8\afs24\lang255\ltrch\dbch\af6\langfe255\hich\f0\fs24\lang1033\loch\f0\fs24\lang1033 
+\par \pard\plain \ltrpar\s5\cf0{\*\hyphen2\hyphlead2\hyphtrail2\hyphmax0}\aspalpha\sb240\sa120\keepn\ql\rtlch\afs28\lang255\ai\ab\ltrch\dbch\af7\langfe255\hich\f2\fs28\lang1033\i\b\loch\f2\fs28\lang1033\i\b {\rtlch \ltrch\loch\f2\fs28\lang1033\i\b 1.  How to Build the Bus from Source}
+\par \pard\plain \ltrpar\s2\cf0{\*\hyphen2\hyphlead2\hyphtrail2\hyphmax0}\aspalpha\sa120\ql\rtlch\af8\afs24\lang255\ltrch\dbch\af6\langfe255\hich\f0\fs24\lang1033\loch\f0\fs24\lang1033 {\rtlch \ltrch\loch\f0\fs24\lang1033\i0\b0 Building the JBoss ESB is a snap and requires very little configuration effort on the part of you.  There will remain an ongoing effort on the part of the community to make this as as possible, so if you have any sugestions please stop by the JBoss ESB For
+um and be heard.  }
+\par \pard\plain \ltrpar\s2\cf0{\*\hyphen2\hyphlead2\hyphtrail2\hyphmax0}\aspalpha\sa120\ql\rtlch\af8\afs24\lang255\ltrch\dbch\af6\langfe255\hich\f0\fs24\lang1033\loch\f0\fs24\lang1033 
+\par \pard\plain \ltrpar\s2\cf0{\*\hyphen2\hyphlead2\hyphtrail2\hyphmax0}\aspalpha\sa120\ql\rtlch\af8\afs24\lang255\ltrch\dbch\af6\langfe255\hich\f0\fs24\lang1033\loch\f0\fs24\lang1033 {\rtlch \ltrch\loch\f0\fs24\lang1033\i0\b0 Let's get started:}
+\par \pard\plain \ltrpar\s2\cf0{\*\hyphen2\hyphlead2\hyphtrail2\hyphmax0}\aspalpha\sa120\ql\rtlch\af8\afs24\lang255\ltrch\dbch\af6\langfe255\hich\f0\fs24\lang1033\loch\f0\fs24\lang1033 
+\par \pard\plain \ltrpar\s2\cf0\ul\ulc0{\*\hyphen2\hyphlead2\hyphtrail2\hyphmax0}\aspalpha\sa120\ql\rtlch\af8\afs24\lang255\ltrch\dbch\af6\langfe255\hich\f0\fs24\lang1033\loch\f0\fs24\lang1033 {\rtlch \ltrch\loch\f0\fs24\lang1033\i0\b0 Before beginning, below are a few version notes pertaining to the environment that was used in verifying the following steps:}
+\par \pard\plain \ltrpar\s2\cf0{\*\hyphen2\hyphlead2\hyphtrail2\hyphmax0}\aspalpha\sa120\ql\rtlch\af8\afs24\lang255\ltrch\dbch\af6\langfe255\hich\f0\fs24\lang1033\loch\f0\fs24\lang1033 
+\par \pard\plain \ltrpar\s2\cf0{\*\hyphen2\hyphlead2\hyphtrail2\hyphmax0}\aspalpha\sa120\ql\rtlch\af8\afs24\lang255\ab\ltrch\dbch\af6\langfe255\hich\f0\fs24\lang1033\b\loch\f0\fs24\lang1033\b {\rtlch \ltrch\loch\f0\fs24\lang1033\i0\b Operating System: {\b0 OS X 10.4.7 (Intel)}}
+\par \pard\plain \ltrpar\s2\cf0{\*\hyphen2\hyphlead2\hyphtrail2\hyphmax0}\aspalpha\sa120\ql\rtlch\af8\afs24\lang255\ltrch\dbch\af6\langfe255\hich\f0\fs24\lang1033\loch\f0\fs24\lang1033 {\rtlch \ltrch\loch\f0\fs24\lang1033\i0\b Version of Java: {\b0 1.5.0_06}}
+\par \pard\plain \ltrpar\s2\cf0{\*\hyphen2\hyphlead2\hyphtrail2\hyphmax0}\aspalpha\sa120\ql\rtlch\af8\afs24\lang255\ltrch\dbch\af6\langfe255\hich\f0\fs24\lang1033\loch\f0\fs24\lang1033 {\rtlch \ltrch\loch\f0\fs24\lang1033\i0\b Version of Ant: {\b0 1.6.5}}
+\par \pard\plain \ltrpar\s2\cf0{\*\hyphen2\hyphlead2\hyphtrail2\hyphmax0}\aspalpha\sa120\ql\rtlch\af8\afs24\lang255\ltrch\dbch\af6\langfe255\hich\f0\fs24\lang1033\loch\f0\fs24\lang1033 {\rtlch \ltrch\loch\f0\fs24\lang1033\i0\b Version of XDoclet:  {\b0 1.2.3 (}Note: {\b0 The Ant build script expects the XDoclet distribution that contain the documentation and samples.  This particular distribution has all the necessary jar files in the lib directory as opposed to the library-only distributi
+on that has all the libraries in the root directory of the distribution).}}
+\par \pard\plain \ltrpar\s2\cf0{\*\hyphen2\hyphlead2\hyphtrail2\hyphmax0}\aspalpha\sa120\ql\rtlch\af8\afs24\lang255\ltrch\dbch\af6\langfe255\hich\f0\fs24\lang1033\loch\f0\fs24\lang1033 
+\par \pard\plain \ltrpar\s2\cf0\ul\ulc0{\*\hyphen2\hyphlead2\hyphtrail2\hyphmax0}\aspalpha\sa120\ql\rtlch\af8\afs24\lang255\ltrch\dbch\af6\langfe255\hich\f0\fs24\lang1033\loch\f0\fs24\lang1033 {\rtlch \ltrch\loch\f0\fs24\lang1033\i0\b0 Assumptions:}
+\par \pard\plain \ltrpar\s2\cf0{\*\hyphen2\hyphlead2\hyphtrail2\hyphmax0}\aspalpha\sa120\ql\rtlch\af8\afs24\lang255\ltrch\dbch\af6\langfe255\hich\f0\fs24\lang1033\loch\f0\fs24\lang1033 {\rtlch \ltrch\loch\f0\fs24\lang1033\i0\b0 You have downloaded the applicable version of the source from the subversion repository, located at:}
+\par \pard\plain \ltrpar\s2\cf0{\*\hyphen2\hyphlead2\hyphtrail2\hyphmax0}\aspalpha\sa120\ql\rtlch\af8\afs24\lang255\ltrch\dbch\af6\langfe255\hich\f0\fs24\lang1033\loch\f0\fs24\lang1033 
+\par \pard\plain \ltrpar\s2\cf0{\*\hyphen2\hyphlead2\hyphtrail2\hyphmax0}\aspalpha\sa120\ql\rtlch\af8\afs24\lang255\ltrch\dbch\af6\langfe255\hich\f0\fs24\lang1033\loch\f0\fs24\lang1033{\field{\*\fldinst HYPERLINK "http://anonsvn.labs.jboss.com/labs/jbossesb" }{\fldrslt \*\cs15\cf2\ul\ulc0\rtlch\ltrch\dbch\hich\loch{\rtlch \ltrch\loch\f0\fs24\lang1033\i0\b0 http://anonsvn.labs.jboss.com/labs/jbossesb}}}
+\par \pard\plain \ltrpar\s2\cf0{\*\hyphen2\hyphlead2\hyphtrail2\hyphmax0}\aspalpha\sa120\ql\rtlch\af8\afs24\lang255\ltrch\dbch\af6\langfe255\hich\f0\fs24\lang1033\loch\f0\fs24\lang1033 
+\par \pard\plain \ltrpar\s2\cf0\ul\ulc0{\*\hyphen2\hyphlead2\hyphtrail2\hyphmax0}\aspalpha\sa120\ql\rtlch\af8\afs24\lang255\ltrch\dbch\af6\langfe255\hich\f0\fs24\lang1033\loch\f0\fs24\lang1033 {\rtlch \ltrch\loch\f0\fs24\lang1033\i0\b0 Steps:}
+\par \pard\plain \ltrpar\s2\cf0{\*\hyphen2\hyphlead2\hyphtrail2\hyphmax0}\aspalpha\sa120\ql\rtlch\af8\afs24\lang255\ltrch\dbch\af6\langfe255\hich\f0\fs24\lang1033\loch\f0\fs24\lang1033 
+\par \pard\plain {\listtext\pard\plain \li720\ri0\lin720\rin0\fi-360\sa120 1.\tab}\ilvl0 \ltrpar\s2\cf0{\*\hyphen2\hyphlead2\hyphtrail2\hyphmax0}\ls8\aspalpha\li720\ri0\lin720\rin0\fi-360\sa120\ql\rtlch\af8\afs24\lang255\ltrch\dbch\af6\langfe255\hich\f0\fs24\lang1033\loch\f0\fs24\lang1033 {\rtlch \ltrch\loch\f0\fs24\lang1033\i0\b0 Setup environment variables such that Ant will properly find dependencies within your development environment.  Environment variables are as follows:}
+\par \pard\plain {\listtext\pard\plain \li720\ri0\lin720\rin0\fi-360\sa120 \tab}\ilvl0 \ltrpar\s2\cf0{\*\hyphen2\hyphlead2\hyphtrail2\hyphmax0}\aspalpha\sa120\ql\rtlch\af8\afs24\lang255\ltrch\dbch\af6\langfe255\hich\f0\fs24\lang1033\loch\f0\fs24\lang1033 
+\par \pard\plain \ltrpar\s2\cf0{\*\hyphen2\hyphlead2\hyphtrail2\hyphmax0}\aspalpha\li705\ri0\lin705\rin0\fi0\sa120\ql\rtlch\af8\afs24\lang255\ltrch\dbch\af6\langfe255\hich\f0\fs24\lang1033\loch\f0\fs24\lang1033{\rtlch \ltrch\loch\f0\fs24\lang1033\i0\b{\b JAVA_HOME \uc3 \u8211\'e2\'80\'93\uc1  }}{\rtlch \ltrch\loch\f0\fs24\lang1033\i0\b0 the home directory of your Java Installation.  }
+\par \pard\plain \ltrpar\s2\cf0{\*\hyphen2\hyphlead2\hyphtrail2\hyphmax0}\aspalpha\li720\ri0\lin720\rin0\fi0\sa120\ql\rtlch\af8\afs24\lang255\ltrch\dbch\af6\langfe255\hich\f0\fs24\lang1033\loch\f0\fs24\lang1033{\rtlch \ltrch\loch\f0\fs24\lang1033\i0\b{\b Note:}}{\rtlch \ltrch\loch\f0\fs24\lang1033\i0\b0   Within OS X, your JAVA_HOME would point to a directory like this:}
+\par \pard\plain \ltrpar\s2\cf0{\*\hyphen2\hyphlead2\hyphtrail2\hyphmax0}\aspalpha\sa120\ql\rtlch\af8\afs24\lang255\ltrch\dbch\af6\langfe255\hich\f0\fs24\lang1033\loch\f0\fs24\lang1033 {\rtlch \ltrch\loch\f0\fs24\lang1033\i0\b0 \tab }
+\par \pard\plain \ltrpar\s2\cf0{\*\hyphen2\hyphlead2\hyphtrail2\hyphmax0}\aspalpha\sa120\ql\rtlch\af8\afs24\lang255\ltrch\dbch\af6\langfe255\hich\f0\fs24\lang1033\loch\f0\fs24\lang1033 {\rtlch \ltrch\loch\f0\fs24\lang1033\i0\b0 \tab \tab /System/Library/Frameworks/JavaVM.framework/Home}
+\par \pard\plain \ltrpar\s2\cf0{\*\hyphen2\hyphlead2\hyphtrail2\hyphmax0}\aspalpha\sa120\ql\rtlch\af8\afs24\lang255\ltrch\dbch\af6\langfe255\hich\f0\fs24\lang1033\loch\f0\fs24\lang1033 
+\par \pard\plain \ltrpar\s2\cf0{\*\hyphen2\hyphlead2\hyphtrail2\hyphmax0}\aspalpha\li720\ri0\lin720\rin0\fi0\sa120\ql\rtlch\af8\afs24\lang255\ltrch\dbch\af6\langfe255\hich\f0\fs24\lang1033\loch\f0\fs24\lang1033{\rtlch \ltrch\loch\f0\fs24\lang1033\i0\b\ulnone\ulc0{\b ANT_HOME \uc3 \u8211\'e2\'80\'93\uc1  }}{\rtlch \ltrch\loch\f0\fs24\lang1033\i0\b0\ulnone\ulc0 set this environment variable to the home directory of your Ant installation.  This may not be necessary if you are doing your builds from an IDE.  However, if you are doing your builds from the command line you may want to place the 'bin' of th
+is installation to the 'Path' of your environment.}
+\par \pard\plain \ltrpar\s2\cf0{\*\hyphen2\hyphlead2\hyphtrail2\hyphmax0}\aspalpha\sa120\ql\rtlch\af8\afs24\lang255\ltrch\dbch\af6\langfe255\hich\f0\fs24\lang1033\loch\f0\fs24\lang1033 
+\par \pard\plain \ltrpar\s2\cf0{\*\hyphen2\hyphlead2\hyphtrail2\hyphmax0}\aspalpha\li690\ri0\lin690\rin0\fi0\sa120\ql\rtlch\af8\afs24\lang255\ltrch\dbch\af6\langfe255\hich\f0\fs24\lang1033\loch\f0\fs24\lang1033{\rtlch \ltrch\loch\f0\fs24\lang1033\i0\b{\b XDOCLET_HOME \uc3 \u8211\'e2\'80\'93\uc1  }}{\rtlch \ltrch\loch\f0\fs24\lang1033\i0\b0{\b0 set this environment variable to the home directory of your XDoclet installation.}}
+\par \pard\plain \ltrpar\s2\cf0{\*\hyphen2\hyphlead2\hyphtrail2\hyphmax0}\aspalpha\sa120\ql\rtlch\af8\afs24\lang255\ltrch\dbch\af6\langfe255\hich\f0\fs24\lang1033\loch\f0\fs24\lang1033 
+\par \pard\plain {\listtext\pard\plain \li720\ri0\lin720\rin0\fi-360\sa120 2.\tab}\ilvl0 \ltrpar\s2\cf0{\*\hyphen2\hyphlead2\hyphtrail2\hyphmax0}\ls7\aspalpha\li720\ri0\lin720\rin0\fi-360\sa120\ql\rtlch\af8\afs24\lang255\ltrch\dbch\af6\langfe255\hich\f0\fs24\lang1033\loch\f0\fs24\lang1033 {\rtlch \ltrch\loch\f0\fs24\lang1033\i0\b0 Under the tagged version (e.g. 4_0_Alpha_1) directory, run the Ant 'all' target by using the following command:}
+\par \pard\plain \ltrpar\s2\cf0{\*\hyphen2\hyphlead2\hyphtrail2\hyphmax0}\aspalpha\sa120\ql\rtlch\af8\afs24\lang255\ltrch\dbch\af6\langfe255\hich\f0\fs24\lang1033\loch\f0\fs24\lang1033 
+\par \pard\plain \ltrpar\s2\cf0{\*\hyphen2\hyphlead2\hyphtrail2\hyphmax0}\aspalpha\li675\ri0\lin675\rin0\fi0\sa120\ql\rtlch\af8\afs24\lang255\ltrch\dbch\af6\langfe255\hich\f0\fs24\lang1033\loch\f0\fs24\lang1033 {\rtlch \ltrch\loch\f0\fs24\lang1033\i0\b0 > {\f3 ant all}}
+\par \pard\plain \ltrpar\s2\cf0{\*\hyphen2\hyphlead2\hyphtrail2\hyphmax0}\aspalpha\li720\ri0\lin720\rin0\fi0\sa120\ql\rtlch\af8\afs24\lang255\ltrch\dbch\af6\langfe255\hich\f0\fs24\lang1033\loch\f0\fs24\lang1033{\rtlch \ltrch\loch\f0\fs24\lang1033\i0\b{\b Note: }}{\rtlch \ltrch\loch\f0\fs24\lang1033\i0\b0{\b0 For windows users, there is an ant.bat file that will utilize the Ant installation you specified within your previously defined ANT_HOME environment variable.  For OS X (Unix) users, you can either type the full path to the executable file within the
+ <ANT_HOME>\\bin directory or you can place <ANT_HOME>\\bin within the PATH of your environment.}}
+\par \pard\plain \ltrpar\s2\cf0{\*\hyphen2\hyphlead2\hyphtrail2\hyphmax0}\aspalpha\sa120\ql\rtlch\af8\afs24\lang255\ltrch\dbch\af6\langfe255\hich\f0\fs24\lang1033\loch\f0\fs24\lang1033 
+\par \pard\plain \ltrpar\s2\cf0{\*\hyphen2\hyphlead2\hyphtrail2\hyphmax0}\aspalpha\sa120\ql\rtlch\af8\afs24\lang255\ltrch\dbch\af6\langfe255\hich\f0\fs24\lang1033\loch\f0\fs24\lang1033 {\rtlch \ltrch\loch\f0\fs24\lang1033\i0\b0 This completes the instructions to build the JBoss ESB from the source code.  Executing the 'all' task within the Ant script (build.xml) will compile and ultimately create an EAR file.  This EAR file is located under the <JBOSS_ESB_HOME>/ESBCore/dist direc
+tory with a name of JbossEsbAppl.ear. }
+\par \pard\plain \ltrpar\s2\cf0{\*\hyphen2\hyphlead2\hyphtrail2\hyphmax0}\aspalpha\sa120\ql\rtlch\af8\afs24\lang255\ltrch\dbch\af6\langfe255\hich\f0\fs24\lang1033\loch\f0\fs24\lang1033 
+\par \pard\plain \ltrpar\s2\cf0{\*\hyphen2\hyphlead2\hyphtrail2\hyphmax0}\aspalpha\sa120\ql\rtlch\af8\afs24\lang255\ltrch\dbch\af6\langfe255\hich\f0\fs24\lang1033\loch\f0\fs24\lang1033 {\rtlch \ltrch\loch\f0\fs24\lang1033\i0\b0 Where <JBOSS_ESB_HOME> is the root directory of the tagged version you are working with out of the subversion repository.}
+\par \pard\plain \ltrpar\s2\cf0{\*\hyphen2\hyphlead2\hyphtrail2\hyphmax0}\aspalpha\sa120\ql\rtlch\af8\afs24\lang255\ltrch\dbch\af6\langfe255\hich\f0\fs24\lang1033\loch\f0\fs24\lang1033 
+\par \pard\plain \ltrpar\s5\cf0{\*\hyphen2\hyphlead2\hyphtrail2\hyphmax0}\aspalpha\sb240\sa120\keepn\ql\rtlch\afs28\lang255\ai\ab\ltrch\dbch\af7\langfe255\hich\f2\fs28\lang1033\i\b\loch\f2\fs28\lang1033\i\b {\rtlch \ltrch\loch\f2\fs28\lang1033\i\b 2. Deploying the Bus on the JBoss Application Server}
+\par \pard\plain \ltrpar\s2\cf0{\*\hyphen2\hyphlead2\hyphtrail2\hyphmax0}\aspalpha\sa120\ql\rtlch\af8\afs24\lang255\ltrch\dbch\af6\langfe255\hich\f0\fs24\lang1033\loch\f0\fs24\lang1033 
+\par \pard\plain \ltrpar\s2\cf0{\*\hyphen2\hyphlead2\hyphtrail2\hyphmax0}\aspalpha\sa120\ql\rtlch\af8\afs24\lang255\ltrch\dbch\af6\langfe255\hich\f0\fs24\lang1033\loch\f0\fs24\lang1033 {\rtlch \ltrch\loch\f0\fs24\lang1033\i0\b0 Deploying the previously built EAR on the JBoss Application Server requires a small amount of configuration and an associated installation of a database.  The steps below outline the exact steps required to successfully deploy the built EAR file.}
+\par \pard\plain \ltrpar\s2\cf0{\*\hyphen2\hyphlead2\hyphtrail2\hyphmax0}\aspalpha\sa120\ql\rtlch\af8\afs24\lang255\ltrch\dbch\af6\langfe255\hich\f0\fs24\lang1033\loch\f0\fs24\lang1033 
+\par \pard\plain \ltrpar\s2\cf0\ul\ulc0{\*\hyphen2\hyphlead2\hyphtrail2\hyphmax0}\aspalpha\sa120\ql\rtlch\af8\afs24\lang255\ltrch\dbch\af6\langfe255\hich\f0\fs24\lang1033\loch\f0\fs24\lang1033 {\rtlch \ltrch\loch\f0\fs24\lang1033\i0\b0 Before beginning, below are a version notes pertaining to the environment that was used in verifying the following steps:}
+\par \pard\plain \ltrpar\s2\cf0{\*\hyphen2\hyphlead2\hyphtrail2\hyphmax0}\aspalpha\sa120\ql\rtlch\af8\afs24\lang255\ltrch\dbch\af6\langfe255\hich\f0\fs24\lang1033\loch\f0\fs24\lang1033 
+\par \pard\plain \ltrpar\s2\cf0{\*\hyphen2\hyphlead2\hyphtrail2\hyphmax0}\aspalpha\sa120\ql\rtlch\af8\afs24\lang255\ab\ltrch\dbch\af6\langfe255\hich\f0\fs24\lang1033\b\loch\f0\fs24\lang1033\b {\rtlch \ltrch\loch\f0\fs24\lang1033\i0\b Version of the JBoss Application Server \uc3 \u8211\'e2\'80\'93\uc1  {\b0 4.0.4}}
+\par \pard\plain \ltrpar\s2\cf0{\*\hyphen2\hyphlead2\hyphtrail2\hyphmax0}\aspalpha\sa120\ql\rtlch\af8\afs24\lang255\ltrch\dbch\af6\langfe255\hich\f0\fs24\lang1033\loch\f0\fs24\lang1033 {\rtlch \ltrch\loch\f0\fs24\lang1033\i0\b PostgreSQL Database Version \uc3 \u8211\'e2\'80\'93\uc1  {\b0 8.1.3}}
+\par \pard\plain \ltrpar\s2\cf0{\*\hyphen2\hyphlead2\hyphtrail2\hyphmax0}\aspalpha\sa120\ql\rtlch\af8\afs24\lang255\ltrch\dbch\af6\langfe255\hich\f0\fs24\lang1033\loch\f0\fs24\lang1033 {\rtlch \ltrch\loch\f0\fs24\lang1033\i0\b PostgreSQL Database Driver Version \uc3 \u8211\'e2\'80\'93\uc1  {\b0 JDBC 2 EE 8.1 Build 407}}
+\par \pard\plain \ltrpar\s2\cf0{\*\hyphen2\hyphlead2\hyphtrail2\hyphmax0}\aspalpha\sa120\ql\rtlch\af8\afs24\lang255\ltrch\dbch\af6\langfe255\hich\f0\fs24\lang1033\loch\f0\fs24\lang1033 
+\par \pard\plain \ltrpar\s2\cf0\ul\ulc0{\*\hyphen2\hyphlead2\hyphtrail2\hyphmax0}\aspalpha\sa120\ql\rtlch\af8\afs24\lang255\ltrch\dbch\af6\langfe255\hich\f0\fs24\lang1033\loch\f0\fs24\lang1033 {\rtlch \ltrch\loch\f0\fs24\lang1033\i0\b0 Assumptions:}
+\par \pard\plain \ltrpar\s2\cf0{\*\hyphen2\hyphlead2\hyphtrail2\hyphmax0}\aspalpha\sa120\ql\rtlch\af8\afs24\lang255\ltrch\dbch\af6\langfe255\hich\f0\fs24\lang1033\loch\f0\fs24\lang1033 {\rtlch \ltrch\loch\f0\fs24\lang1033\i0\b0 You have successfully built the EAR file or have a previously built JBoss ESB EAR file.}
+\par \pard\plain \ltrpar\s2\cf0{\*\hyphen2\hyphlead2\hyphtrail2\hyphmax0}\aspalpha\sa120\ql\rtlch\af8\afs24\lang255\ltrch\dbch\af6\langfe255\hich\f0\fs24\lang1033\loch\f0\fs24\lang1033 
+\par \pard\plain \ltrpar\s2\cf0{\*\hyphen2\hyphlead2\hyphtrail2\hyphmax0}\aspalpha\sa120\ql\rtlch\af8\afs24\lang255\ltrch\dbch\af6\langfe255\hich\f0\fs24\lang1033\loch\f0\fs24\lang1033 {\rtlch \ltrch\loch\f0\fs24\lang1033\i0\b0 You have installed the JBoss Application Server with the 'all' configuration.  The default installation of JBoss only creates the 'default' server configuration and currently the Ant build scripts require the 'all' server configuration.}
+\par \pard\plain \ltrpar\s2\cf0{\*\hyphen2\hyphlead2\hyphtrail2\hyphmax0}\aspalpha\sa120\ql\rtlch\af8\afs24\lang255\ltrch\dbch\af6\langfe255\hich\f0\fs24\lang1033\loch\f0\fs24\lang1033 
+\par \pard\plain \ltrpar\s2\cf0\ul\ulc0{\*\hyphen2\hyphlead2\hyphtrail2\hyphmax0}\aspalpha\sa120\ql\rtlch\af8\afs24\lang255\ltrch\dbch\af6\langfe255\hich\f0\fs24\lang1033\loch\f0\fs24\lang1033 {\rtlch \ltrch\loch\f0\fs24\lang1033\i0\b0 Steps:}
+\par \pard\plain \ltrpar\s2\cf0{\*\hyphen2\hyphlead2\hyphtrail2\hyphmax0}\aspalpha\sa120\ql\rtlch\af8\afs24\lang255\ltrch\dbch\af6\langfe255\hich\f0\fs24\lang1033\loch\f0\fs24\lang1033 
+\par \pard\plain {\listtext\pard\plain \li720\ri0\lin720\rin0\fi-360\sa120 1.\tab}\ilvl0 \ltrpar\s2\cf0{\*\hyphen2\hyphlead2\hyphtrail2\hyphmax0}\ls6\aspalpha\li720\ri0\lin720\rin0\fi-360\sa120\ql\rtlch\af8\afs24\lang255\ltrch\dbch\af6\langfe255\hich\f0\fs24\lang1033\loch\f0\fs24\lang1033 {\rtlch \ltrch\loch\f0\fs24\lang1033\i0\b0 Set the following environment variable:}
+\par \pard\plain {\listtext\pard\plain \li720\ri0\lin720\rin0\fi-360\sa120\b\b\b \tab}\ilvl0 \ltrpar\s2\cf0{\*\hyphen2\hyphlead2\hyphtrail2\hyphmax0}\aspalpha\sa120\ql\rtlch\af8\afs24\lang255\ab\ltrch\dbch\af6\langfe255\hich\f0\fs24\lang1033\b\loch\f0\fs24\lang1033\b {\rtlch \ltrch\loch\f0\fs24\lang1033\i0\b JBOSS_HOME \uc3 \u8211\'e2\'80\'93\uc1  {\b0 this variable represents the home directory of your JBoss Application Server Installation.}}
+\par \pard\plain {\listtext\pard\plain \li720\ri0\lin720\rin0\fi-360\sa120 2.\tab}\ilvl0 \ltrpar\s2\cf0{\*\hyphen2\hyphlead2\hyphtrail2\hyphmax0}\ls6\aspalpha\li720\ri0\lin720\rin0\fi-360\sa120\ql\rtlch\af8\afs24\lang255\ltrch\dbch\af6\langfe255\hich\f0\fs24\lang1033\loch\f0\fs24\lang1033 {\rtlch \ltrch\loch\f0\fs24\lang1033\i0\b0 Install and create the 'rosetta' database by executing the JBoss ESB database script.}
+\par \pard\plain \ltrpar\s2\cf0{\*\hyphen2\hyphlead2\hyphtrail2\hyphmax0}\aspalpha\sa120\ql\rtlch\af8\afs24\lang255\ltrch\dbch\af6\langfe255\hich\f0\fs24\lang1033\loch\f0\fs24\lang1033 {\rtlch \ltrch\loch\f0\fs24\lang1033\i0\b0 \tab }
+\par \pard\plain \ltrpar\s2\cf0{\*\hyphen2\hyphlead2\hyphtrail2\hyphmax0}\aspalpha\li705\ri0\lin705\rin0\fi0\sa120\ql\rtlch\af8\afs24\lang255\ltrch\dbch\af6\langfe255\hich\f0\fs24\lang1033\loch\f0\fs24\lang1033 {\rtlch \ltrch\loch\f0\fs24\lang1033\i0\b0 Please refer to the PostgreSQL installation instructions for proper installation of the database.  Please note that a quick guide to installing PostgreSQL and creating the 'rosetta' database is located within the Appendix of this document. }
+\par \pard\plain \ltrpar\s2\cf0{\*\hyphen2\hyphlead2\hyphtrail2\hyphmax0}\aspalpha\sa120\ql\rtlch\af8\afs24\lang255\ltrch\dbch\af6\langfe255\hich\f0\fs24\lang1033\loch\f0\fs24\lang1033 
+\par \pard\plain {\listtext\pard\plain \li720\ri0\lin720\rin0\fi-360\sa120 3.\tab}\ilvl0 \ltrpar\s2\cf0{\*\hyphen2\hyphlead2\hyphtrail2\hyphmax0}\ls5\aspalpha\li720\ri0\lin720\rin0\fi-360\sa120\ql\rtlch\af8\afs24\lang255\ltrch\dbch\af6\langfe255\hich\f0\fs24\lang1033\loch\f0\fs24\lang1033 {\rtlch \ltrch\loch\f0\fs24\lang1033\i0\b0 From the 'all' configuration of your JBoss installation denoted with the previously set JBOSS_HOME environment variable:}
+\par \pard\plain \ltrpar\s2\cf0{\*\hyphen2\hyphlead2\hyphtrail2\hyphmax0}\aspalpha\li720\ri0\lin720\rin0\fi0\sa120\ql\rtlch\af8\afs24\lang255\ltrch\dbch\af6\langfe255\hich\f0\fs24\lang1033\loch\f0\fs24\lang1033 {\rtlch \ltrch\loch\f0\fs24\lang1033\i0\b0 Copy the <JBOSS_ESB_HOME>/ESBCore/dist/JbossEsbAppl.ear to your <JBOSS_HOME>/server/all/deploy directory}
+\par \pard\plain \ltrpar\s2\cf0{\*\hyphen2\hyphlead2\hyphtrail2\hyphmax0}\aspalpha\sa120\ql\rtlch\af8\afs24\lang255\ltrch\dbch\af6\langfe255\hich\f0\fs24\lang1033\loch\f0\fs24\lang1033 
+\par \pard\plain \ltrpar\s2\cf0{\*\hyphen2\hyphlead2\hyphtrail2\hyphmax0}\aspalpha\li720\ri0\lin720\rin0\fi0\sa120\ql\rtlch\af8\afs24\lang255\ltrch\dbch\af6\langfe255\hich\f0\fs24\lang1033\loch\f0\fs24\lang1033 {\rtlch \ltrch\loch\f0\fs24\lang1033\i0\b0 Where <JBOSS_ESB_HOME> represents the tagged version of the JBoss ESB that you are working with out of the svn repository.}
+\par \pard\plain \ltrpar\s2\cf0{\*\hyphen2\hyphlead2\hyphtrail2\hyphmax0}\aspalpha\sa120\ql\rtlch\af8\afs24\lang255\ltrch\dbch\af6\langfe255\hich\f0\fs24\lang1033\loch\f0\fs24\lang1033 
+\par \pard\plain {\listtext\pard\plain \li720\ri0\lin720\rin0\fi-360\sa120 4.\tab}\ilvl0 \ltrpar\s2\cf0{\*\hyphen2\hyphlead2\hyphtrail2\hyphmax0}\ls4\aspalpha\li720\ri0\lin720\rin0\fi-360\sa120\ql\rtlch\af8\afs24\lang255\ltrch\dbch\af6\langfe255\hich\f0\fs24\lang1033\loch\f0\fs24\lang1033 {\rtlch \ltrch\loch\f0\fs24\lang1033\i0\b0 Edit the properties-services.xml file in your <JBOSS_HOME>/server/all/deploy directory and add the following attribute entry:}
+\par \pard\plain \ltrpar\s2\cf0{\*\hyphen2\hyphlead2\hyphtrail2\hyphmax0}\aspalpha\li1470\ri0\lin1470\rin0\fi0\sa120\ql\rtlch\af8\afs24\lang255\ltrch\dbch\af6\langfe255\hich\f0\fs24\lang1033\loch\f0\fs24\lang1033{\rtlch \ltrch\loch\f3\fs24\lang1033\i\b0\i\f3 <attribute name=\uc3 \u8221\'e2\'80\'9d\uc1 URLList\uc3 \u8221\'e2\'80\'9d\uc1 >}
+\par \pard\plain \ltrpar\s2\cf0{\*\hyphen2\hyphlead2\hyphtrail2\hyphmax0}\aspalpha\li2115\ri0\lin2115\rin0\fi0\sa120\ql\rtlch\af8\afs24\lang255\ai\ltrch\dbch\af6\langfe255\hich\f3\fs24\lang1033\i\loch\f3\fs24\lang1033\i {\rtlch \ltrch\loch\f3\fs24\lang1033\i\b0 ./con/jbossEsb.properties}
+\par \pard\plain \ltrpar\s2\cf0{\*\hyphen2\hyphlead2\hyphtrail2\hyphmax0}\aspalpha\li1485\ri0\lin1485\rin0\fi0\sa120\ql\rtlch\af8\afs24\lang255\ai\ltrch\dbch\af6\langfe255\hich\f3\fs24\lang1033\i\loch\f3\fs24\lang1033\i {\rtlch \ltrch\loch\f3\fs24\lang1033\i\b0 </attribute>}
+\par \pard\plain \ltrpar\s2\cf0{\*\hyphen2\hyphlead2\hyphtrail2\hyphmax0}\aspalpha\sa120\ql\rtlch\af8\afs24\lang255\ltrch\dbch\af6\langfe255\hich\f0\fs24\lang1033\loch\f0\fs24\lang1033 
+\par \pard\plain {\listtext\pard\plain \li720\ri0\lin720\rin0\fi-360\sa120 5.\tab}\ilvl0 \ltrpar\s2\cf0{\*\hyphen2\hyphlead2\hyphtrail2\hyphmax0}\ls3\aspalpha\li720\ri0\lin720\rin0\fi-360\sa120\ql\rtlch\af8\afs24\lang255\ltrch\dbch\af6\langfe255\hich\f0\fs24\lang1033\loch\f0\fs24\lang1033 {\rtlch \ltrch\loch\f0\fs24\lang1033\i0\b0 Copy the <JBOSS_ESB_HOME>/doc/install/deploy/JBossESB-DS.xml and alter the database from JBossESB to rosetta.  For example:}
+\par \pard\plain \ltrpar\s2\cf0{\*\hyphen2\hyphlead2\hyphtrail2\hyphmax0}\aspalpha\sa120\ql\rtlch\af8\afs24\lang255\ltrch\dbch\af6\langfe255\hich\f0\fs24\lang1033\loch\f0\fs24\lang1033 
+\par \pard\plain \ltrpar\s2\cf0{\*\hyphen2\hyphlead2\hyphtrail2\hyphmax0}\aspalpha\li720\ri0\lin720\rin0\fi0\sa120\ql\rtlch\af8\afs24\lang255\ltrch\dbch\af6\langfe255\hich\f0\fs24\lang1033\loch\f0\fs24\lang1033 {\rtlch \ltrch\loch\f0\fs24\lang1033\i0\b0 From:}
+\par \pard\plain \ltrpar\s2\cf0{\*\hyphen2\hyphlead2\hyphtrail2\hyphmax0}\aspalpha\li735\ri0\lin735\rin0\fi0\sa120\ql\rtlch\af8\afs24\lang255\ltrch\dbch\af6\langfe255\hich\f0\fs24\lang1033\loch\f0\fs24\lang1033{\rtlch \ltrch\loch\f3\fs20\lang1033\i0\b0\fs20\f3 <connection-url>jdbc:postgresql://localhost:5432/JBossESB</connection-url>}
+\par \pard\plain \ltrpar\s2\cf0{\*\hyphen2\hyphlead2\hyphtrail2\hyphmax0}\aspalpha\li720\ri0\lin720\rin0\fi0\sa120\ql\rtlch\af8\afs24\lang255\ltrch\dbch\af6\langfe255\hich\f0\fs24\lang1033\loch\f0\fs24\lang1033 {\rtlch \ltrch\loch\f0\fs24\lang1033\i0\b0 To:}
+\par \pard\plain \ltrpar\s2\cf0{\*\hyphen2\hyphlead2\hyphtrail2\hyphmax0}\aspalpha\sa120\ql\rtlch\af8\afs24\lang255\ltrch\dbch\af6\langfe255\hich\f0\fs24\lang1033\loch\f0\fs24\lang1033{\rtlch \ltrch\loch\f3\fs20\lang1033\i0\b0\fs20\f3 <connection-url>jdbc:postgresql://localhost:5432/rosetta</connection-url>}
+\par \pard\plain \ltrpar\s2\cf0{\*\hyphen2\hyphlead2\hyphtrail2\hyphmax0}\aspalpha\sa120\ql\rtlch\af8\afs20\lang255\ltrch\dbch\af6\langfe255\hich\f3\fs20\lang1033\loch\f3\fs20\lang1033 
+\par \pard\plain \ltrpar\s2\cf0{\*\hyphen2\hyphlead2\hyphtrail2\hyphmax0}\aspalpha\li720\ri0\lin720\rin0\fi0\sa120\ql\rtlch\af8\afs24\lang255\ltrch\dbch\af6\langfe255\hich\f0\fs24\lang1033\loch\f0\fs24\lang1033 {\rtlch \ltrch\loch\f0\fs24\lang1033\i0\b0 Copy this file to the following directory: }
+\par \pard\plain \ltrpar\s2\cf0{\*\hyphen2\hyphlead2\hyphtrail2\hyphmax0}\aspalpha\li750\ri0\lin750\rin0\fi0\sa120\ql\rtlch\af8\afs24\lang255\ltrch\dbch\af6\langfe255\hich\f0\fs24\lang1033\loch\f0\fs24\lang1033 {\rtlch \ltrch\loch\f0\fs24\lang1033\i0\b0 <JBOSS_HOME>/server/all/deploy}
+\par \pard\plain {\listtext\pard\plain \li720\ri0\lin720\rin0\fi-360\sa120 6.\tab}\ilvl0 \ltrpar\s2\cf0{\*\hyphen2\hyphlead2\hyphtrail2\hyphmax0}\ls2\aspalpha\li720\ri0\lin720\rin0\fi-360\sa120\ql\rtlch\af8\afs24\lang255\ltrch\dbch\af6\langfe255\hich\f0\fs24\lang1033\loch\f0\fs24\lang1033 {\rtlch \ltrch\loch\f0\fs24\lang1033\i0\b0 Copy the PostgreSQL JDBC driver into your <JBOSS_HOME>/server/all/lib directory.}
+\par \pard\plain {\listtext\pard\plain \li720\ri0\lin720\rin0\fi-360\sa120 7.\tab}\ilvl0 \ltrpar\s2\cf0{\*\hyphen2\hyphlead2\hyphtrail2\hyphmax0}\ls2\aspalpha\li720\ri0\lin720\rin0\fi-360\sa120\ql\rtlch\af8\afs24\lang255\ltrch\dbch\af6\langfe255\hich\f0\fs24\lang1033\loch\f0\fs24\lang1033 {\rtlch \ltrch\loch\f0\fs24\lang1033\i0\b0 Run the JBoss Application Server \uc3 \u8211\'e2\'80\'93\uc1  remember that we are using the 'all' server configuration and is denoted by the -c parameter.  For example:}
+\par \pard\plain \ltrpar\s2\cf0{\*\hyphen2\hyphlead2\hyphtrail2\hyphmax0}\aspalpha\li750\ri0\lin750\rin0\fi0\sa120\ql\rtlch\af8\afs24\lang255\ltrch\dbch\af6\langfe255\hich\f0\fs24\lang1033\loch\f0\fs24\lang1033 {\rtlch \ltrch\loch\f0\fs24\lang1033\i0\b0 <JBOSS_HOME>/bin/run.sh -c all}
+\par \pard\plain \ltrpar\s2\cf0{\*\hyphen2\hyphlead2\hyphtrail2\hyphmax0}\aspalpha\sa120\ql\rtlch\af8\afs20\lang255\ltrch\dbch\af6\langfe255\hich\f3\fs20\lang1033\loch\f3\fs20\lang1033 {\rtlch \ltrch\loch\f3\fs20\lang1033\i0\b0 \tab }
+\par \pard\plain \ltrpar\s5\cf0{\*\hyphen2\hyphlead2\hyphtrail2\hyphmax0}\aspalpha\sb240\sa120\keepn\ql\rtlch\afs28\lang255\ai\ab\ltrch\dbch\af7\langfe255\hich\f2\fs28\lang1033\i\b\loch\f2\fs28\lang1033\i\b {\rtlch \ltrch\loch\f2\fs28\lang1033\i\b Appendix}
+\par \pard\plain \li345\ri0\lin345\rin0\fi0\sb240\sa120\keepn\f2\b\f7\b\b\qc \ltrpar\s6\cf0\qc{\*\hyphen2\hyphlead2\hyphtrail2\hyphmax0}\aspalpha\li345\ri0\lin345\rin0\fi0\sb240\sa120\keepn\rtlch\afs24\lang255\ltrch\dbch\af7\langfe255\hich\f2\fs24\lang1033\loch\f2\fs24\lang1033 {\rtlch \ltrch\loch\f2\fs24\lang1033\i0\b A Quick Guide to Installing the 'rosetta' PostgreSQL Database on OS X}
+\par \pard\plain \ltrpar\s2\cf0\qc{\*\hyphen2\hyphlead2\hyphtrail2\hyphmax0}\aspalpha\sa120\rtlch\af8\afs24\lang255\ltrch\dbch\af6\langfe255\hich\f0\fs24\lang1033\loch\f0\fs24\lang1033 
+\par \pard\plain \ltrpar\s2\cf0{\*\hyphen2\hyphlead2\hyphtrail2\hyphmax0}\aspalpha\sa120\ql\rtlch\af8\afs24\lang255\ltrch\dbch\af6\langfe255\hich\f0\fs24\lang1033\loch\f0\fs24\lang1033 {\rtlch \ltrch\loch\f0\fs24\lang1033\i0\b0 These instructions were created as a means to allow developers to quickly install PostgreSQL on OS X and get up and running with JBoss ESB very quickly.  As of JBoss version 4.0 Alpha 1, PostgreSQL is a requirement for deploying on the JBoss Application Se
+rver.  If you are not familiar with this flavor of database, no problem, all you have to do is follow these steps and you will be up and running in not time.}
+\par \pard\plain \ltrpar\s2\cf0{\*\hyphen2\hyphlead2\hyphtrail2\hyphmax0}\aspalpha\sa120\ql\rtlch\af8\afs24\lang255\ltrch\dbch\af6\langfe255\hich\f0\fs24\lang1033\loch\f0\fs24\lang1033 
+\par \pard\plain \ltrpar\s2\cf0\ul\ulc0{\*\hyphen2\hyphlead2\hyphtrail2\hyphmax0}\aspalpha\sa120\ql\rtlch\af8\afs24\lang255\ltrch\dbch\af6\langfe255\hich\f0\fs24\lang1033\loch\f0\fs24\lang1033 {\rtlch \ltrch\loch\f0\fs24\lang1033\i0\b0 Notes:}
+\par \pard\plain \ltrpar\s2\cf0{\*\hyphen2\hyphlead2\hyphtrail2\hyphmax0}\aspalpha\sa120\ql\rtlch\af8\afs24\lang255\ltrch\dbch\af6\langfe255\hich\f0\fs24\lang1033\loch\f0\fs24\lang1033 
+\par \pard\plain {\listtext\pard\plain \li720\ri0\lin720\rin0\fi-360\sa120\f4\fs18\f4\fs18\f4\fs18 \u9679\'3f\tab}\ilvl0 \ltrpar\s2\cf0{\*\hyphen2\hyphlead2\hyphtrail2\hyphmax0}\ls1\aspalpha\li720\ri0\lin720\rin0\fi-360\sa120\ql\rtlch\af8\afs24\lang255\ltrch\dbch\af6\langfe255\hich\f0\fs24\lang1033\loch\f0\fs24\lang1033 {\rtlch \ltrch\loch\f0\fs24\lang1033\i0\b0 This installation was performed on an Apple Macbook Pro running OS 10.4.7 (this is an Intel based machine).}
+\par \pard\plain {\listtext\pard\plain \li720\ri0\lin720\rin0\fi-360\sa120\f4\fs18\f4\fs18\f4\fs18 \u9679\'3f\tab}\ilvl0 \ltrpar\s2\cf0{\*\hyphen2\hyphlead2\hyphtrail2\hyphmax0}\ls1\aspalpha\li720\ri0\lin720\rin0\fi-360\sa120\ql\rtlch\af8\afs24\lang255\ltrch\dbch\af6\langfe255\hich\f0\fs24\lang1033\loch\f0\fs24\lang1033 {\rtlch \ltrch\loch\f0\fs24\lang1033\i0\b0 The version of PostgreSQL utilized within this installation was 8.1.3.}
+\par \pard\plain \ltrpar\s2\cf0{\*\hyphen2\hyphlead2\hyphtrail2\hyphmax0}\aspalpha\sa120\ql\rtlch\af8\afs24\lang255\ltrch\dbch\af6\langfe255\hich\f0\fs24\lang1033\loch\f0\fs24\lang1033 
+\par \pard\plain \ltrpar\s2\cf0\ul\ulc0{\*\hyphen2\hyphlead2\hyphtrail2\hyphmax0}\aspalpha\sa120\ql\rtlch\af8\afs24\lang255\ltrch\dbch\af6\langfe255\hich\f0\fs24\lang1033\loch\f0\fs24\lang1033 {\rtlch \ltrch\loch\f0\fs24\lang1033\i0\b0 Steps:}
+\par \pard\plain {\listtext\pard\plain \li720\ri0\lin720\rin0\fi-360\sa120 1.\tab}\ilvl0 \ltrpar\s2\cf0{\*\hyphen2\hyphlead2\hyphtrail2\hyphmax0}\ls0\aspalpha\li720\ri0\lin720\rin0\fi-360\sa120\ql\rtlch\af8\afs24\lang255\ltrch\dbch\af6\langfe255\hich\f0\fs24\lang1033\loch\f0\fs24\lang1033 {\rtlch \ltrch\loch\f0\fs24\lang1033\i0\b0 Download the PostgreSQL database, distributions can be found at the {\field{\*\fldinst HYPERLINK "http://www.postgresql.com/" }{\fldrslt \*\cs15\cf2\ul\ulc0\rtlch\ltrch\dbch\hich\f0\fs24\lang1033\loch\f0\fs24\lang1033 PostgreSQL website}}.}
+\par \pard\plain \ltrpar\s2\cf0{\*\hyphen2\hyphlead2\hyphtrail2\hyphmax0}\aspalpha\sa120\ql\rtlch\af8\afs24\lang255\ltrch\dbch\af6\langfe255\hich\f0\fs24\lang1033\loch\f0\fs24\lang1033 
+\par \pard\plain {\listtext\pard\plain \li720\ri0\lin720\rin0\fi-360\sa120 2.\tab}\ilvl0 \ltrpar\s2\cf0{\*\hyphen2\hyphlead2\hyphtrail2\hyphmax0}\ls0\aspalpha\li720\ri0\lin720\rin0\fi-360\sa120\ql\rtlch\af8\afs24\lang255\ltrch\dbch\af6\langfe255\hich\f0\fs24\lang1033\loch\f0\fs24\lang1033 {\rtlch \ltrch\loch\f0\fs24\lang1033\i0\b0 Install the package.  {\b Note:}{\b0  I have read reports that it is possible that you may get the message: \uc3 \u8220\'e2\'80\'9c\uc1 You cannot install this software on this disk\uc3 \u8221\'e2\'80\'9d\uc1 .  The solution is to click the \uc3 \u8220\'e2\'80\'9c\uc1 Go Back\uc3 \u8221\'e2\'80\'9d\uc1  button and then click \uc3 \u8220\'e2\'80\'9c\uc1 Continue\uc3 \u8221\'e2\'80\'9d\uc1  thus trying it again.}}
+\par \pard\plain \ltrpar\s2\cf0{\*\hyphen2\hyphlead2\hyphtrail2\hyphmax0}\aspalpha\sa120\ql\rtlch\af8\afs24\lang255\ltrch\dbch\af6\langfe255\hich\f0\fs24\lang1033\loch\f0\fs24\lang1033 
+\par \pard\plain {\listtext\pard\plain \li720\ri0\lin720\rin0\fi-360\sa120 3.\tab}\ilvl0 \ltrpar\s2\cf0{\*\hyphen2\hyphlead2\hyphtrail2\hyphmax0}\ls0\aspalpha\li720\ri0\lin720\rin0\fi-360\sa120\ql\rtlch\af8\afs24\lang255\ltrch\dbch\af6\langfe255\hich\f0\fs24\lang1033\loch\f0\fs24\lang1033 {\rtlch \ltrch\loch\f0\fs24\lang1033\i0\b0 Create a PostgreSQL user on your machine.  Now this maybe stepping into argumentative grounds, however most DBAs I have spoken with regarding this - have recommended a distinct account for the installation.}
+\par \pard\plain \ltrpar\s2\cf0{\*\hyphen2\hyphlead2\hyphtrail2\hyphmax0}\aspalpha\sa120\ql\rtlch\af8\afs24\lang255\ltrch\dbch\af6\langfe255\hich\f0\fs24\lang1033\loch\f0\fs24\lang1033 
+\par \pard\plain {\listtext\pard\plain \li1080\ri0\lin1080\rin0\fi-360\sa120 I.\tab}\ilvl1 \ltrpar\s2\cf0{\*\hyphen2\hyphlead2\hyphtrail2\hyphmax0}\ls0\aspalpha\li1080\ri0\lin1080\rin0\fi-360\sa120\ql\rtlch\af8\afs24\lang255\ltrch\dbch\af6\langfe255\hich\f0\fs24\lang1033\loch\f0\fs24\lang1033 {\rtlch \ltrch\loch\f0\fs24\lang1033\i0\b0 Go into \uc3 \u8220\'e2\'80\'9c\uc1 System Preferences\uc3 \u8221\'e2\'80\'9d\uc1  and select \uc3 \u8220\'e2\'80\'9c\uc1 Accounts\uc3 \u8221\'e2\'80\'9d\uc1 }
+\par \pard\plain {\listtext\pard\plain \li1080\ri0\lin1080\rin0\fi-360\sa120 II.\tab}\ilvl1 \ltrpar\s2\cf0{\*\hyphen2\hyphlead2\hyphtrail2\hyphmax0}\ls0\aspalpha\li1080\ri0\lin1080\rin0\fi-360\sa120\ql\rtlch\af8\afs24\lang255\ltrch\dbch\af6\langfe255\hich\f0\fs24\lang1033\loch\f0\fs24\lang1033 {\rtlch \ltrch\loch\f0\fs24\lang1033\i0\b0 Click the \uc3 \u8220\'e2\'80\'9c\uc1 +\uc3 \u8221\'e2\'80\'9d\uc1  button to add a new user, you may need to unlock the current user configuration by clicking on the lock and inputing the administration password.}
+\par \pard\plain {\listtext\pard\plain \li1080\ri0\lin1080\rin0\fi-360\sa120 III.\tab}\ilvl1 \ltrpar\s2\cf0{\*\hyphen2\hyphlead2\hyphtrail2\hyphmax0}\ls0\aspalpha\li1080\ri0\lin1080\rin0\fi-360\sa120\ql\rtlch\af8\afs24\lang255\ltrch\dbch\af6\langfe255\hich\f0\fs24\lang1033\loch\f0\fs24\lang1033 {\rtlch \ltrch\loch   }{\rtlch \ltrch\loch\f0\fs24\lang1033\i0\b0 Enter the details of the account (obviously you can make these what you would like).  For example, you may create a user with a \uc3 \u8220\'e2\'80\'9c\uc1 Short Name\uc3 \u8221\'e2\'80\'9d\uc1  of postres.}
+\par \pard\plain \ltrpar\s2\cf0{\*\hyphen2\hyphlead2\hyphtrail2\hyphmax0}\aspalpha\sa120\ql\rtlch\af8\afs24\lang255\ltrch\dbch\af6\langfe255\hich\f0\fs24\lang1033\loch\f0\fs24\lang1033 
+\par \pard\plain {\listtext\pard\plain \li720\ri0\lin720\rin0\fi-360\sa120 4.\tab}\ilvl0 \ltrpar\s2\cf0{\*\hyphen2\hyphlead2\hyphtrail2\hyphmax0}\ls0\aspalpha\li720\ri0\lin720\rin0\fi-360\sa120\ql\rtlch\af8\afs24\lang255\ltrch\dbch\af6\langfe255\hich\f0\fs24\lang1033\loch\f0\fs24\lang1033 {\rtlch \ltrch\loch\f0\fs24\lang1033\i0\b0 Open a Terminal window and type the following commands ({\b Note:} these Unix commands ensure proper privileges are intact and step IV is the command to actually start the database):}
+\par \pard\plain \ltrpar\s2\cf0{\*\hyphen2\hyphlead2\hyphtrail2\hyphmax0}\aspalpha\li720\ri0\lin720\rin0\fi0\sa120\ql\rtlch\af8\afs22\lang255\ltrch\dbch\af6\langfe255\hich\f0\fs22\lang1033\loch\f0\fs22\lang1033{\rtlch \ltrch\loch\f0\fs22\lang1033\i0\b\b Important: These commands assume a user account short name of: postgres}
+\par \pard\plain {\listtext\pard\plain \li1080\ri0\lin1080\rin0\fi-360\sa120 I.\tab}\ilvl1 \ltrpar\s2\cf0{\*\hyphen2\hyphlead2\hyphtrail2\hyphmax0}\ls0\aspalpha\li1080\ri0\lin1080\rin0\fi-360\sa120\ql\rtlch\af8\afs24\lang255\ltrch\dbch\af6\langfe255\hich\f0\fs24\lang1033\loch\f0\fs24\lang1033 {\rtlch \ltrch\loch  }{\rtlch \ltrch\loch\f0\fs24\lang1033\i0\b0 > {\fs21\f3 sudo chown -R postgres /usr/local/pgsql}}
+\par \pard\plain {\listtext\pard\plain \li1080\ri0\lin1080\rin0\fi-360\sa120 II.\tab}\ilvl1 \ltrpar\s2\cf0{\*\hyphen2\hyphlead2\hyphtrail2\hyphmax0}\ls0\aspalpha\li1080\ri0\lin1080\rin0\fi-360\sa120\ql\rtlch\af8\afs24\lang255\ltrch\dbch\af6\langfe255\hich\f0\fs24\lang1033\loch\f0\fs24\lang1033 {\rtlch \ltrch\loch  }{\rtlch \ltrch\loch\f0\fs24\lang1033\i0\b0 > {\fs21\f3 su \uc3 \u8211\'e2\'80\'93\uc1  postgres}}
+\par \pard\plain {\listtext\pard\plain \li1080\ri0\lin1080\rin0\fi-360\sa120 III.\tab}\ilvl1 \ltrpar\s2\cf0{\*\hyphen2\hyphlead2\hyphtrail2\hyphmax0}\ls0\aspalpha\li1080\ri0\lin1080\rin0\fi-360\sa120\ql\rtlch\af8\afs24\lang255\ltrch\dbch\af6\langfe255\hich\f0\fs24\lang1033\loch\f0\fs24\lang1033 {\rtlch \ltrch\loch  }{\rtlch \ltrch\loch\f0\fs24\lang1033\i0\b0 > {\fs21\f3 /usr/local/bin/initdb -D /usr/local/pgsql/data}}
+\par \pard\plain {\listtext\pard\plain \li1080\ri0\lin1080\rin0\fi-360\sa120 IV.\tab}\ilvl1 \ltrpar\s2\cf0{\*\hyphen2\hyphlead2\hyphtrail2\hyphmax0}\ls0\aspalpha\li1080\ri0\lin1080\rin0\fi-360\sa120\ql\rtlch\af8\afs24\lang255\ltrch\dbch\af6\langfe255\hich\f0\fs24\lang1033\loch\f0\fs24\lang1033 {\rtlch \ltrch\loch  }{\rtlch \ltrch\loch\f0\fs24\lang1033\i0\b0 > {\fs20\f3 /usr/local/bin/pg_ctl -D /usr/local/pgsql/data -l postgres.log start}}
+\par \pard\plain \ltrpar\s2\cf0{\*\tlswg8236}\tx3345{\*\hyphen2\hyphlead2\hyphtrail2\hyphmax0}\aspalpha\sa120\ql\rtlch\af8\afs20\lang255\ltrch\dbch\af6\langfe255\hich\f3\fs20\lang1033\loch\f3\fs20\lang1033 
+\par \pard\plain {\listtext\pard\plain \li720\ri0\lin720\rin0\fi-360\sa120 5.\tab}\ilvl0 \ltrpar\s2\cf0{\*\hyphen2\hyphlead2\hyphtrail2\hyphmax0}\ls0\aspalpha\li720\ri0\lin720\rin0\fi-360\sa120\ql\rtlch\af8\afs24\lang255\ltrch\dbch\af6\langfe255\hich\f0\fs24\lang1033\loch\f0\fs24\lang1033 {\rtlch \ltrch\loch\f0\fs24\lang1033\i0\b0 To verify you are up and running, you can use a free PostgreSQL client like EduPhant.}
+\par \pard\plain \ltrpar\s2\cf0{\*\hyphen2\hyphlead2\hyphtrail2\hyphmax0}\aspalpha\sa120\ql\rtlch\af8\afs24\lang255\ltrch\dbch\af6\langfe255\hich\f0\fs24\lang1033\loch\f0\fs24\lang1033 
+\par \pard\plain {\listtext\pard\plain \li720\ri0\lin720\rin0\fi-360\sa120 6.\tab}\ilvl0 \ltrpar\s2\cf0{\*\hyphen2\hyphlead2\hyphtrail2\hyphmax0}\ls0\aspalpha\li720\ri0\lin720\rin0\fi-360\sa120\ql\rtlch\af8\afs24\lang255\ltrch\dbch\af6\langfe255\hich\f0\fs24\lang1033\loch\f0\fs24\lang1033 {\rtlch \ltrch\loch\f0\fs24\lang1033\i0\b0 Finally execute the JBoss ESB database script located <JBOSS_ESB_HOME>/ESBCore/docs/Install/database/JBossESB-DB.sql}
+\par \pard\plain \ltrpar\s2\cf0{\*\hyphen2\hyphlead2\hyphtrail2\hyphmax0}\aspalpha\sa120\ql\rtlch\af8\afs24\lang255\ltrch\dbch\af6\langfe255\hich\f0\fs24\lang1033\loch\f0\fs24\lang1033 
+\par \pard\plain \ltrpar\s2\cf0{\*\hyphen2\hyphlead2\hyphtrail2\hyphmax0}\aspalpha\li720\ri0\lin720\rin0\fi0\sa120\ql\rtlch\af8\afs24\lang255\ltrch\dbch\af6\langfe255\hich\f0\fs24\lang1033\loch\f0\fs24\lang1033 {\rtlch \ltrch\loch\f0\fs24\lang1033\i0\b0 Where <JBOSS_ESB_HOME> is the root directory of the tagged version out subversion that you are working within.}
+\par \pard\plain \ltrpar\s2\cf0{\*\hyphen2\hyphlead2\hyphtrail2\hyphmax0}\aspalpha\li705\ri0\lin705\rin0\fi0\sa120\ql\rtlch\af8\afs24\lang255\ltrch\dbch\af6\langfe255\hich\f0\fs24\lang1033\loch\f0\fs24\lang1033 {\rtlch \ltrch\loch\f0\fs24\lang1033\i0\b0 Executing this script can be done at the command line with the following command \uc3 \u8211\'e2\'80\'93\uc1  (make sure you are doing this with the postgres user by executing Step II from above (shown below with the psql command executed out of the PostgreSQL bin)}
+\par \pard\plain \ltrpar\s2\cf0{\*\hyphen2\hyphlead2\hyphtrail2\hyphmax0}\aspalpha\sa120\ql\rtlch\af8\afs24\lang255\ltrch\dbch\af6\langfe255\hich\f0\fs24\lang1033\loch\f0\fs24\lang1033 {\rtlch \ltrch\loch\f0\fs24\lang1033\i0\b0 \tab \tab }
+\par \pard\plain \ltrpar\s2\cf0{\*\hyphen2\hyphlead2\hyphtrail2\hyphmax0}\aspalpha\li705\ri0\lin705\rin0\fi0\sa120\ql\rtlch\af8\afs20\lang255\ltrch\dbch\af6\langfe255\hich\f0\fs20\lang1033\loch\f0\fs20\lang1033{\rtlch \ltrch\loch\f3\fs20\lang1033\i0\b0\f3 psql -f script <Jboss_ESB_HOME>/ESBCore/docs/install/database/JBossESB-DB.sql}
+\par \pard\plain \ltrpar\s2\cf0{\*\hyphen2\hyphlead2\hyphtrail2\hyphmax0}\aspalpha\sa120\ql\rtlch\af8\afs24\lang255\ltrch\dbch\af6\langfe255\hich\f0\fs24\lang1033\loch\f0\fs24\lang1033 {\rtlch \ltrch\loch\f0\fs24\lang1033\i0\b0 \tab \tab }
+\par \pard\plain \ltrpar\s2\cf0{\*\hyphen2\hyphlead2\hyphtrail2\hyphmax0}\aspalpha\sa120\ql\rtlch\af8\afs24\lang255\ltrch\dbch\af6\langfe255\hich\f0\fs24\lang1033\loch\f0\fs24\lang1033 
+\par \pard\plain \ltrpar\s2\cf0{\*\hyphen2\hyphlead2\hyphtrail2\hyphmax0}\aspalpha\li709\ri0\lin709\rin0\fi0\sa120\ql\rtlch\af8\afs24\lang255\ltrch\dbch\af6\langfe255\hich\f0\fs24\lang1033\loch\f0\fs24\lang1033 {\rtlch \ltrch\loch\f0\fs24\lang1033\i0\b0 \tab }
+\par \pard\plain \ltrpar\s2\cf0{\*\hyphen2\hyphlead2\hyphtrail2\hyphmax0}\aspalpha\sa120\ql\rtlch\af8\afs24\lang255\ltrch\dbch\af6\langfe255\hich\f0\fs24\lang1033\loch\f0\fs24\lang1033 
+\par \pard\plain \ltrpar\s2\cf0{\*\hyphen2\hyphlead2\hyphtrail2\hyphmax0}\aspalpha\sa120\ql\rtlch\af8\afs24\lang255\ltrch\dbch\af6\langfe255\hich\f0\fs24\lang1033\loch\f0\fs24\lang1033 
+\par }
\ No newline at end of file

Copied: labs/jbossesb/branches/refactor/product/docs/samples/trailblazer/bankloanbrokerdemo/banks/JBoss ESB Loan Broker Banks Guide.doc (from rev 5384, labs/jbossesb/trunk/product/docs/samples/trailblazer/bankloanbrokerdemo/banks/JBoss ESB Loan Broker Banks Guide.doc)

Copied: labs/jbossesb/branches/refactor/product/docs/samples/trailblazer/bankloanbrokerdemo/banks/JBoss ESB Loan Broker Banks Guide.html (from rev 5384, labs/jbossesb/trunk/product/docs/samples/trailblazer/bankloanbrokerdemo/banks/JBoss ESB Loan Broker Banks Guide.html)

Modified: labs/jbossesb/branches/refactor/product/docs/samples/trailblazer/bankloanbrokerdemo/banks/bank.properties
===================================================================
--- labs/jbossesb/branches/refactor/product/docs/samples/trailblazer/bankloanbrokerdemo/banks/bank.properties	2006-08-01 18:47:29 UTC (rev 5384)
+++ labs/jbossesb/branches/refactor/product/docs/samples/trailblazer/bankloanbrokerdemo/banks/bank.properties	2006-08-01 19:50:06 UTC (rev 5385)
@@ -1 +1,5 @@
-monitored.directory=C:/Temp
+file.monitored.directory=C:/Temp
+
+jms.provider.url=localhost
+jms.queue.in=queue/B
+jms.queue.out=queue/A

Modified: labs/jbossesb/branches/refactor/product/docs/samples/trailblazer/bankloanbrokerdemo/banks/build.xml
===================================================================
--- labs/jbossesb/branches/refactor/product/docs/samples/trailblazer/bankloanbrokerdemo/banks/build.xml	2006-08-01 18:47:29 UTC (rev 5384)
+++ labs/jbossesb/branches/refactor/product/docs/samples/trailblazer/bankloanbrokerdemo/banks/build.xml	2006-08-01 19:50:06 UTC (rev 5385)
@@ -73,25 +73,20 @@
                 basedir="${org.jboss.esb.samples.loanbroker.banks.classes.dir}" 
                 includes="**/*.class"
                 />
-		<jar    jarfile="${org.jboss.esb.samples.loanbroker.banks.dest}/dist/lib/pollmgt.sar">
-                <fileset dir="${org.jboss.esb.samples.loanbroker.banks.lib.ext.dir}" includes="pollmgt.jar,org.sadun.util.jar"/>
-			    <metainf dir="${basedir}/config/pollmgt/META-INF"/>
-		</jar>
 	</target>
 	
 	<target name="runJMSBank" depends="org.jboss.esb.samples.loanbroker.banks.jar">
 		<echo>Running JMS Based Bank</echo>
 		<echo>Note that your app-server on host: localhost needs to be up and running!</echo>
-		<java fork="yes" classname="org.jboss.soa.esb.samples.loanbroker.banks.ManagerJMS" failonerror="true">
-			<sysproperty key="java.naming.factory.initial" value="org.jnp.interfaces.NamingContextFactory"/>
-			<sysproperty key="java.naming.provider.url" value="localhost:1099"/>
+		<java fork="yes" classname="org.jboss.soa.esb.samples.loanbroker.banks.ManagerJMS" failonerror="true"
+			args="${jms.provider.url},${jms.queue.in},${jms.queue.out}">
 			<classpath refid="org.jboss.esb.samples.loanbroker.banks.testclasspath"/>
 		</java>
 	</target>	
 	
 	<target name="runFileBank" depends="org.jboss.esb.samples.loanbroker.banks.jar">
 		<echo>Running File Based Bank</echo>
-		<java fork="yes" classname="org.jboss.soa.esb.samples.loanbroker.banks.ManagerFlatFile" failonerror="true" args="${monitored.directory}">
+		<java fork="yes" classname="org.jboss.soa.esb.samples.loanbroker.banks.ManagerFlatFile" failonerror="true" args="${file.monitored.directory}">
 			<classpath refid="org.jboss.esb.samples.loanbroker.banks.testclasspath"/>
 		</java>
 	</target>	

Modified: labs/jbossesb/branches/refactor/product/docs/samples/trailblazer/bankloanbrokerdemo/banks/src/org/jboss/soa/esb/samples/loanbroker/banks/ManagerJMS.java
===================================================================
--- labs/jbossesb/branches/refactor/product/docs/samples/trailblazer/bankloanbrokerdemo/banks/src/org/jboss/soa/esb/samples/loanbroker/banks/ManagerJMS.java	2006-08-01 18:47:29 UTC (rev 5384)
+++ labs/jbossesb/branches/refactor/product/docs/samples/trailblazer/bankloanbrokerdemo/banks/src/org/jboss/soa/esb/samples/loanbroker/banks/ManagerJMS.java	2006-08-01 19:50:06 UTC (rev 5385)
@@ -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.samples.loanbroker.banks;
 
 import java.math.BigDecimal;
@@ -38,82 +38,141 @@
 import javax.naming.InitialContext;
 
 import org.apache.log4j.Logger;
+import org.apache.log4j.Priority;
 import org.apache.log4j.xml.DOMConfigurator;
 
 import com.thoughtworks.xstream.XStream;
 import com.thoughtworks.xstream.io.xml.DomDriver;
 
-public class ManagerJMS implements javax.jms.MessageListener 
-{
-	private static Logger log = Logger.getLogger(ManagerJMS.class);
-	private static final String BANK_NAME        = "JMSBasedBank";
+/**
+ * The JMS Manager listens to an incoming queue (by default queue/A on localhost). It consumes the
+ * message assuming it is a TextMessage, and that the text is an XML structure that can be marshalled
+ * into a BankQuoteRequest. The request will be processed and a BankQuote Reply will be serialized to XML
+ * and send to the outgoing queue (by default this is queue/B on localhost).
+ * 
+ * @author kstam
+ *
+ */
+public class ManagerJMS implements javax.jms.MessageListener {
+	private static Logger logger = Logger.getLogger(ManagerJMS.class);
+	/** Name of the Bank */
+	private static final String BANK_NAME = "JMSBasedBank";
+	/** Rate premium the bank charges */
 	private static final BigDecimal RATE_PREMIUM = BigDecimal.valueOf(0.50);
-	private static final int MAXLOANTERM         = 120;
+	/** Maximum duration of the loan the bank will accept [months] */
+	private static final int MAXLOANTERM = 120;
+	/** Default incoming queue */
+	private static String QUEUE_IN = "queue/A";
+	/** Default outgoing queue */
+	private static String QUEUE_OUT = "queue/B";
+	/** Default jms provider url */
+	private static String PROVIDER_URL = "localhost";
+	/** Context used to lookup the Queues */
 	private static InitialContext ctx;
+	/** Properties used when constructing the InitialContext */
 	private static Properties properties = new Properties();
+	/** Queue connection for incoming queue */
 	QueueConnection inQueueConnection;
-	
-	public void listen()
-	{
-		 try {
-	      properties.put(Context.INITIAL_CONTEXT_FACTORY, "org.jnp.interfaces.NamingContextFactory");
-		  properties.put(Context.URL_PKG_PREFIXES, "org.jnp.interfaces");
-		  properties.put(Context.PROVIDER_URL, "localhost");
-		  ctx = new InitialContext(properties);
-	      log.info("Looking up queue");
-	      Queue inQueue = (Queue) ctx.lookup("queue/A");
-	      log.info("Looking up connection factory");
-	      QueueConnectionFactory qcf = (QueueConnectionFactory) ctx.lookup("UIL2ConnectionFactory");
-	      log.info("Creating connection");
-	      inQueueConnection = qcf.createQueueConnection();
-	      log.info("Creating session");
-	      QueueSession qs = inQueueConnection .createQueueSession(false, Session.DUPS_OK_ACKNOWLEDGE);
-	      QueueReceiver qr = qs.createReceiver(inQueue);
-	      qr.setMessageListener(this);
-	      inQueueConnection .start();
-	   } catch (Exception e) {
-		   log.error(e.getMessage(),e);
-	   }
+
+	/**
+	 * Sets up the queue listener. By default is listenes to queue/A on localhost.
+	 */
+	public void listen() {
+		try {
+			properties.put(Context.INITIAL_CONTEXT_FACTORY,
+					"org.jnp.interfaces.NamingContextFactory");
+			properties.put(Context.URL_PKG_PREFIXES, "org.jnp.interfaces");
+			properties.put(Context.PROVIDER_URL, PROVIDER_URL);
+			ctx = new InitialContext(properties);
+			logger.info("Looking up queue");
+			Queue inQueue = (Queue) ctx.lookup(QUEUE_IN);
+			logger.info("Looking up connection factory");
+			QueueConnectionFactory qcf = (QueueConnectionFactory) ctx
+					.lookup("UIL2ConnectionFactory");
+			logger.info("Creating connection");
+			inQueueConnection = qcf.createQueueConnection();
+			logger.info("Creating session");
+			QueueSession qs = inQueueConnection.createQueueSession(false,
+					Session.DUPS_OK_ACKNOWLEDGE);
+			QueueReceiver qr = qs.createReceiver(inQueue);
+			qr.setMessageListener(this);
+			inQueueConnection.start();
+		} catch (Exception e) {
+			logger.error(e.getMessage(), e);
+		}
 	}
-
+	/**
+	 * Sets up the queue listener. By default is listenes to queue/A on localhost.  It consumes the
+	 * message assuming it is a TextMessage, and that the text is an XML structure that can be marshalled
+	 * into a BankQuoteRequest. The request will be processed and a BankQuote Reply will be serialized to XML
+	 * and send to the outgoing queue (by default this is queue/B on localhost). If the processing results
+	 * in an error a BankQuoteReply with ErrorCode other then 0 is send to the outgoing queue.
+	 * 
+	 * @see javax.jms.MessageListener#onMessage(javax.jms.Message)
+	 */
 	public void onMessage(Message message) {
 		QueueConnection outQueueConnection;
-		 log.info("Got message: " + message);
-		 try {
-			 TextMessage textMessage = (TextMessage) message;
-			 String xml=textMessage.getText();
-			 XStream xstream = new XStream(new DomDriver());
-			 BankQuoteRequest bankQuoteRequest = (BankQuoteRequest) xstream.fromXML(xml);
-			 Bank bank = new Bank(BANK_NAME, RATE_PREMIUM, MAXLOANTERM);
-			 BankQuoteReply bankQuoteReply = bank.processMessage(bankQuoteRequest);
-			 String bankQuoteReplyXML = xstream.toXML(bankQuoteReply);
-			 Queue outQueue = (Queue) ctx.lookup("queue/B");
-		     log.info("Looking up connection factory");
-		     QueueConnectionFactory qcf = (QueueConnectionFactory) ctx.lookup("UIL2ConnectionFactory");
-		     log.info("Creating connection");
-		     outQueueConnection = qcf.createQueueConnection();
-		     try {
-			     log.info("Creating session");
-			     QueueSession qs = outQueueConnection.createQueueSession(false, Session.DUPS_OK_ACKNOWLEDGE);
-			     TextMessage responseTextMessage =qs.createTextMessage(bankQuoteReplyXML);
-			     QueueSender queueSender = qs.createSender(outQueue);
-			     queueSender.send(responseTextMessage);
-		     } catch (JMSException je) {
-		    	 log.error(je.getMessage(),je);
-		     }finally {
-				 outQueueConnection.close();
-			 }
-		 } catch (Exception e) {
-			 log.error(e.getMessage(),e);
-		 } 
-	 }
-	
-	public void close() throws JMSException{
-        inQueueConnection.close();
-    }
-	
-	public static void main(String[] args)
-	{
+		logger.info("Got message: " + message);
+		try {
+			TextMessage textMessage = (TextMessage) message;
+			String xml = textMessage.getText();
+			XStream xstream = new XStream(new DomDriver());
+			BankQuoteRequest bankQuoteRequest = (BankQuoteRequest) xstream
+					.fromXML(xml);
+			Bank bank = new Bank(BANK_NAME, RATE_PREMIUM, MAXLOANTERM);
+			BankQuoteReply bankQuoteReply = bank
+					.processMessage(bankQuoteRequest);
+			String bankQuoteReplyXML = xstream.toXML(bankQuoteReply);
+			Queue outQueue = (Queue) ctx.lookup(QUEUE_OUT);
+			logger.log(Priority.INFO, "Looking up connection factory");
+			QueueConnectionFactory qcf = (QueueConnectionFactory) ctx
+					.lookup("UIL2ConnectionFactory");
+			logger.log(Priority.INFO, "Creating connection");
+			outQueueConnection = qcf.createQueueConnection();
+			try {
+				logger.log(Priority.INFO, "Creating session");
+				QueueSession qs = outQueueConnection.createQueueSession(false,
+						Session.DUPS_OK_ACKNOWLEDGE);
+				TextMessage responseTextMessage = qs
+						.createTextMessage(bankQuoteReplyXML);
+				QueueSender queueSender = qs.createSender(outQueue);
+				queueSender.send(responseTextMessage);
+			} catch (JMSException je) {
+				logger.log(Priority.ERROR, je.getMessage(), je);
+			} finally {
+				outQueueConnection.close();
+			}
+		} catch (Exception e) {
+			logger.error(e.getMessage(), e);
+		}
+	}
+	/** 
+	 * Closing the queue connection as to not leak connection resources.
+	 */
+	public void close() throws JMSException {
+		inQueueConnection.close();
+	}
+	/**
+	 * Invokes an instance of JMS based bank listener.
+	 * @param args - provider url, queue_in, queue_out
+	 */
+	public static void main(String[] args) {
+		if (args != null && args.length > 0) {
+			PROVIDER_URL = args[0];
+			if (args.length > 1) {
+				QUEUE_IN = args[1];
+				if (args.length > 2) {
+					QUEUE_OUT = args[2];
+				}
+			}
+		} else {
+			logger.log(Priority.INFO,
+					"Usage: ManagerJMS providerURL, queueIn, queueOut");
+		}
+		logger.log(Priority.INFO, "Starting JMS Bank Listener...");
+		logger.log(Priority.INFO, "Provider URL='" + PROVIDER_URL + "'.");
+		logger.log(Priority.INFO, "Listening  to Queue '" + QUEUE_IN + "'.");
+		logger.log(Priority.INFO, "Responding to Queue '" + QUEUE_OUT + "'.");
 		DOMConfigurator.configure("log4j.xml");
 		ManagerJMS managerJMS = new ManagerJMS();
 		managerJMS.listen();

Copied: labs/jbossesb/branches/refactor/product/lib/ext/cglib-full-2.0-RC2.jar (from rev 5384, labs/jbossesb/trunk/product/lib/ext/cglib-full-2.0-RC2.jar)

Copied: labs/jbossesb/branches/refactor/product/lib/ext/jakarta-oro-2.0.8.jar (from rev 5384, labs/jbossesb/trunk/product/lib/ext/jakarta-oro-2.0.8.jar)

Copied: labs/jbossesb/branches/refactor/product/lib/ext/mockejb.jar (from rev 5384, labs/jbossesb/trunk/product/lib/ext/mockejb.jar)

Deleted: labs/jbossesb/branches/refactor/product/lib/ext/xjavadoc-1.1.jar
===================================================================
(Binary files differ)

Copied: labs/jbossesb/branches/refactor/product/lib/ext/xjavadoc-1.5-snapshot050611.jar (from rev 5384, labs/jbossesb/trunk/product/lib/ext/xjavadoc-1.5-snapshot050611.jar)




More information about the jboss-svn-commits mailing list