You are viewing a plain text version of this content. The canonical link for it is here.
Posted to jmeter-dev@jakarta.apache.org by ms...@apache.org on 2002/03/08 00:03:13 UTC

cvs commit: jakarta-jmeter/xdocs/stylesheets site.vsl

mstover1    02/03/07 15:03:13

  Modified:    docs     bugs.html changes.html contributing.html
                        extending.html index.html installing.html
                        license.html running.html todo.html
               docs/extending index.html
               docs/user_manual assertions.html ftp_test.html index.html
                        interleave.html jdbc_test.html
                        logical_controllers.html loop_controller.html
                        modification_manager.html once_only.html
                        proxy_server.html ready_components.html rmi.html
                        running.html saving.html sslmanager.html
                        test_samples.html threadgroups.html timers.html
                        visualizers.html web_test.html
               docs/usermanual best-practices.html boss.html
                        build-adv-web-test-plan.html
                        build-db-test-plan.html build-ftp-test-plan.html
                        build-jndi-test-plan.html build-test-plan.html
                        build-web-test-plan.html component_reference.html
                        get-started.html glossary.html index.html
                        intro.html remote-test.html test_plan.html
               src/org/apache/jmeter/gui/action Remove.java
               src/org/apache/jmeter/gui/tree JMeterTreeListener.java
               src/org/apache/jmeter/resources messages.properties
               src/org/apache/jmeter/util JMeterUtils.java
               src/org/apache/jmeter/visualizers GraphAccum.java
               xdocs    changes.xml
               xdocs/extending index.xml
               xdocs/stylesheets site.vsl
  Added:       docs/extending JMeter Extension Scenario.html
               xdocs/extending JMeter Extension Scenario.xml
  Log:
  Minor GUI enhancements
  Documentation updates
  
  Revision  Changes    Path
  1.21      +1 -1      jakarta-jmeter/docs/bugs.html
  
  Index: bugs.html
  ===================================================================
  RCS file: /home/cvs/jakarta-jmeter/docs/bugs.html,v
  retrieving revision 1.20
  retrieving revision 1.21
  diff -u -r1.20 -r1.21
  --- bugs.html	6 Mar 2002 01:24:58 -0000	1.20
  +++ bugs.html	7 Mar 2002 23:03:10 -0000	1.21
  @@ -67,7 +67,7 @@
   		  		  </ul>
   	 						  </td>
   						  <td width="80%" align="left" valign="top">
  -						  						  									 <table border="0" cellspacing="0" cellpadding="2">
  +						  						  									 <table border="0" cellspacing="0" cellpadding="2" width="100%">
   		<tr><td bgcolor="#525D76">
   		  <font color="#ffffff" face="arial,helvetica,sanserif">
   			 <a name=""><strong>Known Bugs</strong></a>
  
  
  
  1.39      +205 -367  jakarta-jmeter/docs/changes.html
  
  Index: changes.html
  ===================================================================
  RCS file: /home/cvs/jakarta-jmeter/docs/changes.html,v
  retrieving revision 1.38
  retrieving revision 1.39
  diff -u -r1.38 -r1.39
  --- changes.html	6 Mar 2002 01:24:58 -0000	1.38
  +++ changes.html	7 Mar 2002 23:03:10 -0000	1.39
  @@ -67,7 +67,7 @@
   		  		  </ul>
   	 						  </td>
   						  <td width="80%" align="left" valign="top">
  -						  						  									 <table border="0" cellspacing="0" cellpadding="2">
  +						  						  									 <table border="0" cellspacing="0" cellpadding="2" width="100%">
   		<tr><td bgcolor="#525D76">
   		  <font color="#ffffff" face="arial,helvetica,sanserif">
   			 <a name=""><strong>History of Changes</strong></a>
  @@ -76,18 +76,11 @@
   		<tr><td>
   		  <blockquote>
   		  									 				<p	>
  -								
  -
  -
   												<b	>
  -								Changes are chronologically ordered from top (most recent) to bottom
  -
  +								Changes are chronologically ordered from top (most recent) to bottom 
   (least recent)
   						</b>
  -									 
  -
  -
  -						</p>
  +							</p>
   							  									 				<b	>
   								Changes:
   						</b>
  @@ -95,219 +88,187 @@
   								Version 1.7Beta
   						</h3>
   							  									 				<ul	>
  -								
  -
  -
  +								 
  +	
   												<li	>
   								Better XML support for special characters (Tushar Bhatia) 
   						</li>
  -									
  -
  -
  +									 
  +	
   												<li	>
   								Non-GUI functioning  & Non-GUI test plan execution  (Tushar Bhatia)
   						</li>
  -									
  -
  -
  +									 
  +	
   												<li	>
   								Removing Swing dependence from base JMeter classes
   						</li>
  -									
  -
  -
  +									 
  +	
   												<li	>
   								Internationalization (Takashi Okamoto)
   						</li>
  -									
  -
  -
  +									 
  +	
   												<li	>
   								AllTests bug fix (neth6@atozasia.com)
   						</li>
  -									
  -
  -
  +									 
  +	
   												<li	>
   								ClassFinder bug fix (neth6@atozasia.com)
   						</li>
  -									
  -
  -
  +									 
  +	
   												<li	>
   								New Loop Controller
   						</li>
  -									
  -
  -
  +									 
  +	
   												<li	>
  -								Proxy Server records HTTP samples from browser (and documented in the user manual)
  +								Proxy Server records HTTP samples from browser 
  +		(and documented in the user manual)
   						</li>
  -									
  -
  -
  +									 
   												<li	>
   								Multipart Form support
   						</li>
  -									
  -
  -
  +									 
  +	
   												<li	>
   								HTTP Header class for Header customization
   						</li>
  -									
  -
  -
  +									 
  +	
   												<li	>
   								Extracting HTTP Header information from responses (Jamie Davidson)
   						</li>
  -									
  -
  -
  +									 
  +	
   												<li	>
   								Mailer Visualizer re-added to JMeter
   						</li>
  -									
  -
  -
  +									 
  +	
   												<li	>
   								JMeter now url encodes parameter names and values
   						</li>
  -									
  -
  -
  +									 
  +	
   												<li	>
   								listeners no longer give exceptions if their gui's haven't been initialized
   						</li>
  -									
  -
  -
  +									 
  +	
   												<li	>
   								HTTPS and Authorization working together
   						</li>
  -									
  -
  -
  +									 
  +	
   												<li	>
  -								New Http sampling that automatically parses HTML response for images to download, and includes the downloading of
  -
  -these images in total time for request (Neth neth6@atozasia.com) 
  +								New Http sampling that automatically parses HTML response 
  +		for images to download, and includes the downloading of these 
  +		images in total time for request (Neth neth6@atozasia.com) 
   						</li>
  -									
  -
  -
  +									 
  +	
   												<li	>
  -								HTTP responses from server can be parsed for links and forms, and dynamic data can be extracted and added to test
  -
  -samples at run-time (documented)
  +								HTTP responses from server can be parsed for links and forms, 
  +		and dynamic data can be extracted and added to test samples 
  +		at run-time (documented)
   						</li>
  -									 
  -
  -
  +									  
  +	
   												<li	>
   								New Ramp-up feature (Jonathan O'Keefe)
   						</li>
  -									
  -
  -
  +									 
  +	
   												<li	>
   								New visualizers (Neth)
   						</li>
  -									
  -
  -
  +									 
  +	
   												<li	>
   								New Assertions for functional testing
   						</li>
  -									
  -
  +									 
   
   						</ul>
   							  									 				<h3	>
   								Version 1.6.1
   						</h3>
   							  									 				<ul	>
  -								
  -
  -
  +								 
  +	
   												<li	>
   								Fixed saving and loading of test scripts (no more extra lines)
   						</li>
  -									
  -
  -
  +									 
  +	
   												<li	>
   								Can save and load special characters (such as "&" and "<").
   						</li>
  -									
  -
  -
  +									 
  +	
   												<li	>
   								Can save and load timers and listeners.
   						</li>
  -									
  -
  -
  +									 
  +	
   												<li	>
  -								Minor bug fix for cookies (if you cookie value contained an "=", then it broke).
  +								Minor bug fix for cookies (if you cookie value 
  +		contained an "=", then it broke).
   						</li>
  -									
  -
  -
  +									 
  +	
   												<li	>
  -								URL's can sample ports other than 80, and can test HTTPS, provided you have the necessary jars (JSSE)
  +								URL's can sample ports other than 80, and can test HTTPS, 
  +		provided you have the necessary jars (JSSE)
   						</li>
  -									
  -
  +									 
   
   						</ul>
   							  									 				<h3	>
   								Version 1.6 Alpha
   						</h3>
   							  									 				<ul	>
  -								
  -
  -
  +								 
  +	
   												<li	>
   								New UI
   						</li>
  -									
  -
  -
  +									 
  +	
   												<li	>
   								Separation of GUI and Logic code
   						</li>
  -									
  -
  -
  +									 	
  +	
   												<li	>
   								New Plug-in framework for new modules
   						</li>
  -									
  -
  -
  +									 
  +	
   												<li	>
   								Enhanced performance
   						</li>
  -									
  -
  -
  +									 
  +	
   												<li	>
   								Layering of test logic for greater flexibility
   						</li>
  -									
  -
  -
  +									 
  +	
   												<li	>
   								Added support for saving of test elements
   						</li>
  -									
  -
  -
  +									 
  +	
   												<li	>
   								Added support for distributed testing using a single client
   						</li>
  -									
  +									 
   
   
   						</ul>
  @@ -315,302 +276,240 @@
   								Version 1.5.1
   						</h3>
   							  									 				<ul	>
  -								
  -
  -
  +								 
  +	
   												<li	>
   								Fixed bug that caused cookies not to be read if header name case not as expected.
   						</li>
  -									
  -
  -
  +									 
  +	
   												<li	>
  -								Clone entries before sending to sampler - prevents relocations from messing up information across threads
  +								Clone entries before sending to sampler - prevents relocations from messing up 
  +		information across threads
   						</li>
  -									
  -
  -
  +									 
  +	
   												<li	>
  -								Minor bug fix to convenience dialog for adding paramters to test sample.  Bug prevented entries in dialog from appearing in test sample.
  +								Minor bug fix to convenience dialog for adding paramters to test sample.  
  +		Bug prevented entries in dialog from appearing in test sample.
   						</li>
  -									
  -
  -
  +									 
  +	
   												<li	>
   								Added xerces.jar to distribution
   						</li>
  -									
  -
  -
  +									 
  +	
   												<li	>
   								Added junit.jar to distribution and created a few tests.
   						</li>
  -									
  -
  -
  +									 
  +	
   												<li	>
   								Started work on new framework.  New files in cvs, but do not effect program yet.
   						</li>
  -									
  -
  -
  +									 
  +	
   												<li	>
   								Fixed bug that prevent HTTPJMeterThread from delaying according to chosen timer.
   						</li>
  -									
  -
  +									 
   
   						</ul>
   							  									 				<p	>
  -								
  -
  +								 
   
   												<h3	>
   								Version 1.5
   						</h3>
  -									
  -
  +									 
   
   												<ul	>
  -								
  -
  -  
  +								   
  +	
   												<li	>
  -								Abstracted out the concept of the Sampler, SamplerController, and TestSample.
  -
  -  A Sampler represents code that understands a protocol (such as HTTP, or FTP, RMI,
  -
  -  SMTP, etc..).  It is the code that actually makes the connection to whatever is
  -
  -  being tested.
  -
  -  A SamplerController represents code that understands how to organize and run a group
  -
  -  of test samples.  It is what binds together a Sampler and it's test samples and runs them.
  -
  -  A TestSample represents code that understands how to gather information from the
  -
  -  user about a particular test.  For a website, it would represent a URL and any
  -
  -  information to be sent with the URL.
  +								Abstracted out the concept of the Sampler, SamplerController, and TestSample.   
  +		A Sampler represents code that understands a protocol (such as HTTP, 
  +		or FTP, RMI,   SMTP, etc..).  It is the code that actually makes the 
  +		connection to whatever is   being tested.   A SamplerController 
  +		represents code that understands how to organize and run a group   
  +		of test samples.  It is what binds together a Sampler and it's test 
  +		samples and runs them.   A TestSample represents code that understands 
  +		how to gather information from the   user about a particular test.  
  +		For a website, it would represent a URL and any   information to be sent 
  +		with the URL.
   						</li>
  -									
  -
  -  
  +									   
  +	
   												<li	>
   								The UI has been updated to make entering test samples more convenient.
   						</li>
  -									
  -
  -  
  +									   
  +	
   												<li	>
  -								Thread groups have been added, allowing a user to setup multiple test to run
  -
  -  concurrently, and to allow sharing of test samples between those tests.
  +								Thread groups have been added, allowing a user to setup multiple test to run   
  +		concurrently, and to allow sharing of test samples between those tests.
   						</li>
  -									
  -
  -  
  +									   
  +	
   												<li	>
   								It is now possible to save and load test samples.
   						</li>
  -									
  -
  -  
  +									   
  +	
   												<li	>
   								....and many more minor changes/improvements...
   						</li>
  -									
  -
  +									 
   
   						</ul>
  -									
  -
  +									 
   
   						</p>
   							  									 				<p	>
  -								
  -
  +								 
   
   												<b	>
   								Apache JMeter 1.4.1-dev
   						</b>
  -									
  -
  -(
  +									 (
   												<a	 href="mailto:stefano@apache.org">
   								Stefano Mazzocchi
   						</a>
  -									)
  -
  -
  -
  +									)  
   
   												<ul	>
   								
  -
  -  
  +   
   												<li	>
   								Cleaned up URLSampler code after tons of patches for better readability. (SM)
   						</li>
   									
  -
  -  
  +   
   												<li	>
   								Made JMeter send a special "user-agent" identifier. (SM)
   						</li>
   									
  -
  -  
  +   
   												<li	>
   								Fixed problems with redirection not sending cookies and authentication info and removed
  -
  -    a warning with jikes compilation. Thanks to 
  +     a warning with jikes compilation. Thanks to 
   												<a	 href="mailto:wtanaka@yahoo.com">
   								Wesley
  -
  -    Tanaka
  +     Tanaka
   						</a>
   									 for the patches (SM)
   						</li>
   									
  -
  -  
  +   
   												<li	>
   								Fixed a bug in the URLSampler that caused to skip one URL when testing lists of URLs and
  -
  -    a problem with Cookie handling. Thanks to 
  +     a problem with Cookie handling. Thanks to 
   												<a	 href="mailto:gjohnson@investlearning.com">
   								Graham Johnson
   						</a>
   									 for the patches (SM)
   						</li>
   									
  -
  -  
  +   
   												<li	>
   								Fixed a problem with POST actions. Thanks to 
   												<a	 href="mailto:sschaub@bju.edu">
   								Stephen
  -
  -    Schaub
  +     Schaub
   						</a>
   									 for the patch (SM)
   						</li>
   									
  -
  -
  + 
   						</ul>
   									
  -
  -
  + 
   						</p>
   							  									 				<p	>
   								
  -
  -
  + 
   												<b	>
   								Apache JMeter 1.4
   						</b>
  -									 - Jul 11 1999
  -
  -(
  +									 - Jul 11 1999 (
   												<a	 href="mailto:cimjpno@be.ibm.com">
   								Jean-Pierre Norguet
   						</a>
  -									, 
  +									,
  + 
   												<a	 href="mailto:stefano@apache.org">
   								Stefano Mazzocchi
   						</a>
   									)
  -
  -
  -
  -
  +  
   												<ul	>
   								
  -
  -  
  +   
   												<li	>
   								Fixed a problem with POST actions. Thanks to 
   												<a	 href="mailto:bburns@labs.gte.com">
   								Brendan
  -
  -    Burns
  +     Burns
   						</a>
   									 for the patch (SM)
   						</li>
   									
  -
  -  
  +   
   												<li	>
   								Added close button to the About box for those window managers who don't provide it.
  -
  -    Thanks to Jan-Henrik Haukeland for pointing it out. (SM)
  +     Thanks to Jan-Henrik Haukeland for pointing it out. (SM)
   						</li>
   									
  -
  -  
  +   
   												<li	>
   								Added the simple Spline sample visualizer (JPN)
   						</li>
  -									
  -
  +									 
   
   						</ul>
  -									
  -
  -
  +									 
   						</p>
   							  									 				<p	>
   												<b	>
   								Apache JMeter 1.3
   						</b>
  -									 - Apr 16 1999 
  -
  -(
  +									 - Apr 16 1999
  +  (
   												<a	 href="mailto:stefano@apache.org">
   								Stefano Mazzocchi
   						</a>
  -									, 
  +									,
  + 
   												<a	 href="mailto:luta.raphael@networks.vivendi.net">
   								Rapha?Luta
   						</a>
   									)
   
  -
  -
  -
   												<ul	>
   								
  -
  -  
  +   
   												<li	>
   								Run the Garbage Collector and run finalization before starting to sampling to ensure
  -
  -    same state every time (SM)
  +     same state every time (SM)
   						</li>
   									
  -
  -  
  +   
   												<li	>
   								Fixed some NullPointerExceptions here and there (SM)
   						</li>
   									
  -
  -  
  +   
   												<li	>
   								Added HTTP authentication capabilities (RL)
   						</li>
   									
  -
  -  
  +   
   												<li	>
   								Added windowed sample visualizer (SM)
   						</li>
   									
  -
  -  
  +   
   												<li	>
   								Fixed stupid bug for command line arguments. Thanks to 
   												<a	 href="mailto:jbracer@infoneers.com">
  @@ -618,224 +517,163 @@
   						</a>
   									 for pointing this out (SM)
   						</li>
  -									
  -
  +									 
   
   						</ul>
  -									
  -
  -
  +									 
   						</p>
   							  									 				<p	>
   												<b	>
   								Apache JMeter 1.2
   						</b>
  -									 - Mar 17 1999
  -
  -(
  +									 - Mar 17 1999 (
   												<a	 href="mailto:sdowd@arcmail.com">
   								Sean Dowd
   						</a>
   									, 
  -												<a	 href="mailto:stefano@apache.org">
  -								Stefano
   
  -Mazzocchi
  +												<a	 href="mailto:stefano@apache.org">
  +								Stefano Mazzocchi
   						</a>
  -									)
  -
  -
  -
  +									)  
   
   												<ul	>
   								
  -
  -  
  +   
   												<li	>
   								Integrated cookie capabilities with JMeter (SM)
   						</li>
   									
  -
  -  
  +   
   												<li	>
   								Added the Cookie manager and Netscape file parser (SD)
   						</li>
   									
  -
  -  
  +   
   												<li	>
   								Fixed compilation error for JDK 1.1 (SD)
   						</li>
  -									
  -
  -
  +									 
   						</ul>
  -									
  -
  -
  +									 
   						</p>
   							  									 				<p	>
  -								
  -
  -
  +								 
   												<b	>
   								Apache JMeter 1.1
   						</b>
  -									 - Feb 24 1999
  -
  -(
  +									 - Feb 24 1999 (
   												<a	 href="mailto:sdowd@arcmail.com">
   								Sean Dowd
   						</a>
   									, 
  -												<a	 href="mailto:stefano@apache.org">
  -								Stefano
   
  -Mazzocchi
  +												<a	 href="mailto:stefano@apache.org">
  +								Stefano Mazzocchi
   						</a>
  -									)
  -
  -
  -
  +									)  
   
   												<ul	>
   								
  -
  -  
  +   
   												<li	>
   								Created the opportunity to create URL aliasing from the properties file as well as the
  -
  -    ability to associate aliases to URL sequences instead of single URLs (SM) Thanks to 
  +     ability to associate aliases to URL sequences instead of single URLs (SM) Thanks to 
   												<a	 href="mailto:chatfield@evergreen.com">
   								Simon Chatfield
   						</a>
   									 for the very nice suggestions
  -
  -    and code examples.
  +     and code examples.
   						</li>
   									
  -
  -  
  +   
   												<li	>
   								Removed the TextVisualizer and replaced it with the much more useful FileVisualizer (SM)
   						</li>
   									
  -
  -  
  +   
   												<li	>
   								Added the known bug list (SM)
   						</li>
   									
  -
  -  
  +   
   												<li	>
   								Removed the Java Apache logo (SM)
   						</li>
   									
  -
  -  
  +   
   												<li	>
   								Fixed a couple of typos (SM)
   						</li>
   									
  -
  -  
  +   
   												<li	>
   								Added UNIX makefile (SD)
   						</li>
  -									
  -
  -
  +									 
   						</ul>
  -									
  -
  -
  +									 
   						</p>
   							  									 				<p	>
  -								
  -
  -
  +								 
   												<b	>
   								Apache JMeter 1.0.1
   						</b>
  -									 - Jan 25 1999
  -
  -(
  +									 - Jan 25 1999 (
   												<a	 href="mailto:stefano@apache.org">
   								Stefano Mazzocchi
   						</a>
  -									)
  -
  -
  -
  +									)  
   
   												<ul	>
   								
  -
  -  
  +   
   												<li	>
   								Removed pending issues doc issues (SM)
   						</li>
   									
  -
  -  
  +   
   												<li	>
   								Fixed the unix script (SM)
   						</li>
   									
  -
  -  
  +   
   												<li	>
   								Added the possibility of running the JAR directly using "java -jar
  -
  -    ApacheJMeter.jar" with Java 2 (SM)
  +     ApacheJMeter.jar" with Java 2 (SM)
   						</li>
   									
  -
  -  
  +   
   												<li	>
   								Some small updates: fixed Swing location after Java 2(tm) release, license update and
  -
  -    small cleanups (SM)
  +     small cleanups (SM)
   						</li>
  -									
  -
  +									 
   
   						</ul>
  -									
  -
  -
  +									 
   						</p>
   							  									 				<p	>
  -								
  -
  -
  +								 
   												<b	>
   								Apache JMeter 1.0
   						</b>
  -									 - Dec 15 1998
  -
  -(
  +									 - Dec 15 1998 (
   												<a	 href="mailto:stefano@apache.org">
   								Stefano Mazzocchi
   						</a>
  -									)
  -
  +									) 
   
   												<ul	>
   								
  -
  -  
  +   
   												<li	>
   								Initial version. (SM)
   						</li>
  -									
  -
  +									 
   
   						</ul>
  -									
  -
  -
  +									 
   						</p>
   							  		  </blockquote>
   		  </p>
  
  
  
  1.22      +1 -1      jakarta-jmeter/docs/contributing.html
  
  Index: contributing.html
  ===================================================================
  RCS file: /home/cvs/jakarta-jmeter/docs/contributing.html,v
  retrieving revision 1.21
  retrieving revision 1.22
  diff -u -r1.21 -r1.22
  --- contributing.html	6 Mar 2002 01:24:58 -0000	1.21
  +++ contributing.html	7 Mar 2002 23:03:10 -0000	1.22
  @@ -67,7 +67,7 @@
   		  		  </ul>
   	 						  </td>
   						  <td width="80%" align="left" valign="top">
  -						  						  									 <table border="0" cellspacing="0" cellpadding="2">
  +						  						  									 <table border="0" cellspacing="0" cellpadding="2" width="100%">
   		<tr><td bgcolor="#525D76">
   		  <font color="#ffffff" face="arial,helvetica,sanserif">
   			 <a name=""><strong>Contributing To The Jakarta Project</strong></a>
  
  
  
  1.22      +1 -1      jakarta-jmeter/docs/extending.html
  
  Index: extending.html
  ===================================================================
  RCS file: /home/cvs/jakarta-jmeter/docs/extending.html,v
  retrieving revision 1.21
  retrieving revision 1.22
  diff -u -r1.21 -r1.22
  --- extending.html	6 Mar 2002 01:24:58 -0000	1.21
  +++ extending.html	7 Mar 2002 23:03:10 -0000	1.22
  @@ -67,7 +67,7 @@
   		  		  </ul>
   	 						  </td>
   						  <td width="80%" align="left" valign="top">
  -						  						  									 <table border="0" cellspacing="0" cellpadding="2">
  +						  						  									 <table border="0" cellspacing="0" cellpadding="2" width="100%">
   		<tr><td bgcolor="#525D76">
   		  <font color="#ffffff" face="arial,helvetica,sanserif">
   			 <a name=""><strong>Extending JMeter</strong></a>
  
  
  
  1.34      +1 -1      jakarta-jmeter/docs/index.html
  
  Index: index.html
  ===================================================================
  RCS file: /home/cvs/jakarta-jmeter/docs/index.html,v
  retrieving revision 1.33
  retrieving revision 1.34
  diff -u -r1.33 -r1.34
  --- index.html	6 Mar 2002 01:24:58 -0000	1.33
  +++ index.html	7 Mar 2002 23:03:10 -0000	1.34
  @@ -67,7 +67,7 @@
   		  		  </ul>
   	 						  </td>
   						  <td width="80%" align="left" valign="top">
  -						  						  									 <table border="0" cellspacing="0" cellpadding="2">
  +						  						  									 <table border="0" cellspacing="0" cellpadding="2" width="100%">
   		<tr><td bgcolor="#525D76">
   		  <font color="#ffffff" face="arial,helvetica,sanserif">
   			 <a name=""><strong>Apache JMeter</strong></a>
  
  
  
  1.27      +2 -2      jakarta-jmeter/docs/installing.html
  
  Index: installing.html
  ===================================================================
  RCS file: /home/cvs/jakarta-jmeter/docs/installing.html,v
  retrieving revision 1.26
  retrieving revision 1.27
  diff -u -r1.26 -r1.27
  --- installing.html	6 Mar 2002 01:24:58 -0000	1.26
  +++ installing.html	7 Mar 2002 23:03:10 -0000	1.27
  @@ -67,7 +67,7 @@
   		  		  </ul>
   	 						  </td>
   						  <td width="80%" align="left" valign="top">
  -						  						  									 <table border="0" cellspacing="0" cellpadding="2">
  +						  						  									 <table border="0" cellspacing="0" cellpadding="2" width="100%">
   		<tr><td bgcolor="#525D76">
   		  <font color="#ffffff" face="arial,helvetica,sanserif">
   			 <a name=""><strong>requirements</strong></a>
  @@ -197,7 +197,7 @@
   		</td></tr>
   		<tr><td><br/></td></tr>
   	 </table>
  -						  									 <table border="0" cellspacing="0" cellpadding="2">
  +						  									 <table border="0" cellspacing="0" cellpadding="2" width="100%">
   		<tr><td bgcolor="#525D76">
   		  <font color="#ffffff" face="arial,helvetica,sanserif">
   			 <a name=""><strong>Installing Apache JMeter</strong></a>
  
  
  
  1.15      +1 -1      jakarta-jmeter/docs/license.html
  
  Index: license.html
  ===================================================================
  RCS file: /home/cvs/jakarta-jmeter/docs/license.html,v
  retrieving revision 1.14
  retrieving revision 1.15
  diff -u -r1.14 -r1.15
  --- license.html	6 Mar 2002 01:24:58 -0000	1.14
  +++ license.html	7 Mar 2002 23:03:10 -0000	1.15
  @@ -67,7 +67,7 @@
   		  		  </ul>
   	 						  </td>
   						  <td width="80%" align="left" valign="top">
  -						  						  									 <table border="0" cellspacing="0" cellpadding="2">
  +						  						  									 <table border="0" cellspacing="0" cellpadding="2" width="100%">
   		<tr><td bgcolor="#525D76">
   		  <font color="#ffffff" face="arial,helvetica,sanserif">
   			 <a name=""><strong>Apache License</strong></a>
  
  
  
  1.35      +2 -2      jakarta-jmeter/docs/running.html
  
  Index: running.html
  ===================================================================
  RCS file: /home/cvs/jakarta-jmeter/docs/running.html,v
  retrieving revision 1.34
  retrieving revision 1.35
  diff -u -r1.34 -r1.35
  --- running.html	7 Mar 2002 14:19:09 -0000	1.34
  +++ running.html	7 Mar 2002 23:03:10 -0000	1.35
  @@ -67,7 +67,7 @@
   		  		  </ul>
   	 						  </td>
   						  <td width="80%" align="left" valign="top">
  -						  						  									 <table border="0" cellspacing="0" cellpadding="2">
  +						  						  									 <table border="0" cellspacing="0" cellpadding="2" width="100%">
   		<tr><td bgcolor="#525D76">
   		  <font color="#ffffff" face="arial,helvetica,sanserif">
   			 <a name=""><strong>Running Apache JMeter</strong></a>
  @@ -174,7 +174,7 @@
   		</td></tr>
   		<tr><td><br/></td></tr>
   	 </table>
  -						  									 <table border="0" cellspacing="0" cellpadding="2">
  +						  									 <table border="0" cellspacing="0" cellpadding="2" width="100%">
   		<tr><td bgcolor="#525D76">
   		  <font color="#ffffff" face="arial,helvetica,sanserif">
   			 <a name=""><strong>Modifying Properties</strong></a>
  @@ -243,7 +243,7 @@
   												<br	>
   						</br>
   									
  -$Id: running.html,v 1.34 2002/03/07 14:19:09 mstover1 Exp $
  +$Id: running.html,v 1.35 2002/03/07 23:03:10 mstover1 Exp $
   						</font>
   									 
   												<br	>
  
  
  
  1.23      +1 -1      jakarta-jmeter/docs/todo.html
  
  Index: todo.html
  ===================================================================
  RCS file: /home/cvs/jakarta-jmeter/docs/todo.html,v
  retrieving revision 1.22
  retrieving revision 1.23
  diff -u -r1.22 -r1.23
  --- todo.html	6 Mar 2002 01:24:58 -0000	1.22
  +++ todo.html	7 Mar 2002 23:03:10 -0000	1.23
  @@ -67,7 +67,7 @@
   		  		  </ul>
   	 						  </td>
   						  <td width="80%" align="left" valign="top">
  -						  						  									 <table border="0" cellspacing="0" cellpadding="2">
  +						  						  									 <table border="0" cellspacing="0" cellpadding="2" width="100%">
   		<tr><td bgcolor="#525D76">
   		  <font color="#ffffff" face="arial,helvetica,sanserif">
   			 <a name=""><strong>ToDo List</strong></a>
  
  
  
  1.15      +11 -1     jakarta-jmeter/docs/extending/index.html
  
  Index: index.html
  ===================================================================
  RCS file: /home/cvs/jakarta-jmeter/docs/extending/index.html,v
  retrieving revision 1.14
  retrieving revision 1.15
  diff -u -r1.14 -r1.15
  --- index.html	6 Mar 2002 01:24:59 -0000	1.14
  +++ index.html	7 Mar 2002 23:03:11 -0000	1.15
  @@ -67,7 +67,7 @@
   		  		  </ul>
   	 						  </td>
   						  <td width="80%" align="left" valign="top">
  -						  						  									 <table border="0" cellspacing="0" cellpadding="2">
  +						  						  									 <table border="0" cellspacing="0" cellpadding="2" width="100%">
   		<tr><td bgcolor="#525D76">
   		  <font color="#ffffff" face="arial,helvetica,sanserif">
   			 <a name=""><strong>Extending JMeter</strong></a>
  @@ -87,7 +87,17 @@
   						</p>
   							  									 				<ul	>
   								
  +	
  +												<li	>
  +												<a	 href="JMeter Extension Scenario.html">
  +								A good overview of the process of extending JMeter
  +						</a>
  +							</li>
  +									
   
  +												<p	>
  +						</p>
  +									
   	
   												<li	>
   												<a	 href="#timer">
  
  
  
  No                   revision
  
  
  No                   revision
  
  
  No                   revision
  
  
  1.7       +3 -3      jakarta-jmeter/docs/user_manual/assertions.html
  
  Index: assertions.html
  ===================================================================
  RCS file: /home/cvs/jakarta-jmeter/docs/user_manual/assertions.html,v
  retrieving revision 1.6
  retrieving revision 1.7
  diff -u -r1.6 -r1.7
  --- assertions.html	6 Mar 2002 01:24:59 -0000	1.6
  +++ assertions.html	7 Mar 2002 23:03:11 -0000	1.7
  @@ -67,7 +67,7 @@
   		  		  </ul>
   	 						  </td>
   						  <td width="80%" align="left" valign="top">
  -						  						  									 <table border="0" cellspacing="0" cellpadding="2">
  +						  						  									 <table border="0" cellspacing="0" cellpadding="2" width="100%">
   		<tr><td bgcolor="#525D76">
   		  <font color="#ffffff" face="arial,helvetica,sanserif">
   			 <a name=""><strong>Assertions</strong></a>
  @@ -105,7 +105,7 @@
   		</td></tr>
   		<tr><td><br/></td></tr>
   	 </table>
  -						  									 <table border="0" cellspacing="0" cellpadding="2">
  +						  									 <table border="0" cellspacing="0" cellpadding="2" width="100%">
   		<tr><td bgcolor="#525D76">
   		  <font color="#ffffff" face="arial,helvetica,sanserif">
   			 <a name=""><strong>Assertion Listener</strong></a>
  @@ -126,7 +126,7 @@
   		</td></tr>
   		<tr><td><br/></td></tr>
   	 </table>
  -						  									 <table border="0" cellspacing="0" cellpadding="2">
  +						  									 <table border="0" cellspacing="0" cellpadding="2" width="100%">
   		<tr><td bgcolor="#525D76">
   		  <font color="#ffffff" face="arial,helvetica,sanserif">
   			 <a name=""><strong>Example test tree</strong></a>
  
  
  
  1.10      +2 -2      jakarta-jmeter/docs/user_manual/ftp_test.html
  
  Index: ftp_test.html
  ===================================================================
  RCS file: /home/cvs/jakarta-jmeter/docs/user_manual/ftp_test.html,v
  retrieving revision 1.9
  retrieving revision 1.10
  diff -u -r1.9 -r1.10
  --- ftp_test.html	6 Mar 2002 01:24:59 -0000	1.9
  +++ ftp_test.html	7 Mar 2002 23:03:11 -0000	1.10
  @@ -67,7 +67,7 @@
   		  		  </ul>
   	 						  </td>
   						  <td width="80%" align="left" valign="top">
  -						  						  									 <table border="0" cellspacing="0" cellpadding="2">
  +						  						  									 <table border="0" cellspacing="0" cellpadding="2" width="100%">
   		<tr><td bgcolor="#525D76">
   		  <font color="#ffffff" face="arial,helvetica,sanserif">
   			 <a name=""><strong>FTP Test Controller</strong></a>
  @@ -128,7 +128,7 @@
   		</td></tr>
   		<tr><td><br/></td></tr>
   	 </table>
  -						  									 <table border="0" cellspacing="0" cellpadding="2">
  +						  									 <table border="0" cellspacing="0" cellpadding="2" width="100%">
   		<tr><td bgcolor="#525D76">
   		  <font color="#ffffff" face="arial,helvetica,sanserif">
   			 <a name=""><strong>Example test tree</strong></a>
  
  
  
  1.16      +1 -1      jakarta-jmeter/docs/user_manual/index.html
  
  Index: index.html
  ===================================================================
  RCS file: /home/cvs/jakarta-jmeter/docs/user_manual/index.html,v
  retrieving revision 1.15
  retrieving revision 1.16
  diff -u -r1.15 -r1.16
  --- index.html	6 Mar 2002 01:24:59 -0000	1.15
  +++ index.html	7 Mar 2002 23:03:11 -0000	1.16
  @@ -67,7 +67,7 @@
   		  		  </ul>
   	 						  </td>
   						  <td width="80%" align="left" valign="top">
  -						  						  									 <table border="0" cellspacing="0" cellpadding="2">
  +						  						  									 <table border="0" cellspacing="0" cellpadding="2" width="100%">
   		<tr><td bgcolor="#525D76">
   		  <font color="#ffffff" face="arial,helvetica,sanserif">
   			 <a name=""><strong>Overview</strong></a>
  
  
  
  1.12      +2 -2      jakarta-jmeter/docs/user_manual/interleave.html
  
  Index: interleave.html
  ===================================================================
  RCS file: /home/cvs/jakarta-jmeter/docs/user_manual/interleave.html,v
  retrieving revision 1.11
  retrieving revision 1.12
  diff -u -r1.11 -r1.12
  --- interleave.html	6 Mar 2002 01:24:59 -0000	1.11
  +++ interleave.html	7 Mar 2002 23:03:11 -0000	1.12
  @@ -67,7 +67,7 @@
   		  		  </ul>
   	 						  </td>
   						  <td width="80%" align="left" valign="top">
  -						  						  									 <table border="0" cellspacing="0" cellpadding="2">
  +						  						  									 <table border="0" cellspacing="0" cellpadding="2" width="100%">
   		<tr><td bgcolor="#525D76">
   		  <font color="#ffffff" face="arial,helvetica,sanserif">
   			 <a name=""><strong>Interleave Controller</strong></a>
  @@ -110,7 +110,7 @@
   		</td></tr>
   		<tr><td><br/></td></tr>
   	 </table>
  -						  									 <table border="0" cellspacing="0" cellpadding="2">
  +						  									 <table border="0" cellspacing="0" cellpadding="2" width="100%">
   		<tr><td bgcolor="#525D76">
   		  <font color="#ffffff" face="arial,helvetica,sanserif">
   			 <a name=""><strong>Example test tree</strong></a>
  
  
  
  1.10      +2 -2      jakarta-jmeter/docs/user_manual/jdbc_test.html
  
  Index: jdbc_test.html
  ===================================================================
  RCS file: /home/cvs/jakarta-jmeter/docs/user_manual/jdbc_test.html,v
  retrieving revision 1.9
  retrieving revision 1.10
  diff -u -r1.9 -r1.10
  --- jdbc_test.html	6 Mar 2002 01:24:59 -0000	1.9
  +++ jdbc_test.html	7 Mar 2002 23:03:11 -0000	1.10
  @@ -67,7 +67,7 @@
   		  		  </ul>
   	 						  </td>
   						  <td width="80%" align="left" valign="top">
  -						  						  									 <table border="0" cellspacing="0" cellpadding="2">
  +						  						  									 <table border="0" cellspacing="0" cellpadding="2" width="100%">
   		<tr><td bgcolor="#525D76">
   		  <font color="#ffffff" face="arial,helvetica,sanserif">
   			 <a name=""><strong>JDBC  Test Controller</strong></a>
  @@ -170,7 +170,7 @@
   		</td></tr>
   		<tr><td><br/></td></tr>
   	 </table>
  -						  									 <table border="0" cellspacing="0" cellpadding="2">
  +						  									 <table border="0" cellspacing="0" cellpadding="2" width="100%">
   		<tr><td bgcolor="#525D76">
   		  <font color="#ffffff" face="arial,helvetica,sanserif">
   			 <a name=""><strong>Example test tree</strong></a>
  
  
  
  1.12      +1 -1      jakarta-jmeter/docs/user_manual/logical_controllers.html
  
  Index: logical_controllers.html
  ===================================================================
  RCS file: /home/cvs/jakarta-jmeter/docs/user_manual/logical_controllers.html,v
  retrieving revision 1.11
  retrieving revision 1.12
  diff -u -r1.11 -r1.12
  --- logical_controllers.html	6 Mar 2002 01:24:59 -0000	1.11
  +++ logical_controllers.html	7 Mar 2002 23:03:11 -0000	1.12
  @@ -67,7 +67,7 @@
   		  		  </ul>
   	 						  </td>
   						  <td width="80%" align="left" valign="top">
  -						  						  									 <table border="0" cellspacing="0" cellpadding="2">
  +						  						  									 <table border="0" cellspacing="0" cellpadding="2" width="100%">
   		<tr><td bgcolor="#525D76">
   		  <font color="#ffffff" face="arial,helvetica,sanserif">
   			 <a name=""><strong>Logical Controllers</strong></a>
  
  
  
  1.12      +2 -2      jakarta-jmeter/docs/user_manual/loop_controller.html
  
  Index: loop_controller.html
  ===================================================================
  RCS file: /home/cvs/jakarta-jmeter/docs/user_manual/loop_controller.html,v
  retrieving revision 1.11
  retrieving revision 1.12
  diff -u -r1.11 -r1.12
  --- loop_controller.html	6 Mar 2002 01:24:59 -0000	1.11
  +++ loop_controller.html	7 Mar 2002 23:03:11 -0000	1.12
  @@ -67,7 +67,7 @@
   		  		  </ul>
   	 						  </td>
   						  <td width="80%" align="left" valign="top">
  -						  						  									 <table border="0" cellspacing="0" cellpadding="2">
  +						  						  									 <table border="0" cellspacing="0" cellpadding="2" width="100%">
   		<tr><td bgcolor="#525D76">
   		  <font color="#ffffff" face="arial,helvetica,sanserif">
   			 <a name=""><strong>Loop Controller</strong></a>
  @@ -93,7 +93,7 @@
   		</td></tr>
   		<tr><td><br/></td></tr>
   	 </table>
  -						  									 <table border="0" cellspacing="0" cellpadding="2">
  +						  									 <table border="0" cellspacing="0" cellpadding="2" width="100%">
   		<tr><td bgcolor="#525D76">
   		  <font color="#ffffff" face="arial,helvetica,sanserif">
   			 <a name=""><strong>Example test tree</strong></a>
  
  
  
  1.12      +3 -3      jakarta-jmeter/docs/user_manual/modification_manager.html
  
  Index: modification_manager.html
  ===================================================================
  RCS file: /home/cvs/jakarta-jmeter/docs/user_manual/modification_manager.html,v
  retrieving revision 1.11
  retrieving revision 1.12
  diff -u -r1.11 -r1.12
  --- modification_manager.html	6 Mar 2002 01:24:59 -0000	1.11
  +++ modification_manager.html	7 Mar 2002 23:03:11 -0000	1.12
  @@ -67,7 +67,7 @@
   		  		  </ul>
   	 						  </td>
   						  <td width="80%" align="left" valign="top">
  -						  						  									 <table border="0" cellspacing="0" cellpadding="2">
  +						  						  									 <table border="0" cellspacing="0" cellpadding="2" width="100%">
   		<tr><td bgcolor="#525D76">
   		  <font color="#ffffff" face="arial,helvetica,sanserif">
   			 <a name=""><strong>Modification Manager</strong></a>
  @@ -100,7 +100,7 @@
   		</td></tr>
   		<tr><td><br/></td></tr>
   	 </table>
  -						  									 <table border="0" cellspacing="0" cellpadding="2">
  +						  									 <table border="0" cellspacing="0" cellpadding="2" width="100%">
   		<tr><td bgcolor="#525D76">
   		  <font color="#ffffff" face="arial,helvetica,sanserif">
   			 <a name=""><strong>Response Based Modifier: HTML Link/Form Modifier</strong></a>
  @@ -199,7 +199,7 @@
   		</td></tr>
   		<tr><td><br/></td></tr>
   	 </table>
  -						  									 <table border="0" cellspacing="0" cellpadding="2">
  +						  									 <table border="0" cellspacing="0" cellpadding="2" width="100%">
   		<tr><td bgcolor="#525D76">
   		  <font color="#ffffff" face="arial,helvetica,sanserif">
   			 <a name=""><strong>Example test tree</strong></a>
  
  
  
  1.12      +2 -2      jakarta-jmeter/docs/user_manual/once_only.html
  
  Index: once_only.html
  ===================================================================
  RCS file: /home/cvs/jakarta-jmeter/docs/user_manual/once_only.html,v
  retrieving revision 1.11
  retrieving revision 1.12
  diff -u -r1.11 -r1.12
  --- once_only.html	6 Mar 2002 01:24:59 -0000	1.11
  +++ once_only.html	7 Mar 2002 23:03:11 -0000	1.12
  @@ -67,7 +67,7 @@
   		  		  </ul>
   	 						  </td>
   						  <td width="80%" align="left" valign="top">
  -						  						  									 <table border="0" cellspacing="0" cellpadding="2">
  +						  						  									 <table border="0" cellspacing="0" cellpadding="2" width="100%">
   		<tr><td bgcolor="#525D76">
   		  <font color="#ffffff" face="arial,helvetica,sanserif">
   			 <a name=""><strong>Once-Only Controller</strong></a>
  @@ -99,7 +99,7 @@
   		</td></tr>
   		<tr><td><br/></td></tr>
   	 </table>
  -						  									 <table border="0" cellspacing="0" cellpadding="2">
  +						  									 <table border="0" cellspacing="0" cellpadding="2" width="100%">
   		<tr><td bgcolor="#525D76">
   		  <font color="#ffffff" face="arial,helvetica,sanserif">
   			 <a name=""><strong>Example test tree</strong></a>
  
  
  
  1.14      +5 -5      jakarta-jmeter/docs/user_manual/proxy_server.html
  
  Index: proxy_server.html
  ===================================================================
  RCS file: /home/cvs/jakarta-jmeter/docs/user_manual/proxy_server.html,v
  retrieving revision 1.13
  retrieving revision 1.14
  diff -u -r1.13 -r1.14
  --- proxy_server.html	6 Mar 2002 01:24:59 -0000	1.13
  +++ proxy_server.html	7 Mar 2002 23:03:11 -0000	1.14
  @@ -67,7 +67,7 @@
   		  		  </ul>
   	 						  </td>
   						  <td width="80%" align="left" valign="top">
  -						  						  									 <table border="0" cellspacing="0" cellpadding="2">
  +						  						  									 <table border="0" cellspacing="0" cellpadding="2" width="100%">
   		<tr><td bgcolor="#525D76">
   		  <font color="#ffffff" face="arial,helvetica,sanserif">
   			 <a name=""><strong>HTTP Proxy Server to record browser requests</strong></a>
  @@ -98,7 +98,7 @@
   		</td></tr>
   		<tr><td><br/></td></tr>
   	 </table>
  -						  									 <table border="0" cellspacing="0" cellpadding="2">
  +						  									 <table border="0" cellspacing="0" cellpadding="2" width="100%">
   		<tr><td bgcolor="#525D76">
   		  <font color="#ffffff" face="arial,helvetica,sanserif">
   			 <a name=""><strong>Configuring the Proxy Server</strong></a>
  @@ -184,7 +184,7 @@
   		</td></tr>
   		<tr><td><br/></td></tr>
   	 </table>
  -						  									 <table border="0" cellspacing="0" cellpadding="2">
  +						  									 <table border="0" cellspacing="0" cellpadding="2" width="100%">
   		<tr><td bgcolor="#525D76">
   		  <font color="#ffffff" face="arial,helvetica,sanserif">
   			 <a name=""><strong>Where do the samples get recorded to?</strong></a>
  @@ -217,7 +217,7 @@
   		</td></tr>
   		<tr><td><br/></td></tr>
   	 </table>
  -						  									 <table border="0" cellspacing="0" cellpadding="2">
  +						  									 <table border="0" cellspacing="0" cellpadding="2" width="100%">
   		<tr><td bgcolor="#525D76">
   		  <font color="#ffffff" face="arial,helvetica,sanserif">
   			 <a name=""><strong>All Done</strong></a>
  @@ -239,7 +239,7 @@
   		</td></tr>
   		<tr><td><br/></td></tr>
   	 </table>
  -						  									 <table border="0" cellspacing="0" cellpadding="2">
  +						  									 <table border="0" cellspacing="0" cellpadding="2" width="100%">
   		<tr><td bgcolor="#525D76">
   		  <font color="#ffffff" face="arial,helvetica,sanserif">
   			 <a name=""><strong>Example test tree</strong></a>
  
  
  
  1.11      +1 -1      jakarta-jmeter/docs/user_manual/ready_components.html
  
  Index: ready_components.html
  ===================================================================
  RCS file: /home/cvs/jakarta-jmeter/docs/user_manual/ready_components.html,v
  retrieving revision 1.10
  retrieving revision 1.11
  diff -u -r1.10 -r1.11
  --- ready_components.html	6 Mar 2002 01:24:59 -0000	1.10
  +++ ready_components.html	7 Mar 2002 23:03:11 -0000	1.11
  @@ -67,7 +67,7 @@
   		  		  </ul>
   	 						  </td>
   						  <td width="80%" align="left" valign="top">
  -						  						  									 <table border="0" cellspacing="0" cellpadding="2">
  +						  						  									 <table border="0" cellspacing="0" cellpadding="2" width="100%">
   		<tr><td bgcolor="#525D76">
   		  <font color="#ffffff" face="arial,helvetica,sanserif">
   			 <a name=""><strong>Built-in Components</strong></a>
  
  
  
  1.13      +3 -3      jakarta-jmeter/docs/user_manual/rmi.html
  
  Index: rmi.html
  ===================================================================
  RCS file: /home/cvs/jakarta-jmeter/docs/user_manual/rmi.html,v
  retrieving revision 1.12
  retrieving revision 1.13
  diff -u -r1.12 -r1.13
  --- rmi.html	6 Mar 2002 01:24:59 -0000	1.12
  +++ rmi.html	7 Mar 2002 23:03:11 -0000	1.13
  @@ -67,7 +67,7 @@
   		  		  </ul>
   	 						  </td>
   						  <td width="80%" align="left" valign="top">
  -						  						  									 <table border="0" cellspacing="0" cellpadding="2">
  +						  						  									 <table border="0" cellspacing="0" cellpadding="2" width="100%">
   		<tr><td bgcolor="#525D76">
   		  <font color="#ffffff" face="arial,helvetica,sanserif">
   			 <a name=""><strong>JMeter over RMI</strong></a>
  @@ -127,7 +127,7 @@
   		</td></tr>
   		<tr><td><br/></td></tr>
   	 </table>
  -						  									 <table border="0" cellspacing="0" cellpadding="2">
  +						  									 <table border="0" cellspacing="0" cellpadding="2" width="100%">
   		<tr><td bgcolor="#525D76">
   		  <font color="#ffffff" face="arial,helvetica,sanserif">
   			 <a name=""><strong>Running the JMeter engine on the server</strong></a>
  @@ -177,7 +177,7 @@
   		</td></tr>
   		<tr><td><br/></td></tr>
   	 </table>
  -						  									 <table border="0" cellspacing="0" cellpadding="2">
  +						  									 <table border="0" cellspacing="0" cellpadding="2" width="100%">
   		<tr><td bgcolor="#525D76">
   		  <font color="#ffffff" face="arial,helvetica,sanserif">
   			 <a name=""><strong>Running the JMeter client</strong></a>
  
  
  
  1.12      +1 -1      jakarta-jmeter/docs/user_manual/running.html
  
  Index: running.html
  ===================================================================
  RCS file: /home/cvs/jakarta-jmeter/docs/user_manual/running.html,v
  retrieving revision 1.11
  retrieving revision 1.12
  diff -u -r1.11 -r1.12
  --- running.html	6 Mar 2002 01:24:59 -0000	1.11
  +++ running.html	7 Mar 2002 23:03:11 -0000	1.12
  @@ -67,7 +67,7 @@
   		  		  </ul>
   	 						  </td>
   						  <td width="80%" align="left" valign="top">
  -						  						  									 <table border="0" cellspacing="0" cellpadding="2">
  +						  						  									 <table border="0" cellspacing="0" cellpadding="2" width="100%">
   		<tr><td bgcolor="#525D76">
   		  <font color="#ffffff" face="arial,helvetica,sanserif">
   			 <a name=""><strong>Running a TestPlan</strong></a>
  
  
  
  1.12      +1 -1      jakarta-jmeter/docs/user_manual/saving.html
  
  Index: saving.html
  ===================================================================
  RCS file: /home/cvs/jakarta-jmeter/docs/user_manual/saving.html,v
  retrieving revision 1.11
  retrieving revision 1.12
  diff -u -r1.11 -r1.12
  --- saving.html	6 Mar 2002 01:24:59 -0000	1.11
  +++ saving.html	7 Mar 2002 23:03:11 -0000	1.12
  @@ -67,7 +67,7 @@
   		  		  </ul>
   	 						  </td>
   						  <td width="80%" align="left" valign="top">
  -						  						  									 <table border="0" cellspacing="0" cellpadding="2">
  +						  						  									 <table border="0" cellspacing="0" cellpadding="2" width="100%">
   		<tr><td bgcolor="#525D76">
   		  <font color="#ffffff" face="arial,helvetica,sanserif">
   			 <a name=""><strong>Saving Test Elements</strong></a>
  
  
  
  1.8       +3 -3      jakarta-jmeter/docs/user_manual/sslmanager.html
  
  Index: sslmanager.html
  ===================================================================
  RCS file: /home/cvs/jakarta-jmeter/docs/user_manual/sslmanager.html,v
  retrieving revision 1.7
  retrieving revision 1.8
  diff -u -r1.7 -r1.8
  --- sslmanager.html	6 Mar 2002 01:24:59 -0000	1.7
  +++ sslmanager.html	7 Mar 2002 23:03:11 -0000	1.8
  @@ -67,7 +67,7 @@
   		  		  </ul>
   	 						  </td>
   						  <td width="80%" align="left" valign="top">
  -						  						  									 <table border="0" cellspacing="0" cellpadding="2">
  +						  						  									 <table border="0" cellspacing="0" cellpadding="2" width="100%">
   		<tr><td bgcolor="#525D76">
   		  <font color="#ffffff" face="arial,helvetica,sanserif">
   			 <a name=""><strong>What is the SSL Manager</strong></a>
  @@ -90,7 +90,7 @@
   		</td></tr>
   		<tr><td><br/></td></tr>
   	 </table>
  -						  									 <table border="0" cellspacing="0" cellpadding="2">
  +						  									 <table border="0" cellspacing="0" cellpadding="2" width="100%">
   		<tr><td bgcolor="#525D76">
   		  <font color="#ffffff" face="arial,helvetica,sanserif">
   			 <a name=""><strong>Choosing a Client Certificate</strong></a>
  @@ -137,7 +137,7 @@
   		</td></tr>
   		<tr><td><br/></td></tr>
   	 </table>
  -						  									 <table border="0" cellspacing="0" cellpadding="2">
  +						  									 <table border="0" cellspacing="0" cellpadding="2" width="100%">
   		<tr><td bgcolor="#525D76">
   		  <font color="#ffffff" face="arial,helvetica,sanserif">
   			 <a name=""><strong>Things to Look Out For</strong></a>
  
  
  
  1.12      +2 -2      jakarta-jmeter/docs/user_manual/test_samples.html
  
  Index: test_samples.html
  ===================================================================
  RCS file: /home/cvs/jakarta-jmeter/docs/user_manual/test_samples.html,v
  retrieving revision 1.11
  retrieving revision 1.12
  diff -u -r1.11 -r1.12
  --- test_samples.html	6 Mar 2002 01:24:59 -0000	1.11
  +++ test_samples.html	7 Mar 2002 23:03:11 -0000	1.12
  @@ -67,7 +67,7 @@
   		  		  </ul>
   	 						  </td>
   						  <td width="80%" align="left" valign="top">
  -						  						  									 <table border="0" cellspacing="0" cellpadding="2">
  +						  						  									 <table border="0" cellspacing="0" cellpadding="2" width="100%">
   		<tr><td bgcolor="#525D76">
   		  <font color="#ffffff" face="arial,helvetica,sanserif">
   			 <a name=""><strong>Generative Controllers</strong></a>
  @@ -97,7 +97,7 @@
   		</td></tr>
   		<tr><td><br/></td></tr>
   	 </table>
  -						  									 <table border="0" cellspacing="0" cellpadding="2">
  +						  									 <table border="0" cellspacing="0" cellpadding="2" width="100%">
   		<tr><td bgcolor="#525D76">
   		  <font color="#ffffff" face="arial,helvetica,sanserif">
   			 <a name=""><strong>Currently supported protocols</strong></a>
  
  
  
  1.13      +3 -3      jakarta-jmeter/docs/user_manual/threadgroups.html
  
  Index: threadgroups.html
  ===================================================================
  RCS file: /home/cvs/jakarta-jmeter/docs/user_manual/threadgroups.html,v
  retrieving revision 1.12
  retrieving revision 1.13
  diff -u -r1.12 -r1.13
  --- threadgroups.html	6 Mar 2002 01:24:59 -0000	1.12
  +++ threadgroups.html	7 Mar 2002 23:03:11 -0000	1.13
  @@ -67,7 +67,7 @@
   		  		  </ul>
   	 						  </td>
   						  <td width="80%" align="left" valign="top">
  -						  						  									 <table border="0" cellspacing="0" cellpadding="2">
  +						  						  									 <table border="0" cellspacing="0" cellpadding="2" width="100%">
   		<tr><td bgcolor="#525D76">
   		  <font color="#ffffff" face="arial,helvetica,sanserif">
   			 <a name=""><strong>ThreadGroups</strong></a>
  @@ -109,7 +109,7 @@
   		</td></tr>
   		<tr><td><br/></td></tr>
   	 </table>
  -						  									 <table border="0" cellspacing="0" cellpadding="2">
  +						  									 <table border="0" cellspacing="0" cellpadding="2" width="100%">
   		<tr><td bgcolor="#525D76">
   		  <font color="#ffffff" face="arial,helvetica,sanserif">
   			 <a name=""><strong>Logic Layering</strong></a>
  @@ -185,7 +185,7 @@
   		</td></tr>
   		<tr><td><br/></td></tr>
   	 </table>
  -						  									 <table border="0" cellspacing="0" cellpadding="2">
  +						  									 <table border="0" cellspacing="0" cellpadding="2" width="100%">
   		<tr><td bgcolor="#525D76">
   		  <font color="#ffffff" face="arial,helvetica,sanserif">
   			 <a name=""><strong>Ramp-Up</strong></a>
  
  
  
  1.12      +1 -1      jakarta-jmeter/docs/user_manual/timers.html
  
  Index: timers.html
  ===================================================================
  RCS file: /home/cvs/jakarta-jmeter/docs/user_manual/timers.html,v
  retrieving revision 1.11
  retrieving revision 1.12
  diff -u -r1.11 -r1.12
  --- timers.html	6 Mar 2002 01:24:59 -0000	1.11
  +++ timers.html	7 Mar 2002 23:03:11 -0000	1.12
  @@ -67,7 +67,7 @@
   		  		  </ul>
   	 						  </td>
   						  <td width="80%" align="left" valign="top">
  -						  						  									 <table border="0" cellspacing="0" cellpadding="2">
  +						  						  									 <table border="0" cellspacing="0" cellpadding="2" width="100%">
   		<tr><td bgcolor="#525D76">
   		  <font color="#ffffff" face="arial,helvetica,sanserif">
   			 <a name=""><strong>Timers</strong></a>
  
  
  
  1.12      +5 -5      jakarta-jmeter/docs/user_manual/visualizers.html
  
  Index: visualizers.html
  ===================================================================
  RCS file: /home/cvs/jakarta-jmeter/docs/user_manual/visualizers.html,v
  retrieving revision 1.11
  retrieving revision 1.12
  diff -u -r1.11 -r1.12
  --- visualizers.html	6 Mar 2002 01:24:59 -0000	1.11
  +++ visualizers.html	7 Mar 2002 23:03:11 -0000	1.12
  @@ -67,7 +67,7 @@
   		  		  </ul>
   	 						  </td>
   						  <td width="80%" align="left" valign="top">
  -						  						  									 <table border="0" cellspacing="0" cellpadding="2">
  +						  						  									 <table border="0" cellspacing="0" cellpadding="2" width="100%">
   		<tr><td bgcolor="#525D76">
   		  <font color="#ffffff" face="arial,helvetica,sanserif">
   			 <a name=""><strong>Visualizers</strong></a>
  @@ -88,7 +88,7 @@
   		</td></tr>
   		<tr><td><br/></td></tr>
   	 </table>
  -						  									 <table border="0" cellspacing="0" cellpadding="2">
  +						  									 <table border="0" cellspacing="0" cellpadding="2" width="100%">
   		<tr><td bgcolor="#525D76">
   		  <font color="#ffffff" face="arial,helvetica,sanserif">
   			 <a name=""><strong>Graphing Visualizer</strong></a>
  @@ -109,7 +109,7 @@
   		</td></tr>
   		<tr><td><br/></td></tr>
   	 </table>
  -						  									 <table border="0" cellspacing="0" cellpadding="2">
  +						  									 <table border="0" cellspacing="0" cellpadding="2" width="100%">
   		<tr><td bgcolor="#525D76">
   		  <font color="#ffffff" face="arial,helvetica,sanserif">
   			 <a name=""><strong>View Results Visualizer</strong></a>
  @@ -133,7 +133,7 @@
   		</td></tr>
   		<tr><td><br/></td></tr>
   	 </table>
  -						  									 <table border="0" cellspacing="0" cellpadding="2">
  +						  									 <table border="0" cellspacing="0" cellpadding="2" width="100%">
   		<tr><td bgcolor="#525D76">
   		  <font color="#ffffff" face="arial,helvetica,sanserif">
   			 <a name=""><strong>File Reporter</strong></a>
  @@ -158,7 +158,7 @@
   		</td></tr>
   		<tr><td><br/></td></tr>
   	 </table>
  -						  									 <table border="0" cellspacing="0" cellpadding="2">
  +						  									 <table border="0" cellspacing="0" cellpadding="2" width="100%">
   		<tr><td bgcolor="#525D76">
   		  <font color="#ffffff" face="arial,helvetica,sanserif">
   			 <a name=""><strong>Spline Visualizer</strong></a>
  
  
  
  1.10      +2 -2      jakarta-jmeter/docs/user_manual/web_test.html
  
  Index: web_test.html
  ===================================================================
  RCS file: /home/cvs/jakarta-jmeter/docs/user_manual/web_test.html,v
  retrieving revision 1.9
  retrieving revision 1.10
  diff -u -r1.9 -r1.10
  --- web_test.html	6 Mar 2002 01:24:59 -0000	1.9
  +++ web_test.html	7 Mar 2002 23:03:11 -0000	1.10
  @@ -67,7 +67,7 @@
   		  		  </ul>
   	 						  </td>
   						  <td width="80%" align="left" valign="top">
  -						  						  									 <table border="0" cellspacing="0" cellpadding="2">
  +						  						  									 <table border="0" cellspacing="0" cellpadding="2" width="100%">
   		<tr><td bgcolor="#525D76">
   		  <font color="#ffffff" face="arial,helvetica,sanserif">
   			 <a name=""><strong>Web Test Controller</strong></a>
  @@ -183,7 +183,7 @@
   		</td></tr>
   		<tr><td><br/></td></tr>
   	 </table>
  -						  									 <table border="0" cellspacing="0" cellpadding="2">
  +						  									 <table border="0" cellspacing="0" cellpadding="2" width="100%">
   		<tr><td bgcolor="#525D76">
   		  <font color="#ffffff" face="arial,helvetica,sanserif">
   			 <a name=""><strong>Example Web Test</strong></a>
  
  
  
  1.12      +5 -5      jakarta-jmeter/docs/usermanual/best-practices.html
  
  Index: best-practices.html
  ===================================================================
  RCS file: /home/cvs/jakarta-jmeter/docs/usermanual/best-practices.html,v
  retrieving revision 1.11
  retrieving revision 1.12
  diff -u -r1.11 -r1.12
  --- best-practices.html	7 Mar 2002 14:19:09 -0000	1.11
  +++ best-practices.html	7 Mar 2002 23:03:12 -0000	1.12
  @@ -65,7 +65,7 @@
   		  		  </ul>
   	 						  </td>
   						  <td width="80%" align="left" valign="top">
  -						  						  									 <table border="0" cellspacing="0" cellpadding="2">
  +						  						  									 <table border="0" cellspacing="0" cellpadding="2" width="100%">
   		<tr><td bgcolor="#525D76">
   		  <font color="#ffffff" face="arial,helvetica,sanserif">
   			 <a name="best_practices"><strong>11. Best Practices</strong></a>
  @@ -78,7 +78,7 @@
   		</td></tr>
   		<tr><td><br/></td></tr>
   	 </table>
  -						  									 <table border="0" cellspacing="0" cellpadding="2">
  +						  									 <table border="0" cellspacing="0" cellpadding="2" width="100%">
   		<tr><td bgcolor="#525D76">
   		  <font color="#ffffff" face="arial,helvetica,sanserif">
   			 <a name="limit_threads"><strong>11.1 Limit the Number of Threads</strong></a>
  @@ -104,7 +104,7 @@
   		</td></tr>
   		<tr><td><br/></td></tr>
   	 </table>
  -						  									 <table border="0" cellspacing="0" cellpadding="2">
  +						  									 <table border="0" cellspacing="0" cellpadding="2" width="100%">
   		<tr><td bgcolor="#525D76">
   		  <font color="#ffffff" face="arial,helvetica,sanserif">
   			 <a name="put_cookie_manager"><strong>11.2 Where to Put the Cookie Manager</strong></a>
  @@ -125,7 +125,7 @@
   		</td></tr>
   		<tr><td><br/></td></tr>
   	 </table>
  -						  									 <table border="0" cellspacing="0" cellpadding="2">
  +						  									 <table border="0" cellspacing="0" cellpadding="2" width="100%">
   		<tr><td bgcolor="#525D76">
   		  <font color="#ffffff" face="arial,helvetica,sanserif">
   			 <a name="put_auth_manager"><strong>11.3 Where to Put the Authorization Manager</strong></a>
  @@ -146,7 +146,7 @@
   		</td></tr>
   		<tr><td><br/></td></tr>
   	 </table>
  -						  									 <table border="0" cellspacing="0" cellpadding="2">
  +						  									 <table border="0" cellspacing="0" cellpadding="2" width="100%">
   		<tr><td bgcolor="#525D76">
   		  <font color="#ffffff" face="arial,helvetica,sanserif">
   			 <a name="proxy_server"><strong>11.4 Using the Proxy Server</strong></a>
  
  
  
  1.11      +1 -1      jakarta-jmeter/docs/usermanual/boss.html
  
  Index: boss.html
  ===================================================================
  RCS file: /home/cvs/jakarta-jmeter/docs/usermanual/boss.html,v
  retrieving revision 1.10
  retrieving revision 1.11
  diff -u -r1.10 -r1.11
  --- boss.html	6 Mar 2002 03:52:15 -0000	1.10
  +++ boss.html	7 Mar 2002 23:03:12 -0000	1.11
  @@ -65,7 +65,7 @@
   		  		  </ul>
   	 						  </td>
   						  <td width="80%" align="left" valign="top">
  -						  						  									 <table border="0" cellspacing="0" cellpadding="2">
  +						  						  									 <table border="0" cellspacing="0" cellpadding="2" width="100%">
   		<tr><td bgcolor="#525D76">
   		  <font color="#ffffff" face="arial,helvetica,sanserif">
   			 <a name="boss"><strong>12. Help! My boss wants me to load test our web app!</strong></a>
  
  
  
  1.11      +3 -3      jakarta-jmeter/docs/usermanual/build-adv-web-test-plan.html
  
  Index: build-adv-web-test-plan.html
  ===================================================================
  RCS file: /home/cvs/jakarta-jmeter/docs/usermanual/build-adv-web-test-plan.html,v
  retrieving revision 1.10
  retrieving revision 1.11
  diff -u -r1.10 -r1.11
  --- build-adv-web-test-plan.html	6 Mar 2002 03:52:15 -0000	1.10
  +++ build-adv-web-test-plan.html	7 Mar 2002 23:03:12 -0000	1.11
  @@ -65,7 +65,7 @@
   		  		  </ul>
   	 						  </td>
   						  <td width="80%" align="left" valign="top">
  -						  						  									 <table border="0" cellspacing="0" cellpadding="2">
  +						  						  									 <table border="0" cellspacing="0" cellpadding="2" width="100%">
   		<tr><td bgcolor="#525D76">
   		  <font color="#ffffff" face="arial,helvetica,sanserif">
   			 <a name="building"><strong>6. Building an Advanced Web Test Plan</strong></a>
  @@ -111,7 +111,7 @@
   		</td></tr>
   		<tr><td><br/></td></tr>
   	 </table>
  -						  									 <table border="0" cellspacing="0" cellpadding="2">
  +						  									 <table border="0" cellspacing="0" cellpadding="2" width="100%">
   		<tr><td bgcolor="#525D76">
   		  <font color="#ffffff" face="arial,helvetica,sanserif">
   			 <a name="session_url_rewriting"><strong>6.1 Handling User Sessions With URL Rewriting</strong></a>
  @@ -196,7 +196,7 @@
   		</td></tr>
   		<tr><td><br/></td></tr>
   	 </table>
  -						  									 <table border="0" cellspacing="0" cellpadding="2">
  +						  									 <table border="0" cellspacing="0" cellpadding="2" width="100%">
   		<tr><td bgcolor="#525D76">
   		  <font color="#ffffff" face="arial,helvetica,sanserif">
   			 <a name="header_manager"><strong>6.2 Using a Header Manager</strong></a>
  
  
  
  1.10      +1 -1      jakarta-jmeter/docs/usermanual/build-db-test-plan.html
  
  Index: build-db-test-plan.html
  ===================================================================
  RCS file: /home/cvs/jakarta-jmeter/docs/usermanual/build-db-test-plan.html,v
  retrieving revision 1.9
  retrieving revision 1.10
  diff -u -r1.9 -r1.10
  --- build-db-test-plan.html	6 Mar 2002 03:52:15 -0000	1.9
  +++ build-db-test-plan.html	7 Mar 2002 23:03:12 -0000	1.10
  @@ -65,7 +65,7 @@
   		  		  </ul>
   	 						  </td>
   						  <td width="80%" align="left" valign="top">
  -						  						  									 <table border="0" cellspacing="0" cellpadding="2">
  +						  						  									 <table border="0" cellspacing="0" cellpadding="2" width="100%">
   		<tr><td bgcolor="#525D76">
   		  <font color="#ffffff" face="arial,helvetica,sanserif">
   			 <a name=""><strong>7. Building a Database Test Plan</strong></a>
  
  
  
  1.10      +1 -1      jakarta-jmeter/docs/usermanual/build-ftp-test-plan.html
  
  Index: build-ftp-test-plan.html
  ===================================================================
  RCS file: /home/cvs/jakarta-jmeter/docs/usermanual/build-ftp-test-plan.html,v
  retrieving revision 1.9
  retrieving revision 1.10
  diff -u -r1.9 -r1.10
  --- build-ftp-test-plan.html	6 Mar 2002 03:52:15 -0000	1.9
  +++ build-ftp-test-plan.html	7 Mar 2002 23:03:12 -0000	1.10
  @@ -65,7 +65,7 @@
   		  		  </ul>
   	 						  </td>
   						  <td width="80%" align="left" valign="top">
  -						  						  									 <table border="0" cellspacing="0" cellpadding="2">
  +						  						  									 <table border="0" cellspacing="0" cellpadding="2" width="100%">
   		<tr><td bgcolor="#525D76">
   		  <font color="#ffffff" face="arial,helvetica,sanserif">
   			 <a name=""><strong>8. Building a FTP Test Plan</strong></a>
  
  
  
  1.7       +1 -1      jakarta-jmeter/docs/usermanual/build-jndi-test-plan.html
  
  Index: build-jndi-test-plan.html
  ===================================================================
  RCS file: /home/cvs/jakarta-jmeter/docs/usermanual/build-jndi-test-plan.html,v
  retrieving revision 1.6
  retrieving revision 1.7
  diff -u -r1.6 -r1.7
  --- build-jndi-test-plan.html	6 Mar 2002 03:52:15 -0000	1.6
  +++ build-jndi-test-plan.html	7 Mar 2002 23:03:12 -0000	1.7
  @@ -65,7 +65,7 @@
   		  		  </ul>
   	 						  </td>
   						  <td width="80%" align="left" valign="top">
  -						  						  									 <table border="0" cellspacing="0" cellpadding="2">
  +						  						  									 <table border="0" cellspacing="0" cellpadding="2" width="100%">
   		<tr><td bgcolor="#525D76">
   		  <font color="#ffffff" face="arial,helvetica,sanserif">
   			 <a name="building"><strong>8. Building a JNDI Test Plan</strong></a>
  
  
  
  1.10      +5 -5      jakarta-jmeter/docs/usermanual/build-test-plan.html
  
  Index: build-test-plan.html
  ===================================================================
  RCS file: /home/cvs/jakarta-jmeter/docs/usermanual/build-test-plan.html,v
  retrieving revision 1.9
  retrieving revision 1.10
  diff -u -r1.9 -r1.10
  --- build-test-plan.html	6 Mar 2002 03:52:15 -0000	1.9
  +++ build-test-plan.html	7 Mar 2002 23:03:12 -0000	1.10
  @@ -65,7 +65,7 @@
   		  		  </ul>
   	 						  </td>
   						  <td width="80%" align="left" valign="top">
  -						  						  									 <table border="0" cellspacing="0" cellpadding="2">
  +						  						  									 <table border="0" cellspacing="0" cellpadding="2" width="100%">
   		<tr><td bgcolor="#525D76">
   		  <font color="#ffffff" face="arial,helvetica,sanserif">
   			 <a name=""><strong>3. Building a Test Plan</strong></a>
  @@ -79,7 +79,7 @@
   controllers, listeners, timers, assertions, and configuration elements.
   
   						</p>
  -							  									 			 	 <table border="0" cellspacing="0" cellpadding="2">
  +							  									 			 	 <table border="0" cellspacing="0" cellpadding="2" width="100%">
   		<tr><td bgcolor="#828DA6">
   		  <font color="#ffffff" face="arial,helvetica,sanserif">
   			 <a name="add_remove"><strong>3.1 Adding and Removing Elements</strong></a>
  @@ -107,7 +107,7 @@
   		</td></tr>
   		<tr><td><br/></td></tr>
   	 </table>
  -							  									 			 	 <table border="0" cellspacing="0" cellpadding="2">
  +							  									 			 	 <table border="0" cellspacing="0" cellpadding="2" width="100%">
   		<tr><td bgcolor="#828DA6">
   		  <font color="#ffffff" face="arial,helvetica,sanserif">
   			 <a name="load_save"><strong>3.2 Loading and Saving Elements</strong></a>
  @@ -129,7 +129,7 @@
   		</td></tr>
   		<tr><td><br/></td></tr>
   	 </table>
  -							  									 			 	 <table border="0" cellspacing="0" cellpadding="2">
  +							  									 			 	 <table border="0" cellspacing="0" cellpadding="2" width="100%">
   		<tr><td bgcolor="#828DA6">
   		  <font color="#ffffff" face="arial,helvetica,sanserif">
   			 <a name="config_element"><strong>3.3 Configuring Tree Elements</strong></a>
  @@ -146,7 +146,7 @@
   		</td></tr>
   		<tr><td><br/></td></tr>
   	 </table>
  -							  									 			 	 <table border="0" cellspacing="0" cellpadding="2">
  +							  									 			 	 <table border="0" cellspacing="0" cellpadding="2" width="100%">
   		<tr><td bgcolor="#828DA6">
   		  <font color="#ffffff" face="arial,helvetica,sanserif">
   			 <a name="run"><strong>3.4 Running a Test Plan</strong></a>
  
  
  
  1.15      +8 -8      jakarta-jmeter/docs/usermanual/build-web-test-plan.html
  
  Index: build-web-test-plan.html
  ===================================================================
  RCS file: /home/cvs/jakarta-jmeter/docs/usermanual/build-web-test-plan.html,v
  retrieving revision 1.14
  retrieving revision 1.15
  diff -u -r1.14 -r1.15
  --- build-web-test-plan.html	6 Mar 2002 03:52:15 -0000	1.14
  +++ build-web-test-plan.html	7 Mar 2002 23:03:12 -0000	1.15
  @@ -65,7 +65,7 @@
   		  		  </ul>
   	 						  </td>
   						  <td width="80%" align="left" valign="top">
  -						  						  									 <table border="0" cellspacing="0" cellpadding="2">
  +						  						  									 <table border="0" cellspacing="0" cellpadding="2" width="100%">
   		<tr><td bgcolor="#525D76">
   		  <font color="#ffffff" face="arial,helvetica,sanserif">
   			 <a name="building"><strong>5. Building a Web Test Plan</strong></a>
  @@ -112,7 +112,7 @@
   		</td></tr>
   		<tr><td><br/></td></tr>
   	 </table>
  -						  									 <table border="0" cellspacing="0" cellpadding="2">
  +						  									 <table border="0" cellspacing="0" cellpadding="2" width="100%">
   		<tr><td bgcolor="#525D76">
   		  <font color="#ffffff" face="arial,helvetica,sanserif">
   			 <a name="adding_users"><strong>5.1 Adding Users</strong></a>
  @@ -197,7 +197,7 @@
   		</td></tr>
   		<tr><td><br/></td></tr>
   	 </table>
  -						  									 <table border="0" cellspacing="0" cellpadding="2">
  +						  									 <table border="0" cellspacing="0" cellpadding="2" width="100%">
   		<tr><td bgcolor="#525D76">
   		  <font color="#ffffff" face="arial,helvetica,sanserif">
   			 <a name="adding_defaults"><strong>5.2 Adding Default HTTP Request Properties</strong></a>
  @@ -253,7 +253,7 @@
   		</td></tr>
   		<tr><td><br/></td></tr>
   	 </table>
  -						  									 <table border="0" cellspacing="0" cellpadding="2">
  +						  									 <table border="0" cellspacing="0" cellpadding="2" width="100%">
   		<tr><td bgcolor="#525D76">
   		  <font color="#ffffff" face="arial,helvetica,sanserif">
   			 <a name="adding_cookie_support"><strong>5.3 Adding Cookie Support</strong></a>
  @@ -293,7 +293,7 @@
   		</td></tr>
   		<tr><td><br/></td></tr>
   	 </table>
  -						  									 <table border="0" cellspacing="0" cellpadding="2">
  +						  									 <table border="0" cellspacing="0" cellpadding="2" width="100%">
   		<tr><td bgcolor="#525D76">
   		  <font color="#ffffff" face="arial,helvetica,sanserif">
   			 <a name="adding_requests"><strong>5.4 Adding HTTP Requests</strong></a>
  @@ -372,7 +372,7 @@
   		</td></tr>
   		<tr><td><br/></td></tr>
   	 </table>
  -						  									 <table border="0" cellspacing="0" cellpadding="2">
  +						  									 <table border="0" cellspacing="0" cellpadding="2" width="100%">
   		<tr><td bgcolor="#525D76">
   		  <font color="#ffffff" face="arial,helvetica,sanserif">
   			 <a name="adding_file_reporter"><strong>5.5 Adding a File Reporter to Store the Test Results</strong></a>
  @@ -403,7 +403,7 @@
   		</td></tr>
   		<tr><td><br/></td></tr>
   	 </table>
  -						  									 <table border="0" cellspacing="0" cellpadding="2">
  +						  									 <table border="0" cellspacing="0" cellpadding="2" width="100%">
   		<tr><td bgcolor="#525D76">
   		  <font color="#ffffff" face="arial,helvetica,sanserif">
   			 <a name="saving"><strong>5.6 Saving the Test Plan</strong></a>
  @@ -434,7 +434,7 @@
   		</td></tr>
   		<tr><td><br/></td></tr>
   	 </table>
  -						  									 <table border="0" cellspacing="0" cellpadding="2">
  +						  									 <table border="0" cellspacing="0" cellpadding="2" width="100%">
   		<tr><td bgcolor="#525D76">
   		  <font color="#ffffff" face="arial,helvetica,sanserif">
   			 <a name="running"><strong>5.7 Running the Test Plan</strong></a>
  
  
  
  1.9       +7 -7      jakarta-jmeter/docs/usermanual/component_reference.html
  
  Index: component_reference.html
  ===================================================================
  RCS file: /home/cvs/jakarta-jmeter/docs/usermanual/component_reference.html,v
  retrieving revision 1.8
  retrieving revision 1.9
  diff -u -r1.8 -r1.9
  --- component_reference.html	6 Mar 2002 03:52:15 -0000	1.8
  +++ component_reference.html	7 Mar 2002 23:03:12 -0000	1.9
  @@ -122,7 +122,7 @@
   					<li><a href="#Data_Analyzer">Data Analyzer</a></li>
   				</ul>
   		</ul>
  -						  						  									 <table border="0" cellspacing="0" cellpadding="2">
  +						  						  									 <table border="0" cellspacing="0" cellpadding="2" width="100%">
   		<tr><td bgcolor="#525D76">
   		  <font color="#ffffff" face="arial,helvetica,sanserif">
   			 <a name="generative_controllers"><strong>13.1 Generative Controllers</strong></a>
  @@ -661,7 +661,7 @@
   		</td></tr>
   		<tr><td><br/></td></tr>
   	 </table>
  -						  									 <table border="0" cellspacing="0" cellpadding="2">
  +						  									 <table border="0" cellspacing="0" cellpadding="2" width="100%">
   		<tr><td bgcolor="#525D76">
   		  <font color="#ffffff" face="arial,helvetica,sanserif">
   			 <a name="logic_controllers"><strong>13.2 Logic Controllers</strong></a>
  @@ -1116,7 +1116,7 @@
   		</td></tr>
   		<tr><td><br/></td></tr>
   	 </table>
  -						  									 <table border="0" cellspacing="0" cellpadding="2">
  +						  									 <table border="0" cellspacing="0" cellpadding="2" width="100%">
   		<tr><td bgcolor="#525D76">
   		  <font color="#ffffff" face="arial,helvetica,sanserif">
   			 <a name="listeners"><strong>13.3 Listeners</strong></a>
  @@ -1373,7 +1373,7 @@
   		</td></tr>
   		<tr><td><br/></td></tr>
   	 </table>
  -						  									 <table border="0" cellspacing="0" cellpadding="2">
  +						  									 <table border="0" cellspacing="0" cellpadding="2" width="100%">
   		<tr><td bgcolor="#525D76">
   		  <font color="#ffffff" face="arial,helvetica,sanserif">
   			 <a name="config_elements"><strong>13.4 Configuration Elements</strong></a>
  @@ -2227,7 +2227,7 @@
   		</td></tr>
   		<tr><td><br/></td></tr>
   	 </table>
  -						  									 <table border="0" cellspacing="0" cellpadding="2">
  +						  									 <table border="0" cellspacing="0" cellpadding="2" width="100%">
   		<tr><td bgcolor="#525D76">
   		  <font color="#ffffff" face="arial,helvetica,sanserif">
   			 <a name="assertions"><strong>13.5 Assertions</strong></a>
  @@ -2329,7 +2329,7 @@
   		</td></tr>
   		<tr><td><br/></td></tr>
   	 </table>
  -						  									 <table border="0" cellspacing="0" cellpadding="2">
  +						  									 <table border="0" cellspacing="0" cellpadding="2" width="100%">
   		<tr><td bgcolor="#525D76">
   		  <font color="#ffffff" face="arial,helvetica,sanserif">
   			 <a name="timers"><strong>13.6 Timers</strong></a>
  @@ -2483,7 +2483,7 @@
   		</td></tr>
   		<tr><td><br/></td></tr>
   	 </table>
  -						  									 <table border="0" cellspacing="0" cellpadding="2">
  +						  									 <table border="0" cellspacing="0" cellpadding="2" width="100%">
   		<tr><td bgcolor="#525D76">
   		  <font color="#ffffff" face="arial,helvetica,sanserif">
   			 <a name="Miscellaneous_Features"><strong>13.7 Miscellaneous Features</strong></a>
  
  
  
  1.12      +18 -18    jakarta-jmeter/docs/usermanual/get-started.html
  
  Index: get-started.html
  ===================================================================
  RCS file: /home/cvs/jakarta-jmeter/docs/usermanual/get-started.html,v
  retrieving revision 1.11
  retrieving revision 1.12
  diff -u -r1.11 -r1.12
  --- get-started.html	6 Mar 2002 03:52:15 -0000	1.11
  +++ get-started.html	7 Mar 2002 23:03:12 -0000	1.12
  @@ -65,7 +65,7 @@
   		  		  </ul>
   	 						  </td>
   						  <td width="80%" align="left" valign="top">
  -						  						  									 <table border="0" cellspacing="0" cellpadding="2">
  +						  						  									 <table border="0" cellspacing="0" cellpadding="2" width="100%">
   		<tr><td bgcolor="#525D76">
   		  <font color="#ffffff" face="arial,helvetica,sanserif">
   			 <a name="get_started"><strong>2. Getting Started</strong></a>
  @@ -125,7 +125,7 @@
   		</td></tr>
   		<tr><td><br/></td></tr>
   	 </table>
  -						  									 <table border="0" cellspacing="0" cellpadding="2">
  +						  									 <table border="0" cellspacing="0" cellpadding="2" width="100%">
   		<tr><td bgcolor="#525D76">
   		  <font color="#ffffff" face="arial,helvetica,sanserif">
   			 <a name="requirements"><strong>2.1 Requirements</strong></a>
  @@ -136,7 +136,7 @@
   		  									 				<p	>
   								JMeter requires your computing environment meets some minimum requirements.
   						</p>
  -							  									 			 	 <table border="0" cellspacing="0" cellpadding="2">
  +							  									 			 	 <table border="0" cellspacing="0" cellpadding="2" width="100%">
   		<tr><td bgcolor="#828DA6">
   		  <font color="#ffffff" face="arial,helvetica,sanserif">
   			 <a name="java_ver"><strong>2.1.1 Java Version</strong></a>
  @@ -153,7 +153,7 @@
   		</td></tr>
   		<tr><td><br/></td></tr>
   	 </table>
  -							  									 			 	 <table border="0" cellspacing="0" cellpadding="2">
  +							  									 			 	 <table border="0" cellspacing="0" cellpadding="2" width="100%">
   		<tr><td bgcolor="#828DA6">
   		  <font color="#ffffff" face="arial,helvetica,sanserif">
   			 <a name="os"><strong>2.1.2 Operating Systems</strong></a>
  @@ -175,7 +175,7 @@
   		</td></tr>
   		<tr><td><br/></td></tr>
   	 </table>
  -						  									 <table border="0" cellspacing="0" cellpadding="2">
  +						  									 <table border="0" cellspacing="0" cellpadding="2" width="100%">
   		<tr><td bgcolor="#525D76">
   		  <font color="#ffffff" face="arial,helvetica,sanserif">
   			 <a name="optional"><strong>2.2 Optional</strong></a>
  @@ -186,7 +186,7 @@
   		  									 				<p	>
   								If you plan on doing JMeter development or want to use Sun's Java Standard Extension packages, then you will need one or more optional packages listed below.
   						</p>
  -							  									 			 	 <table border="0" cellspacing="0" cellpadding="2">
  +							  									 			 	 <table border="0" cellspacing="0" cellpadding="2" width="100%">
   		<tr><td bgcolor="#828DA6">
   		  <font color="#ffffff" face="arial,helvetica,sanserif">
   			 <a name="opt_compiler"><strong>2.2.1 Java Compiler</strong></a>
  @@ -201,7 +201,7 @@
   		</td></tr>
   		<tr><td><br/></td></tr>
   	 </table>
  -							  									 			 	 <table border="0" cellspacing="0" cellpadding="2">
  +							  									 			 	 <table border="0" cellspacing="0" cellpadding="2" width="100%">
   		<tr><td bgcolor="#828DA6">
   		  <font color="#ffffff" face="arial,helvetica,sanserif">
   			 <a name="opt_sax"><strong>2.2.2 SAX XML Parser</strong></a>
  @@ -231,7 +231,7 @@
   		</td></tr>
   		<tr><td><br/></td></tr>
   	 </table>
  -							  									 			 	 <table border="0" cellspacing="0" cellpadding="2">
  +							  									 			 	 <table border="0" cellspacing="0" cellpadding="2" width="100%">
   		<tr><td bgcolor="#828DA6">
   		  <font color="#ffffff" face="arial,helvetica,sanserif">
   			 <a name="opt_email"><strong>2.2.3 Email Support</strong></a>
  @@ -251,7 +251,7 @@
   		</td></tr>
   		<tr><td><br/></td></tr>
   	 </table>
  -							  									 			 	 <table border="0" cellspacing="0" cellpadding="2">
  +							  									 			 	 <table border="0" cellspacing="0" cellpadding="2" width="100%">
   		<tr><td bgcolor="#828DA6">
   		  <font color="#ffffff" face="arial,helvetica,sanserif">
   			 <a name="opt_ssl"><strong>2.2.4 SSL Encryption</strong></a>
  @@ -284,7 +284,7 @@
   		</td></tr>
   		<tr><td><br/></td></tr>
   	 </table>
  -							  									 			 	 <table border="0" cellspacing="0" cellpadding="2">
  +							  									 			 	 <table border="0" cellspacing="0" cellpadding="2" width="100%">
   		<tr><td bgcolor="#828DA6">
   		  <font color="#ffffff" face="arial,helvetica,sanserif">
   			 <a name="opt_jdbc"><strong>2.2.5 JDBC Driver</strong></a>
  @@ -308,7 +308,7 @@
   		</td></tr>
   		<tr><td><br/></td></tr>
   	 </table>
  -						  									 <table border="0" cellspacing="0" cellpadding="2">
  +						  									 <table border="0" cellspacing="0" cellpadding="2" width="100%">
   		<tr><td bgcolor="#525D76">
   		  <font color="#ffffff" face="arial,helvetica,sanserif">
   			 <a name="install"><strong>2.3 Installation</strong></a>
  @@ -320,7 +320,7 @@
   								Installing JMeter is a snap.  Specifics depend on which release file you
   downloaded.
   						</p>
  -							  									 			 	 <table border="0" cellspacing="0" cellpadding="2">
  +							  									 			 	 <table border="0" cellspacing="0" cellpadding="2" width="100%">
   		<tr><td bgcolor="#828DA6">
   		  <font color="#ffffff" face="arial,helvetica,sanserif">
   			 <a name="download_release"><strong>2.3.1 Downloading the Latest Release</strong></a>
  @@ -344,7 +344,7 @@
   		</td></tr>
   		<tr><td><br/></td></tr>
   	 </table>
  -							  									 			 	 <table border="0" cellspacing="0" cellpadding="2">
  +							  									 			 	 <table border="0" cellspacing="0" cellpadding="2" width="100%">
   		<tr><td bgcolor="#828DA6">
   		  <font color="#ffffff" face="arial,helvetica,sanserif">
   			 <a name="download_nightly"><strong>2.3.2 Downloading Nightly Builds</strong></a>
  @@ -374,7 +374,7 @@
   		</td></tr>
   		<tr><td><br/></td></tr>
   	 </table>
  -						  									 <table border="0" cellspacing="0" cellpadding="2">
  +						  									 <table border="0" cellspacing="0" cellpadding="2" width="100%">
   		<tr><td bgcolor="#525D76">
   		  <font color="#ffffff" face="arial,helvetica,sanserif">
   			 <a name="running"><strong>2.4 Running JMeter</strong></a>
  @@ -391,7 +391,7 @@
   you will need to rewrite the jmeter.bat/jmeter file to explicitly include all
   JAR files that are located in JMeter's "lib" directory in the JMeter classpath.
   						</p>
  -							  									 			 	 <table border="0" cellspacing="0" cellpadding="2">
  +							  									 			 	 <table border="0" cellspacing="0" cellpadding="2" width="100%">
   		<tr><td bgcolor="#828DA6">
   		  <font color="#ffffff" face="arial,helvetica,sanserif">
   			 <a name="classpath"><strong>2.4.1 JMeter's Classpath</strong></a>
  @@ -408,7 +408,7 @@
   		</td></tr>
   		<tr><td><br/></td></tr>
   	 </table>
  -							  									 			 	 <table border="0" cellspacing="0" cellpadding="2">
  +							  									 			 	 <table border="0" cellspacing="0" cellpadding="2" width="100%">
   		<tr><td bgcolor="#828DA6">
   		  <font color="#ffffff" face="arial,helvetica,sanserif">
   			 <a name="proxy_server"><strong>2.4.2 Using a Proxy Server</strong></a>
  @@ -438,7 +438,7 @@
   		</td></tr>
   		<tr><td><br/></td></tr>
   	 </table>
  -							  									 			 	 <table border="0" cellspacing="0" cellpadding="2">
  +							  									 			 	 <table border="0" cellspacing="0" cellpadding="2" width="100%">
   		<tr><td bgcolor="#828DA6">
   		  <font color="#ffffff" face="arial,helvetica,sanserif">
   			 <a name="non_gui"><strong>2.4.3 Non-GUI Mode</strong></a>
  @@ -478,7 +478,7 @@
   		</td></tr>
   		<tr><td><br/></td></tr>
   	 </table>
  -						  									 <table border="0" cellspacing="0" cellpadding="2">
  +						  									 <table border="0" cellspacing="0" cellpadding="2" width="100%">
   		<tr><td bgcolor="#525D76">
   		  <font color="#ffffff" face="arial,helvetica,sanserif">
   			 <a name="configuring_jmeter"><strong>2.5 Configuring JMeter</strong></a>
  
  
  
  1.10      +1 -1      jakarta-jmeter/docs/usermanual/glossary.html
  
  Index: glossary.html
  ===================================================================
  RCS file: /home/cvs/jakarta-jmeter/docs/usermanual/glossary.html,v
  retrieving revision 1.9
  retrieving revision 1.10
  diff -u -r1.9 -r1.10
  --- glossary.html	6 Mar 2002 01:25:00 -0000	1.9
  +++ glossary.html	7 Mar 2002 23:03:12 -0000	1.10
  @@ -65,7 +65,7 @@
   		  		  </ul>
   	 						  </td>
   						  <td width="80%" align="left" valign="top">
  -						  						  									 <table border="0" cellspacing="0" cellpadding="2">
  +						  						  									 <table border="0" cellspacing="0" cellpadding="2" width="100%">
   		<tr><td bgcolor="#525D76">
   		  <font color="#ffffff" face="arial,helvetica,sanserif">
   			 <a name="glossary"><strong>14. Glossary</strong></a>
  
  
  
  1.18      +1 -1      jakarta-jmeter/docs/usermanual/index.html
  
  Index: index.html
  ===================================================================
  RCS file: /home/cvs/jakarta-jmeter/docs/usermanual/index.html,v
  retrieving revision 1.17
  retrieving revision 1.18
  diff -u -r1.17 -r1.18
  --- index.html	6 Mar 2002 03:52:15 -0000	1.17
  +++ index.html	7 Mar 2002 23:03:12 -0000	1.18
  @@ -65,7 +65,7 @@
   		  		  </ul>
   	 						  </td>
   						  <td width="80%" align="left" valign="top">
  -						  						  									 <table border="0" cellspacing="0" cellpadding="2">
  +						  						  									 <table border="0" cellspacing="0" cellpadding="2" width="100%">
   		<tr><td bgcolor="#525D76">
   		  <font color="#ffffff" face="arial,helvetica,sanserif">
   			 <a name=""><strong>User's Manual</strong></a>
  
  
  
  1.11      +3 -3      jakarta-jmeter/docs/usermanual/intro.html
  
  Index: intro.html
  ===================================================================
  RCS file: /home/cvs/jakarta-jmeter/docs/usermanual/intro.html,v
  retrieving revision 1.10
  retrieving revision 1.11
  diff -u -r1.10 -r1.11
  --- intro.html	6 Mar 2002 01:25:00 -0000	1.10
  +++ intro.html	7 Mar 2002 23:03:12 -0000	1.11
  @@ -65,7 +65,7 @@
   		  		  </ul>
   	 						  </td>
   						  <td width="80%" align="left" valign="top">
  -						  						  									 <table border="0" cellspacing="0" cellpadding="2">
  +						  						  									 <table border="0" cellspacing="0" cellpadding="2" width="100%">
   		<tr><td bgcolor="#525D76">
   		  <font color="#ffffff" face="arial,helvetica,sanserif">
   			 <a name="intro"><strong>1. Introduction</strong></a>
  @@ -111,7 +111,7 @@
   results you expect.  For maximum flexibility, JMeter lets you create these assertions using
   regular expressions.
   						</p>
  -							  									 			 	 <table border="0" cellspacing="0" cellpadding="2">
  +							  									 			 	 <table border="0" cellspacing="0" cellpadding="2" width="100%">
   		<tr><td bgcolor="#828DA6">
   		  <font color="#ffffff" face="arial,helvetica,sanserif">
   			 <a name="history"><strong>1.1 History</strong></a>
  @@ -130,7 +130,7 @@
   		</td></tr>
   		<tr><td><br/></td></tr>
   	 </table>
  -							  									 			 	 <table border="0" cellspacing="0" cellpadding="2">
  +							  									 			 	 <table border="0" cellspacing="0" cellpadding="2" width="100%">
   		<tr><td bgcolor="#828DA6">
   		  <font color="#ffffff" face="arial,helvetica,sanserif">
   			 <a name="future"><strong>1.2 The Future</strong></a>
  
  
  
  1.11      +1 -1      jakarta-jmeter/docs/usermanual/remote-test.html
  
  Index: remote-test.html
  ===================================================================
  RCS file: /home/cvs/jakarta-jmeter/docs/usermanual/remote-test.html,v
  retrieving revision 1.10
  retrieving revision 1.11
  diff -u -r1.10 -r1.11
  --- remote-test.html	6 Mar 2002 01:25:00 -0000	1.10
  +++ remote-test.html	7 Mar 2002 23:03:12 -0000	1.11
  @@ -65,7 +65,7 @@
   		  		  </ul>
   	 						  </td>
   						  <td width="80%" align="left" valign="top">
  -						  						  									 <table border="0" cellspacing="0" cellpadding="2">
  +						  						  									 <table border="0" cellspacing="0" cellpadding="2" width="100%">
   		<tr><td bgcolor="#525D76">
   		  <font color="#ffffff" face="arial,helvetica,sanserif">
   			 <a name=""><strong>10. Remote Testing</strong></a>
  
  
  
  1.6       +9 -9      jakarta-jmeter/docs/usermanual/test_plan.html
  
  Index: test_plan.html
  ===================================================================
  RCS file: /home/cvs/jakarta-jmeter/docs/usermanual/test_plan.html,v
  retrieving revision 1.5
  retrieving revision 1.6
  diff -u -r1.5 -r1.6
  --- test_plan.html	6 Mar 2002 03:52:15 -0000	1.5
  +++ test_plan.html	7 Mar 2002 23:03:12 -0000	1.6
  @@ -65,7 +65,7 @@
   		  		  </ul>
   	 						  </td>
   						  <td width="80%" align="left" valign="top">
  -						  						  									 <table border="0" cellspacing="0" cellpadding="2">
  +						  						  									 <table border="0" cellspacing="0" cellpadding="2" width="100%">
   		<tr><td bgcolor="#525D76">
   		  <font color="#ffffff" face="arial,helvetica,sanserif">
   			 <a name=""><strong>4.0 Elements of a Test Plan</strong></a>
  @@ -73,7 +73,7 @@
   		</td></tr>
   		<tr><td>
   		  <blockquote>
  -		  									 			 	 <table border="0" cellspacing="0" cellpadding="2">
  +		  									 			 	 <table border="0" cellspacing="0" cellpadding="2" width="100%">
   		<tr><td bgcolor="#828DA6">
   		  <font color="#ffffff" face="arial,helvetica,sanserif">
   			 <a name="thread_group"><strong>4.1 ThreadGroup</strong></a>
  @@ -126,7 +126,7 @@
   		</td></tr>
   		<tr><td><br/></td></tr>
   	 </table>
  -							  									 			 	 <table border="0" cellspacing="0" cellpadding="2">
  +							  									 			 	 <table border="0" cellspacing="0" cellpadding="2" width="100%">
   		<tr><td bgcolor="#828DA6">
   		  <font color="#ffffff" face="arial,helvetica,sanserif">
   			 <a name="controllers"><strong>4.2 Controllers</strong></a>
  @@ -165,7 +165,7 @@
   		</td></tr>
   		<tr><td><br/></td></tr>
   	 </table>
  -							  									 			 	 <table border="0" cellspacing="0" cellpadding="2">
  +							  									 			 	 <table border="0" cellspacing="0" cellpadding="2" width="100%">
   		<tr><td bgcolor="#828DA6">
   		  <font color="#ffffff" face="arial,helvetica,sanserif">
   			 <a name="gen_controller"><strong>4.2.1 Generative Controllers</strong></a>
  @@ -211,7 +211,7 @@
   		</td></tr>
   		<tr><td><br/></td></tr>
   	 </table>
  -							  									 			 	 <table border="0" cellspacing="0" cellpadding="2">
  +							  									 			 	 <table border="0" cellspacing="0" cellpadding="2" width="100%">
   		<tr><td bgcolor="#828DA6">
   		  <font color="#ffffff" face="arial,helvetica,sanserif">
   			 <a name="logic_controller"><strong>4.2.2 Logic Controllers</strong></a>
  @@ -390,7 +390,7 @@
   		</td></tr>
   		<tr><td><br/></td></tr>
   	 </table>
  -							  									 			 	 <table border="0" cellspacing="0" cellpadding="2">
  +							  									 			 	 <table border="0" cellspacing="0" cellpadding="2" width="100%">
   		<tr><td bgcolor="#828DA6">
   		  <font color="#ffffff" face="arial,helvetica,sanserif">
   			 <a name="listeners"><strong>4.3 Listeners</strong></a>
  @@ -427,7 +427,7 @@
   		</td></tr>
   		<tr><td><br/></td></tr>
   	 </table>
  -							  									 			 	 <table border="0" cellspacing="0" cellpadding="2">
  +							  									 			 	 <table border="0" cellspacing="0" cellpadding="2" width="100%">
   		<tr><td bgcolor="#828DA6">
   		  <font color="#ffffff" face="arial,helvetica,sanserif">
   			 <a name="timers"><strong>4.4 Timers</strong></a>
  @@ -455,7 +455,7 @@
   		</td></tr>
   		<tr><td><br/></td></tr>
   	 </table>
  -							  									 			 	 <table border="0" cellspacing="0" cellpadding="2">
  +							  									 			 	 <table border="0" cellspacing="0" cellpadding="2" width="100%">
   		<tr><td bgcolor="#828DA6">
   		  <font color="#ffffff" face="arial,helvetica,sanserif">
   			 <a name="assertions"><strong>4.5 Assertions</strong></a>
  @@ -487,7 +487,7 @@
   		</td></tr>
   		<tr><td><br/></td></tr>
   	 </table>
  -							  									 			 	 <table border="0" cellspacing="0" cellpadding="2">
  +							  									 			 	 <table border="0" cellspacing="0" cellpadding="2" width="100%">
   		<tr><td bgcolor="#828DA6">
   		  <font color="#ffffff" face="arial,helvetica,sanserif">
   			 <a name="config_elements"><strong>4.6 Configuration Elements</strong></a>
  
  
  
  1.7       +1 -1      jakarta-jmeter/src/org/apache/jmeter/gui/action/Remove.java
  
  Index: Remove.java
  ===================================================================
  RCS file: /home/cvs/jakarta-jmeter/src/org/apache/jmeter/gui/action/Remove.java,v
  retrieving revision 1.6
  retrieving revision 1.7
  diff -u -r1.6 -r1.7
  --- Remove.java	23 Feb 2002 01:21:06 -0000	1.6
  +++ Remove.java	7 Mar 2002 23:03:13 -0000	1.7
  @@ -102,11 +102,11 @@
   	{
   		GuiPackage guiPackage = GuiPackage.getInstance();
   		JMeterTreeNode[] nodes = guiPackage.getTreeListener().getSelectedNodes();
  +		guiPackage.getTreeListener().removedSelectedNode();
   		for (int i = nodes.length - 1; i >= 0; i--)
   		{
   				guiPackage.getTreeModel().removeNodeFromParent(nodes[i]);
   		}
  -		guiPackage.getTreeListener().removedSelectedNode();
   		ActionRouter.getInstance().actionPerformed(new ActionEvent(e.getSource(),
   				e.getID(), JMeterUtils.getResString("edit")));
   
  
  
  
  1.14      +4 -2      jakarta-jmeter/src/org/apache/jmeter/gui/tree/JMeterTreeListener.java
  
  Index: JMeterTreeListener.java
  ===================================================================
  RCS file: /home/cvs/jakarta-jmeter/src/org/apache/jmeter/gui/tree/JMeterTreeListener.java,v
  retrieving revision 1.13
  retrieving revision 1.14
  diff -u -r1.13 -r1.14
  --- JMeterTreeListener.java	23 Feb 2002 01:21:06 -0000	1.13
  +++ JMeterTreeListener.java	7 Mar 2002 23:03:13 -0000	1.14
  @@ -185,6 +185,8 @@
   	 */
   	public void valueChanged(TreeSelectionEvent e)
   	{
  +		currentPath = e.getNewLeadSelectionPath();
  +		actionHandler.actionPerformed(new ActionEvent(this, 3333, JMeterUtils.getResString("edit")));
   	}
   
   
  @@ -235,18 +237,18 @@
   		{
   			currentPath = tree.getPathForLocation(e.getX(), e.getY());
   		}
  -
  +		actionHandler.actionPerformed(new ActionEvent(this, e.getID(), JMeterUtils.getResString("edit")));
   		if (selRow != -1)
   		{
   			if (isRightClick(e))
   			{
  +				tree.setSelectionPath(currentPath);
   				updateMainMenu(createAddMenu((JMeterComponentModel) (getCurrentNode().getUserObject())));
   				rightClick(currentPath, createAddMenu((JMeterComponentModel) (getCurrentNode().getUserObject())), e.getX(), e.getY());
   			}
   			else
   			{
   				updateMainMenu(createAddMenu((JMeterComponentModel) (getCurrentNode().getUserObject())));
  -				actionHandler.actionPerformed(new ActionEvent(this, e.getID(), JMeterUtils.getResString("edit")));
   			}
   		}
   	}
  
  
  
  1.45      +5 -0      jakarta-jmeter/src/org/apache/jmeter/resources/messages.properties
  
  Index: messages.properties
  ===================================================================
  RCS file: /home/cvs/jakarta-jmeter/src/org/apache/jmeter/resources/messages.properties,v
  retrieving revision 1.44
  retrieving revision 1.45
  diff -u -r1.44 -r1.45
  --- messages.properties	4 Mar 2002 23:08:54 -0000	1.44
  +++ messages.properties	7 Mar 2002 23:03:13 -0000	1.45
  @@ -188,3 +188,8 @@
   jndi_method_remote_interface_list=Remote Interfaces
   jndi_method_button_reflect=Reflect
   jndi_method_button_invoke=Invoke
  +insert_parent=Insert Parent
  +copy=Copy
  +cut=Cut
  +paste_insert=Paste As Insert
  +paste_add=Paste As Add
  
  
  
  1.26      +0 -0      jakarta-jmeter/src/org/apache/jmeter/util/JMeterUtils.java
  
  Index: JMeterUtils.java
  ===================================================================
  RCS file: /home/cvs/jakarta-jmeter/src/org/apache/jmeter/util/JMeterUtils.java,v
  retrieving revision 1.25
  retrieving revision 1.26
  diff -u -r1.25 -r1.26
  --- JMeterUtils.java	4 Mar 2002 23:08:55 -0000	1.25
  +++ JMeterUtils.java	7 Mar 2002 23:03:13 -0000	1.26
  @@ -76,7 +76,7 @@
    *
    *@author     <a href="mailto://stefano@apache.org">Stefano Mazzocchi</a>
    *@created    June 28, 2001
  - *@version    $Revision: 1.25 $ $Date: 2002/03/04 23:08:55 $
  + *@version    $Revision: 1.26 $ $Date: 2002/03/07 23:03:13 $
    */
   
   public class JMeterUtils
  
  
  
  1.5       +13 -13    jakarta-jmeter/src/org/apache/jmeter/visualizers/GraphAccum.java
  
  Index: GraphAccum.java
  ===================================================================
  RCS file: /home/cvs/jakarta-jmeter/src/org/apache/jmeter/visualizers/GraphAccum.java,v
  retrieving revision 1.4
  retrieving revision 1.5
  diff -u -r1.4 -r1.5
  --- GraphAccum.java	23 Dec 2001 04:29:57 -0000	1.4
  +++ GraphAccum.java	7 Mar 2002 23:03:13 -0000	1.5
  @@ -86,10 +86,10 @@
   	protected boolean noLegendYet = true;	// ensure that the legends are only
   								// drawn once
   	protected Point[] previousPts;		// keep track of previous point
  -								// needed to draw a line joining 
  +								// needed to draw a line joining
   								// the previous point with the current
   								// one
  -      protected boolean previousPtsAlloc = false;		
  +		protected boolean previousPtsAlloc = false;
   								// Ensure that previousPts is allocated
   								// once only.  It'll be reused at each
   								// drawSample.  It can't be allocated
  @@ -243,7 +243,7 @@
   			// components
   	 int compCount = 0;	// number of components
   
  -	ArrayList resultList = 
  +	ArrayList resultList =
   		(ArrayList)oneSample.getValue(SampleResult.RESULT_LIST);
   	// allocate previousPts only the first time
   	int resultListCount = 0;
  @@ -287,7 +287,7 @@
   	else
   	{
   		// otherwise, draw from previous point
  -		g.drawLine((previousPts[0].x)%width, previousPts[0].y, x%width, 
  +		g.drawLine((previousPts[0].x)%width, previousPts[0].y, x%width,
   			d.height - data);
   	}
   	// store current total time point
  @@ -298,7 +298,7 @@
   		gbc.gridy = compCount++;
   		gbc.anchor = GridBagConstraints.WEST;
   		gbc.weightx = 1.0;
  -		gbc.insets = new Insets(0, 10, 0, 0);  
  +		gbc.insets = new Insets(0, 10, 0, 0);
   		JLabel totalTimeLabel = new JLabel("Total time - " + oneSample.toString());
   		totalTimeLabel.setForeground(currColor);
   		gridBag.setConstraints(totalTimeLabel, gbc);
  @@ -322,7 +322,7 @@
   	else
   	{
   		// otherwise, draw from previous point
  -	      g.drawLine((previousPts[1].x)%width, previousPts[1].y, x%width,
  +			g.drawLine((previousPts[1].x)%width, previousPts[1].y, x%width,
   			d.height - data);
   	}
   	// store load time without components
  @@ -333,7 +333,7 @@
   		gbc.gridy = compCount++;
   		gbc.anchor = GridBagConstraints.WEST;
   		gbc.weightx = 1.0;
  -		gbc.insets = new Insets(0, 10, 0, 0);  
  +		gbc.insets = new Insets(0, 10, 0, 0);
   		JLabel mainTimeLabel = new JLabel(oneSample.toString());
   		mainTimeLabel.setForeground(currColor);
   		gridBag.setConstraints(mainTimeLabel, gbc);
  @@ -350,7 +350,7 @@
   			SampleResult componentRes = (SampleResult)iter.next();
   			if(catClass.isDebugEnabled())
   			{
  -				catClass.debug("drawSample1 : componentRes - " + 
  +				catClass.debug("drawSample1 : componentRes - " +
   					componentRes.toString() + " loading time - " +
   					componentRes.getTime());
   			}
  @@ -367,7 +367,7 @@
   			else
   			{
   				// otherwise, draw from previous point
  -				g.drawLine((previousPts[currPreviousPts].x)%width, 
  +				g.drawLine((previousPts[currPreviousPts].x)%width,
   					previousPts[currPreviousPts].y, x%width, d.height - data);
   			}
   			// store the current plot
  @@ -378,7 +378,7 @@
   				gbc.gridy = compCount++;
   				gbc.anchor = GridBagConstraints.WEST;
   				gbc.weightx = 1.0;
  -				gbc.insets = new Insets(0, 10, 0, 0);  
  +				gbc.insets = new Insets(0, 10, 0, 0);
   				JLabel compTimeLabel = new JLabel(componentRes.toString());
   				compTimeLabel.setForeground(currColor);
   				gridBag.setConstraints(compTimeLabel, gbc);
  @@ -413,12 +413,12 @@
     {
   	 super.paintComponent(g);
   	 catClass.debug("Start : paintComponent1");
  -	 // for repainting set this to false because all the points needs to be redrawn
  -	 // so no need(shouldn't) use the previousPts
  -	 previousPtsAlloc = false;
   	 Dimension d = this.getSize();
   	 synchronized(model.getList())
   	 {
  +		 // for repainting set this to false because all the points needs to be redrawn
  +		 // so no need(shouldn't) use the previousPts
  +		 previousPtsAlloc = false;
   		Iterator e = model.getList().iterator();
   		for (int i = 0; e.hasNext(); i++)
   		{
  
  
  
  1.9       +165 -185  jakarta-jmeter/xdocs/changes.xml
  
  Index: changes.xml
  ===================================================================
  RCS file: /home/cvs/jakarta-jmeter/xdocs/changes.xml,v
  retrieving revision 1.8
  retrieving revision 1.9
  diff -u -r1.8 -r1.9
  --- changes.xml	24 Sep 2001 13:17:01 -0000	1.8
  +++ changes.xml	7 Mar 2002 23:03:13 -0000	1.9
  @@ -1,185 +1,165 @@
  -<?xml version="1.0"?>
  -<document>
  -  <properties>
  -    <author email="mstover1@apache.org">Michael Stover, et al.</author>
  -    <title>History of Changes</title>
  -  </properties>
  -<body>
  -<section name="History of Changes">
  -<p>
  -<b>Changes are chronologically ordered from top (most recent) to bottom
  -(least recent)</b> 
  -</p>
  -
  -<b>Changes:</b>
  -<h3>Version 1.7Beta</h3>
  -<ul>
  -<li>Better XML support for special characters (Tushar Bhatia) </li>
  -<li>Non-GUI functioning  &amp; Non-GUI test plan execution  (Tushar Bhatia)</li>
  -<li>Removing Swing dependence from base JMeter classes</li>
  -<li>Internationalization (Takashi Okamoto)</li>
  -<li>AllTests bug fix (neth6@atozasia.com)</li>
  -<li>ClassFinder bug fix (neth6@atozasia.com)</li>
  -<li>New Loop Controller</li>
  -<li>Proxy Server records HTTP samples from browser (and documented in the user manual)</li>
  -<li>Multipart Form support</li>
  -<li>HTTP Header class for Header customization</li>
  -<li>Extracting HTTP Header information from responses (Jamie Davidson)</li>
  -<li>Mailer Visualizer re-added to JMeter</li>
  -<li>JMeter now url encodes parameter names and values</li>
  -<li>listeners no longer give exceptions if their gui's haven't been initialized</li>
  -<li>HTTPS and Authorization working together</li>
  -<li>New Http sampling that automatically parses HTML response for images to download, and includes the downloading of
  -these images in total time for request (Neth neth6@atozasia.com) </li>
  -<li>HTTP responses from server can be parsed for links and forms, and dynamic data can be extracted and added to test
  -samples at run-time (documented)</li> 
  -<li>New Ramp-up feature (Jonathan O'Keefe)</li>
  -<li>New visualizers (Neth)</li>
  -<li>New Assertions for functional testing</li>
  -</ul>
  -
  -<h3>Version 1.6.1</h3>
  -<ul>
  -<li>Fixed saving and loading of test scripts (no more extra lines)</li>
  -<li>Can save and load special characters (such as &quot;&amp;&quot; and &quot;&lt;&quot;).</li>
  -<li>Can save and load timers and listeners.</li>
  -<li>Minor bug fix for cookies (if you cookie value contained an &quot;=&quot;, then it broke).</li>
  -<li>URL's can sample ports other than 80, and can test HTTPS, provided you have the necessary jars (JSSE)</li>
  -</ul>
  -<h3>Version 1.6 Alpha</h3>
  -<ul>
  -<li>New UI</li>
  -<li>Separation of GUI and Logic code</li>
  -<li>New Plug-in framework for new modules</li>
  -<li>Enhanced performance</li>
  -<li>Layering of test logic for greater flexibility</li>
  -<li>Added support for saving of test elements</li>
  -<li>Added support for distributed testing using a single client</li>
  -</ul>
  -<h3>Version 1.5.1</h3>
  -<ul>
  -<li>Fixed bug that caused cookies not to be read if header name case not as expected.</li>
  -<li>Clone entries before sending to sampler - prevents relocations from messing up information across threads</li>
  -<li>Minor bug fix to convenience dialog for adding paramters to test sample.  Bug prevented entries in dialog from appearing in test sample.</li>
  -<li>Added xerces.jar to distribution</li>
  -<li>Added junit.jar to distribution and created a few tests.</li>
  -<li>Started work on new framework.  New files in cvs, but do not effect program yet.</li>
  -<li>Fixed bug that prevent HTTPJMeterThread from delaying according to chosen timer.</li>
  -</ul>
  -
  -<p>
  -<h3>Version 1.5</h3>
  -<ul>
  -  <li>Abstracted out the concept of the Sampler, SamplerController, and TestSample.
  -  A Sampler represents code that understands a protocol (such as HTTP, or FTP, RMI,
  -  SMTP, etc..).  It is the code that actually makes the connection to whatever is
  -  being tested.
  -  A SamplerController represents code that understands how to organize and run a group
  -  of test samples.  It is what binds together a Sampler and it's test samples and runs them.
  -  A TestSample represents code that understands how to gather information from the
  -  user about a particular test.  For a website, it would represent a URL and any
  -  information to be sent with the URL.</li>
  -  <li>The UI has been updated to make entering test samples more convenient.</li>
  -  <li>Thread groups have been added, allowing a user to setup multiple test to run
  -  concurrently, and to allow sharing of test samples between those tests.</li>
  -  <li>It is now possible to save and load test samples.</li>
  -  <li>....and many more minor changes/improvements...</li>
  -</ul>
  -</p>
  -<p>
  -<b>Apache JMeter 1.4.1-dev</b>
  -(<a href="mailto:stefano@apache.org">Stefano Mazzocchi</a>)
  -
  -<ul>
  -  <li>Cleaned up URLSampler code after tons of patches for better readability. (SM)</li>
  -  <li>Made JMeter send a special &quot;user-agent&quot; identifier. (SM)</li>
  -  <li>Fixed problems with redirection not sending cookies and authentication info and removed
  -    a warning with jikes compilation. Thanks to <a href="mailto:wtanaka@yahoo.com">Wesley
  -    Tanaka</a> for the patches (SM)</li>
  -  <li>Fixed a bug in the URLSampler that caused to skip one URL when testing lists of URLs and
  -    a problem with Cookie handling. Thanks to <a
  -    href="mailto:gjohnson@investlearning.com">Graham Johnson</a> for the patches (SM)</li>
  -  <li>Fixed a problem with POST actions. Thanks to <a href="mailto:sschaub@bju.edu">Stephen
  -    Schaub</a> for the patch (SM)</li>
  -</ul>
  -</p>
  -<p>
  -<b>Apache JMeter 1.4</b> - Jul 11 1999
  -(<a href="mailto:cimjpno@be.ibm.com">Jean-Pierre Norguet</a>, <a
  -href="mailto:stefano@apache.org">Stefano Mazzocchi</a>)
  -
  -<ul>
  -  <li>Fixed a problem with POST actions. Thanks to <a href="mailto:bburns@labs.gte.com">Brendan
  -    Burns</a> for the patch (SM)</li>
  -  <li>Added close button to the About box for those window managers who don't provide it.
  -    Thanks to Jan-Henrik Haukeland for pointing it out. (SM)</li>
  -  <li>Added the simple Spline sample visualizer (JPN)</li>
  -</ul>
  -</p>
  -
  -<p><b>Apache JMeter 1.3</b> - Apr 16 1999 
  -(<a href="mailto:stefano@apache.org">Stefano Mazzocchi</a>, <a
  -href="mailto:luta.raphael@networks.vivendi.net">Rapha�l Luta</a>)
  -
  -<ul>
  -  <li>Run the Garbage Collector and run finalization before starting to sampling to ensure
  -    same state every time (SM)</li>
  -  <li>Fixed some NullPointerExceptions here and there (SM)</li>
  -  <li>Added HTTP authentication capabilities (RL)</li>
  -  <li>Added windowed sample visualizer (SM)</li>
  -  <li>Fixed stupid bug for command line arguments. Thanks to <a
  -    href="mailto:jbracer@infoneers.com">Jorge Bracer</a> for pointing this out (SM)</li>
  -</ul>
  -</p>
  -
  -<p><b>Apache JMeter 1.2</b> - Mar 17 1999
  -(<a href="mailto:sdowd@arcmail.com">Sean Dowd</a>, <a href="mailto:stefano@apache.org">Stefano
  -Mazzocchi</a>)
  -
  -<ul>
  -  <li>Integrated cookie capabilities with JMeter (SM)</li>
  -  <li>Added the Cookie manager and Netscape file parser (SD)</li>
  -  <li>Fixed compilation error for JDK 1.1 (SD)</li>
  -</ul>
  -</p>
  -
  -<p>
  -<b>Apache JMeter 1.1</b> - Feb 24 1999
  -(<a href="mailto:sdowd@arcmail.com">Sean Dowd</a>, <a href="mailto:stefano@apache.org">Stefano
  -Mazzocchi</a>)
  -
  -<ul>
  -  <li>Created the opportunity to create URL aliasing from the properties file as well as the
  -    ability to associate aliases to URL sequences instead of single URLs (SM) Thanks to <a
  -    href="mailto:chatfield@evergreen.com">Simon Chatfield</a> for the very nice suggestions
  -    and code examples.</li>
  -  <li>Removed the TextVisualizer and replaced it with the much more useful FileVisualizer (SM)</li>
  -  <li>Added the known bug list (SM)</li>
  -  <li>Removed the Java Apache logo (SM)</li>
  -  <li>Fixed a couple of typos (SM)</li>
  -  <li>Added UNIX makefile (SD)</li>
  -</ul>
  -</p>
  -<p>
  -<b>Apache JMeter 1.0.1</b> - Jan 25 1999
  -(<a href="mailto:stefano@apache.org">Stefano Mazzocchi</a>)
  -
  -<ul>
  -  <li>Removed pending issues doc issues (SM)</li>
  -  <li>Fixed the unix script (SM)</li>
  -  <li>Added the possibility of running the JAR directly using &quot;java -jar
  -    ApacheJMeter.jar&quot; with Java 2 (SM)</li>
  -  <li>Some small updates: fixed Swing location after Java 2(tm) release, license update and
  -    small cleanups (SM)</li>
  -</ul>
  -</p>
  -<p>
  -<b>Apache JMeter 1.0</b> - Dec 15 1998
  -(<a href="mailto:stefano@apache.org">Stefano Mazzocchi</a>)
  -<ul>
  -  <li>Initial version. (SM)</li>
  -</ul>
  -</p>
  -</section>
  -</body>
  -</document>
  +<?xml version="1.0"?> 
  +<document>   
  +<properties>     
  +	<author email="mstover1@apache.org">Michael Stover, et al.</author>     
  +	<title>History of Changes</title>   
  +</properties> 
  +<body> 
  +<section name="History of Changes"> 
  +<p><b>Changes are chronologically ordered from top (most recent) to bottom 
  +(least recent)</b></p>  
  +
  +<b>Changes:</b> 
  +<h3>Version 1.7Beta</h3> 
  +<ul> 
  +	<li>Better XML support for special characters (Tushar Bhatia) </li> 
  +	<li>Non-GUI functioning  &amp; Non-GUI test plan execution  (Tushar Bhatia)</li> 
  +	<li>Removing Swing dependence from base JMeter classes</li> 
  +	<li>Internationalization (Takashi Okamoto)</li> 
  +	<li>AllTests bug fix (neth6@atozasia.com)</li> 
  +	<li>ClassFinder bug fix (neth6@atozasia.com)</li> 
  +	<li>New Loop Controller</li> 
  +	<li>Proxy Server records HTTP samples from browser 
  +		(and documented in the user manual)</li> <li>Multipart Form support</li> 
  +	<li>HTTP Header class for Header customization</li> 
  +	<li>Extracting HTTP Header information from responses (Jamie Davidson)</li> 
  +	<li>Mailer Visualizer re-added to JMeter</li> 
  +	<li>JMeter now url encodes parameter names and values</li> 
  +	<li>listeners no longer give exceptions if their gui's haven't been initialized</li> 
  +	<li>HTTPS and Authorization working together</li> 
  +	<li>New Http sampling that automatically parses HTML response 
  +		for images to download, and includes the downloading of these 
  +		images in total time for request (Neth neth6@atozasia.com) </li> 
  +	<li>HTTP responses from server can be parsed for links and forms, 
  +		and dynamic data can be extracted and added to test samples 
  +		at run-time (documented)</li>  
  +	<li>New Ramp-up feature (Jonathan O'Keefe)</li> 
  +	<li>New visualizers (Neth)</li> 
  +	<li>New Assertions for functional testing</li> 
  +</ul>  
  +
  +<h3>Version 1.6.1</h3> 
  +<ul> 
  +	<li>Fixed saving and loading of test scripts (no more extra lines)</li> 
  +	<li>Can save and load special characters (such as &quot;&amp;&quot; and &quot;&lt;&quot;).</li> 
  +	<li>Can save and load timers and listeners.</li> 
  +	<li>Minor bug fix for cookies (if you cookie value 
  +		contained an &quot;=&quot;, then it broke).</li> 
  +	<li>URL's can sample ports other than 80, and can test HTTPS, 
  +		provided you have the necessary jars (JSSE)</li> 
  +</ul> 
  +
  +<h3>Version 1.6 Alpha</h3> 
  +<ul> 
  +	<li>New UI</li> 
  +	<li>Separation of GUI and Logic code</li> 	
  +	<li>New Plug-in framework for new modules</li> 
  +	<li>Enhanced performance</li> 
  +	<li>Layering of test logic for greater flexibility</li> 
  +	<li>Added support for saving of test elements</li> 
  +	<li>Added support for distributed testing using a single client</li> 
  +
  +</ul> 
  +<h3>Version 1.5.1</h3> 
  +<ul> 
  +	<li>Fixed bug that caused cookies not to be read if header name case not as expected.</li> 
  +	<li>Clone entries before sending to sampler - prevents relocations from messing up 
  +		information across threads</li> 
  +	<li>Minor bug fix to convenience dialog for adding paramters to test sample.  
  +		Bug prevented entries in dialog from appearing in test sample.</li> 
  +	<li>Added xerces.jar to distribution</li> 
  +	<li>Added junit.jar to distribution and created a few tests.</li> 
  +	<li>Started work on new framework.  New files in cvs, but do not effect program yet.</li> 
  +	<li>Fixed bug that prevent HTTPJMeterThread from delaying according to chosen timer.</li> 
  +</ul>  
  +<p> 
  +<h3>Version 1.5</h3> 
  +<ul>   
  +	<li>Abstracted out the concept of the Sampler, SamplerController, and TestSample.   
  +		A Sampler represents code that understands a protocol (such as HTTP, 
  +		or FTP, RMI,   SMTP, etc..).  It is the code that actually makes the 
  +		connection to whatever is   being tested.   A SamplerController 
  +		represents code that understands how to organize and run a group   
  +		of test samples.  It is what binds together a Sampler and it's test 
  +		samples and runs them.   A TestSample represents code that understands 
  +		how to gather information from the   user about a particular test.  
  +		For a website, it would represent a URL and any   information to be sent 
  +		with the URL.</li>   
  +	<li>The UI has been updated to make entering test samples more convenient.</li>   
  +	<li>Thread groups have been added, allowing a user to setup multiple test to run   
  +		concurrently, and to allow sharing of test samples between those tests.</li>   
  +	<li>It is now possible to save and load test samples.</li>   
  +	<li>....and many more minor changes/improvements...</li> 
  +</ul> 
  +</p> 
  +<p> 
  +<b>Apache JMeter 1.4.1-dev</b> (<a href="mailto:stefano@apache.org">Stefano Mazzocchi</a>)  
  +<ul>
  +   <li>Cleaned up URLSampler code after tons of patches for better readability. (SM)</li>
  +   <li>Made JMeter send a special &quot;user-agent&quot; identifier. (SM)</li>
  +   <li>Fixed problems with redirection not sending cookies and authentication info and removed
  +     a warning with jikes compilation. Thanks to <a href="mailto:wtanaka@yahoo.com">Wesley
  +     Tanaka</a> for the patches (SM)</li>
  +   <li>Fixed a bug in the URLSampler that caused to skip one URL when testing lists of URLs and
  +     a problem with Cookie handling. Thanks to <a
  +     href="mailto:gjohnson@investlearning.com">Graham Johnson</a> for the patches (SM)</li>
  +   <li>Fixed a problem with POST actions. Thanks to <a href="mailto:sschaub@bju.edu">Stephen
  +     Schaub</a> for the patch (SM)</li>
  + </ul>
  + </p>
  + <p>
  + <b>Apache JMeter 1.4</b> - Jul 11 1999 (<a href="mailto:cimjpno@be.ibm.com">Jean-Pierre Norguet</a>,
  + <a href="mailto:stefano@apache.org">Stefano Mazzocchi</a>)
  +  <ul>
  +   <li>Fixed a problem with POST actions. Thanks to <a href="mailto:bburns@labs.gte.com">Brendan
  +     Burns</a> for the patch (SM)</li>
  +   <li>Added close button to the About box for those window managers who don't provide it.
  +     Thanks to Jan-Henrik Haukeland for pointing it out. (SM)</li>
  +   <li>Added the simple Spline sample visualizer (JPN)</li> 
  +</ul> </p>
  +  <p><b>Apache JMeter 1.3</b> - Apr 16 1999
  +  (<a href="mailto:stefano@apache.org">Stefano Mazzocchi</a>,
  + <a href="mailto:luta.raphael@networks.vivendi.net">Rapha�l Luta</a>)
  +<ul>
  +   <li>Run the Garbage Collector and run finalization before starting to sampling to ensure
  +     same state every time (SM)</li>
  +   <li>Fixed some NullPointerExceptions here and there (SM)</li>
  +   <li>Added HTTP authentication capabilities (RL)</li>
  +   <li>Added windowed sample visualizer (SM)</li>
  +   <li>Fixed stupid bug for command line arguments. Thanks to <a
  +     href="mailto:jbracer@infoneers.com">Jorge Bracer</a> for pointing this out (SM)</li> 
  +</ul> </p>
  +  <p><b>Apache JMeter 1.2</b> - Mar 17 1999 (<a href="mailto:sdowd@arcmail.com">Sean Dowd</a>, 
  +<a href="mailto:stefano@apache.org">Stefano Mazzocchi</a>)  
  +<ul>
  +   <li>Integrated cookie capabilities with JMeter (SM)</li>
  +   <li>Added the Cookie manager and Netscape file parser (SD)</li>
  +   <li>Fixed compilation error for JDK 1.1 (SD)</li> </ul> </p>  
  +<p> <b>Apache JMeter 1.1</b> - Feb 24 1999 (<a href="mailto:sdowd@arcmail.com">Sean Dowd</a>, 
  +<a href="mailto:stefano@apache.org">Stefano Mazzocchi</a>)  
  +<ul>
  +   <li>Created the opportunity to create URL aliasing from the properties file as well as the
  +     ability to associate aliases to URL sequences instead of single URLs (SM) Thanks to <a
  +     href="mailto:chatfield@evergreen.com">Simon Chatfield</a> for the very nice suggestions
  +     and code examples.</li>
  +   <li>Removed the TextVisualizer and replaced it with the much more useful FileVisualizer (SM)</li>
  +   <li>Added the known bug list (SM)</li>
  +   <li>Removed the Java Apache logo (SM)</li>
  +   <li>Fixed a couple of typos (SM)</li>
  +   <li>Added UNIX makefile (SD)</li> </ul> </p> 
  +<p> <b>Apache JMeter 1.0.1</b> - Jan 25 1999 (<a href="mailto:stefano@apache.org">Stefano Mazzocchi</a>)  
  +<ul>
  +   <li>Removed pending issues doc issues (SM)</li>
  +   <li>Fixed the unix script (SM)</li>
  +   <li>Added the possibility of running the JAR directly using &quot;java -jar
  +     ApacheJMeter.jar&quot; with Java 2 (SM)</li>
  +   <li>Some small updates: fixed Swing location after Java 2(tm) release, license update and
  +     small cleanups (SM)</li> 
  +</ul> </p> 
  +<p> <b>Apache JMeter 1.0</b> - Dec 15 1998 (<a href="mailto:stefano@apache.org">Stefano Mazzocchi</a>) 
  +<ul>
  +   <li>Initial version. (SM)</li> 
  +</ul> </p> 
  +</section> 
  +</body> 
  +</document>
  \ No newline at end of file
  
  
  
  1.4       +847 -423  jakarta-jmeter/xdocs/extending/index.xml
  
  Index: index.xml
  ===================================================================
  RCS file: /home/cvs/jakarta-jmeter/xdocs/extending/index.xml,v
  retrieving revision 1.3
  retrieving revision 1.4
  diff -u -r1.3 -r1.4
  --- index.xml	24 Mar 2001 20:44:24 -0000	1.3
  +++ index.xml	7 Mar 2002 23:03:13 -0000	1.4
  @@ -1,424 +1,848 @@
  -<?xml version="1.0"?>
  -<document>
  -  <properties>
  -	 <author email="bburns@apache.org">Michael Stover, brendan Burns, et al.</author>
  -	 <title>Extending JMeter</title>
  -  </properties>
  -<body>
  -<section name="Extending JMeter">
  -
  -<h2>Extending JMeter</h2>:
  -<p>There are several ways to extend JMeter and add functionality.  JMeter is designed
  -to make this task easier.
  -</p>
  -<ul>
  -	<li><a href="#timer">Creating your own Timer</a></li>
  -	<li><a href="#listener">Creating your own SampleListener (such as a visualizer, or reporter)</a></li>
  -	<li><a href="#config">Creating your own Config Element</a></li>
  -	<li><a href="#logical">Creating your own logic SamplerController</a></li>
  -	<li><a href="#testsample">Creating your own test sample SamplerController</a></li>
  -	<li><a href="#sampler">Creating your own Sampler</a></li>
  -	<li><a href="#uicomponent">Making your custom elements play nice as a JMeter UI component</a></li>
  -	<li><a href="#saveable">Making your custom elements saveable and loadable from within JMeter</a></li>
  -</ul>
  -<hr/>
  -<a name="timer"/>
  -<h3>Creating your own Timer</h3>
  -<p>The timer interface:</p>
  -<pre>
  -	  public long delay();
  -</pre>
  -<p>Not too complicated.  Your delay method must, each time it is called, return a
  -long representing the number of milliseconds to delay.  The constant timer returns the
  -same number every time it's called.  A random timer returns a different number each time.
  -</p>
  -<hr/>
  -<a name="listener"/>
  -<h3>Creating your own SampleListener</h3>
  -<p>The SampleListener interface:</p>
  -<pre>
  -	  public void sampleOccurred(SampleEvent e);
  -	  public void sampleStarted(SampleEvent e);
  -	  public void sampleStopped(SampleEvent e);
  -</pre>
  -<p>sampleOccurred is the method called when a sample is completed, and the data has been
  -collected.  The SampleEvent object should contain all the information gathered
  -from the sample.  If your sample listener is primarily concerned with collecting the
  -data from a test run, you can implement this method - the other two are for other purposes and
  -can be ignored (though the methods have to be there for your class to compile).
  -</p>
  -<p>sampleStarted and sampleStopped are used to indicate the state of the sampling thread.
  -This is useful for visualizers that show the user the state of all running threads
  -(ie, they are running and waiting for response, or they're stopped and waiting
  -to begin again).
  -</p>
  -<hr/>
  -<a name="config"/>
  -<h3>Creating your own Config Element</h3>
  -<p>The ConfigElement interface:</p>
  -<pre>
  -	  public void addConfigElement(ConfigElement config);
  -	  public boolean expectsModification();
  -	  public Object clone();
  -</pre>
  -<p>The ConfigElement interface is sparse.  All ConfigElements are expected to implement
  -a public <b>clone()</b> method.  The reason for this is that config elements will be cloned
  -for each different sampling thread, and most will be cloned for each sample.  </p>
  -<p>If your config element expects to be modified in the process of a test run,
  -and you want those modifications to carry over from sample to sample (as in
  -a cookie manager - you want to save all cookies that gets set throughout
  -the test), then return true for the <b>expectsModification()</b> method. Your config element will not be
  -cloned for each sample. If your config elements are more static in nature,
  -return false. If in doubt, return false.</p>
  -<p><b>addConfigElement()</b> is required so that config elements can be layered.  For
  -instance, let's say a user creates a URL entry that contains default values -
  -they might use this to specify a server.  Then, all their test samples configure
  -individual test cases, but leave out the server field.  This information is combined
  -via the <b>addConfigElement()</b> method.  Your custom config elements should do the right
  -thing when this method is called.  Normally, this involves ignoring such calls unless
  -the passed in ConfigElement is of the same type as yours, and then only merging in
  -values that are not already set in the object receiving the call (ie you probably
  -don't want to overwrite any values).
  -</p>
  -<p>You may have noticed there's no specification on how to get the config information
  -<b>out</b> of a ConfigElement.  This raises the question, who is going to use it?
  -At the end of the line, there will be a Sampler that will need the information held
  -in your config element.  The sampler that uses your config element needs to know more
  -about the class than the rest of JMeter - that information is not part of this interface.
  -</p>
  -<p>If at all possible, extend <b>AbstractConfigElement</b> when creating your own.  By doing so,
  -and by following some simple rules, you will get cloning and saving to XML of your
  -config element for free (as in, you don't have to do anything!).  <b>AbstractConfigElement</b>
  -stores all it's values in a Map, and provides getProperty and putProperty methods.  Your
  -config element can provide <b>getXXX()</b> and <b>setXXX()</b> methods, but these should delegate
  -to <b>getProperty()</b> and <b>setProperty()</b>, probably using static Strings as keys in the Map.
  -<br/>You can store any type of object, provided the objects are clonable and Saveable
  -(Strings, Integer, Long, Double, Float are all good in this regard).
  -</p>
  -<p>One caveat - if your config element has been restored from file, all the values
  -held in the Map will be String objects (except for elements that implement Saveable
  -on their own), and you may have to do casting and parsing.  Example: an Integer will
  -have to be converted from a String to an int, so your getXXX() method should check
  -for this possibility to avoid exceptions.
  -</p>
  -<hr/>
  -<a name="logical"/>
  -<h3>Creating your own logic SamplerController</h3>
  -<p>The SamplerController interface looks as follows:</p>
  -<pre>
  -	  Entry nextEntry();
  -	  Collection getListeners();
  -	  void addSamplerController(SamplerController controller);
  -	  void addConfigElement(ConfigElement config);
  -	  Object clone();
  -</pre>
  -<p>Again, <b>clone()</b> is a method that must be implemented to all SamplerControllers to avoid
  -contamination between sampling threads.</p>
  -<p>The <b>nextEntry()</b> method is the essential job of a SamplerController - to deliver
  -Entry objects to be sampled.  An Entry object encapsulates all the information needed
  -by a Sampler to do its job.  The <b>nextEntry()</b> method should work like an iterator and
  -continuously return new Entry objects.
  -</p>
  -<p>There are two boundary conditions that need to be handled.  If the Controller has no
  -more Entries to give, for the rest of the test, it should return <b>null</b>.  Therefore,
  -if your Controller has sub-controllers it is receiving Entries from, it should remove
  -them from its list of controllers to get Entries from.  The other condition is when
  -your controller reaches the end of its list of Entries, and it needs to start over
  -from the beginning.  The parent Controller needs to know this so that it can move
  -on to its next controller in its list.  Therefore, at the end of each iteration,
  -your SamplerController needs to return a CycleEntry object instead of a normal Entry.
  -Conversely, this means that if your Controller receives a CycleEntry object, it should
  -move on to the next Controller in its list.</p>
  -<p>A logic controller does not generate Entries on its own, but simply regulates
  -the flow of Entries from its sub-controllers.  A logic controller might provide
  -looping logic, or it might modify the Entries that pass through it, or whatever.
  -GenericController provides an implementation that does absolutely nothing but
  -pass Entries on from its sub-controllers.  This class is useful both for reference
  -purposes and to extend, since it provides a lot of methods you're likely to find
  -useful
  -</p>
  -<p><b>getListeners()</b> is an odd member of this Class.  It's there to serve those who
  -want their controller to receive sample data.  This would be useful for a controller
  -that modified Entry objects based on previous sample results (like an HTML spider
  -that dynamically reacted to previously sampled webpages for links and forms).  The
  -responsibility of the controller implementer is to collect all potential listeners
  -from the sub-controller list, and add themselves if desired.  Most SamplerControllers
  -that extend GenericController don't have to do anything.</p>
  -<p><b>addSamplerController(SamplerController controller)</b> is the method used to
  -add sub controllers to your SamplerController. </p>
  -<p><b>addConfigElement(ConfigElement config)</b> Your SamplerController should also
  -be capable of holding configuration elements and adding them to Entries as they
  -pass through your controller.  Again, see GenericController for reference.  Essentially,
  -all Entry objects that get returned by <b>nextEntry()</b> are handed all the ConfigElements
  -of the controller.
  -</p>
  -<hr/>
  -<a name="testsample"/>
  -<h3>Creating your own test sample SamplerController</h3>
  -<p>A SamplerController that generates Entry objects is just like a logic controller
  -except that it creates its own Entry objects instead of gathering them from
  -sub-controllers (although, to be fully correct, your test sample SamplerController
  -should handle both possibilities).  Your test sample SamplerController can also
  -benefit from extending GenericController.  By doing so, most of your cloning and
  -saving needs are handled (but probably not entirely).  See HttpTestSample as
  -reference.</p>
  -<hr/>
  -<a name="sampler"/>
  -<h3>Creating your own Sampler</h3>
  -<p>The Sampler interface:</p>
  -<pre>
  -	  public SampleResult sample(Entry e)
  -</pre>
  -<p>Your Sampler has two responsibilities.  Of lesser importance, it should do whatever
  -it is you want to do, given an Entry object that hopefully contains information
  -about what is to be sampled.  Of greater importance, your sampler should return
  -a <b>SampleResult</b> object that holds information about the sampling.  Information such
  -as how long the sample took, the text response from the sample (if appropriate), and
  -a string that describes the location of what was sampled.  The SampleResult interface
  -is essentially a Map with public static Strings as keys. </p>
  -<hr/>
  -<a name="uicomponent"/>
  -<h3>Making your custom elements play nice as a JMeter UI component</h3>
  -<p>In order to take part in the JMeter UI, your component needs to implement the
  -JMeterComponentModel interface:</p>
  -<pre>
  -	  Class getGuiClass();
  -	  public String getName();
  -	  public void setName(String name);
  -	  public Collection getAddList();
  -	  public String getClassLabel();
  -	  public void uncompile();
  -</pre>
  -<p>Most of this stuff is easy, boring, and tedious.  <b>getName()</b>, <b>setName()</b> is a simple
  -String property that is the name of the object.  <b>getClassLabel()</b> should return
  -a String that describes the class.  This string will be displayed to the user and
  -so should be short but meaningful.  <b>getGuiClass()</b> should return a Class object for
  -the class that will be used as a GUI component.  This class should be a subclass
  -of java.awt.Container, and preferably a subclass of <b>javax.swing.JComponent</b>.</p>
  -<p><b>getAddList()</b> should return a list of either Strings or JMenus.  These Strings
  -represent the Classes that can be added to your SamplerController.  Each String
  -should correspond to the target class's <b>getClassLabel()</b> String.  <b>MenuFactory</b> is
  -a class that will return some preset menu lists (such as all available SamplerControllers,
  -all available ConfigElements, etc).</p>
  -<p><b>uncompile()</b> is a cleanup method used between sampling runs.  When the user
  -hits "Start", JMeter "compiles" the objects in the tree.  Child nodes are added
  -to their parent objects recursively until there is one TestPlan object, which is
  -then submitted for testing.  Afterward, these elements have to un-added from their
  -parent objects, or uncompiled.  To uncompile your class, simply clear all your
  -data structures that are holding sub-elements.  For your SamplerController, this
  -will be the list of sub-controllers and the list of ConfigElements.</p>
  -<p>That's it, except for your GUI class.  If your SamplerController has no
  -configuration needs, just return org.apache.jmeter.gui.NamePanel, and the user will
  -at least be able to change the name of your component.  Otherwise, create a gui class
  -that implements the <b>ModelSupported</b> interface:</p>
  -<pre>
  -	  void setModel(Object model);
  -	  public void updateGui();
  -</pre>
  -<p><b>setModel()</b> is used to hand your JMeterModelComponent class to the GUI class when
  -it is instantiated.  It is your responsibility for providing the means by which
  -the Gui class updates the values in the model class.  For updating in the other
  -direction, there is <b>updateGui()</b>, which the model class can call if necessary.
  -Note, normally, this call is made for you automatically whenever the Gui is brought
  -to the screen.  If you are creating a Visualizer, then you may need to use <b>updateGui()</b>.
  -For reference, refer to UrlConfigGui (in org.apache.jmeter.protocol.http.config.gui).</p>
  -<p>If you have done all this correctly, there's just one more step.  If you compile
  -your classes into the ApacheJMeter.jar file, then you're done.  Your classes will
  -be automatically found and used.  Otherwise, you will need to modify jmeter.properties.
  -The <i>search_paths</i> property should be modified to include the path where your
  -classes are.  This does not obviate the need for your classes to be in the JVM's
  -CLASSPATH - it is an additional requirement.  Otherwise, your classes will not be
  -detected, and the Gui will not make them available to the user.</p>
  -<hr/>
  -<a name="saveable"/>
  -<h3>Making your custom elements saveable and loadable from within JMeter</h3>
  -<p>The Saveable interface has just one method:</p>
  -<pre>
  -	  public Class getTagHandlerClass()
  -</pre>
  -<p>This method simply returns the Class object that represents the Class that handles
  -the saving and loading of your component.</p>
  -<p>To write this SaveHandler, make a class that extends <b>TagHandler</b>
  -(from org.apache.jmeter.save.xml).  Note, if your component extends AbstractConfigElement,
  -it is already fully Saveable - provided you only have information stored in
  -the Map from AbstractConfigElement.</p>
  -<p>To write your own TagHandler, you will have to implement the following methods:</p>
  -<pre>
  -	  public abstract void setAtts(Attributes atts) throws Exception
  -	  public String getPrimaryTagName()
  -	  public void save(Saveable objectToSave,Writer out) throws IOException
  -</pre>
  -<p><b>getPrimaryTagName()</b> should return the String that is the XML tagname that your
  -class handles.  When you save your object, it should all be contained within an
  -XML tag of the same name.  This will ensure that when JMeter's parser hits that tag,
  -your class will be called upon to handle the data.</p>
  -<p><b>setAtts(Attributes atts)</b> is called when the parser first hits your tag.
  -If this primary tag has any attributes, this method represents your chance to save
  -the information.</p>
  -<p><b>save(Saveable objectToSave,Writer out)</b> - when the user selects "Save",
  -JMeter will call this method and hand the Saveable object to be saved (it will be
  -the object that specified your TagHandler as the class responsible for it's saving).
  -This method should use the given Writer object to print all the XML necessary to
  -save the current state of the objectToSave.</p>
  -<p>There's more you have to do to handle creating a new Object when JMeter parses
  -an XML file.  However, there's no standard interface you need to implement, but rather,
  -JMeter uses reflection to generate method calls into your class.  When JMeter hits
  -a tag that corresponds to your PrimaryTagName, an instance of your TagHandler will
  -be created, and it's <b>setAtts()</b> method will get called.  Thereafter, methods are called
  -depending on subsequent tags and character data.  For every tag, JMeter calls
  -<b>&lt;tag-name&gt;TagStart(Attributes atts)</b>, and for every end tag, JMeter calls
  -<b>&lt;tag-name&gt;TagEnd()</b>.</p>
  -<p>Additionally, JMeter will call a method that corresponds to all tags that are
  -current.  So, for instance, if JMeter runs into a tag name "foo", then
  -<b>foo(Attributes atts)</b> will be called.  If JMeter then parses character data,
  -then <b>foo(String data)</b> will be called.  If JMeter parses a tag within foo, called
  -"nestedFoo", then JMeter will call <b>foo_nestedFoo(Attributes atts)</b> and
  -<b>foo_nestedFoo(String data)</b>.  And so on.
  -</p>
  -<p>An annotated example:</p>
  -<pre>
  -public class AbstractConfigElementHandler extends TagHandler
  -{
  -	private AbstractConfigElement config;
  -	private String currentProperty;
  -
  -	public AbstractConfigElementHandler()
  -	{
  -	}
  -
  -	<font color="blue">/**
  -	 * Returns the AbstractConfigElement object parsed from the XML.  This method
  -	 * is required to fulfill the SaveHandler interface.  It is used by the XML
  -	 * routines to gather all the saved objects.
  -	 */</font>
  -	public Object getModel()
  -	{
  -		return config;
  -	}
  -
  -	<font color="blue">/**
  -	 * This is called when a tag is first encountered for this handler class to handle.
  -	 * The attributes of the tag are passed, and the SaveHandler object is expected
  -	 * to instantiate a new object.
  -	 */</font>
  -	public void setAtts(Attributes atts) throws Exception
  -	{
  -		String className = atts.getValue("type");
  -		config = (AbstractConfigElement)Class.forName(className).newInstance();
  -	}
  -
  -	<font color="blue">/**
  -	 * Called by reflection when a &lt;property&gt; tag is encountered.  Again, the
  -	 * attributes are passed.
  -	 */</font>
  -	public void property(Attributes atts)
  -	{
  -		currentProperty = atts.getValue("name");
  -	}
  -
  -	<font color="blue">/**
  -	 * Called by reflection when text between the begin and end &lt;property&gt;
  -	 * tag is encountered.
  -	 */</font>
  -	public void property(String data)
  -	{
  -
  -		if(data != null &amp;&amp; data.trim().length() &gt; 0)
  -		{
  -			config.putProperty(currentProperty,data);
  -			currentProperty = null;
  -		}
  -	}
  -
  -	<font color="blue">/**
  -	 * Called by reflection when the &lt;property&gt; tag is ended.
  -	 */</font>
  -	public void propertyTagEnd()
  -	{
  -		<font color="blue">// Here's a tricky bit.  See below for explanation.</font>
  -		List children = xmlParent.takeChildObjects(this);
  -		if(children.size() == 1)
  -		{
  -			config.putProperty(currentProperty,((TagHandler)children.get(0)).getModel());
  -		}
  -	}
  -
  -
  -	  <font color="blue">/**
  -	* Gets the tag name that will trigger the use of this object's TagHandler.
  -	*/</font>
  -	public String getPrimaryTagName()
  -	{
  -		return "ConfigElement";
  -	}
  -
  -  <font color="blue">/**
  -	* Tells the object to save itself to the given output stream.
  -	*/</font>
  -	public void save(Saveable obj,Writer out) throws IOException
  -	{
  -		AbstractConfigElement saved = (AbstractConfigElement)obj;
  -		out.write("&lt;ConfigElement type=\"");
  -		out.write(saved.getClass().getName());
  -		out.write("\">\n");
  -		Iterator iter = saved.getPropertyNames().iterator();
  -		while (iter.hasNext())
  -		{
  -			String key = (String)iter.next();
  -			Object value = saved.getProperty(key);
  -			writeProperty(out,key,value);
  -		}
  -		out.write(&lt;/ConfigElement&gt;");
  -	}
  -
  -	<font color="blue">/**
  -	 * Routine to write each property to xml.
  -	 */</font>
  -	private void writeProperty(Writer out,String key,Object value) throws IOException
  -	{
  -		out.write("&lt;property name=\"");
  -		out.write(key);
  -		out.write("\">\n");
  -		JMeterHandler.writeObject(value,out);
  -		out.write("\n&lt;/property&gt;\n");
  -	}
  -</pre>
  -<p>
  -In the <b>propertyTagEnd()</b> method, <b>takeChildObjects()</b> is called on the xmlParent
  -instance variable.  xmlParent is inherited from TagHandler - the DocumentHandler
  -object that is running the show.  xmlParent takes an XML file that represents a portion of
  -the test configuration tree, and recreates a tree-like data structure.  When it is
  -done, it will convert its tree-like data structure into the test configuration tree
  -structure.
  -</p>
  -<p>However, sometimes, a tree element has sub objects that you do not want represented
  -in the tree - rather, they are part of your object.  But, they may
  -be complicated enough to warrant their own SaveHandler class, and thus, the xmlParent
  -picks them up as part of its tree.  When the tag is done, and you know that there are
  -child objects you want to grab, you can call the <b>takeChildObjects()</b> method and get a
  -List object containing them all.  This will remove them from the tree, and you can add
  -them to your object that you're creating.
  -</p>
  -<p>
  -UrlConfig is good example.  It extends AbstractConfigElement, so it uses exactly the
  -code above to save and reload itself from XML.  However, one of the pieces of data
  -that UrlConfig stores is an Arguments object.  Arguments is too complicated to save
  -to file as a simple string, so it has its own Handler object (ArgumentsHandler).  In
  -the above code, when the call to <b>JMeterHandler.writeObject(value,out)</b> is made, the
  -writeObject method detects whether the object implements Saveable, and if so, calls
  -the object's SaveHandler class to deal with it.  This means, however, that when
  -reading that XML file, the Argument object will show up as a separate entity in
  -the data tree, whereas it originally was just part of the data of the UrlConfig
  -object.  In order to preserve that relationship, it's necessary for the
  -AbstractConfigElementHandler to check after each property tag is done for child
  -objects in the tree, and take them for its own use.
  -</p>
  -<p>
  -Study the other SaveHandler objects and the TagHandler class to learn more
  -about how saving is accomplished.  Once you understand the design, writing your
  -own SaveHandler is very easy.
  -</p>
  -
  -</section>
  -</body>
  +<?xml version="1.0"?>
  +
  +<document>
  +
  +  <properties>
  +
  +	 <author email="bburns@apache.org">Michael Stover, brendan Burns, et al.</author>
  +
  +	 <title>Extending JMeter</title>
  +
  +  </properties>
  +
  +<body>
  +
  +<section name="Extending JMeter">
  +
  +
  +
  +<h2>Extending JMeter</h2>:
  +
  +<p>There are several ways to extend JMeter and add functionality.  JMeter is designed
  +
  +to make this task easier.
  +
  +</p>
  +
  +<ul>
  +	<li><a href="JMeter Extension Scenario.html">A good overview of the process of extending JMeter</a></li>
  +<p/>
  +	<li><a href="#timer">Creating your own Timer</a></li>
  +
  +	<li><a href="#listener">Creating your own SampleListener (such as a visualizer, or reporter)</a></li>
  +
  +	<li><a href="#config">Creating your own Config Element</a></li>
  +
  +	<li><a href="#logical">Creating your own logic SamplerController</a></li>
  +
  +	<li><a href="#testsample">Creating your own test sample SamplerController</a></li>
  +
  +	<li><a href="#sampler">Creating your own Sampler</a></li>
  +
  +	<li><a href="#uicomponent">Making your custom elements play nice as a JMeter UI component</a></li>
  +
  +	<li><a href="#saveable">Making your custom elements saveable and loadable from within JMeter</a></li>
  +
  +</ul>
  +
  +<hr/>
  +
  +<a name="timer"/>
  +
  +<h3>Creating your own Timer</h3>
  +
  +<p>The timer interface:</p>
  +
  +<pre>
  +
  +	  public long delay();
  +
  +</pre>
  +
  +<p>Not too complicated.  Your delay method must, each time it is called, return a
  +
  +long representing the number of milliseconds to delay.  The constant timer returns the
  +
  +same number every time it's called.  A random timer returns a different number each time.
  +
  +</p>
  +
  +<hr/>
  +
  +<a name="listener"/>
  +
  +<h3>Creating your own SampleListener</h3>
  +
  +<p>The SampleListener interface:</p>
  +
  +<pre>
  +
  +	  public void sampleOccurred(SampleEvent e);
  +
  +	  public void sampleStarted(SampleEvent e);
  +
  +	  public void sampleStopped(SampleEvent e);
  +
  +</pre>
  +
  +<p>sampleOccurred is the method called when a sample is completed, and the data has been
  +
  +collected.  The SampleEvent object should contain all the information gathered
  +
  +from the sample.  If your sample listener is primarily concerned with collecting the
  +
  +data from a test run, you can implement this method - the other two are for other purposes and
  +
  +can be ignored (though the methods have to be there for your class to compile).
  +
  +</p>
  +
  +<p>sampleStarted and sampleStopped are used to indicate the state of the sampling thread.
  +
  +This is useful for visualizers that show the user the state of all running threads
  +
  +(ie, they are running and waiting for response, or they're stopped and waiting
  +
  +to begin again).
  +
  +</p>
  +
  +<hr/>
  +
  +<a name="config"/>
  +
  +<h3>Creating your own Config Element</h3>
  +
  +<p>The ConfigElement interface:</p>
  +
  +<pre>
  +
  +	  public void addConfigElement(ConfigElement config);
  +
  +	  public boolean expectsModification();
  +
  +	  public Object clone();
  +
  +</pre>
  +
  +<p>The ConfigElement interface is sparse.  All ConfigElements are expected to implement
  +
  +a public <b>clone()</b> method.  The reason for this is that config elements will be cloned
  +
  +for each different sampling thread, and most will be cloned for each sample.  </p>
  +
  +<p>If your config element expects to be modified in the process of a test run,
  +
  +and you want those modifications to carry over from sample to sample (as in
  +
  +a cookie manager - you want to save all cookies that gets set throughout
  +
  +the test), then return true for the <b>expectsModification()</b> method. Your config element will not be
  +
  +cloned for each sample. If your config elements are more static in nature,
  +
  +return false. If in doubt, return false.</p>
  +
  +<p><b>addConfigElement()</b> is required so that config elements can be layered.  For
  +
  +instance, let's say a user creates a URL entry that contains default values -
  +
  +they might use this to specify a server.  Then, all their test samples configure
  +
  +individual test cases, but leave out the server field.  This information is combined
  +
  +via the <b>addConfigElement()</b> method.  Your custom config elements should do the right
  +
  +thing when this method is called.  Normally, this involves ignoring such calls unless
  +
  +the passed in ConfigElement is of the same type as yours, and then only merging in
  +
  +values that are not already set in the object receiving the call (ie you probably
  +
  +don't want to overwrite any values).
  +
  +</p>
  +
  +<p>You may have noticed there's no specification on how to get the config information
  +
  +<b>out</b> of a ConfigElement.  This raises the question, who is going to use it?
  +
  +At the end of the line, there will be a Sampler that will need the information held
  +
  +in your config element.  The sampler that uses your config element needs to know more
  +
  +about the class than the rest of JMeter - that information is not part of this interface.
  +
  +</p>
  +
  +<p>If at all possible, extend <b>AbstractConfigElement</b> when creating your own.  By doing so,
  +
  +and by following some simple rules, you will get cloning and saving to XML of your
  +
  +config element for free (as in, you don't have to do anything!).  <b>AbstractConfigElement</b>
  +
  +stores all it's values in a Map, and provides getProperty and putProperty methods.  Your
  +
  +config element can provide <b>getXXX()</b> and <b>setXXX()</b> methods, but these should delegate
  +
  +to <b>getProperty()</b> and <b>setProperty()</b>, probably using static Strings as keys in the Map.
  +
  +<br/>You can store any type of object, provided the objects are clonable and Saveable
  +
  +(Strings, Integer, Long, Double, Float are all good in this regard).
  +
  +</p>
  +
  +<p>One caveat - if your config element has been restored from file, all the values
  +
  +held in the Map will be String objects (except for elements that implement Saveable
  +
  +on their own), and you may have to do casting and parsing.  Example: an Integer will
  +
  +have to be converted from a String to an int, so your getXXX() method should check
  +
  +for this possibility to avoid exceptions.
  +
  +</p>
  +
  +<hr/>
  +
  +<a name="logical"/>
  +
  +<h3>Creating your own logic SamplerController</h3>
  +
  +<p>The SamplerController interface looks as follows:</p>
  +
  +<pre>
  +
  +	  Entry nextEntry();
  +
  +	  Collection getListeners();
  +
  +	  void addSamplerController(SamplerController controller);
  +
  +	  void addConfigElement(ConfigElement config);
  +
  +	  Object clone();
  +
  +</pre>
  +
  +<p>Again, <b>clone()</b> is a method that must be implemented to all SamplerControllers to avoid
  +
  +contamination between sampling threads.</p>
  +
  +<p>The <b>nextEntry()</b> method is the essential job of a SamplerController - to deliver
  +
  +Entry objects to be sampled.  An Entry object encapsulates all the information needed
  +
  +by a Sampler to do its job.  The <b>nextEntry()</b> method should work like an iterator and
  +
  +continuously return new Entry objects.
  +
  +</p>
  +
  +<p>There are two boundary conditions that need to be handled.  If the Controller has no
  +
  +more Entries to give, for the rest of the test, it should return <b>null</b>.  Therefore,
  +
  +if your Controller has sub-controllers it is receiving Entries from, it should remove
  +
  +them from its list of controllers to get Entries from.  The other condition is when
  +
  +your controller reaches the end of its list of Entries, and it needs to start over
  +
  +from the beginning.  The parent Controller needs to know this so that it can move
  +
  +on to its next controller in its list.  Therefore, at the end of each iteration,
  +
  +your SamplerController needs to return a CycleEntry object instead of a normal Entry.
  +
  +Conversely, this means that if your Controller receives a CycleEntry object, it should
  +
  +move on to the next Controller in its list.</p>
  +
  +<p>A logic controller does not generate Entries on its own, but simply regulates
  +
  +the flow of Entries from its sub-controllers.  A logic controller might provide
  +
  +looping logic, or it might modify the Entries that pass through it, or whatever.
  +
  +GenericController provides an implementation that does absolutely nothing but
  +
  +pass Entries on from its sub-controllers.  This class is useful both for reference
  +
  +purposes and to extend, since it provides a lot of methods you're likely to find
  +
  +useful
  +
  +</p>
  +
  +<p><b>getListeners()</b> is an odd member of this Class.  It's there to serve those who
  +
  +want their controller to receive sample data.  This would be useful for a controller
  +
  +that modified Entry objects based on previous sample results (like an HTML spider
  +
  +that dynamically reacted to previously sampled webpages for links and forms).  The
  +
  +responsibility of the controller implementer is to collect all potential listeners
  +
  +from the sub-controller list, and add themselves if desired.  Most SamplerControllers
  +
  +that extend GenericController don't have to do anything.</p>
  +
  +<p><b>addSamplerController(SamplerController controller)</b> is the method used to
  +
  +add sub controllers to your SamplerController. </p>
  +
  +<p><b>addConfigElement(ConfigElement config)</b> Your SamplerController should also
  +
  +be capable of holding configuration elements and adding them to Entries as they
  +
  +pass through your controller.  Again, see GenericController for reference.  Essentially,
  +
  +all Entry objects that get returned by <b>nextEntry()</b> are handed all the ConfigElements
  +
  +of the controller.
  +
  +</p>
  +
  +<hr/>
  +
  +<a name="testsample"/>
  +
  +<h3>Creating your own test sample SamplerController</h3>
  +
  +<p>A SamplerController that generates Entry objects is just like a logic controller
  +
  +except that it creates its own Entry objects instead of gathering them from
  +
  +sub-controllers (although, to be fully correct, your test sample SamplerController
  +
  +should handle both possibilities).  Your test sample SamplerController can also
  +
  +benefit from extending GenericController.  By doing so, most of your cloning and
  +
  +saving needs are handled (but probably not entirely).  See HttpTestSample as
  +
  +reference.</p>
  +
  +<hr/>
  +
  +<a name="sampler"/>
  +
  +<h3>Creating your own Sampler</h3>
  +
  +<p>The Sampler interface:</p>
  +
  +<pre>
  +
  +	  public SampleResult sample(Entry e)
  +
  +</pre>
  +
  +<p>Your Sampler has two responsibilities.  Of lesser importance, it should do whatever
  +
  +it is you want to do, given an Entry object that hopefully contains information
  +
  +about what is to be sampled.  Of greater importance, your sampler should return
  +
  +a <b>SampleResult</b> object that holds information about the sampling.  Information such
  +
  +as how long the sample took, the text response from the sample (if appropriate), and
  +
  +a string that describes the location of what was sampled.  The SampleResult interface
  +
  +is essentially a Map with public static Strings as keys. </p>
  +
  +<hr/>
  +
  +<a name="uicomponent"/>
  +
  +<h3>Making your custom elements play nice as a JMeter UI component</h3>
  +
  +<p>In order to take part in the JMeter UI, your component needs to implement the
  +
  +JMeterComponentModel interface:</p>
  +
  +<pre>
  +
  +	  Class getGuiClass();
  +
  +	  public String getName();
  +
  +	  public void setName(String name);
  +
  +	  public Collection getAddList();
  +
  +	  public String getClassLabel();
  +
  +	  public void uncompile();
  +
  +</pre>
  +
  +<p>Most of this stuff is easy, boring, and tedious.  <b>getName()</b>, <b>setName()</b> is a simple
  +
  +String property that is the name of the object.  <b>getClassLabel()</b> should return
  +
  +a String that describes the class.  This string will be displayed to the user and
  +
  +so should be short but meaningful.  <b>getGuiClass()</b> should return a Class object for
  +
  +the class that will be used as a GUI component.  This class should be a subclass
  +
  +of java.awt.Container, and preferably a subclass of <b>javax.swing.JComponent</b>.</p>
  +
  +<p><b>getAddList()</b> should return a list of either Strings or JMenus.  These Strings
  +
  +represent the Classes that can be added to your SamplerController.  Each String
  +
  +should correspond to the target class's <b>getClassLabel()</b> String.  <b>MenuFactory</b> is
  +
  +a class that will return some preset menu lists (such as all available SamplerControllers,
  +
  +all available ConfigElements, etc).</p>
  +
  +<p><b>uncompile()</b> is a cleanup method used between sampling runs.  When the user
  +
  +hits "Start", JMeter "compiles" the objects in the tree.  Child nodes are added
  +
  +to their parent objects recursively until there is one TestPlan object, which is
  +
  +then submitted for testing.  Afterward, these elements have to un-added from their
  +
  +parent objects, or uncompiled.  To uncompile your class, simply clear all your
  +
  +data structures that are holding sub-elements.  For your SamplerController, this
  +
  +will be the list of sub-controllers and the list of ConfigElements.</p>
  +
  +<p>That's it, except for your GUI class.  If your SamplerController has no
  +
  +configuration needs, just return org.apache.jmeter.gui.NamePanel, and the user will
  +
  +at least be able to change the name of your component.  Otherwise, create a gui class
  +
  +that implements the <b>ModelSupported</b> interface:</p>
  +
  +<pre>
  +
  +	  void setModel(Object model);
  +
  +	  public void updateGui();
  +
  +</pre>
  +
  +<p><b>setModel()</b> is used to hand your JMeterModelComponent class to the GUI class when
  +
  +it is instantiated.  It is your responsibility for providing the means by which
  +
  +the Gui class updates the values in the model class.  For updating in the other
  +
  +direction, there is <b>updateGui()</b>, which the model class can call if necessary.
  +
  +Note, normally, this call is made for you automatically whenever the Gui is brought
  +
  +to the screen.  If you are creating a Visualizer, then you may need to use <b>updateGui()</b>.
  +
  +For reference, refer to UrlConfigGui (in org.apache.jmeter.protocol.http.config.gui).</p>
  +
  +<p>If you have done all this correctly, there's just one more step.  If you compile
  +
  +your classes into the ApacheJMeter.jar file, then you're done.  Your classes will
  +
  +be automatically found and used.  Otherwise, you will need to modify jmeter.properties.
  +
  +The <i>search_paths</i> property should be modified to include the path where your
  +
  +classes are.  This does not obviate the need for your classes to be in the JVM's
  +
  +CLASSPATH - it is an additional requirement.  Otherwise, your classes will not be
  +
  +detected, and the Gui will not make them available to the user.</p>
  +
  +<hr/>
  +
  +<a name="saveable"/>
  +
  +<h3>Making your custom elements saveable and loadable from within JMeter</h3>
  +
  +<p>The Saveable interface has just one method:</p>
  +
  +<pre>
  +
  +	  public Class getTagHandlerClass()
  +
  +</pre>
  +
  +<p>This method simply returns the Class object that represents the Class that handles
  +
  +the saving and loading of your component.</p>
  +
  +<p>To write this SaveHandler, make a class that extends <b>TagHandler</b>
  +
  +(from org.apache.jmeter.save.xml).  Note, if your component extends AbstractConfigElement,
  +
  +it is already fully Saveable - provided you only have information stored in
  +
  +the Map from AbstractConfigElement.</p>
  +
  +<p>To write your own TagHandler, you will have to implement the following methods:</p>
  +
  +<pre>
  +
  +	  public abstract void setAtts(Attributes atts) throws Exception
  +
  +	  public String getPrimaryTagName()
  +
  +	  public void save(Saveable objectToSave,Writer out) throws IOException
  +
  +</pre>
  +
  +<p><b>getPrimaryTagName()</b> should return the String that is the XML tagname that your
  +
  +class handles.  When you save your object, it should all be contained within an
  +
  +XML tag of the same name.  This will ensure that when JMeter's parser hits that tag,
  +
  +your class will be called upon to handle the data.</p>
  +
  +<p><b>setAtts(Attributes atts)</b> is called when the parser first hits your tag.
  +
  +If this primary tag has any attributes, this method represents your chance to save
  +
  +the information.</p>
  +
  +<p><b>save(Saveable objectToSave,Writer out)</b> - when the user selects "Save",
  +
  +JMeter will call this method and hand the Saveable object to be saved (it will be
  +
  +the object that specified your TagHandler as the class responsible for it's saving).
  +
  +This method should use the given Writer object to print all the XML necessary to
  +
  +save the current state of the objectToSave.</p>
  +
  +<p>There's more you have to do to handle creating a new Object when JMeter parses
  +
  +an XML file.  However, there's no standard interface you need to implement, but rather,
  +
  +JMeter uses reflection to generate method calls into your class.  When JMeter hits
  +
  +a tag that corresponds to your PrimaryTagName, an instance of your TagHandler will
  +
  +be created, and it's <b>setAtts()</b> method will get called.  Thereafter, methods are called
  +
  +depending on subsequent tags and character data.  For every tag, JMeter calls
  +
  +<b>&lt;tag-name&gt;TagStart(Attributes atts)</b>, and for every end tag, JMeter calls
  +
  +<b>&lt;tag-name&gt;TagEnd()</b>.</p>
  +
  +<p>Additionally, JMeter will call a method that corresponds to all tags that are
  +
  +current.  So, for instance, if JMeter runs into a tag name "foo", then
  +
  +<b>foo(Attributes atts)</b> will be called.  If JMeter then parses character data,
  +
  +then <b>foo(String data)</b> will be called.  If JMeter parses a tag within foo, called
  +
  +"nestedFoo", then JMeter will call <b>foo_nestedFoo(Attributes atts)</b> and
  +
  +<b>foo_nestedFoo(String data)</b>.  And so on.
  +
  +</p>
  +
  +<p>An annotated example:</p>
  +
  +<pre>
  +
  +public class AbstractConfigElementHandler extends TagHandler
  +
  +{
  +
  +	private AbstractConfigElement config;
  +
  +	private String currentProperty;
  +
  +
  +
  +	public AbstractConfigElementHandler()
  +
  +	{
  +
  +	}
  +
  +
  +
  +	<font color="blue">/**
  +
  +	 * Returns the AbstractConfigElement object parsed from the XML.  This method
  +
  +	 * is required to fulfill the SaveHandler interface.  It is used by the XML
  +
  +	 * routines to gather all the saved objects.
  +
  +	 */</font>
  +
  +	public Object getModel()
  +
  +	{
  +
  +		return config;
  +
  +	}
  +
  +
  +
  +	<font color="blue">/**
  +
  +	 * This is called when a tag is first encountered for this handler class to handle.
  +
  +	 * The attributes of the tag are passed, and the SaveHandler object is expected
  +
  +	 * to instantiate a new object.
  +
  +	 */</font>
  +
  +	public void setAtts(Attributes atts) throws Exception
  +
  +	{
  +
  +		String className = atts.getValue("type");
  +
  +		config = (AbstractConfigElement)Class.forName(className).newInstance();
  +
  +	}
  +
  +
  +
  +	<font color="blue">/**
  +
  +	 * Called by reflection when a &lt;property&gt; tag is encountered.  Again, the
  +
  +	 * attributes are passed.
  +
  +	 */</font>
  +
  +	public void property(Attributes atts)
  +
  +	{
  +
  +		currentProperty = atts.getValue("name");
  +
  +	}
  +
  +
  +
  +	<font color="blue">/**
  +
  +	 * Called by reflection when text between the begin and end &lt;property&gt;
  +
  +	 * tag is encountered.
  +
  +	 */</font>
  +
  +	public void property(String data)
  +
  +	{
  +
  +
  +
  +		if(data != null &amp;&amp; data.trim().length() &gt; 0)
  +
  +		{
  +
  +			config.putProperty(currentProperty,data);
  +
  +			currentProperty = null;
  +
  +		}
  +
  +	}
  +
  +
  +
  +	<font color="blue">/**
  +
  +	 * Called by reflection when the &lt;property&gt; tag is ended.
  +
  +	 */</font>
  +
  +	public void propertyTagEnd()
  +
  +	{
  +
  +		<font color="blue">// Here's a tricky bit.  See below for explanation.</font>
  +
  +		List children = xmlParent.takeChildObjects(this);
  +
  +		if(children.size() == 1)
  +
  +		{
  +
  +			config.putProperty(currentProperty,((TagHandler)children.get(0)).getModel());
  +
  +		}
  +
  +	}
  +
  +
  +
  +
  +
  +	  <font color="blue">/**
  +
  +	* Gets the tag name that will trigger the use of this object's TagHandler.
  +
  +	*/</font>
  +
  +	public String getPrimaryTagName()
  +
  +	{
  +
  +		return "ConfigElement";
  +
  +	}
  +
  +
  +
  +  <font color="blue">/**
  +
  +	* Tells the object to save itself to the given output stream.
  +
  +	*/</font>
  +
  +	public void save(Saveable obj,Writer out) throws IOException
  +
  +	{
  +
  +		AbstractConfigElement saved = (AbstractConfigElement)obj;
  +
  +		out.write("&lt;ConfigElement type=\"");
  +
  +		out.write(saved.getClass().getName());
  +
  +		out.write("\">\n");
  +
  +		Iterator iter = saved.getPropertyNames().iterator();
  +
  +		while (iter.hasNext())
  +
  +		{
  +
  +			String key = (String)iter.next();
  +
  +			Object value = saved.getProperty(key);
  +
  +			writeProperty(out,key,value);
  +
  +		}
  +
  +		out.write(&lt;/ConfigElement&gt;");
  +
  +	}
  +
  +
  +
  +	<font color="blue">/**
  +
  +	 * Routine to write each property to xml.
  +
  +	 */</font>
  +
  +	private void writeProperty(Writer out,String key,Object value) throws IOException
  +
  +	{
  +
  +		out.write("&lt;property name=\"");
  +
  +		out.write(key);
  +
  +		out.write("\">\n");
  +
  +		JMeterHandler.writeObject(value,out);
  +
  +		out.write("\n&lt;/property&gt;\n");
  +
  +	}
  +
  +</pre>
  +
  +<p>
  +
  +In the <b>propertyTagEnd()</b> method, <b>takeChildObjects()</b> is called on the xmlParent
  +
  +instance variable.  xmlParent is inherited from TagHandler - the DocumentHandler
  +
  +object that is running the show.  xmlParent takes an XML file that represents a portion of
  +
  +the test configuration tree, and recreates a tree-like data structure.  When it is
  +
  +done, it will convert its tree-like data structure into the test configuration tree
  +
  +structure.
  +
  +</p>
  +
  +<p>However, sometimes, a tree element has sub objects that you do not want represented
  +
  +in the tree - rather, they are part of your object.  But, they may
  +
  +be complicated enough to warrant their own SaveHandler class, and thus, the xmlParent
  +
  +picks them up as part of its tree.  When the tag is done, and you know that there are
  +
  +child objects you want to grab, you can call the <b>takeChildObjects()</b> method and get a
  +
  +List object containing them all.  This will remove them from the tree, and you can add
  +
  +them to your object that you're creating.
  +
  +</p>
  +
  +<p>
  +
  +UrlConfig is good example.  It extends AbstractConfigElement, so it uses exactly the
  +
  +code above to save and reload itself from XML.  However, one of the pieces of data
  +
  +that UrlConfig stores is an Arguments object.  Arguments is too complicated to save
  +
  +to file as a simple string, so it has its own Handler object (ArgumentsHandler).  In
  +
  +the above code, when the call to <b>JMeterHandler.writeObject(value,out)</b> is made, the
  +
  +writeObject method detects whether the object implements Saveable, and if so, calls
  +
  +the object's SaveHandler class to deal with it.  This means, however, that when
  +
  +reading that XML file, the Argument object will show up as a separate entity in
  +
  +the data tree, whereas it originally was just part of the data of the UrlConfig
  +
  +object.  In order to preserve that relationship, it's necessary for the
  +
  +AbstractConfigElementHandler to check after each property tag is done for child
  +
  +objects in the tree, and take them for its own use.
  +
  +</p>
  +
  +<p>
  +
  +Study the other SaveHandler objects and the TagHandler class to learn more
  +
  +about how saving is accomplished.  Once you understand the design, writing your
  +
  +own SaveHandler is very easy.
  +
  +</p>
  +
  +
  +
  +</section>
  +
  +</body>
  +
   </document>
  
  
  
  No                   revision
  
  
  No                   revision
  
  
  No                   revision
  
  
  1.10      +2 -2      jakarta-jmeter/xdocs/stylesheets/site.vsl
  
  Index: site.vsl
  ===================================================================
  RCS file: /home/cvs/jakarta-jmeter/xdocs/stylesheets/site.vsl,v
  retrieving revision 1.9
  retrieving revision 1.10
  diff -u -r1.9 -r1.10
  --- site.vsl	6 Mar 2002 03:52:03 -0000	1.9
  +++ site.vsl	7 Mar 2002 23:03:13 -0000	1.10
  @@ -267,7 +267,7 @@
   #end
   
   #macro ( subsection $subsection)
  -	 <table border="0" cellspacing="0" cellpadding="2">
  +	 <table border="0" cellspacing="0" cellpadding="2" width="100%">
   		<tr><td bgcolor="$subbannerbg">
   		  <font color="$subbannerfg" face="arial,helvetica,sanserif">
   			 <a name="$subsection.getAttributeValue("anchor")"><strong>$subsection.getAttributeValue("name")</strong></a>
  @@ -289,7 +289,7 @@
   #end
   
   #macro ( section $section)
  -	 <table border="0" cellspacing="0" cellpadding="2">
  +	 <table border="0" cellspacing="0" cellpadding="2" width="100%">
   		<tr><td bgcolor="$bannerbg">
   		  <font color="$bannerfg" face="arial,helvetica,sanserif">
   			 <a name="$!section.getAttributeValue("anchor")"><strong>$section.getAttributeValue("name")</strong></a>
  
  
  

--
To unsubscribe, e-mail:   <ma...@jakarta.apache.org>
For additional commands, e-mail: <ma...@jakarta.apache.org>