mstover1    2002/08/04 06:05:36

  Modified:    src_1/org/apache/jmeter/config Argument.java Arguments.java
               src_1/org/apache/jmeter/protocol/http/config UrlConfig.java
               src_1/org/apache/jmeter/resources messages.properties
  Log:
  Fix to handle URL's of the form: http://domain.com/path?param
  (Mark Walsh)
  
  Revision  Changes    Path
  1.4       +38 -1     jakarta-jmeter/src_1/org/apache/jmeter/config/Argument.java
  
  Index: Argument.java
  ===================================================================
  RCS file: /home/cvs/jakarta-jmeter/src_1/org/apache/jmeter/config/Argument.java,v
  retrieving revision 1.3
  retrieving revision 1.4
  diff -u -r1.3 -r1.4
  --- Argument.java     19 Jul 2002 21:35:36 -0000      1.3
  +++ Argument.java     4 Aug 2002 13:05:36 -0000       1.4
  @@ -57,6 +57,9 @@
   import org.apache.jmeter.testelement.AbstractTestElement;
   import org.apache.jmeter.testelement.TestElement;
   
  +//Mark Walsh, 2002-08-03, add metadata attribute
  +// add constructor Argument(String name, Object value, Object metadata)
  +// add MetaData get and set methods
   /****************************************
    * Title: Apache JMeter Description: Copyright: Copyright (c) 2000 Company:
    * Apache Foundation
  @@ -70,7 +73,21 @@
   {
        private final static String NAME = "Argument.name";
        private final static String VALUE = "Argument.value";
  -
  +        private final static String METADATA = "Argument.metadata";
  +    
  +     /****************************************
  +      * Constructor for the Argument object
  +      *
  +      *@param name   Description of Parameter
  +      *@param value  Description of Parameter
  +      *@param metadata Description of Parameter
  +      ***************************************/
  +     public Argument(String name, Object value, Object metadata)
  +     {
  +             setProperty(NAME, name);
  +             setProperty(VALUE, value);
  +             setProperty(METADATA, metadata);
  +     }
   
        /****************************************
         * Constructor for the Argument object
  @@ -117,6 +134,16 @@
        }
   
        /****************************************
  +      * Sets the Meta Data attribute of the Argument object
  +      *
  +      *@param newMetaData  The new Metadata value
  +      ***************************************/
  +     public void setMetaData(Object newMetaData)
  +     {
  +             setProperty(METADATA, newMetaData);
  +     }
  +
  +     /****************************************
         * Gets the Name attribute of the Argument object
         *
         *@return   The Name value
  @@ -134,5 +161,15 @@
        public Object getValue()
        {
                return (String)getProperty(VALUE);
  +     }
  +
  +     /****************************************
  +      * Gets the Meta Data attribute of the Argument object
  +      *
  +      *@return   The MetaData value
  +      ***************************************/
  +     public Object getMetaData()
  +     {
  +         return (String)getProperty(METADATA);
        }
   }
  
  
  
  1.5       +24 -5     jakarta-jmeter/src_1/org/apache/jmeter/config/Arguments.java
  
  Index: Arguments.java
  ===================================================================
  RCS file: /home/cvs/jakarta-jmeter/src_1/org/apache/jmeter/config/Arguments.java,v
  retrieving revision 1.4
  retrieving revision 1.5
  diff -u -r1.4 -r1.5
  --- Arguments.java    16 Jul 2002 17:58:02 -0000      1.4
  +++ Arguments.java    4 Aug 2002 13:05:36 -0000       1.5
  @@ -63,6 +63,8 @@
   import org.apache.jmeter.testelement.AbstractTestElement;
   import org.apache.jmeter.util.JMeterUtils;
   
  +// Mark Walsh, 2002-08-03 add method addArgument(String name, Object value, Object 
metadata)
  +// modify methods toString(), addEmptyArgument(), addArgument(String name, Object 
value)
   /****************************************
    * Title: Apache JMeter Description: Copyright: Copyright (c) 2000 Company:
    * Apache Foundation
  @@ -79,7 +81,8 @@
         ***************************************/
        public static String[] COLUMN_NAMES = {
                        JMeterUtils.getResString("name"),
  -                     JMeterUtils.getResString("value")
  +                     JMeterUtils.getResString("value"),
  +                        JMeterUtils.getResString("metadata")
                        };
   
        private final static String ARGUMENTS = "Arguments.arguments";
  @@ -118,7 +121,19 @@
         ***************************************/
        public void addArgument(String name, Object value)
        {
  -             getArguments().add(new Argument(name, value));
  +             getArguments().add(new Argument(name, value, null));
  +     }
  +
  +     /****************************************
  +      * !ToDo
  +      *
  +      *@param name   !ToDo
  +      *@param value  !ToDo
  +      *@param metadata  Hold addition information
  +      ***************************************/
  +     public void addArgument(String name, Object value, Object metadata)
  +     {
  +             getArguments().add(new Argument(name, value, metadata));
        }
   
        /****************************************
  @@ -143,7 +158,11 @@
                while(iter.hasNext())
                {
                        Argument arg = (Argument)iter.next();
  -                     str.append(arg.getName() + "=" + arg.getValue());
  +                     if (arg.getMetaData() == null) {
  +                         str.append(arg.getName() + "=" + arg.getValue());
  +                     } else {
  +                         str.append(arg.getName() + arg.getMetaData() + 
arg.getValue());
  +                     }
                        if(iter.hasNext())
                        {
                                str.append("&");
  @@ -204,7 +223,7 @@
         ***************************************/
        public void addEmptyArgument()
        {
  -             getArguments().add(new Argument("", ""));
  +             getArguments().add(new Argument("", "",""));
        }
   
        /****************************************
  
  
  
  1.12      +138 -14   
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.11
  retrieving revision 1.12
  diff -u -r1.11 -r1.12
  --- UrlConfig.java    31 Jul 2002 03:56:58 -0000      1.11
  +++ UrlConfig.java    4 Aug 2002 13:05:36 -0000       1.12
  @@ -63,6 +63,11 @@
   import org.apache.jmeter.protocol.http.sampler.HTTPSampler;
   import java.io.*;
   
  +//Mark Walsh 2002-08-03 add method addArgument(String name,String value,String 
metadata)
  +//modify methods getQueryString(), parseArguments(String queryString)
  +//
  +//add tests to exercise methods parseArguments(String queryString),
  +// and addArgument(String name,String value,String metadata)
   /**
    *  Title: Apache JMeter Description: Copyright: Copyright (c) 2000 Company:
    *  Apache Foundation
  @@ -163,6 +168,12 @@
                args.addArgument(name,value);
        }
   
  +     public void addArgument(String name,String value,String metadata)
  +     {
  +             Arguments args = this.getArguments();
  +             args.addArgument(name,value,metadata);
  +     }
  +
        /**
         *  Sets the Domain attribute of the UrlConfig object
         *
  @@ -307,6 +318,8 @@
                return (Arguments) getProperty(HTTPSampler.ARGUMENTS);
        }
   
  +        //Mark Walsh 2002-08-03, The equal sign is no longer automatically
  +        // returned after the parameter name
        /**
         *  Gets the QueryString attribute of the UrlConfig object
         *
  @@ -328,7 +341,11 @@
                        {
                                first = false;
                        }
  -                     buf.append(URLEncoder.encode(item.getName()) + "=" + 
URLEncoder.encode((String)item.getValue()));
  +                     if ( item.getMetaData() == null) {
  +                         buf.append(URLEncoder.encode(item.getName()) + "=" + 
URLEncoder.encode((String)item.getValue()));
  +                     } else {
  +                         buf.append(URLEncoder.encode(item.getName()) + 
(String)item.getMetaData() + URLEncoder.encode((String)item.getValue()));
  +                     }
                }
                return buf.toString();
        }
  @@ -352,7 +369,8 @@
                return isGood;
        }
   
  -
  +        //Mark Walsh 2002-08-03, modified to also parse a parameter name value
  +        //string, where string contains only the parameter name and no equal sign.
        /**
         * This method allows a proxy server to send over the raw text from a browser's
         * output stream to be parsed and stored correctly into the UrlConfig object.
  @@ -362,23 +380,49 @@
                String[] args = JMeterUtils.split(queryString, "&");
                for (int i = 0; i < args.length; i++)
                {
  -                     int index = args[i].indexOf("=");
  -                     if(index > -1)
  -                     {
  -                             String name = args[i].substring(0,index);
  -                             String value = "";
  -                             if((index+1) < args[i].length())
  -                             {
  -                                     value = args[i].substring(index + 1);
  -                             }
   
  +                 // need to handle four cases:   string contains name=value
  +                 //                              string contains name=
  +                 //                              string contains name 
  +                 //                              empty string
  +
  +
  +                    // find end of parameter name 
  +                    int endOfNameIndex=0; 
  +                    String metaData = ""; // records the existance of an equal sign
  +                 if (args[i].indexOf("=") != -1) {
  +                     endOfNameIndex = args[i].indexOf("="); // case of name=value, 
name=
  +                     metaData="=";
  +                 } else {
  +                     metaData="";
  +                     if (args[i].length() > 0) {
  +                         endOfNameIndex = args[i].length() ; // case name
  +                     } else {
  +                         endOfNameIndex=0; //case where name value string is empty
  +                     }
  +                 }
  +
  +                 // parse name
  +                 String name="";  // for empty string
  +                 if (args[i].length() >0) {
  +                     name = args[i].substring(0,endOfNameIndex); //for non empty 
string
  +                 }
  +
  +                    // parse value
  +                 String value="";
  +                 if ((endOfNameIndex+1) < args[i].length()) {
  +                     value = args[i].substring(endOfNameIndex+1,args[i].length());
  +                 }
  +
  +                    if (name.length() > 0)
  +                     {
                                // In JDK 1.2, the decode() method has a throws clause:
                                // "throws Exception". In JDK 1.3, the method does not 
have
                                // a throws clause. So, in order to be JDK 1.2 
compliant,
                                // we need to add a try/catch around the method call.
                                try
                                {
  -                                     addArgument(URLDecoder.decode(name), 
URLDecoder.decode(value));
  +                                     addArgument(URLDecoder.decode(name), 
URLDecoder.decode(value), metaData);
                                }
                                catch (Exception e)
                                {
  @@ -440,6 +484,86 @@
                        config.setDomain("www.apache.org");
                        
assertEquals("http://www.apache.org/index.html?p1=p2",config.getUrl().toString());
                }
  +
  +             // test cases for making Url, and exercise method addArgument(String 
name,String value,String metadata)
  +             public void testMakingUrl4() throws Exception
  +             {
  +                     UrlConfig config = new UrlConfig();
  +                     config.setProtocol("http");
  +                     config.setMethod(HTTPSampler.GET);
  +                     config.addArgument("param1","value1","=");
  +                     config.setPath("/index.html");
  +                     config.setDomain("www.apache.org");
  +                     
assertEquals("http://www.apache.org/index.html?param1=value1",config.getUrl().toString());
  +             }
  +
  +             public void testMakingUrl5() throws Exception
  +             {
  +                     UrlConfig config = new UrlConfig();
  +                     config.setProtocol("http");
  +                     config.setMethod(HTTPSampler.GET);
  +                     config.addArgument("param1","","=");
  +                     config.setPath("/index.html");
  +                     config.setDomain("www.apache.org");
  +                     
assertEquals("http://www.apache.org/index.html?param1=",config.getUrl().toString());
  +             }
  +
  +             public void testMakingUrl6() throws Exception
  +             {
  +                     UrlConfig config = new UrlConfig();
  +                     config.setProtocol("http");
  +                     config.setMethod(HTTPSampler.GET);
  +                     config.addArgument("param1","","");
  +                     config.setPath("/index.html");
  +                     config.setDomain("www.apache.org");
  +                     
assertEquals("http://www.apache.org/index.html?param1",config.getUrl().toString());
  +             }
  +
  +             // test cases for making Url, and exercise method 
parseArguments(String queryString)
  +             public void testMakingUrl7() throws Exception
  +             {
  +                     UrlConfig config = new UrlConfig();
  +                     config.setProtocol("http");
  +                     config.setMethod(HTTPSampler.GET);
  +                     config. parseArguments("param1=value1");
  +                     config.setPath("/index.html");
  +                     config.setDomain("www.apache.org");
  +                     
assertEquals("http://www.apache.org/index.html?param1=value1",config.getUrl().toString());
  +             }
  +
  +             public void testMakingUrl8() throws Exception
  +             {
  +                     UrlConfig config = new UrlConfig();
  +                     config.setProtocol("http");
  +                     config.setMethod(HTTPSampler.GET);
  +                     config. parseArguments("param1=");
  +                     config.setPath("/index.html");
  +                     config.setDomain("www.apache.org");
  +                     
assertEquals("http://www.apache.org/index.html?param1=",config.getUrl().toString());
  +             }
  +
  +             public void testMakingUrl9() throws Exception
  +             {
  +                     UrlConfig config = new UrlConfig();
  +                     config.setProtocol("http");
  +                     config.setMethod(HTTPSampler.GET);
  +                     config. parseArguments("param1");
  +                     config.setPath("/index.html");
  +                     config.setDomain("www.apache.org");
  +                     
assertEquals("http://www.apache.org/index.html?param1",config.getUrl().toString());
  +             }
  +
  +             public void testMakingUrl10() throws Exception
  +             {
  +                     UrlConfig config = new UrlConfig();
  +                     config.setProtocol("http");
  +                     config.setMethod(HTTPSampler.GET);
  +                     config. parseArguments("");
  +                     config.setPath("/index.html");
  +                     config.setDomain("www.apache.org");
  +                     
assertEquals("http://www.apache.org/index.html",config.getUrl().toString());
  +             }
  +
        }
   }
   
  
  
  
  1.27      +2 -1      
jakarta-jmeter/src_1/org/apache/jmeter/resources/messages.properties
  
  Index: messages.properties
  ===================================================================
  RCS file: 
/home/cvs/jakarta-jmeter/src_1/org/apache/jmeter/resources/messages.properties,v
  retrieving revision 1.26
  retrieving revision 1.27
  diff -u -r1.26 -r1.27
  --- messages.properties       31 Jul 2002 03:56:59 -0000      1.26
  +++ messages.properties       4 Aug 2002 13:05:36 -0000       1.27
  @@ -54,6 +54,7 @@
   default_parameters=Default Parameters
   name=Name:
   value=Value
  +metadata=MetaData
   secure=Secure
   expiration=Expiration
   username=Username
  @@ -261,4 +262,4 @@
   choose_function=Choose a function
   function_helper_title=Function Helper
   generate=Generate
  -iteration_counter_arg_1=TRUE, for each user to have own counter, FALSE for a global 
counter
  \ No newline at end of file
  +iteration_counter_arg_1=TRUE, for each user to have own counter, FALSE for a global 
counter
  
  
  

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

Reply via email to