Package org.apache.jmeter.protocol.http.parser

Source Code of org.apache.jmeter.protocol.http.parser.HtmlParser

/*
* ====================================================================
* The Apache Software License, Version 1.1
*
* Copyright (c) 2001 The Apache Software Foundation.  All rights
* reserved.
*
* Redistribution and use in source and binary forms, with or without
* modification, are permitted provided that the following conditions
* are met:
*
* 1. Redistributions of source code must retain the above copyright
* notice, this list of conditions and the following disclaimer.
*
* 2. Redistributions in binary form must reproduce the above copyright
* notice, this list of conditions and the following disclaimer in
* the documentation and/or other materials provided with the
* distribution.
*
* 3. The end-user documentation included with the redistribution,
* if any, must include the following acknowledgment:
* "This product includes software developed by the
* Apache Software Foundation (http://www.apache.org/)."
* Alternately, this acknowledgment may appear in the software itself,
* if and wherever such third-party acknowledgments normally appear.
*
* 4. The names "Apache" and "Apache Software Foundation" and
* "Apache JMeter" must not be used to endorse or promote products
* derived from this software without prior written permission. For
* written permission, please contact apache@apache.org.
*
* 5. Products derived from this software may not be called "Apache",
* "Apache JMeter", nor may "Apache" appear in their name, without
* prior written permission of the Apache Software Foundation.
*
* THIS SOFTWARE IS PROVIDED ``AS IS'' AND ANY EXPRESSED OR IMPLIED
* WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES
* OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
* DISCLAIMED.  IN NO EVENT SHALL THE APACHE SOFTWARE FOUNDATION OR
* ITS CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
* SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
* LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF
* USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) 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 OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
* SUCH DAMAGE.
* ====================================================================
*
* This software consists of voluntary contributions made by many
* individuals on behalf of the Apache Software Foundation.  For more
* information on the Apache Software Foundation, please see
* <http://www.apache.org/>.
*/
package org.apache.jmeter.protocol.http.parser;

import java.util.*;

import org.apache.oro.text.regex.*;

import org.apache.jmeter.control.ResponseParser;
import org.apache.jmeter.samplers.Entry;
import org.apache.jmeter.protocol.http.config.UrlConfig;

/**
* Title:
* Description:
* Copyright:    Copyright (c) 2001
* Company:
* @author Michael Stover
* @version 1.0
*/

public class HtmlParser implements ResponseParser
{
  Collection parsedConfigs;
  Perl5Compiler compiler;
  List hrefPatterns;
  private int compilerOptions = Perl5Compiler.CASE_INSENSITIVE_MASK |
    Perl5Compiler.MULTILINE_MASK | Perl5Compiler.READ_ONLY_MASK;

  public HtmlParser()
  {
    compiler = new Perl5Compiler();
    hrefPatterns = new LinkedList();
  }

  public void modifyEntry(Entry entry, String currentResponse)
  {
    if(entryIrrelevant(entry))
    {
      return;
    }
    parsedConfigs = new LinkedList();
    UrlConfig config = (UrlConfig)entry.getConfigElement(
           org.apache.jmeter.protocol.http.config.UrlConfig.class);
    parseResponse(currentResponse);
    Iterator iter = parsedConfigs.iterator();
    while (iter.hasNext())
    {
      UrlConfig item = (UrlConfig)iter.next();
      if(item.getDomain().equals(config.getDomain()) &&
          item.getPath().equals(config.getPath()))
      {
        //modifyEntry(entry,item);
      }
    }
  }

  private void parseResponse(String html)
  {
    int index = 0;
    int previous = 0;
    while((index = html.indexOf("<",previous)) > -1)
    {
      if(html.substring(index+1,index+3).equalsIgnoreCase("a "))
      {
        parseAnchor(html.substring(index,html.indexOf(">",index)));
      }
      else if(html.substring(index+1,index+"form ".length()).equalsIgnoreCase("form "))
      {
        parseForm(html.substring(index));
      }
      previous = html.indexOf(">",index);
    }
  }

  private void parseForm(String form)
  {
  }

  private void parseAnchor(String anchorString)
  {
    String upperVersion = anchorString.toUpperCase();
    int start = upperVersion.indexOf("HREF=");
    int end;
    start += 5;
    if(anchorString.charAt(start) == '"')
    {
      start++;
      end = anchorString.indexOf("\"",start);
    }
    else
    {
      int x = anchorString.indexOf(" ");
      if(x > -1)
      {
        end = x;
      }
      else
      {
        end = anchorString.length();
      }
    }

  }

  private boolean entryIrrelevant(Entry entry)
  {
    UrlConfig config = (UrlConfig)entry.getConfigElement(
           org.apache.jmeter.protocol.http.config.UrlConfig.class);
    if(config == null)
    {
      return true;
    }
    return false;
  }

  public String getClassLabel()
  {
    /**@todo: Implement this org.apache.jmeter.control.ResponseParser method*/
    throw new java.lang.UnsupportedOperationException("Method getClassLabel() not yet implemented.");
  }
}
TOP

Related Classes of org.apache.jmeter.protocol.http.parser.HtmlParser

TOP
Copyright © 2018 www.massapi.com. All rights reserved.
All source code are property of their respective owners. Java is a trademark of Sun Microsystems, Inc and owned by ORACLE Inc. Contact coftware#gmail.com.