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]