mstover1    02/04/24 09:11:13

  Modified:    src_1/org/apache/jmeter/protocol/http/config
                        MultipartUrlConfig.java UrlConfig.java
               src_1/org/apache/jmeter/protocol/http/control/gui
                        HttpTestSampleGui.java
               src_1/org/apache/jmeter/protocol/http/proxy
                        HttpRequestHdr.java Proxy.java
  Added:       src_1/org/apache/jmeter/protocol/http/config/gui
                        MultipartUrlConfigGui.java UrlConfigGui.java
  Log:
  modifications to proxy process
  
  Revision  Changes    Path
  1.2       +7 -10     
jakarta-jmeter/src_1/org/apache/jmeter/protocol/http/config/MultipartUrlConfig.java
  
  Index: MultipartUrlConfig.java
  ===================================================================
  RCS file: 
/home/cvs/jakarta-jmeter/src_1/org/apache/jmeter/protocol/http/config/MultipartUrlConfig.java,v
  retrieving revision 1.1
  retrieving revision 1.2
  diff -u -r1.1 -r1.2
  --- MultipartUrlConfig.java   19 Apr 2002 02:18:11 -0000      1.1
  +++ MultipartUrlConfig.java   24 Apr 2002 16:11:13 -0000      1.2
  @@ -59,6 +59,7 @@
   
   import org.apache.jmeter.config.ConfigElement;
   import org.apache.jmeter.util.JMeterUtils;
  +import org.apache.jmeter.protocol.http.sampler.HTTPSampler;
   
   /**
    * Title:        JMeter
  @@ -73,10 +74,6 @@
   {
   
        public static String MULTIPART_FORM = "multipart/form-data";
  -
  -     private static String FILENAME = "filename";
  -     private static String FIELDNAME = "fieldname";
  -     private static String MIMETYPE = "mimetype";
        private static String BOUNDARY = "boundary";
   
        public MultipartUrlConfig()
  @@ -118,32 +115,32 @@
   
        public void setFilename(String filename)
        {
  -             setProperty(FILENAME,filename);
  +             setProperty(HTTPSampler.FILE_NAME,filename);
        }
   
        public String getFilename()
        {
  -             return (String)this.getProperty(FILENAME);
  +             return (String)this.getProperty(HTTPSampler.FILE_NAME);
        }
   
        public void setFileFieldName(String name)
        {
  -             setProperty(FIELDNAME,name);
  +             setProperty(HTTPSampler.FILE_FIELD,name);
        }
   
        public String getFileFieldName()
        {
  -             return (String)this.getProperty(FIELDNAME);
  +             return (String)this.getProperty(HTTPSampler.FILE_FIELD);
        }
   
        public void setMimeType(String type)
        {
  -             setProperty(MIMETYPE,type);
  +             setProperty(HTTPSampler.FILE_MIMETYPE,type);
        }
   
        public String getMimeType()
        {
  -             return (String)this.getProperty(MIMETYPE);
  +             return (String)this.getProperty(HTTPSampler.FILE_MIMETYPE);
        }
   
        public InputStream getFileStream() throws IOException
  
  
  
  1.2       +24 -55    
jakarta-jmeter/src_1/org/apache/jmeter/protocol/http/config/UrlConfig.java
  
  Index: UrlConfig.java
  ===================================================================
  RCS file: 
/home/cvs/jakarta-jmeter/src_1/org/apache/jmeter/protocol/http/config/UrlConfig.java,v
  retrieving revision 1.1
  retrieving revision 1.2
  diff -u -r1.1 -r1.2
  --- UrlConfig.java    19 Apr 2002 02:18:11 -0000      1.1
  +++ UrlConfig.java    24 Apr 2002 16:11:13 -0000      1.2
  @@ -60,6 +60,7 @@
   import org.apache.jmeter.config.*;
   import org.apache.jmeter.testelement.AbstractTestElement;
   import org.apache.jmeter.util.JMeterUtils;
  +import org.apache.jmeter.protocol.http.sampler.HTTPSampler;
   import java.io.*;
   
   /**
  @@ -71,56 +72,24 @@
    *  the value you specify here.
    *
    *@author     Michael Stover
  - *@created    $Date: 2002/04/19 02:18:11 $
  - *@version    $Revision: 1.1 $
  + *@created    $Date: 2002/04/24 16:11:13 $
  + *@version    $Revision: 1.2 $
    */
   
   public class UrlConfig extends AbstractTestElement implements Serializable
   {
  -     /**
  -      *  Description of the Field
  -      */
  -     public final static String DOMAIN = "domain";
  -     /**
  -      *  Description of the Field
  -      */
  -     public final static String PORT = "port";
  -     /**
  -      *  Description of the Field
  -      */
  -     public final static String PATH = "path";
  -     /**
  -      *  Description of the Field
  -      */
  -     public final static String METHOD = "method";
  -     /**
  -      *  Description of the Field
  -      */
  -     public final static String ARGUMENTS = "arguments";
  -     /**
  -      *  Description of the Field
  -      */
  -     public final static String POST = "POST";
  -     /**
  -      *  Description of the Field
  -      */
  -     public final static String PROTOCOL = "PROTOCOL";
  -     /**
  -      *  Description of the Field
  -      */
  -     public final static String GET = "GET";
   
        /**
         *  Constructor for the UrlConfig object
         */
        public UrlConfig()
        {
  -             this.setProperty(ARGUMENTS, new Arguments());
  +             this.setProperty(HTTPSampler.ARGUMENTS, new Arguments());
        }
   
        public void setArguments(Arguments args)
        {
  -             setProperty(ARGUMENTS,args);
  +             setProperty(HTTPSampler.ARGUMENTS,args);
        }
   
        /**
  @@ -130,7 +99,7 @@
         */
        public void setMethod(String meth)
        {
  -             setProperty(METHOD, meth);
  +             setProperty(HTTPSampler.METHOD, meth);
        }
   
        /**
  @@ -140,12 +109,12 @@
         */
        public void setProtocol(String protocol)
        {
  -             setProperty(PROTOCOL, protocol);
  +             setProperty(HTTPSampler.PROTOCOL, protocol);
        }
   
        public void removeArguments()
        {
  -             setProperty(ARGUMENTS,new Arguments());
  +             setProperty(HTTPSampler.ARGUMENTS,new Arguments());
        }
   
        /**
  @@ -155,10 +124,10 @@
         */
        public void setPort(int port)
        {
  -             setProperty(PORT, new Integer(port));
  +             setProperty(HTTPSampler.PORT, new Integer(port));
                if (port == 0)
                {
  -                     removeProperty(PORT);
  +                     removeProperty(HTTPSampler.PORT);
                }
        }
   
  @@ -173,12 +142,12 @@
                if (index >= 0)
                {
                        String queryString = path.substring(index + 1);
  -                     setProperty(PATH, path.substring(0, index));
  +                     setProperty(HTTPSampler.PATH, path.substring(0, index));
                        parseArguments(queryString);
                }
                else
                {
  -                     setProperty(PATH, path);
  +                     setProperty(HTTPSampler.PATH, path);
                }
        }
   
  @@ -195,7 +164,7 @@
         */
        public void setDomain(String domain)
        {
  -             setProperty(DOMAIN, domain);
  +             setProperty(HTTPSampler.DOMAIN, domain);
        }
   
        /**
  @@ -208,7 +177,7 @@
        {
                String pathAndQuery = null;
   
  -             if (this.getMethod().equals(this.GET) && getQueryString().length() > 
0)
  +             if (this.getMethod().equals(HTTPSampler.GET) && 
getQueryString().length() > 0)
                {
                        pathAndQuery = this.getPath() + "?" + getQueryString();
                }
  @@ -228,7 +197,7 @@
                }
                else
                {
  -                     return new URL(getProtocol(), (String) getProperty(DOMAIN), 
getPort(),
  +                     return new URL(getProtocol(), (String) 
getProperty(HTTPSampler.DOMAIN), getPort(),
                                        pathAndQuery);
                }
        }
  @@ -240,10 +209,10 @@
         */
        public int getPort()
        {
  -             Object port = getProperty(PORT);
  +             Object port = getProperty(HTTPSampler.PORT);
                if (port == null)
                {
  -                     removeProperty(PORT);
  +                     removeProperty(HTTPSampler.PORT);
                        return 0;
                }
                else if (port instanceof Integer)
  @@ -253,7 +222,7 @@
                else if (port instanceof String)
                {
                        Integer intPort = new Integer((String) port);
  -                     setProperty(PORT, intPort);
  +                     setProperty(HTTPSampler.PORT, intPort);
                        return intPort.intValue();
                }
                return 0;
  @@ -266,7 +235,7 @@
         */
        public String getProtocol()
        {
  -             String protocol = (String) getProperty(PROTOCOL);
  +             String protocol = (String) getProperty(HTTPSampler.PROTOCOL);
                return protocol;
        }
   
  @@ -277,7 +246,7 @@
         */
        public String getPath()
        {
  -             String path = (String)getProperty(PATH);
  +             String path = (String)getProperty(HTTPSampler.PATH);
                if (path == null)
                {
                        path = "/";
  @@ -293,7 +262,7 @@
         */
        public String getDomain()
        {
  -             return (String) getProperty(DOMAIN);
  +             return (String) getProperty(HTTPSampler.DOMAIN);
        }
   
        /**
  @@ -303,7 +272,7 @@
         */
        public String getMethod()
        {
  -             return (String) getProperty(METHOD);
  +             return (String) getProperty(HTTPSampler.METHOD);
        }
   
        /**
  @@ -313,7 +282,7 @@
         */
        public Arguments getArguments()
        {
  -             return (Arguments) getProperty(this.ARGUMENTS);
  +             return (Arguments) getProperty(HTTPSampler.ARGUMENTS);
        }
   
        /**
  @@ -417,7 +386,7 @@
                {
                        UrlConfig config = new UrlConfig();
                        config.setProtocol("http");
  -                     config.setMethod(GET);
  +                     config.setMethod(HTTPSampler.GET);
                        config.addArgument("param1","value1");
                        config.setPath("/index.html");
                        config.setDomain("www.apache.org");
  
  
  
  1.1                  
jakarta-jmeter/src_1/org/apache/jmeter/protocol/http/config/gui/MultipartUrlConfigGui.java
  
  Index: MultipartUrlConfigGui.java
  ===================================================================
  /*
   * ====================================================================
   * 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 [EMAIL PROTECTED]
   *
   * 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.config.gui;
  import java.awt.*;
  import java.awt.event.*;
  import java.io.*;
  import javax.swing.*;
  import javax.swing.border.*;
  import org.apache.jmeter.config.ConfigTestElement;
  import org.apache.jmeter.gui.*;
  import org.apache.jmeter.gui.NamePanel;
  import org.apache.jmeter.gui.util.FileDialoger;
  import org.apache.jmeter.gui.util.VerticalLayout;
  import org.apache.jmeter.protocol.http.config.MultipartUrlConfig;
  import org.apache.jmeter.protocol.http.sampler.*;
  import org.apache.jmeter.testelement.TestElement;
  import org.apache.jmeter.util.JMeterUtils;
  import java.util.Collection;
  
  /****************************************
   * Title: JMeter Description: Copyright: Copyright (c) 2000 Company: Apache
   *
   *@author    Michael Stover
   *@created   $Date: 2002/04/24 16:11:13 $
   *@version   1.0
   ***************************************/
  
  public class MultipartUrlConfigGui extends UrlConfigGui implements ActionListener
  {
  
        JTextField filenameField;
        JTextField paramNameField;
        JTextField mimetypeField;
        JLabel filenameLabel;
        JLabel paramNameLabel;
        JLabel mimetypeLabel;
        JButton browseFileButton;
        private static String FILENAME = "filename";
        private static String BROWSE = "browse";
        private static String PARAMNAME = "paramname";
        private static String MIMETYPE = "mimetype";
  
        /****************************************
         * !ToDo (Constructor description)
         ***************************************/
        public MultipartUrlConfigGui()
        {
                this(true);
        }
  
        public Collection getMenuCategories()
        {
                return null;
        }
  
        /****************************************
         * !ToDo (Constructor description)
         *
         *@param displayName  !ToDo (Parameter description)
         ***************************************/
        public MultipartUrlConfigGui(boolean displayName)
        {
                super(displayName);
                setName(getStaticLabel());
        }
  
        /****************************************
         * !ToDo (Method description)
         *
         *@return   !ToDo (Return description)
         ***************************************/
        public TestElement createTestElement()
        {
                TestElement ce = super.createTestElement();
                configureTestElement(ce);
                ce.setProperty(HTTPSampler.MIMETYPE, mimetypeField.getText());
                ce.setProperty(HTTPSampler.FILE_NAME, filenameField.getText());
                ce.setProperty(HTTPSampler.FILE_FIELD, paramNameField.getText());
                return ce;
        }
  
        public void configureSampler(HTTPSampler sampler)
        {
                sampler.setMimetype(mimetypeField.getText());
                sampler.setFileField(paramNameField.getText());
                sampler.setFilename(filenameField.getText());
                super.configureSampler(sampler);
        }
  
        /****************************************
         * !ToDo (Method description)
         *
         *@param el  !ToDo (Parameter description)
         ***************************************/
        public void configure(TestElement el)
        {
                super.configure(el);
                mimetypeField.setText((String)el.getProperty(HTTPSampler.MIMETYPE));
                filenameField.setText((String)el.getProperty(HTTPSampler.FILE_NAME));
                
paramNameField.setText((String)el.getProperty(HTTPSampler.FILE_FIELD));
        }
  
        /****************************************
         * !ToDoo (Method description)
         *
         *@return   !ToDo (Return description)
         ***************************************/
        public String getStaticLabel()
        {
                return JMeterUtils.getResString("url_multipart_config_title");
        }
  
        /****************************************
         * !ToDo (Method description)
         ***************************************/
        public void updateGui() { }
  
  
        /****************************************
         * !ToDo (Method description)
         *
         *@param e  !ToDo (Parameter description)
         ***************************************/
        public void actionPerformed(ActionEvent e)
        {
                String name = e.getActionCommand();
                if(name.equals(BROWSE))
                {
                        JFileChooser chooser = FileDialoger.promptToOpenFile();
  
                        File file = chooser.getSelectedFile();
                        if(file != null)
                        {
                                filenameField.setText(file.getPath());
                        }
                }
        }
  
        /****************************************
         * !ToDo (Method description)
         ***************************************/
        protected void init()
        {
                this.setLayout(new VerticalLayout(5, VerticalLayout.LEFT, 
VerticalLayout.TOP));
  
                // WEB SERVER PANEL
                JPanel webServerPanel = new JPanel();
                webServerPanel.setLayout(new VerticalLayout(5, VerticalLayout.LEFT, 
VerticalLayout.TOP));
                
webServerPanel.setBorder(BorderFactory.createTitledBorder(BorderFactory.createEtchedBorder(),
 JMeterUtils.getResString("web_server")));
                webServerPanel.add(getDomainPanel());
                webServerPanel.add(getPortPanel());
  
                // WEB REQUEST PANEL
                JPanel webRequestPanel = new JPanel();
                webRequestPanel.setLayout(new VerticalLayout(5, VerticalLayout.LEFT, 
VerticalLayout.TOP));
                
webRequestPanel.setBorder(BorderFactory.createTitledBorder(BorderFactory.createEtchedBorder(),
 JMeterUtils.getResString("web_request")));
                webRequestPanel.add(getProtocolAndMethodPanel());
                webRequestPanel.add(getPathPanel());
                webRequestPanel.add(getParameterPanel());
                webRequestPanel.add(getFilePanel());
  
                // If displayName is TRUE, then this GUI is not embedded in another 
GUI.
                if(displayName)
                {
                        // MAIN PANEL
                        JPanel mainPanel = new JPanel();
                        Border margin = new EmptyBorder(10, 10, 5, 10);
                        mainPanel.setBorder(margin);
                        mainPanel.setLayout(new VerticalLayout(5, 
VerticalLayout.LEFT));
  
                        // TITLE
                        JLabel panelTitleLabel = new 
JLabel(JMeterUtils.getResString("url_full_config_title"));
                        Font curFont = panelTitleLabel.getFont();
                        int curFontSize = curFont.getSize();
                        curFontSize += 4;
                        panelTitleLabel.setFont(new Font(curFont.getFontName(), 
curFont.getStyle(), curFontSize));
                        mainPanel.add(panelTitleLabel);
  
                        // NAME
                        mainPanel.add(getNamePanel());
  
                        mainPanel.add(webServerPanel);
                        mainPanel.add(webRequestPanel);
  
                        this.add(mainPanel);
                }
                else
                {// Embed this GUI in the parent GUI
  
                        this.add(webServerPanel);
                        this.add(webRequestPanel);
                }
        }
  
        /****************************************
         * !ToDoo (Method description)
         *
         *@return   !ToDo (Return description)
         ***************************************/
        protected JPanel getFilePanel()
        {
                // FILE PANEL (all main components are add to this panel)
                JPanel filePanel = new JPanel();
                filePanel.setLayout(new VerticalLayout(1, VerticalLayout.LEFT));
                filePanel.setBorder(BorderFactory.createEmptyBorder(0, 10, 0, 10));
  
                // SEND FILE LABEL
                JLabel sendFileLabel = new 
JLabel(JMeterUtils.getResString("send_file"));
                filePanel.add(sendFileLabel);
  
                // FILENAME PANEL (contains filename label and text field and Browse 
button)
                JPanel filenamePanel = new JPanel();
                filenamePanel.setBorder(BorderFactory.createEmptyBorder(0, 25, 0, 0));
  
                // --- FILENAME LABEL
                filenameLabel = new 
JLabel(JMeterUtils.getResString("send_file_filename_label"));
                filenameLabel.setEnabled(true);
  
                // --- FILENAME TEXT FIELD
                filenameField = new JTextField(15);
                filenameField.setEnabled(true);
                filenameField.setName(FILENAME);
  
                // --- BROWSE BUTTON
                browseFileButton = new 
JButton(JMeterUtils.getResString("send_file_browse"));
                browseFileButton.setEnabled(true);
                browseFileButton.setActionCommand(BROWSE);
                browseFileButton.addActionListener(this);
  
                filenamePanel.add(filenameLabel);
                filenamePanel.add(filenameField);
                filenamePanel.add(browseFileButton);
  
                // PARAM NAME PANEL (contains param name label and text field)
                JPanel paramNamePanel = new JPanel();
                paramNamePanel.setBorder(BorderFactory.createEmptyBorder(0, 25, 0, 
0));
  
                // --- PARAM NAME LABEL
                paramNameLabel = new 
JLabel(JMeterUtils.getResString("send_file_param_name_label"));
                paramNameLabel.setEnabled(true);
  
                // --- PARAM NAME TEXT FIELD
                paramNameField = new JTextField(15);
                paramNameField.setName(PARAMNAME);
                paramNameField.setEnabled(true);
  
                paramNamePanel.add(paramNameLabel);
                paramNamePanel.add(paramNameField);
  
                // MIME TYPE PANEL (contains mime type label and text field)
                JPanel mimePanel = new JPanel();
                mimePanel.setBorder(BorderFactory.createEmptyBorder(0, 25, 0, 0));
  
                // --- MIME TYPE LABEL
                mimetypeLabel = new 
JLabel(JMeterUtils.getResString("send_file_mime_label"));
                mimetypeLabel.setEnabled(true);
  
                // --- MIME TYPE TEXT FIELD
                mimetypeField = new JTextField(15);
                mimetypeField.setEnabled(true);
                mimetypeField.setName(MIMETYPE);
  
                mimePanel.add(mimetypeLabel);
                mimePanel.add(mimetypeField);
  
                filePanel.add(filenamePanel);
                filePanel.add(paramNamePanel);
                filePanel.add(mimePanel);
  
                return filePanel;
        }
  }
  
  
  
  1.1                  
jakarta-jmeter/src_1/org/apache/jmeter/protocol/http/config/gui/UrlConfigGui.java
  
  Index: UrlConfigGui.java
  ===================================================================
  /*
   * ====================================================================
   * 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 [EMAIL PROTECTED]
   *
   * 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.config.gui;
  import java.awt.*;
  import java.awt.event.*;
  import java.util.*;
  import javax.swing.*;
  import javax.swing.border.*;
  import org.apache.jmeter.config.Arguments;
  import org.apache.jmeter.config.ConfigTestElement;
  import org.apache.jmeter.config.gui.AbstractConfigGui;
  import org.apache.jmeter.config.gui.ArgumentsPanel;
  import org.apache.jmeter.gui.*;
  import org.apache.jmeter.gui.util.VerticalLayout;
  import org.apache.jmeter.protocol.http.config.UrlConfig;
  import org.apache.jmeter.protocol.http.sampler.*;
  import org.apache.jmeter.testelement.TestElement;
  import org.apache.jmeter.util.JMeterUtils;
  
  /****************************************
   * Title: JMeter Description: Copyright: Copyright (c) 2000 Company: Apache
   *
   *@author    Michael Stover
   *@created   $Date: 2002/04/24 16:11:13 $
   *@version   1.0
   ***************************************/
  
  public class UrlConfigGui extends AbstractConfigGui
  {
        /****************************************
         * !ToDo (Field description)
         ***************************************/
        protected boolean displayName = true;
  
        /****************************************
         * !ToDo (Field description)
         ***************************************/
        protected ArgumentsPanel argsPanel;
        /****************************************
         * !ToDo (Field description)
         ***************************************/
        protected NamePanel namePanel;
        private static String DOMAIN = "domain";
        private static String PORT = "port";
        private static String PATH = "path";
        private static String POST = "post";
        private static String GET = "get";
        private static String HTTP = "http";
        private static String HTTPS = "https";
        private static String SEND_PARAM = "sendparam";
  
        private JTextField domain;
        private JTextField port;
        private JTextField path;
        private JRadioButton post;
        private JRadioButton get;
        private JRadioButton http;
        private JRadioButton https;
  
  
        /****************************************
         * !ToDo (Constructor description)
         ***************************************/
        public UrlConfigGui()
        {
                this(true);
        }
  
        /****************************************
         * !ToDo (Constructor description)
         *
         *@param display  !ToDo (Parameter description)
         ***************************************/
        public UrlConfigGui(boolean display)
        {
                namePanel = new NamePanel();
                displayName = display;
                init();
                setName(getStaticLabel());
        }
  
        /****************************************
         * !ToDo (Method description)
         *
         *@param name  !ToDo (Parameter description)
         ***************************************/
        public void setName(String name)
        {
                super.setName(name);
                namePanel.setName(name);
        }
  
        /****************************************
         * !ToDoo (Method description)
         *
         *@return   !ToDo (Return description)
         ***************************************/
        public String getName()
        {
                return namePanel.getName();
        }
  
        /****************************************
         * !ToDoo (Method description)
         *
         *@return   !ToDo (Return description)
         ***************************************/
        public String getStaticLabel()
        {
                return JMeterUtils.getResString("url_config_title");
        }
  
        /****************************************
         * !ToDo (Method description)
         *
         *@return   !ToDo (Return description)
         ***************************************/
        public TestElement createTestElement()
        {
                ConfigTestElement element = new ConfigTestElement();
                this.configureTestElement(element);
                element.setProperty(HTTPSampler.ARGUMENTS, 
argsPanel.createTestElement());
                element.setProperty(HTTPSampler.DOMAIN, domain.getText());
                element.setProperty(HTTPSampler.PORT, port.getText());
                element.setProperty(HTTPSampler.METHOD, (post.isSelected() ? "POST" : 
"GET"));
                element.setProperty(HTTPSampler.PATH, path.getText());
                element.setProperty(HTTPSampler.PROTOCOL, (http.isSelected() ? "http" 
: "https"));
                return element;
        }
  
        public void configureSampler(HTTPSampler sampler)
        {
                sampler.setArguments((Arguments)argsPanel.createTestElement());
                sampler.setDomain(domain.getText());
                sampler.setPath(path.getText());
                if(port.getText().length() > 0)
                {
                        sampler.setPort(Integer.parseInt(port.getText()));
                }
                sampler.setMethod((post.isSelected() ? "POST" : "GET"));
                sampler.setProtocol((http.isSelected() ? "http" : "https"));
        }
  
        /****************************************
         * !ToDo (Method description)
         *
         *@param el  !ToDo (Parameter description)
         ***************************************/
        public void configure(TestElement el)
        {
                setName((String)el.getProperty(TestElement.NAME));
                
argsPanel.configure((TestElement)el.getProperty(HTTPSampler.ARGUMENTS));
                domain.setText((String)el.getProperty(HTTPSampler.DOMAIN));
                port.setText((String)el.getPropertyAsString(HTTPSampler.PORT));
                if(el.getProperty(HTTPSampler.METHOD).equals("POST"))
                {
                        post.setSelected(true);
                        get.setSelected(false);
                }
                else
                {
                        get.setSelected(true);
                        post.setSelected(false);
                }
                path.setText((String)el.getProperty(HTTPSampler.PATH));
                if(el.getProperty(HTTPSampler.PROTOCOL).equals("http"))
                {
                        http.setSelected(true);
                        https.setSelected(false);
                }
                else
                {
                        https.setSelected(true);
                        http.setSelected(false);
                }
        }
  
        /****************************************
         * !ToDoo (Method description)
         *
         *@return   !ToDo (Return description)
         ***************************************/
        protected NamePanel getNamePanel()
        {
                return namePanel;
        }
  
        /****************************************
         * !ToDo (Method description)
         ***************************************/
        protected void init()
        {
                this.setLayout(new VerticalLayout(5, VerticalLayout.LEFT, 
VerticalLayout.TOP));
  
                JPanel webServerPanel = new JPanel();
                webServerPanel.setLayout(new VerticalLayout(5, VerticalLayout.LEFT, 
VerticalLayout.TOP));
                
webServerPanel.setBorder(BorderFactory.createTitledBorder(BorderFactory.createEtchedBorder(),
 JMeterUtils.getResString("web_server")));
                webServerPanel.add(getDomainPanel());
                webServerPanel.add(getPortPanel());
  
                JPanel webRequestPanel = new JPanel();
                webRequestPanel.setLayout(new VerticalLayout(5, VerticalLayout.LEFT, 
VerticalLayout.TOP));
                
webRequestPanel.setBorder(BorderFactory.createTitledBorder(BorderFactory.createEtchedBorder(),
 JMeterUtils.getResString("web_request")));
                webRequestPanel.add(getProtocolAndMethodPanel());
                webRequestPanel.add(getPathPanel());
                webRequestPanel.add(getParameterPanel());
  
                if(displayName)
                {
                        // MAIN PANEL
                        JPanel mainPanel = new JPanel();
                        Border margin = new EmptyBorder(10, 10, 5, 10);
                        mainPanel.setBorder(margin);
                        mainPanel.setLayout(new VerticalLayout(5, 
VerticalLayout.LEFT));
  
                        // TITLE
                        JLabel panelTitleLabel = new 
JLabel(JMeterUtils.getResString("url_config_title"));
                        Font curFont = panelTitleLabel.getFont();
                        int curFontSize = curFont.getSize();
                        curFontSize += 4;
                        panelTitleLabel.setFont(new Font(curFont.getFontName(), 
curFont.getStyle(), curFontSize));
                        mainPanel.add(panelTitleLabel);
  
                        // NAME
                        mainPanel.add(getNamePanel());
  
                        mainPanel.add(webServerPanel);
                        mainPanel.add(webRequestPanel);
  
                        this.add(mainPanel);
                }
                else
                {
                        this.add(webServerPanel);
                        this.add(webRequestPanel);
                }
        }
  
        /****************************************
         * !ToDoo (Method description)
         *
         *@return   !ToDo (Return description)
         ***************************************/
        protected JPanel getPortPanel()
        {
                JPanel portP = new JPanel();
                portP.setBorder(BorderFactory.createEmptyBorder(0, 5, 0, 10));
                portP.add(new JLabel(JMeterUtils.getResString("web_server_port")));
  
                port = new JTextField(6);
  
                port.setName(PORT);
                portP.add(port);
  
                return portP;
        }
  
        /****************************************
         * !ToDoo (Method description)
         *
         *@return   !ToDo (Return description)
         ***************************************/
        protected JPanel getDomainPanel()
        {
                JPanel domainP = new JPanel();
                domainP.setBorder(BorderFactory.createEmptyBorder(0, 5, 0, 10));
                domainP.add(new 
JLabel(JMeterUtils.getResString("web_server_domain")));
  
                domain = new JTextField(20);
                domain.setName(DOMAIN);
                domainP.add(domain);
  
                return domainP;
        }
  
        /****************************************
         * !ToDoo (Method description)
         *
         *@return   !ToDo (Return description)
         ***************************************/
        protected JPanel getPathPanel()
        {
                JPanel panel = new JPanel();
                panel.setBorder(BorderFactory.createEmptyBorder(0, 5, 0, 10));
                panel.add(new JLabel(JMeterUtils.getResString("path")));
  
                path = new JTextField(20);
                path.setName(PATH);
                panel.add(path);
  
                return panel;
        }
  
        /****************************************
         * !ToDoo (Method description)
         *
         *@return   !ToDo (Return description)
         ***************************************/
        protected JPanel getProtocolAndMethodPanel()
        {
                JPanel panel = new JPanel();
                panel.setLayout(new BoxLayout(panel, BoxLayout.X_AXIS));
                panel.setBorder(BorderFactory.createEmptyBorder(0, 10, 0, 10));
  
                panel.add(new JLabel(JMeterUtils.getResString("protocol")));
                panel.add(Box.createRigidArea(new Dimension(5, 0)));
  
                // PROTOCOL
                http = new JRadioButton(JMeterUtils.getResString("url_config_http"));
                https = new 
JRadioButton(JMeterUtils.getResString("url_config_https"));
                ButtonGroup protocolButtonGroup = new ButtonGroup();
                protocolButtonGroup.add(http);
                protocolButtonGroup.add(https);
  
                http.setSelected(true);
  
                panel.add(http);
                panel.add(https);
  
                panel.add(Box.createRigidArea(new Dimension(20, 0)));
  
                // METHOD
                post = new JRadioButton(JMeterUtils.getResString("url_config_post"));
                get = new JRadioButton(JMeterUtils.getResString("url_config_get"));
                ButtonGroup methodButtonGroup = new ButtonGroup();
                methodButtonGroup.add(post);
                methodButtonGroup.add(get);
  
                panel.add(new JLabel(JMeterUtils.getResString("method")));
                panel.add(Box.createRigidArea(new Dimension(5, 0)));
  
                post.setSelected(true);
  
                panel.add(get);
                panel.add(post);
  
                return panel;
        }
  
        /****************************************
         * !ToDoo (Method description)
         *
         *@return   !ToDo (Return description)
         ***************************************/
        protected JPanel getParameterPanel()
        {
                argsPanel = new ArgumentsPanel();
  
                return argsPanel;
        }
  }
  
  
  
  1.3       +2 -2      
jakarta-jmeter/src_1/org/apache/jmeter/protocol/http/control/gui/HttpTestSampleGui.java
  
  Index: HttpTestSampleGui.java
  ===================================================================
  RCS file: 
/home/cvs/jakarta-jmeter/src_1/org/apache/jmeter/protocol/http/control/gui/HttpTestSampleGui.java,v
  retrieving revision 1.2
  retrieving revision 1.3
  diff -u -r1.2 -r1.3
  --- HttpTestSampleGui.java    19 Apr 2002 02:08:48 -0000      1.2
  +++ HttpTestSampleGui.java    24 Apr 2002 16:11:13 -0000      1.3
  @@ -72,7 +72,7 @@
    * Title: JMeter Description: Copyright: Copyright (c) 2000 Company: Apache
    *
    *@author    Michael Stover
  - *@created   $Date: 2002/04/19 02:08:48 $
  + *@created   $Date: 2002/04/24 16:11:13 $
    *@version   1.0
    ***************************************/
   
  @@ -99,7 +99,7 @@
                super.configure(element);
                urlConfigGui.configure(element);
                String testClass = 
(String)element.getProperty(TestElement.TEST_CLASS);
  -             if(testClass.endsWith("Full"))
  +             if(testClass != null && testClass.endsWith("Full"))
                {
                        getImages.setSelected(true);
                }
  
  
  
  1.3       +62 -62    
jakarta-jmeter/src_1/org/apache/jmeter/protocol/http/proxy/HttpRequestHdr.java
  
  Index: HttpRequestHdr.java
  ===================================================================
  RCS file: 
/home/cvs/jakarta-jmeter/src_1/org/apache/jmeter/protocol/http/proxy/HttpRequestHdr.java,v
  retrieving revision 1.2
  retrieving revision 1.3
  diff -u -r1.2 -r1.3
  --- HttpRequestHdr.java       19 Apr 2002 02:08:49 -0000      1.2
  +++ HttpRequestHdr.java       24 Apr 2002 16:11:13 -0000      1.3
  @@ -22,8 +22,8 @@
    * !ToDo (Class description)
    *
    *@author    $Author: mstover1 $
  - *@created   $Date: 2002/04/19 02:08:49 $
  - *@version   $Revision: 1.2 $
  + *@created   $Date: 2002/04/24 16:11:13 $
  + *@version   $Revision: 1.3 $
    ***************************************/
   public class HttpRequestHdr
   {
  @@ -60,82 +60,82 @@
         * Parses a http header from a stream.
         *
         *@param in  The stream to parse.
  -      *@return    true if parsing sucsessfull.
  +      *@return    Array of bytes from client.
         ***************************************/
  -     public boolean parse(InputStream in)
  +     public byte[] parse(InputStream in) throws IOException
        {
  +             boolean inHeaders = true;
  +             int readLength = 0;
  +             int dataLength = 0;
                String CR = "\r\n";
  -
  -             /*
  -              * Read by lines
  -              */
  -             BufferedReader lines;
  -             StringTokenizer tz;
  -             try
  +             boolean first = true;
  +             ByteArrayOutputStream clientRequest = new ByteArrayOutputStream();
  +             ByteArrayOutputStream line = new ByteArrayOutputStream();
  +             int x;
  +             while((inHeaders || readLength < dataLength) && ((x = in.read()) != 
-1))
                {
  -                     lines = new BufferedReader(new InputStreamReader(new 
DataInputStream(in)));
  -                     String firstLine = lines.readLine();
  -                     tz = new StringTokenizer(firstLine);
  -             }
  -             catch(Exception e)
  -             {
  -                     return false;
  +                     line.write(x);
  +                     clientRequest.write(x);
  +                     if(inHeaders && (byte)x == (byte)'\n')
  +                     {
  +                             if(line.size() < 3)
  +                             {
  +                                     inHeaders = false;
  +                             }
  +                             if(first)
  +                             {
  +                                     parseFirstLine(line.toString());
  +                                     first = false;
  +                             }
  +                             else
  +                             {
  +                                     dataLength = 
Math.max(parseLine(line.toString()),dataLength);
  +                             }
  +                             line.reset();
  +                     }
  +                     else if(!inHeaders)
  +                     {
  +                             readLength++;
  +                     }
                }
  +             return clientRequest.toByteArray();
  +     }
   
  -             /*
  -              * HTTP COMMAND LINE < <METHOD==get> <URL> <HTTP_VERSION> >
  -              */
  +     public void parseFirstLine(String firstLine)
  +     {
  +             StringTokenizer tz = new StringTokenizer(firstLine);
                method = getToken(tz).toUpperCase();
                url = getToken(tz);
                version = getToken(tz);
  +     }
   
  -             while(true)
  +     public int parseLine(String nextLine)
  +     {
  +             StringTokenizer tz;
  +             tz = new StringTokenizer(nextLine);
  +             String token = getToken(tz);
  +             // look for termination of HTTP command
  +             if(0 == token.length())
                {
  -                     String nextLine = null;
  -                     try
  -                     {
  -                             nextLine = lines.readLine();
  -                             tz = new StringTokenizer(nextLine);
  -                     }
  -                     catch(Exception e)
  -                     {
  -                             return false;
  -                     }
  -                     String Token = getToken(tz);
  -
  -                     // look for termination of HTTP command
  -                     if(0 == Token.length())
  -                     {
  -                             try
  -                             {
  -                                     if(method.equals("POST"))
  -                                     {
  -                                             postData = readPostData(lines);
  -                                     }
  -
  -                             }
  -                             catch(Exception e)
  -                             {
  -                                     break;
  -                             }
  -                             break;
  -                     }
  -                     else
  +                     return 0;
  +             }
  +             else
  +             {
  +                     String name = 
token.trim().substring(0,token.trim().length()-1);
  +                     String value = getRemainder(tz);
  +                     headers.put(name,value);
  +                     if(name.equalsIgnoreCase("content-length"))
                        {
  -                             if(!Token.trim().equalsIgnoreCase("host:") && 
!Token.trim().equalsIgnoreCase("referer:") &&
  -                                             
!Token.trim().equalsIgnoreCase("proxy-connection:"))
  -                             {
  -                                     
headers.put(Token.trim().substring(0,Token.trim().length()-1),getRemainder(tz));
  -                             }
  +                             return Integer.parseInt(value);
                        }
                }
  -             return true;
  +             return 0;
        }
   
  -     public HTTPSampler getSampler(UrlConfig config) throws 
MalformedURLException,IOException,ProtocolException
  +     public HTTPSampler getSampler() throws 
MalformedURLException,IOException,ProtocolException
        {
                HttpTestSampleGui tempGui = new HttpTestSampleGui();
  -             tempGui.configure(config);
  +             tempGui.configure(createUrlConfig());
                return (HTTPSampler)tempGui.createTestElement();
        }
   
  @@ -144,9 +144,9 @@
                return (String)headers.get("Content-Type");
        }
   
  -     private UrlConfig createUrlConfig(UrlConfig urlConfig)
  +     private UrlConfig createUrlConfig()
        {
  -             urlConfig = UrlConfig.createConfig(getContentType());
  +             UrlConfig urlConfig = UrlConfig.createConfig(getContentType());
                urlConfig.setDomain(serverName());
                urlConfig.setMethod(method);
                urlConfig.setPath(serverUrl());
  
  
  
  1.3       +27 -22    
jakarta-jmeter/src_1/org/apache/jmeter/protocol/http/proxy/Proxy.java
  
  Index: Proxy.java
  ===================================================================
  RCS file: 
/home/cvs/jakarta-jmeter/src_1/org/apache/jmeter/protocol/http/proxy/Proxy.java,v
  retrieving revision 1.2
  retrieving revision 1.3
  diff -u -r1.2 -r1.3
  --- Proxy.java        19 Apr 2002 02:08:49 -0000      1.2
  +++ Proxy.java        24 Apr 2002 16:11:13 -0000      1.3
  @@ -137,9 +137,7 @@
        {
                String serverName = "";
                HttpURLConnection url;
  -
                byte line[];
  -
                HttpRequestHdr request = new HttpRequestHdr();
                HttpReplyHdr reply = new HttpReplyHdr();
                FileInputStream fileInputStream = null;
  @@ -148,23 +146,18 @@
                boolean isCachable = false;
                try
                {
  -                     request.parse(new 
BufferedInputStream(ClientSocket.getInputStream()));
  -                     HTTPSampler sampler = request.getSampler(urlConfig);
  -                     sampler.addTestElement(cookieManager);
  -                     writeFromInToOut(new BufferedInputStream(new 
ByteArrayInputStream(sampleServer(sampler))),
  +                     byte[] clientRequest = request.parse(new 
BufferedInputStream(ClientSocket.getInputStream()));
  +                     HTTPSampler sampler = request.getSampler();
  +                     writeToClient(sampler.getDomain(),sampler.getPort(),new 
BufferedInputStream(
  +                                     new ByteArrayInputStream(clientRequest)),
                                        new 
BufferedOutputStream(ClientSocket.getOutputStream()));
                        target.deliverSampler(sampler);
                }
                catch (UnknownHostException uhe)
                {
  -                     //
  -                     // Requested Server could not be located
  -                     //
                        System.out.println("Server Not Found.");
  -
                        try
                        {
  -                             // Notify client that server not found
                                DataOutputStream out =
                                                new 
DataOutputStream(ClientSocket.getOutputStream());
                                out.writeBytes(reply.formServerNotFound());
  @@ -174,9 +167,9 @@
                        {
                        }
                }
  -
                catch (Exception e)
                {
  +                     e.printStackTrace();
                        try
                        {
                                if (TakenFromCache)
  @@ -187,19 +180,15 @@
                                {
                                        fileOutputStream.close();
                                }
  -
  -                             // Notify client that internal error accured in proxy
                                DataOutputStream out =
                                                new 
DataOutputStream(ClientSocket.getOutputStream());
                                out.writeBytes(reply.formTimeout());
                                out.flush();
  -
                        }
                        catch (Exception uhe2)
                        {
                        }
                }
  -
                finally
                {
                        try
  @@ -296,26 +285,42 @@
                }
        }
   
  -     private void writeFromInToOut(InputStream in,OutputStream out) throws 
IOException
  +     private void writeToClient(String server,int serverPort,InputStream 
in,OutputStream out) throws IOException
        {
  -             byte[] buf = new byte[4096];
  -             int x = 0;
  +             BufferedInputStream serverIn = null;
  +             BufferedOutputStream serverOut = null;
                try
                {
  -                     while((x = in.read(buf)) != -1)
  +                     int x = 0;
  +                     Socket toServer = new Socket(server,serverPort);
  +                     serverOut = new 
BufferedOutputStream(toServer.getOutputStream());
  +                     serverIn = new BufferedInputStream(toServer.getInputStream());
  +                     while((x = in.read()) != -1)
                        {
  -                             out.write(buf,0,x);
  +                             serverOut.write(x);
                        }
  +                     serverOut.flush();
  +                     while((x = serverIn.read()) != -1)
  +                     {
  +                             out.write(x);
  +                     }
  +                     out.flush();
  +             }
  +             catch(IOException e)
  +             {
  +                     e.printStackTrace();
                }
                finally
                {
                        try
                        {
                                in.close();
  +                             out.close();
  +                             serverIn.close();
  +                             serverOut.close();
                        }
                        catch (Exception ex)
                        {}
  -                     out.flush();
                }
        }
   
  
  
  

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

Reply via email to