Author: sebb
Date: Mon Feb 26 15:28:57 2007
New Revision: 512075

URL: http://svn.apache.org/viewvc?view=rev&rev=512075
Log:
Update to htmlparser 2.0

Added:
    jakarta/jmeter/branches/rel-2-2/LICENSE(htmlparser).txt
    jakarta/jmeter/branches/rel-2-2/lib/htmllexer-2.0-20060923.jar   (with 
props)
    jakarta/jmeter/branches/rel-2-2/lib/htmlparser-2.0-20060923.jar   (with 
props)
    
jakarta/jmeter/branches/rel-2-2/src/protocol/http/org/apache/jmeter/protocol/http/parser/HtmlParserHTMLParser.java
Removed:
    
jakarta/jmeter/branches/rel-2-2/src/htmlparser16/org/apache/jmeter/protocol/http/parser/HtmlParserHTMLParser16.java
    
jakarta/jmeter/branches/rel-2-2/test/src/org/apache/jmeter/protocol/http/parser/TestHTMLParser16.java
Modified:
    jakarta/jmeter/branches/rel-2-2/NOTICE
    jakarta/jmeter/branches/rel-2-2/build.xml
    jakarta/jmeter/branches/rel-2-2/xdocs/changes.xml

Added: jakarta/jmeter/branches/rel-2-2/LICENSE(htmlparser).txt
URL: 
http://svn.apache.org/viewvc/jakarta/jmeter/branches/rel-2-2/LICENSE%28htmlparser%29.txt?view=auto&rev=512075
==============================================================================
--- jakarta/jmeter/branches/rel-2-2/LICENSE(htmlparser).txt (added)
+++ jakarta/jmeter/branches/rel-2-2/LICENSE(htmlparser).txt Mon Feb 26 15:28:57 
2007
@@ -0,0 +1,213 @@
+Common Public License Version 1.0
+
+THE ACCOMPANYING PROGRAM IS PROVIDED UNDER THE TERMS OF THIS COMMON PUBLIC
+LICENSE ("AGREEMENT"). ANY USE, REPRODUCTION OR DISTRIBUTION OF THE PROGRAM
+CONSTITUTES RECIPIENT'S ACCEPTANCE OF THIS AGREEMENT.
+
+1. DEFINITIONS
+
+"Contribution" means:
+
+    a) in the case of the initial Contributor, the initial code and
+documentation distributed under this Agreement, and
+
+    b) in the case of each subsequent Contributor:
+
+    i) changes to the Program, and
+
+    ii) additions to the Program;
+
+    where such changes and/or additions to the Program originate from and are
+distributed by that particular Contributor. A Contribution 'originates' from a
+Contributor if it was added to the Program by such Contributor itself or anyone
+acting on such Contributor's behalf. Contributions do not include additions to
+the Program which: (i) are separate modules of software distributed in
+conjunction with the Program under their own license agreement, and (ii) are 
not
+derivative works of the Program.
+
+"Contributor" means any person or entity that distributes the Program.
+
+"Licensed Patents " mean patent claims licensable by a Contributor which are
+necessarily infringed by the use or sale of its Contribution alone or when
+combined with the Program.
+
+"Program" means the Contributions distributed in accordance with this 
Agreement.
+
+"Recipient" means anyone who receives the Program under this Agreement,
+including all Contributors.
+
+2. GRANT OF RIGHTS
+
+    a) Subject to the terms of this Agreement, each Contributor hereby grants
+Recipient a non-exclusive, worldwide, royalty-free copyright license to
+reproduce, prepare derivative works of, publicly display, publicly perform,
+distribute and sublicense the Contribution of such Contributor, if any, and 
such
+derivative works, in source code and object code form.
+
+    b) Subject to the terms of this Agreement, each Contributor hereby grants
+Recipient a non-exclusive, worldwide, royalty-free patent license under 
Licensed
+Patents to make, use, sell, offer to sell, import and otherwise transfer the
+Contribution of such Contributor, if any, in source code and object code form.
+This patent license shall apply to the combination of the Contribution and the
+Program if, at the time the Contribution is added by the Contributor, such
+addition of the Contribution causes such combination to be covered by the
+Licensed Patents. The patent license shall not apply to any other combinations
+which include the Contribution. No hardware per se is licensed hereunder.
+
+    c) Recipient understands that although each Contributor grants the licenses
+to its Contributions set forth herein, no assurances are provided by any
+Contributor that the Program does not infringe the patent or other intellectual
+property rights of any other entity. Each Contributor disclaims any liability 
to
+Recipient for claims brought by any other entity based on infringement of
+intellectual property rights or otherwise. As a condition to exercising the
+rights and licenses granted hereunder, each Recipient hereby assumes sole
+responsibility to secure any other intellectual property rights needed, if any.
+For example, if a third party patent license is required to allow Recipient to
+distribute the Program, it is Recipient's responsibility to acquire that 
license
+before distributing the Program.
+
+    d) Each Contributor represents that to its knowledge it has sufficient
+copyright rights in its Contribution, if any, to grant the copyright license 
set
+forth in this Agreement.
+
+3. REQUIREMENTS
+
+A Contributor may choose to distribute the Program in object code form under 
its
+own license agreement, provided that:
+
+    a) it complies with the terms and conditions of this Agreement; and
+
+    b) its license agreement:
+
+    i) effectively disclaims on behalf of all Contributors all warranties and
+conditions, express and implied, including warranties or conditions of title 
and
+non-infringement, and implied warranties or conditions of merchantability and
+fitness for a particular purpose;
+
+    ii) effectively excludes on behalf of all Contributors all liability for
+damages, including direct, indirect, special, incidental and consequential
+damages, such as lost profits;
+
+    iii) states that any provisions which differ from this Agreement are 
offered
+by that Contributor alone and not by any other party; and
+
+    iv) states that source code for the Program is available from such
+Contributor, and informs licensees how to obtain it in a reasonable manner on 
or
+through a medium customarily used for software exchange. 
+
+When the Program is made available in source code form:
+
+    a) it must be made available under this Agreement; and
+
+    b) a copy of this Agreement must be included with each copy of the 
Program. 
+
+Contributors may not remove or alter any copyright notices contained within the
+Program.
+
+Each Contributor must identify itself as the originator of its Contribution, if
+any, in a manner that reasonably allows subsequent Recipients to identify the
+originator of the Contribution.
+
+4. COMMERCIAL DISTRIBUTION
+
+Commercial distributors of software may accept certain responsibilities with
+respect to end users, business partners and the like. While this license is
+intended to facilitate the commercial use of the Program, the Contributor who
+includes the Program in a commercial product offering should do so in a manner
+which does not create potential liability for other Contributors. Therefore, if
+a Contributor includes the Program in a commercial product offering, such
+Contributor ("Commercial Contributor") hereby agrees to defend and indemnify
+every other Contributor ("Indemnified Contributor") against any losses, damages
+and costs (collectively "Losses") arising from claims, lawsuits and other legal
+actions brought by a third party against the Indemnified Contributor to the
+extent caused by the acts or omissions of such Commercial Contributor in
+connection with its distribution of the Program in a commercial product
+offering. The obligations in this section do not apply to any claims or Losses
+relating to any actual or alleged intellectual property infringement. In order
+to qualify, an Indemnified Contributor must: a) promptly notify the Commercial
+Contributor in writing of such claim, and b) allow the Commercial Contributor 
to
+control, and cooperate with the Commercial Contributor in, the defense and any
+related settlement negotiations. The Indemnified Contributor may participate in
+any such claim at its own expense.
+
+For example, a Contributor might include the Program in a commercial product
+offering, Product X. That Contributor is then a Commercial Contributor. If that
+Commercial Contributor then makes performance claims, or offers warranties
+related to Product X, those performance claims and warranties are such
+Commercial Contributor's responsibility alone. Under this section, the
+Commercial Contributor would have to defend claims against the other
+Contributors related to those performance claims and warranties, and if a court
+requires any other Contributor to pay any damages as a result, the Commercial
+Contributor must pay those damages.
+
+5. NO WARRANTY
+
+EXCEPT AS EXPRESSLY SET FORTH IN THIS AGREEMENT, THE PROGRAM IS PROVIDED ON AN
+"AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, EITHER EXPRESS OR
+IMPLIED INCLUDING, WITHOUT LIMITATION, ANY WARRANTIES OR CONDITIONS OF TITLE,
+NON-INFRINGEMENT, MERCHANTABILITY OR FITNESS FOR A PARTICULAR PURPOSE. Each
+Recipient is solely responsible for determining the appropriateness of using 
and
+distributing the Program and assumes all risks associated with its exercise of
+rights under this Agreement, including but not limited to the risks and costs 
of
+program errors, compliance with applicable laws, damage to or loss of data,
+programs or equipment, and unavailability or interruption of operations.
+
+6. DISCLAIMER OF LIABILITY
+
+EXCEPT AS EXPRESSLY SET FORTH IN THIS AGREEMENT, NEITHER RECIPIENT NOR ANY
+CONTRIBUTORS SHALL HAVE ANY LIABILITY FOR ANY DIRECT, INDIRECT, INCIDENTAL,
+SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING WITHOUT LIMITATION LOST
+PROFITS), HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT,
+STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY 
WAY
+OUT OF THE USE OR DISTRIBUTION OF THE PROGRAM OR THE EXERCISE OF ANY RIGHTS
+GRANTED HEREUNDER, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGES.
+
+7. GENERAL
+
+If any provision of this Agreement is invalid or unenforceable under applicable
+law, it shall not affect the validity or enforceability of the remainder of the
+terms of this Agreement, and without further action by the parties hereto, such
+provision shall be reformed to the minimum extent necessary to make such
+provision valid and enforceable.
+
+If Recipient institutes patent litigation against a Contributor with respect to
+a patent applicable to software (including a cross-claim or counterclaim in a
+lawsuit), then any patent licenses granted by that Contributor to such 
Recipient
+under this Agreement shall terminate as of the date such litigation is filed. 
In
+addition, if Recipient institutes patent litigation against any entity
+(including a cross-claim or counterclaim in a lawsuit) alleging that the 
Program
+itself (excluding combinations of the Program with other software or hardware)
+infringes such Recipient's patent(s), then such Recipient's rights granted 
under
+Section 2(b) shall terminate as of the date such litigation is filed.
+
+All Recipient's rights under this Agreement shall terminate if it fails to
+comply with any of the material terms or conditions of this Agreement and does
+not cure such failure in a reasonable period of time after becoming aware of
+such noncompliance. If all Recipient's rights under this Agreement terminate,
+Recipient agrees to cease use and distribution of the Program as soon as
+reasonably practicable. However, Recipient's obligations under this Agreement
+and any licenses granted by Recipient relating to the Program shall continue 
and
+survive.
+
+Everyone is permitted to copy and distribute copies of this Agreement, but in
+order to avoid inconsistency the Agreement is copyrighted and may only be
+modified in the following manner. The Agreement Steward reserves the right to
+publish new versions (including revisions) of this Agreement from time to time.
+No one other than the Agreement Steward has the right to modify this Agreement.
+IBM is the initial Agreement Steward. IBM may assign the responsibility to 
serve
+as the Agreement Steward to a suitable separate entity. Each new version of the
+Agreement will be given a distinguishing version number. The Program (including
+Contributions) may always be distributed subject to the version of the 
Agreement
+under which it was received. In addition, after a new version of the Agreement
+is published, Contributor may elect to distribute the Program (including its
+Contributions) under the new version. Except as expressly stated in Sections
+2(a) and 2(b) above, Recipient receives no rights or licenses to the
+intellectual property of any Contributor under this Agreement, whether
+expressly, by implication, estoppel or otherwise. All rights in the Program not
+expressly granted under this Agreement are reserved.
+
+This Agreement is governed by the laws of the State of New York and the
+intellectual property laws of the United States of America. No party to this
+Agreement will bring a legal action under this Agreement more than one year
+after the cause of action arose. Each party waives its rights to a jury trial 
in
+any resulting litigation.

Modified: jakarta/jmeter/branches/rel-2-2/NOTICE
URL: 
http://svn.apache.org/viewvc/jakarta/jmeter/branches/rel-2-2/NOTICE?view=diff&rev=512075&r1=512074&r2=512075
==============================================================================
--- jakarta/jmeter/branches/rel-2-2/NOTICE (original)
+++ jakarta/jmeter/branches/rel-2-2/NOTICE Mon Feb 26 15:28:57 2007
@@ -32,8 +32,7 @@
 hosted on Sourceforge at http://htmlparser.sourceforge.net/
 
 The developers of JMeter and Apache are grateful to the developers
-of HTMLParser for giving Apache Software Foundation a non-exclusive
-license to use HTMLParser under Apache 1 license. 
+of HTMLParser for re-releasing htmlparser under CPL V1.0
 
 HTMLParser was originally created by Somik Raha in 2000.
 Derrick Oswald is the current lead developer and was kind

Modified: jakarta/jmeter/branches/rel-2-2/build.xml
URL: 
http://svn.apache.org/viewvc/jakarta/jmeter/branches/rel-2-2/build.xml?view=diff&rev=512075&r1=512074&r2=512075
==============================================================================
--- jakarta/jmeter/branches/rel-2-2/build.xml (original)
+++ jakarta/jmeter/branches/rel-2-2/build.xml Mon Feb 26 15:28:57 2007
@@ -140,12 +140,6 @@
       <sourcePath path="${src.jms}" />
       <sourcePath path="${src.report}" />
 
-       <!--
-      Uncomment the following 2 lines to include htmlparser in the analysis
-      <class location="${lib.dir}/htmlparser.jar" />
-      <sourcePath path="${src.htmlparser}" />
-      -->
-
       <auxClasspath>
                <fileset dir="${lib.dir}">
                        <include name="*.jar"/>
@@ -194,8 +188,6 @@
   <property name="src.functions" value="src/functions"/>
   <property name="src.jorphan" value="src/jorphan"/>
   <property name="src.ldap" value="src/protocol/ldap"/>
-  <property name="src.htmlparser" value="src/htmlparser"/>
-  <property name="src.htmlparser16" value="src/htmlparser16"/>
   <property name="src.tcp" value="src/protocol/tcp"/>
   <property name="src.examples" value="src/examples"/>
   <property name="src.mail" value="src/protocol/mail"/>
@@ -221,8 +213,6 @@
     <pathelement location="${src.junit}"/>
     <pathelement location="${src.jorphan}"/>
     <pathelement location="${src.ldap}"/>
-    <pathelement location="${src.htmlparser}"/>
-    <pathelement location="${src.htmlparser16}"/>
     <pathelement location="${src.tcp}"/>
     <pathelement location="${src.examples}"/>
     <pathelement location="${src.mail}"/>
@@ -245,8 +235,6 @@
   <property name="build.jorphan" value="build/jorphan"/>
   <property name="build.ldap" location="build/protocol/ldap"/>
   <property name="build.mail" location="build/protocol/mail"/>
-  <property name="build.htmlparser" location="build/htmlparser"/>
-  <property name="build.htmlparser16" location="build/htmlparser16"/>
   <property name="build.tcp" location="build/protocol/tcp"/>
   <property name="build.examples" location="build/examples"/>
   <property name="build.monitor.components" 
location="build/monitor/components"/>
@@ -399,10 +387,9 @@
   -->
   
   <!-- Build classpath (includes the optional jar directory) -->
-  <!-- Exclude the htmlparser jars to prevent clashes between versions -->
   <path id="classpath">
-    <fileset dir="${lib.dir}" includes="*.jar" excludes="htmlparser*.jar"/>
-    <fileset dir="${lib.opt}" includes="*.jar" excludes="htmlparser*.jar"/>
+    <fileset dir="${lib.dir}" includes="*.jar"/>
+    <fileset dir="${lib.opt}" includes="*.jar"/>
   </path>
 
   <!-- Anakia classpath -->
@@ -454,11 +441,6 @@
     <available classname="bsh.Interpreter" property="beanshell.present">
       <classpath refid="classpath"/>
     </available>
-    <available classname="org.htmlparser.Tag" property="htmlparser16.present">
-      <classpath>
-       <fileset dir="${lib.opt}" includes="htmlparser1_6.jar"/>
-      </classpath>
-    </available>
     <available classname="javax.jms.Message" property="jms.present">
       <classpath refid="classpath"/>
     </available>
@@ -479,16 +461,12 @@
     <echo message="Classes for BeanShell support not found in classpath"/>
   </target>
 
-  <target name="htmlparser16-message" depends="check-libs" 
unless="htmlparser16.present">
-    <echo message="Classes for HTMLParser 1.6 support not found in classpath"/>
-  </target>
-
   <target name="jms-message" depends="check-libs" unless="jms.present">
     <echo message="Classes for JMS support not found in classpath"/>
   </target>
 
   <target name="report-missing-libs" 
-      
depends="ssl-message,mail-message,beanshell-message,htmlparser16-message,jms-message"
+      depends="ssl-message,mail-message,beanshell-message,jms-message"
   />
 
   <!--
@@ -551,10 +529,9 @@
     </javac>
   </target>
 
-  <target name="compile-http" 
depends="compile-jorphan,compile-core,compile-components,compile-htmlparser" 
description="Compile components specific to HTTP sampling.">
+  <target name="compile-http" 
depends="compile-jorphan,compile-core,compile-components" description="Compile 
components specific to HTTP sampling.">
     <mkdir dir="${build.http}"/>
     <!-- Directory needs to exist, or jar will fail -->
-    <mkdir dir="${build.htmlparser16}"/>
     <javac srcdir="${src.http}" destdir="${build.http}" 
source="${src.java.version}" optimize="${optimize}" debug="on" 
target="${target.java.version}" deprecation="${deprecation}" 
encoding="${encoding}">
       <include name="**/*.java"/>
       <exclude 
name="org/apache/jmeter/protocol/http/sampler/WebServiceSampler.java" 
unless="javamail.complete"/>
@@ -563,27 +540,11 @@
         <pathelement location="${build.jorphan}"/>
         <pathelement location="${build.core}"/>
         <pathelement location="${build.components}"/>
-        <pathelement location="${build.htmlparser}"/>
         <path refid="classpath"/>
       </classpath>
     </javac>
   </target>
-
-  <target name="compile-htmlparser16" 
depends="compile-http,compile-htmlparser" description="Compile htmlparser 1.6 
support" if="htmlparser16.present">
-    <mkdir dir="${build.htmlparser16}"/>
-    <javac srcdir="${src.htmlparser16}" destdir="${build.htmlparser16}" 
optimize="${optimize}" debug="on" source="${src.java.version}" 
target="${target.java.version}" deprecation="${deprecation}" 
encoding="${encoding}">
-      <include name="**/*.java"/>
-      <classpath>
-        <pathelement location="${build.jorphan}"/>
-        <pathelement location="${build.core}"/>
-        <pathelement location="${build.http}"/>
-       <fileset dir="${lib.opt}" includes="htmlparser1_6.jar"/>
-        <pathelement location="${}"/>
-        <path refid="classpath"/>
-      </classpath>
-    </javac>
-  </target>
-  
+ 
   <target name="compile-tests" description="Compile test components only">
     <mkdir dir="${build.test}"/>
     <javac srcdir="${src.test}" destdir="${build.test}" 
source="${src.java.version}" optimize="${optimize}" debug="on" 
target="${target.java.version}" deprecation="${deprecation}" 
encoding="${encoding}">
@@ -711,7 +672,7 @@
     </javac>
   </target>
 
-  <target name="compile-protocols" 
depends="compile-http,compile-htmlparser16,compile-ftp,compile-jdbc,compile-java,compile-ldap,compile-mail,compile-tcp"
 description="Compile all protocol-specific components."/>
+  <target name="compile-protocols" 
depends="compile-http,compile-ftp,compile-jdbc,compile-java,compile-ldap,compile-mail,compile-tcp"
 description="Compile all protocol-specific components."/>
 
   <target name="compile-examples" depends="compile-jorphan,compile-core" 
description="Compile example components.">
     <mkdir dir="${build.examples}"/>
@@ -781,18 +742,6 @@
     </rmic>
   </target>
 
-  <target name="compile-htmlparser" depends="" description="Compile 
htmlparser.">
-    <mkdir dir="${build.htmlparser}"/>
-    <javac srcdir="${src.htmlparser}" destdir="${build.htmlparser}" 
optimize="${optimize}" debug="on" source="${src.java.version}" 
target="${target.java.version}" deprecation="${deprecation}" 
encoding="${encoding}">
-      <include name="**/*.java"/>
-      <classpath>
-        <pathelement location="${build.jorphan}"/>
-        <pathelement location="${build.core}"/>
-        <path refid="classpath"/>
-      </classpath>
-    </javac>
-  </target>
-
   <target name="compile-jms" 
depends="compile-jorphan,compile-core,compile-components" 
        description="Compile components specific to JMS sampling."
            if="jms.present">
@@ -808,7 +757,7 @@
   </target>
 
   <target name="compile" 
-  
depends="compile-core,compile-components,compile-functions,compile-protocols,compile-rmi,compile-htmlparser,compile-monitor,compile-junit,compile-jms,compile-report"
+  
depends="compile-core,compile-components,compile-functions,compile-protocols,compile-rmi,compile-monitor,compile-junit,compile-jms,compile-report"
   description="Compile everything."/>
 
   <target name="package" depends="compile, package-only"
@@ -899,10 +848,9 @@
        </manifest>
     </jar>
 
-    <!-- http without HtmlParserHTMLParser -->
+    <!-- http -->
     <jar jarfile="${dest.jar}/ApacheJMeter_http.jar" manifest="MANIFEST">
-      <fileset dir="${build.http}" includes="**/*.class" 
-       excludes="**/HtmlParserHTMLParser.class"/>
+      <fileset dir="${build.http}" includes="**/*.class"/>
       <fileset dir="${src.http}" includes="**/*.properties" />
         <metainf dir="." includes="LICENSE,NOTICE"/>
        <manifest>
@@ -912,30 +860,6 @@
            <attribute name="X-Compile-Target-JDK" 
value="${target.java.version}"/>
        </manifest>
     </jar>
-    
-    <!-- HtmlParserHTMLParser -->
-    <jar jarfile="${lib.dir}/htmlparserparser.jar" manifest="MANIFEST">
-      <fileset dir="${build.http}" includes="**/HtmlParserHTMLParser.class"/>
-        <metainf dir="." includes="LICENSE,NOTICE"/>
-       <manifest>
-           <attribute name="Built-By" value="${user.name}"/>
-           <attribute name="Implementation-Version" value="${jmeter.version}"/>
-           <attribute name="X-Compile-Source-JDK" value="${src.java.version}"/>
-           <attribute name="X-Compile-Target-JDK" 
value="${target.java.version}"/>
-       </manifest>
-    </jar>
-           
-    <!-- HtmlParserHTMLParser16 -->
-    <jar jarfile="${lib.dir}/htmlparserparser16.jar" manifest="MANIFEST">
-      <fileset dir="${build.htmlparser16}" includes="**/*.class"/>
-        <metainf dir="." includes="LICENSE,NOTICE"/>
-       <manifest>
-           <attribute name="Built-By" value="${user.name}"/>
-           <attribute name="Implementation-Version" value="${jmeter.version}"/>
-           <attribute name="X-Compile-Source-JDK" value="${src.java.version}"/>
-           <attribute name="X-Compile-Target-JDK" 
value="${target.java.version}"/>
-       </manifest>
-    </jar>
                    
     <!-- ftp -->
     <jar jarfile="${dest.jar}/ApacheJMeter_ftp.jar" manifest="MANIFEST">
@@ -1081,19 +1005,7 @@
            <attribute name="X-Compile-Target-JDK" 
value="${target.java.version}"/>
        </manifest>
     </jar>
-    
-    <jar jarfile="${lib.dir}/htmlparser.jar" manifest="MANIFEST">
-        <fileset dir="${build.htmlparser}" includes="**/*.class" 
excludes="org/htmlparser/tests/**/*.class"/>
-        <fileset dir="${src.htmlparser}" includes="**/*.properties" />
-        <metainf dir="." includes="LICENSE,NOTICE"/>
-       <manifest>
-           <attribute name="Built-By" value="${user.name}"/>
-           <attribute name="Implementation-Version" value="${jmeter.version}"/>
-           <attribute name="X-Compile-Source-JDK" value="${src.java.version}"/>
-           <attribute name="X-Compile-Target-JDK" 
value="${target.java.version}"/>
-       </manifest>
-    </jar>
-       
+       
     <jar jarfile="${lib.dir}/jorphan.jar" manifest="MANIFEST">
         <fileset dir="${build.jorphan}" includes="**/*.class"/>
         <fileset dir="${src.jorphan}" includes="**/*.properties"/>
@@ -1143,7 +1055,6 @@
     <property name="javamail.complete" value="assume"/>
     <property name="beanshell.present" value="assume"/>
     <property name="jms.present" value="assume"/>
-    <!--property name="htmlparser16.present" value="assume"/-->
   </target>
 
   <!-- list of files needed for a binary distribution (excluding library 
files) -->
@@ -1172,9 +1083,8 @@
     <include name="${extras.dir}/**"/>
     <include name="${lib.dir}/bshclient.jar"/>
     <include name="${lib.dir}/jorphan.jar"/>
-    <include name="${lib.dir}/htmlparser.jar"/>
-    <include name="${lib.dir}/htmlparserparser.jar"/>
-    <include name="${lib.dir}/htmlparserparser16.jar"/>
+    <include name="${lib.dir}/htmllexer-2.0-20060923.jar"/>
+    <include name="${lib.dir}/htmlparser-2.0-20060923.jar"/>
     <include name="${lib.dir}/junit/test.jar"/>
   </patternset>
 
@@ -1501,9 +1411,6 @@
   <target name="clean" description="Clean up to force a build from source.">
     <delete file="${dest.jar.jmeter}/ApacheJMeter.jar"/>
     <delete quiet="true" file="${lib.dir}/jorphan.jar"/>
-    <delete quiet="true" file="${lib.dir}/htmlparser.jar"/>
-    <delete quiet="true" file="${lib.dir}/htmlparserparser.jar"/>
-    <delete quiet="true" file="${lib.dir}/htmlparserparser16.jar"/>
     <delete quiet="true">
         <fileset dir="${dest.jar}"/>
     </delete>
@@ -1650,8 +1557,6 @@
       <classpath>
        <fileset dir="${dest.jar}" includes="*.jar"/>
         <pathelement location="${build.test}"/>
-       <fileset dir="${lib.dir}" includes="htmlparser.jar"/>
-       <fileset dir="${lib.dir}" includes="htmlparserparser.jar"/>
        <path refid="classpath"/>
       </classpath>
       <sysproperty key="java.awt.headless" value="${test.headless}"/>
@@ -1662,22 +1567,6 @@
     </java>
   </target>
 
-  <target name="_test_htmlparser16" depends="check-libs" 
if="htmlparser16.present">
-    <junit printsummary="on" fork="yes" dir="${basedir}/bin">
-       <sysproperty key="htmlParser.className" 
value="org.apache.jmeter.protocol.http.parser.HtmlParserHTMLParser16"/>
-       <classpath>
-       <fileset dir="${dest.jar}" includes="*.jar"/>
-         <pathelement location="${build.test}"/>
-       <path refid="classpath"/>
-       <fileset dir="${lib.opt}" includes="htmlparser1_6.jar"/>
-       <fileset dir="${lib.dir}" includes="htmlparserparser16.jar"/>
-       </classpath>
-       <formatter type="plain" usefile="no"/>
-       <test name="org.apache.jmeter.protocol.http.parser.TestHTMLParser16"/>
-     </junit>
-       <echo>Done!</echo>
-  </target>
-
 <!--
     In order to run JUnit, both junit.jar and optional.jar need to be on the 
Ant classpath
     optional.jar is normally found in ANT_HOME/lib
@@ -1711,31 +1600,6 @@
       </fileset>
       <report format="frames" todir="reports"/>
     </junitreport>
-  </target>
-
-  <!-- Run the HTML Parser unit tests -->
-  <target name="testparser" description="run the JUnit tests">
-    <echo message="**********************************"/>
-    <echo message="*  Running HtmlParser unit tests *"/>
-    <echo message="**********************************"/>
-<!--
-    <javac srcdir="${src}" includes="org/htmlparser/tests/**" debug="on">
-      <classpath>
-        <pathelement location="src"/>
-        <pathelement location="${junit.jar}"/>
-        <pathelement location="${commons-logging.jar}"/>
-      </classpath>
-    </javac>
--->
-    <java classname="org.htmlparser.tests.AllTests" fork="yes" 
failonerror="yes">
-      <classpath>
-       <pathelement location="${build.htmlparser}"/>
-        <pathelement location="${lib.dir}/htmlparser.jar"/>
-        <pathelement location="${junit.jar}"/>
-        <pathelement location="${log-kit.jar}"/>
-      </classpath>
-      <arg value="-text"/>
-    </java>
   </target>
   
 </project>

Added: jakarta/jmeter/branches/rel-2-2/lib/htmllexer-2.0-20060923.jar
URL: 
http://svn.apache.org/viewvc/jakarta/jmeter/branches/rel-2-2/lib/htmllexer-2.0-20060923.jar?view=auto&rev=512075
==============================================================================
Binary file - no diff available.

Propchange: jakarta/jmeter/branches/rel-2-2/lib/htmllexer-2.0-20060923.jar
------------------------------------------------------------------------------
    svn:mime-type = application/octet-stream

Added: jakarta/jmeter/branches/rel-2-2/lib/htmlparser-2.0-20060923.jar
URL: 
http://svn.apache.org/viewvc/jakarta/jmeter/branches/rel-2-2/lib/htmlparser-2.0-20060923.jar?view=auto&rev=512075
==============================================================================
Binary file - no diff available.

Propchange: jakarta/jmeter/branches/rel-2-2/lib/htmlparser-2.0-20060923.jar
------------------------------------------------------------------------------
    svn:mime-type = application/octet-stream

Added: 
jakarta/jmeter/branches/rel-2-2/src/protocol/http/org/apache/jmeter/protocol/http/parser/HtmlParserHTMLParser.java
URL: 
http://svn.apache.org/viewvc/jakarta/jmeter/branches/rel-2-2/src/protocol/http/org/apache/jmeter/protocol/http/parser/HtmlParserHTMLParser.java?view=auto&rev=512075
==============================================================================
--- 
jakarta/jmeter/branches/rel-2-2/src/protocol/http/org/apache/jmeter/protocol/http/parser/HtmlParserHTMLParser.java
 (added)
+++ 
jakarta/jmeter/branches/rel-2-2/src/protocol/http/org/apache/jmeter/protocol/http/parser/HtmlParserHTMLParser.java
 Mon Feb 26 15:28:57 2007
@@ -0,0 +1,187 @@
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one or more
+ * contributor license agreements.  See the NOTICE file distributed with
+ * this work for additional information regarding copyright ownership.
+ * The ASF licenses this file to You under the Apache License, Version 2.0
+ * (the "License"); you may not use this file except in compliance with
+ * the License.  You may obtain a copy of the License at
+ *
+ *   http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ * 
+ */
+
+package org.apache.jmeter.protocol.http.parser;
+
+import java.net.MalformedURLException;
+import java.net.URL;
+import java.util.Iterator;
+
+import org.apache.jorphan.logging.LoggingManager;
+import org.apache.log.Logger;
+
+import org.htmlparser.Node;
+import org.htmlparser.Parser;
+import org.htmlparser.Tag;
+import org.htmlparser.tags.AppletTag;
+import org.htmlparser.tags.BaseHrefTag;
+import org.htmlparser.tags.BodyTag;
+import org.htmlparser.tags.CompositeTag;
+import org.htmlparser.tags.FrameTag;
+import org.htmlparser.tags.ImageTag;
+import org.htmlparser.tags.InputTag;
+import org.htmlparser.tags.LinkTag;
+import org.htmlparser.tags.ScriptTag;
+import org.htmlparser.util.NodeIterator;
+import org.htmlparser.util.ParserException;
+
+/**
+ * HtmlParser implementation using SourceForge's HtmlParser.
+ * 
+ */
+public class HtmlParserHTMLParser extends HTMLParser {
+    private static final Logger log = LoggingManager.getLoggerForClass();
+
+    static{
+       org.htmlparser.scanners.ScriptScanner.STRICT = false; // Try to ensure 
that more javascript code is processed OK ...
+    }
+       protected HtmlParserHTMLParser() {
+               super();
+        log.info("Using htmlparser version 2.0");
+       }
+
+       protected boolean isReusable() {
+               return true;
+       }
+
+       /*
+        * (non-Javadoc)
+        * 
+        * @see 
org.apache.jmeter.protocol.http.parser.HtmlParser#getEmbeddedResourceURLs(byte[],
+        *      java.net.URL)
+        */
+       public Iterator getEmbeddedResourceURLs(byte[] html, URL baseUrl, 
URLCollection urls) throws HTMLParseException {
+        
+        if (log.isDebugEnabled()) log.debug("Parsing html of: " + baseUrl);
+        
+        Parser htmlParser = null;
+               try {
+                       String contents = new String(html);
+                       htmlParser = new Parser();
+            htmlParser.setInputHTML(contents);
+               } catch (Exception e) {
+                       throw new HTMLParseException(e);
+               }
+
+               // Now parse the DOM tree
+               try {
+                       // we start to iterate through the elements
+                       parseNodes(htmlParser.elements(), new 
URLPointer(baseUrl), urls);
+                       log.debug("End   : parseNodes");
+               } catch (ParserException e) {
+                       throw new HTMLParseException(e);
+               }
+
+               return urls.iterator();
+       }
+       
+    /*
+        * A dummy class to pass the pointer of URL.
+        */
+    private static class URLPointer {
+       private URLPointer(URL newUrl) {
+               url = newUrl;
+       }
+       private URL url;
+    }
+    
+    /**
+     * Recursively parse all nodes to pick up all URL s.
+     * @see e the nodes to be parsed
+     * @see baseUrl Base URL from which the HTML code was obtained
+     * @see urls URLCollection
+     */
+    private void parseNodes(final NodeIterator e,
+               final URLPointer baseUrl, final URLCollection urls) 
+        throws HTMLParseException, ParserException {
+        while(e.hasMoreNodes()) {
+            Node node = e.nextNode();
+            // a url is always in a Tag.
+            if (!(node instanceof Tag)) {
+                continue;
+            }
+            Tag tag = (Tag) node;
+            String tagname=tag.getTagName();
+            String binUrlStr = null;
+
+            // first we check to see if body tag has a
+            // background set
+            if (tag instanceof BodyTag) {
+                binUrlStr = tag.getAttribute(ATT_BACKGROUND);
+            } else if (tag instanceof BaseHrefTag) {
+                BaseHrefTag baseHref = (BaseHrefTag) tag;
+                String baseref = baseHref.getBaseUrl().toString();
+                try {
+                    if (!baseref.equals(""))// Bugzilla 30713
+                    {
+                        baseUrl.url = new URL(baseUrl.url, 
baseHref.getBaseUrl());
+                    }
+                } catch (MalformedURLException e1) {
+                    throw new HTMLParseException(e1);
+                }
+            } else if (tag instanceof ImageTag) {
+                ImageTag image = (ImageTag) tag;
+                binUrlStr = image.getImageURL();
+            } else if (tag instanceof AppletTag) {
+                       // look for applets
+
+                       // This will only work with an Applet .class file.
+                       // Ideally, this should be upgraded to work with 
Objects (IE)
+                       // and archives (.jar and .zip) files as well.
+                AppletTag applet = (AppletTag) tag;
+                binUrlStr = applet.getAppletClass();
+            } else if (tag instanceof InputTag) {
+                // we check the input tag type for image
+                if (ATT_IS_IMAGE.equalsIgnoreCase(tag.getAttribute(ATT_TYPE))) 
{
+                    // then we need to download the binary
+                    binUrlStr = tag.getAttribute(ATT_SRC);
+                }
+            } else if (tag instanceof LinkTag) {
+                LinkTag link = (LinkTag) tag;
+                if (link.getChild(0) instanceof ImageTag) {
+                    ImageTag img = (ImageTag) link.getChild(0);
+                    binUrlStr = img.getImageURL();
+                }
+            } else if (tag instanceof ScriptTag) {
+                binUrlStr = tag.getAttribute(ATT_SRC);
+            } else if (tag instanceof FrameTag) {
+                binUrlStr = tag.getAttribute(ATT_SRC);
+            } else if (tagname.equalsIgnoreCase(TAG_EMBED)
+                || tagname.equalsIgnoreCase(TAG_BGSOUND)){
+                binUrlStr = tag.getAttribute(ATT_SRC);  
+            } else if (tagname.equalsIgnoreCase(TAG_LINK)) {
+                // Putting the string first means it works even if the 
attribute is null
+                if (STYLESHEET.equalsIgnoreCase(tag.getAttribute(ATT_REL))) {
+                    binUrlStr = tag.getAttribute(ATT_HREF);
+                }
+            } else {
+                binUrlStr = tag.getAttribute(ATT_BACKGROUND);
+            }
+
+            if (binUrlStr != null) {
+                urls.addURL(binUrlStr, baseUrl.url);
+            }
+            // second, if the tag was a composite tag,
+            // recursively parse its children.
+            if (tag instanceof CompositeTag) {
+                CompositeTag composite = (CompositeTag) tag;
+                parseNodes(composite.elements(), baseUrl, urls);
+            }
+        }
+    }
+}

Modified: jakarta/jmeter/branches/rel-2-2/xdocs/changes.xml
URL: 
http://svn.apache.org/viewvc/jakarta/jmeter/branches/rel-2-2/xdocs/changes.xml?view=diff&rev=512075&r1=512074&r2=512075
==============================================================================
--- jakarta/jmeter/branches/rel-2-2/xdocs/changes.xml (original)
+++ jakarta/jmeter/branches/rel-2-2/xdocs/changes.xml Mon Feb 26 15:28:57 2007
@@ -64,6 +64,7 @@
 <li>Bug 33964 - send file as entire post body if name/type are omitted</li>
 <li>HTTP Mirror Server Workbench element</li>
 <li>Bug 41253 - extend XPathExtractor to work with non-NodeList XPath 
expressions</li>
+<li>Change to htmlparser 2.0</li>
 </ul>
 
 <h4>Bug fixes:</h4>



---------------------------------------------------------------------
To unsubscribe, e-mail: [EMAIL PROTECTED]
For additional commands, e-mail: [EMAIL PROTECTED]

Reply via email to