Docjar: A Java Source and Docuemnt Enginecom.*    java.*    javax.*    org.*    all    new    plug-in

Quick Search    Search Deep

Source code: org/htmlparser/visitors/UrlModifyingVisitor.java


1   // $Header: /home/cvs/jakarta-jmeter/src/htmlparser/org/htmlparser/visitors/UrlModifyingVisitor.java,v 1.2 2004/02/11 02:16:59 woolfel Exp $
2   /*
3    * ====================================================================
4    * Copyright 2002-2004 The Apache Software Foundation.
5    *
6    * Licensed under the Apache License, Version 2.0 (the "License");
7    * you may not use this file except in compliance with the License.
8    * You may obtain a copy of the License at
9    *
10   *   http://www.apache.org/licenses/LICENSE-2.0
11   *
12   * Unless required by applicable law or agreed to in writing, software
13   * distributed under the License is distributed on an "AS IS" BASIS,
14   * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
15   * See the License for the specific language governing permissions and
16   * limitations under the License.
17   * 
18   */
19  
20  // The developers of JMeter and Apache are greatful to the developers
21  // of HTMLParser for giving Apache Software Foundation a non-exclusive
22  // license. The performance benefits of HTMLParser are clear and the
23  // users of JMeter will benefit from the hard work the HTMLParser
24  // team. For detailed information about HTMLParser, the project is
25  // hosted on sourceforge at http://htmlparser.sourceforge.net/.
26  //
27  // HTMLParser was originally created by Somik Raha in 2000. Since then
28  // a healthy community of users has formed and helped refine the
29  // design so that it is able to tackle the difficult task of parsing
30  // dirty HTML. Derrick Oswald is the current lead developer and was kind
31  // enough to assist JMeter.
32  //
33  // This class was contributed by Joshua Kerievsky
34  
35  package org.htmlparser.visitors;
36  import org.htmlparser.Parser;
37  import org.htmlparser.StringNode;
38  import org.htmlparser.scanners.LinkScanner;
39  import org.htmlparser.tags.EndTag;
40  import org.htmlparser.tags.ImageTag;
41  import org.htmlparser.tags.LinkTag;
42  import org.htmlparser.tags.Tag;
43  
44  public class UrlModifyingVisitor extends NodeVisitor
45  {
46      private String linkPrefix;
47      private StringBuffer modifiedResult;
48      private Parser parser;
49  
50      public UrlModifyingVisitor(Parser parser, String linkPrefix)
51      {
52          super(true, false);
53          this.parser = parser;
54          LinkScanner linkScanner = new LinkScanner();
55          parser.addScanner(linkScanner);
56          parser.addScanner(
57              linkScanner.createImageScanner(ImageTag.IMAGE_TAG_FILTER));
58          this.linkPrefix = linkPrefix;
59          modifiedResult = new StringBuffer();
60      }
61  
62      public void visitLinkTag(LinkTag linkTag)
63      {
64          linkTag.setLink(linkPrefix + linkTag.getLink());
65      }
66  
67      public void visitImageTag(ImageTag imageTag)
68      {
69          imageTag.setImageURL(linkPrefix + imageTag.getImageURL());
70          modifiedResult.append(imageTag.toHtml());
71      }
72  
73      public void visitEndTag(EndTag endTag)
74      {
75          modifiedResult.append(endTag.toHtml());
76      }
77  
78      public void visitStringNode(StringNode stringNode)
79      {
80          modifiedResult.append(stringNode.toHtml());
81      }
82  
83      public void visitTag(Tag tag)
84      {
85          modifiedResult.append(tag.toHtml());
86      }
87  
88      public String getModifiedResult()
89      {
90          return modifiedResult.toString();
91      }
92  }