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]