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 2018/06/12 08:52:22 UTC

svn commit: r1833387 - in /jmeter/trunk/src: components/org/apache/jmeter/visualizers/RenderAsXPath2.java core/org/apache/jmeter/resources/messages.properties core/org/apache/jmeter/resources/messages_fr.properties

Author: pmouawad
Date: Tue Jun 12 08:52:22 2018
New Revision: 1833387

URL: http://svn.apache.org/viewvc?rev=1833387&view=rev
Log:
Bug 60991 - XPath Extractor : Implement XPath 2.0
Update XPath2 Tester so that it's possible to use namespace aliases
Bugzilla Id: 60991

Modified:
    jmeter/trunk/src/components/org/apache/jmeter/visualizers/RenderAsXPath2.java
    jmeter/trunk/src/core/org/apache/jmeter/resources/messages.properties
    jmeter/trunk/src/core/org/apache/jmeter/resources/messages_fr.properties

Modified: jmeter/trunk/src/components/org/apache/jmeter/visualizers/RenderAsXPath2.java
URL: http://svn.apache.org/viewvc/jmeter/trunk/src/components/org/apache/jmeter/visualizers/RenderAsXPath2.java?rev=1833387&r1=1833386&r2=1833387&view=diff
==============================================================================
--- jmeter/trunk/src/components/org/apache/jmeter/visualizers/RenderAsXPath2.java (original)
+++ jmeter/trunk/src/components/org/apache/jmeter/visualizers/RenderAsXPath2.java Tue Jun 12 08:52:22 2018
@@ -21,6 +21,9 @@ package org.apache.jmeter.visualizers;
 import java.awt.BorderLayout;
 import java.awt.Color;
 import java.awt.Dimension;
+import java.awt.GridBagConstraints;
+import java.awt.GridBagLayout;
+import java.awt.GridLayout;
 import java.awt.event.ActionEvent;
 import java.awt.event.ActionListener;
 import java.util.ArrayList;
@@ -29,13 +32,11 @@ import java.util.List;
 import javax.swing.Box;
 import javax.swing.JButton;
 import javax.swing.JCheckBox;
+import javax.swing.JLabel;
 import javax.swing.JPanel;
 import javax.swing.JScrollPane;
 import javax.swing.JSplitPane;
 import javax.swing.JTabbedPane;
-import javax.swing.JTextArea;
-import javax.swing.border.Border;
-import javax.swing.border.EmptyBorder;
 
 import org.apache.commons.lang3.exception.ExceptionUtils;
 import org.apache.jmeter.extractor.XPath2Extractor;
@@ -44,7 +45,6 @@ import org.apache.jmeter.gui.util.JTextS
 import org.apache.jmeter.samplers.SampleResult;
 import org.apache.jmeter.util.JMeterUtils;
 import org.apache.jmeter.util.XPathUtil;
-import org.apache.jorphan.gui.GuiUtils;
 import org.apache.jorphan.gui.JLabeledTextField;
 import org.fife.ui.rsyntaxtextarea.SyntaxConstants;
 import org.slf4j.Logger;
@@ -68,7 +68,7 @@ public class RenderAsXPath2 implements R
 
     private JLabeledTextField xpathExpressionField;
 
-    private JTextArea xpathResultField;
+    private JSyntaxTextArea xpathResultField;
 
     private JTabbedPane rightSide;
 
@@ -78,6 +78,8 @@ public class RenderAsXPath2 implements R
     private final JCheckBox getFragment =
         new JCheckBox(JMeterUtils.getResString("xpath_tester_fragment"));//$NON-NLS-1$
     
+    private JSyntaxTextArea namespacesTA;
+
     /** {@inheritDoc} */
     @Override
     public void clearData() {
@@ -130,7 +132,7 @@ public class RenderAsXPath2 implements R
         try {
             List<String> matchStrings = new ArrayList<>();
             XPathUtil.putValuesForXPathInListUsingSaxon(textToParse, xpathExpressionField.getText(),
-                    matchStrings, extractor.getFragment(), -1, getDocumentNamespaces(textToParse));
+                    matchStrings, extractor.getFragment(), -1, namespacesTA.getText());
             StringBuilder builder = new StringBuilder();
             int nbFound = matchStrings.size();
             builder.append("Match count: ").append(nbFound).append("\n");
@@ -206,13 +208,14 @@ public class RenderAsXPath2 implements R
         xmlDataField.setWrapStyleWord(true);
 
         JScrollPane xmlDataPane = JTextScrollPane.getInstance(xmlDataField, true);
+        xmlDataPane.setMinimumSize(new Dimension(0, 100));
         xmlDataPane.setPreferredSize(new Dimension(0, 200));
 
-        JPanel pane = new JPanel(new BorderLayout(0, 5));
+        JPanel pane = new JPanel(new GridLayout(1, 1));
 
         JSplitPane mainSplit = new JSplitPane(JSplitPane.VERTICAL_SPLIT,
                 xmlDataPane, createXpathExtractorTasksPanel());
-        mainSplit.setDividerLocation(0.6d);
+        mainSplit.setDividerLocation(0.5d);
         mainSplit.setOneTouchExpandable(true);
         pane.add(mainSplit, BorderLayout.CENTER);
         return pane;
@@ -224,41 +227,70 @@ public class RenderAsXPath2 implements R
      * @return XPath task pane
      */
     private JPanel createXpathExtractorTasksPanel() {
-        Box xpathActionPanel = Box.createVerticalBox();
-        
         Box selectorAndButton = Box.createHorizontalBox();
-
-        Border margin = new EmptyBorder(5, 5, 0, 5);
-        xpathActionPanel.setBorder(margin);
         xpathExpressionField = new JLabeledTextField(JMeterUtils.getResString("xpath_tester_field")); // $NON-NLS-1$
-        
+
         JButton xpathTester = new JButton(JMeterUtils.getResString("xpath_tester_button_test")); // $NON-NLS-1$
         xpathTester.setActionCommand(XPATH_TESTER_COMMAND);
         xpathTester.addActionListener(this);
-        
+
         JButton xpathTesterNamespaces = new JButton(JMeterUtils.getResString("xpath_namespaces")); // $NON-NLS-1$
         xpathTesterNamespaces.setActionCommand(XPATH_NAMESPACES_COMMAND);
         xpathTesterNamespaces.addActionListener(this);
-        
+
         selectorAndButton.add(xpathExpressionField);
         selectorAndButton.add(xpathTester);
         selectorAndButton.add(xpathTesterNamespaces);
-        
-        xpathActionPanel.add(selectorAndButton);
-        xpathActionPanel.add(getFragment);
-        
-        xpathResultField = new JTextArea();
+
+        JPanel panel = new JPanel(new GridBagLayout());
+        GridBagConstraints gbc = new GridBagConstraints();
+        initConstraints(gbc);
+        gbc.gridwidth = 2;
+        panel.add(selectorAndButton, gbc.clone());
+
+        resetContraints(gbc);
+        panel.add(new JLabel(JMeterUtils.getResString("xpath_extractor_user_namespaces")), gbc.clone());
+        gbc.gridx++;
+        gbc.weightx = 1;
+        gbc.fill = GridBagConstraints.HORIZONTAL;
+        namespacesTA = JSyntaxTextArea.getInstance(5, 80);
+        panel.add(JTextScrollPane.getInstance(namespacesTA, true), gbc.clone());
+
+        resetContraints(gbc);
+        gbc.gridwidth = 2;
+        panel.add(getFragment, gbc.clone());
+
+        resetContraints(gbc);
+        xpathResultField = JSyntaxTextArea.getInstance(10, 80, true);
         xpathResultField.setEditable(false);
         xpathResultField.setLineWrap(true);
         xpathResultField.setWrapStyleWord(true);
-
-        JPanel xpathTasksPanel = new JPanel(new BorderLayout(0, 5));
-        xpathTasksPanel.add(xpathActionPanel, BorderLayout.NORTH);
-        xpathTasksPanel.add(GuiUtils.makeScrollPane(xpathResultField), BorderLayout.CENTER);
-
-        return xpathTasksPanel;
+        gbc.gridwidth = 2;
+        gbc.fill = GridBagConstraints.HORIZONTAL;
+        panel.add(JTextScrollPane.getInstance(xpathResultField, true), gbc.clone());
+
+        return panel;
+    }
+
+    private void resetContraints(GridBagConstraints gbc) {
+        gbc.gridx = 0;
+        gbc.gridy++;
+        gbc.gridwidth = 1;
+        gbc.weightx = 0;
+        gbc.fill = GridBagConstraints.NONE;
+    }
+
+    private void initConstraints(GridBagConstraints gbc) {
+        gbc.anchor = GridBagConstraints.NORTHWEST;
+        gbc.fill = GridBagConstraints.NONE;
+        gbc.gridheight = 1;
+        gbc.gridwidth = 1;
+        gbc.gridx = 0;
+        gbc.gridy = 0;
+        gbc.weightx = 0;
+        gbc.weighty = 0;
     }
-
+    
     /** {@inheritDoc} */
     @Override
     public synchronized void setRightSide(JTabbedPane side) {

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=1833387&r1=1833386&r2=1833387&view=diff
==============================================================================
--- jmeter/trunk/src/core/org/apache/jmeter/resources/messages.properties (original)
+++ jmeter/trunk/src/core/org/apache/jmeter/resources/messages.properties Tue Jun 12 08:52:22 2018
@@ -1431,7 +1431,7 @@ xpath_tester=XPath Tester
 xpath2_tester=XPath2 Tester
 xpath_namespaces=Show namespaces aliases
 xpath_tester_button_test=Test
-xpath_tester_field=XPath expression
+xpath_tester_field=XPath query \:
 xpath_tester_fragment=Return entire XPath fragment instead of text content?
 xpath_tester_no_text=Data response result isn't text.
 xpath_tester_title=XPath Tester

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=1833387&r1=1833386&r2=1833387&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 Tue Jun 12 08:52:22 2018
@@ -1413,7 +1413,7 @@ xpath_assertion_whitespace=Ignorer les e
 xpath_expression=Expression XPath de correspondance
 xpath_extractor_fragment=Retourner le fragment XPath entier au lieu du contenu
 xpath_extractor_query=Requ\u00EAte XPath \:
-xpath_extractor_user_namespaces=Liste des namespaces :
+xpath_extractor_user_namespaces=Liste des namespaces \:
 xpath_extractor_title=Extracteur XPath
 xpath_file_file_name=Fichier XML contenant les valeurs
 xpath_tester=Testeur XPath