You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@jmeter.apache.org by pm...@apache.org on 2016/08/10 19:55:50 UTC

svn commit: r1755820 - in /jmeter/trunk: src/components/org/apache/jmeter/extractor/ src/components/org/apache/jmeter/extractor/gui/ src/core/org/apache/jmeter/resources/ xdocs/ xdocs/usermanual/

Author: pmouawad
Date: Wed Aug 10 19:55:50 2016
New Revision: 1755820

URL: http://svn.apache.org/viewvc?rev=1755820&view=rev
Log:
Bug 59967 - CSS/JQuery Extractor : Allow empty default value
Bugzilla Id: 59967

Modified:
    jmeter/trunk/src/components/org/apache/jmeter/extractor/HtmlExtractor.java
    jmeter/trunk/src/components/org/apache/jmeter/extractor/gui/HtmlExtractorGui.java
    jmeter/trunk/src/core/org/apache/jmeter/resources/messages.properties
    jmeter/trunk/src/core/org/apache/jmeter/resources/messages_fr.properties
    jmeter/trunk/xdocs/changes.xml
    jmeter/trunk/xdocs/usermanual/component_reference.xml

Modified: jmeter/trunk/src/components/org/apache/jmeter/extractor/HtmlExtractor.java
URL: http://svn.apache.org/viewvc/jmeter/trunk/src/components/org/apache/jmeter/extractor/HtmlExtractor.java?rev=1755820&r1=1755819&r2=1755820&view=diff
==============================================================================
--- jmeter/trunk/src/components/org/apache/jmeter/extractor/HtmlExtractor.java (original)
+++ jmeter/trunk/src/components/org/apache/jmeter/extractor/HtmlExtractor.java Wed Aug 10 19:55:50 2016
@@ -76,6 +76,8 @@ public class HtmlExtractor extends Abstr
     
     private static final String UNDERSCORE = "_";  // $NON-NLS-1$
     
+    private static final String DEFAULT_EMPTY_VALUE = "HtmlExtractor.default_empty_value"; // $NON-NLS-1$
+
     private Extractor extractor;
 
     /**
@@ -102,7 +104,7 @@ public class HtmlExtractor extends Abstr
         int matchNumber = getMatchNumber();
         final String defaultValue = getDefaultValue();
         
-        if (defaultValue.length() > 0){// Only replace default if it is provided
+        if (defaultValue.length() > 0  || isEmptyDefaultValue()){// Only replace default if it is provided or empty default value is explicitly requested
             vars.put(refName, defaultValue);
         }
         
@@ -307,10 +309,24 @@ public class HtmlExtractor extends Abstr
     }
 
     /**
+     * @param defaultEmptyValue boolean set value to "" if not found
+     */
+    public void setDefaultEmptyValue(boolean defaultEmptyValue) {
+        setProperty(DEFAULT_EMPTY_VALUE, defaultEmptyValue);
+    }
+    
+    /**
      * Get the default value for the variable if no matches are found
      * @return The default value for the variable
      */
     public String getDefaultValue() {
         return getPropertyAsString(DEFAULT);
     }
+    
+    /**
+     * @return boolean set value to "" if not found
+     */
+    public boolean isEmptyDefaultValue() {
+        return getPropertyAsBoolean(DEFAULT_EMPTY_VALUE);
+    }
 }

Modified: jmeter/trunk/src/components/org/apache/jmeter/extractor/gui/HtmlExtractorGui.java
URL: http://svn.apache.org/viewvc/jmeter/trunk/src/components/org/apache/jmeter/extractor/gui/HtmlExtractorGui.java?rev=1755820&r1=1755819&r2=1755820&view=diff
==============================================================================
--- jmeter/trunk/src/components/org/apache/jmeter/extractor/gui/HtmlExtractorGui.java (original)
+++ jmeter/trunk/src/components/org/apache/jmeter/extractor/gui/HtmlExtractorGui.java Wed Aug 10 19:55:50 2016
@@ -22,11 +22,14 @@ import java.awt.BorderLayout;
 import java.awt.Component;
 import java.awt.GridBagConstraints;
 import java.awt.GridBagLayout;
+import java.awt.event.ItemEvent;
+import java.awt.event.ItemListener;
 import java.util.List;
 
 import javax.swing.BorderFactory;
 import javax.swing.Box;
 import javax.swing.DefaultComboBoxModel;
+import javax.swing.JCheckBox;
 import javax.swing.JComboBox;
 import javax.swing.JComponent;
 import javax.swing.JLabel;
@@ -64,7 +67,8 @@ public class HtmlExtractorGui extends Ab
 
     private JComboBox<String> extractorImplName;
 
-
+    private JCheckBox emptyDefaultValue;
+    
     public HtmlExtractorGui() {
         super();
         init();
@@ -84,6 +88,7 @@ public class HtmlExtractorGui extends Ab
             expressionField.setText(htmlExtractor.getExpression());
             attributeField.setText(htmlExtractor.getAttribute());
             defaultField.setText(htmlExtractor.getDefaultValue());
+            emptyDefaultValue.setSelected(htmlExtractor.isEmptyDefaultValue());
             matchNumberField.setText(htmlExtractor.getMatchNumberAsString());
             refNameField.setText(htmlExtractor.getRefName());
             extractorImplName.setSelectedItem(htmlExtractor.getExtractor());
@@ -115,6 +120,7 @@ public class HtmlExtractorGui extends Ab
             htmlExtractor.setExpression(expressionField.getText());
             htmlExtractor.setAttribute(attributeField.getText());
             htmlExtractor.setDefaultValue(defaultField.getText());
+            htmlExtractor.setDefaultEmptyValue(emptyDefaultValue.isSelected());
             htmlExtractor.setMatchNumber(matchNumberField.getText());
             if(extractorImplName.getSelectedIndex()< HtmlExtractor.getImplementations().length) {
                 htmlExtractor.setExtractor(HtmlExtractor.getImplementations()[extractorImplName.getSelectedIndex()]);
@@ -136,6 +142,7 @@ public class HtmlExtractorGui extends Ab
         attributeField.setText(""); //$NON-NLS-1$
         defaultField.setText(""); //$NON-NLS-1$
         refNameField.setText(""); //$NON-NLS-1$
+        emptyDefaultValue.setSelected(false);
         matchNumberField.setText(""); //$NON-NLS-1$
     }
 
@@ -174,7 +181,6 @@ public class HtmlExtractorGui extends Ab
     private JPanel makeParameterPanel() {        
         expressionField = new JLabeledTextField(JMeterUtils.getResString("expression_field")); //$NON-NLS-1$
         attributeField = new JLabeledTextField(JMeterUtils.getResString("attribute_field")); //$NON-NLS-1$
-        defaultField = new JLabeledTextField(JMeterUtils.getResString("default_value_field")); //$NON-NLS-1$
         refNameField = new JLabeledTextField(JMeterUtils.getResString("ref_name_field")); //$NON-NLS-1$
         matchNumberField = new JLabeledTextField(JMeterUtils.getResString("match_num_field")); //$NON-NLS-1$
 
@@ -190,7 +196,28 @@ public class HtmlExtractorGui extends Ab
         addField(panel, matchNumberField, gbc);
         resetContraints(gbc);
         gbc.weighty = 1;
-        addField(panel, defaultField, gbc);
+        
+        defaultField = new JLabeledTextField(JMeterUtils.getResString("default_value_field")); //$NON-NLS-1$
+        List<JComponent> item = defaultField.getComponentList();
+        panel.add(item.get(0), gbc.clone());
+        JPanel p = new JPanel(new BorderLayout());
+        p.add(item.get(1), BorderLayout.WEST);
+        emptyDefaultValue = new JCheckBox(JMeterUtils.getResString("cssjquery_empty_default_value"));
+        emptyDefaultValue.addItemListener(new ItemListener() {
+            @Override
+            public void itemStateChanged(ItemEvent e) {
+                if(emptyDefaultValue.isSelected()) {
+                    defaultField.setText("");
+                }
+                defaultField.setEnabled(!emptyDefaultValue.isSelected());
+            }
+        });
+        p.add(emptyDefaultValue, BorderLayout.CENTER);
+        gbc.gridx++;
+        gbc.weightx = 1;
+        gbc.fill = GridBagConstraints.HORIZONTAL;
+        panel.add(p, gbc.clone());
+        
         return panel;
     }
 

Modified: jmeter/trunk/src/core/org/apache/jmeter/resources/messages.properties
URL: http://svn.apache.org/viewvc/jmeter/trunk/src/core/org/apache/jmeter/resources/messages.properties?rev=1755820&r1=1755819&r2=1755820&view=diff
==============================================================================
--- jmeter/trunk/src/core/org/apache/jmeter/resources/messages.properties (original)
+++ jmeter/trunk/src/core/org/apache/jmeter/resources/messages.properties Wed Aug 10 19:55:50 2016
@@ -214,6 +214,7 @@ countlim=Size limit
 critical_section_controller_label=Lock name
 critical_section_controller_title=Critical Section Controller
 cssjquery_attribute=Attribute\:
+cssjquery_empty_default_value=Use empty default value
 cssjquery_tester_error=An error occured evaluating expression:{0}, error:{1}
 cssjquery_impl=CSS/JQuery implementation\:
 cssjquery_render_no_text=Data response result isn't text.

Modified: jmeter/trunk/src/core/org/apache/jmeter/resources/messages_fr.properties
URL: http://svn.apache.org/viewvc/jmeter/trunk/src/core/org/apache/jmeter/resources/messages_fr.properties?rev=1755820&r1=1755819&r2=1755820&view=diff
==============================================================================
--- jmeter/trunk/src/core/org/apache/jmeter/resources/messages_fr.properties (original)
+++ jmeter/trunk/src/core/org/apache/jmeter/resources/messages_fr.properties Wed Aug 10 19:55:50 2016
@@ -207,6 +207,7 @@ countlim=Limiter le nombre d'\u00E9l\u00
 critical_section_controller_label=Nom du verrou
 critical_section_controller_title=Contr\u00F4leur Section critique
 cssjquery_attribute=Attribut
+cssjquery_empty_default_value=Utiliser la cha\u00EEne vide comme valeur par d\u00E9faut
 cssjquery_impl=Impl\u00E9mentation CSS/JQuery\:
 cssjquery_render_no_text=Les donn\u00E9es de r\u00E9ponse ne sont pas du texte.
 cssjquery_tester_button_test=Tester
@@ -219,9 +220,9 @@ cut_paste_function=Fonction de copier/co
 database_conn_pool_max_usage=Utilisation max pour chaque connexion\:
 database_conn_pool_props=Pool de connexions \u221A\u2020 la base de donn\u221A\u00A9es
 database_conn_pool_size=Nombre de Connexions dans le Pool\:
-database_conn_pool_title=Valeurs par d\u221A\u00A9faut du Pool de connexions JDBC
+database_conn_pool_title=Valeurs par d\u00E9faut du Pool de connexions JDBC
 database_driver_class=Classe du Driver\:
-database_login_title=Valeurs par d\u221A\u00A9faut de la base de donn\u221A\u00A9es JDBC
+database_login_title=Valeurs par d\u00E9faut de la base de donn\u221A\u00A9es JDBC
 database_sql_query_string=Requ\u00EAte SQL \:
 database_sql_query_title=Requ\u00EAte SQL JDBC par d\u00E9faut
 database_testing_title=Requ\u221A\u2122te JDBC

Modified: jmeter/trunk/xdocs/changes.xml
URL: http://svn.apache.org/viewvc/jmeter/trunk/xdocs/changes.xml?rev=1755820&r1=1755819&r2=1755820&view=diff
==============================================================================
--- jmeter/trunk/xdocs/changes.xml [utf-8] (original)
+++ jmeter/trunk/xdocs/changes.xml [utf-8] Wed Aug 10 19:55:50 2016
@@ -106,6 +106,7 @@ Summary
     <li><pr>212</pr>Allow multiple selection and delete in HTTP Authorization Manager. Based on a patch by Benoit Wiart (b.wiart at ubik-ingenierie.com)</li>
     <li><bug>59816</bug><pr>213</pr>Allow multiple selection and delete in HTTP Header Manager.
     Based on a patch by Benoit Wiart (b.wiart at ubik-ingenierie.com)</li>
+    <li><bug>59967</bug>CSS/JQuery Extractor : Allow empty default value. Contributed by Ubik Load Pack (support at ubikloadpack.com)</li>
 </ul>
 
 <h3>Functions</h3>

Modified: jmeter/trunk/xdocs/usermanual/component_reference.xml
URL: http://svn.apache.org/viewvc/jmeter/trunk/xdocs/usermanual/component_reference.xml?rev=1755820&r1=1755819&r2=1755820&view=diff
==============================================================================
--- jmeter/trunk/xdocs/usermanual/component_reference.xml (original)
+++ jmeter/trunk/xdocs/usermanual/component_reference.xml Wed Aug 10 19:55:50 2016
@@ -5656,6 +5656,11 @@ generate the template string, and store
         In this case, remove the default value once debugging is complete.
         </p> 
         </property>
+        <property name="Use empty default value" required="No">
+        If the checkbox is checked and <code>Default Value</code> is empty, then JMeter will set the variable to empty string instead of not setting it.
+        Thus when you will for example use <code>${var}</code> (if <code>Reference Name</code> is var) in your Test Plan, if the extracted value is not found then 
+        <code>${var}</code> will be equal to empty string instead of containing <code>${var}</code> which may be useful if extracted value is optional.
+        </property>
 </properties>
 <p>
     If the match number is set to a non-negative number, and a match occurs, the variables are set as follows:
@@ -5765,6 +5770,11 @@ extracting the node as text or attribute
         In this case, remove the default value once debugging is complete.
         </p> 
         </property>
+        <property name="Use empty default value" required="No">
+        If the checkbox is checked and <code>Default Value</code> is empty, then JMeter will set the variable to empty string instead of not setting it.
+        Thus when you will for example use <code>${var}</code> (if <code>Reference Name</code> is var) in your Test Plan, if the extracted value is not found then 
+        <code>${var}</code> will be equal to empty string instead of containing <code>${var}</code> which may be useful if extracted value is optional.
+        </property>
 </properties>
 <p>
     If the match number is set to a non-negative number, and a match occurs, the variables are set as follows: