Home » jakarta-jmeter-2.3.4_src » org.apache.jmeter.extractor.gui » [javadoc | source]

    1   /*
    2    * Licensed to the Apache Software Foundation (ASF) under one or more
    3    * contributor license agreements.  See the NOTICE file distributed with
    4    * this work for additional information regarding copyright ownership.
    5    * The ASF licenses this file to You under the Apache License, Version 2.0
    6    * (the "License"); you may not use this file except in compliance with
    7    * the License.  You may obtain a copy of the License at
    8    *
    9    *   http://www.apache.org/licenses/LICENSE-2.0
   10    *
   11    * Unless required by applicable law or agreed to in writing, software
   12    * distributed under the License is distributed on an "AS IS" BASIS,
   13    * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
   14    * See the License for the specific language governing permissions and
   15    * limitations under the License.
   16    *
   17    */
   18   
   19   package org.apache.jmeter.extractor.gui;
   20   
   21   import java.awt.BorderLayout;
   22   import java.awt.Component;
   23   import java.awt.GridBagConstraints;
   24   import java.awt.GridBagLayout;
   25   import java.util.List;
   26   
   27   import javax.swing.BorderFactory;
   28   import javax.swing.Box;
   29   import javax.swing.ButtonGroup;
   30   import javax.swing.JPanel;
   31   import javax.swing.JRadioButton;
   32   
   33   import org.apache.jmeter.extractor.RegexExtractor;
   34   import org.apache.jmeter.processor.gui.AbstractPostProcessorGui;
   35   import org.apache.jmeter.testelement.TestElement;
   36   import org.apache.jmeter.util.JMeterUtils;
   37   import org.apache.jorphan.gui.JLabeledTextField;
   38   
   39   /**
   40    * Regular Expression Extractor Post-Processor GUI
   41    */
   42   public class RegexExtractorGui extends AbstractPostProcessorGui {
   43       private JLabeledTextField regexField;
   44   
   45       private JLabeledTextField templateField;
   46   
   47       private JLabeledTextField defaultField;
   48   
   49       private JLabeledTextField matchNumberField;
   50   
   51       private JLabeledTextField refNameField;
   52   
   53       private JRadioButton useBody;
   54   
   55       private JRadioButton useUnescapedBody;
   56   
   57       private JRadioButton useHeaders;
   58   
   59       private JRadioButton useURL;
   60   
   61       private JRadioButton useCode;
   62   
   63       private JRadioButton useMessage;
   64   
   65       private ButtonGroup group;
   66   
   67       public RegexExtractorGui() {
   68           super();
   69           init();
   70       }
   71   
   72       public String getLabelResource() {
   73           return "regex_extractor_title"; //$NON-NLS-1$
   74       }
   75   
   76       public void configure(TestElement el) {
   77           super.configure(el);
   78           if (el instanceof RegexExtractor){
   79               RegexExtractor re = (RegexExtractor) el;
   80               useHeaders.setSelected(re.useHeaders());
   81               useBody.setSelected(re.useBody());
   82               useUnescapedBody.setSelected(re.useUnescapedBody());
   83               useURL.setSelected(re.useUrl());
   84               useCode.setSelected(re.useCode());
   85               useMessage.setSelected(re.useMessage());
   86               regexField.setText(re.getRegex());
   87               templateField.setText(re.getTemplate());
   88               defaultField.setText(re.getDefaultValue());
   89               matchNumberField.setText(re.getMatchNumberAsString());
   90               refNameField.setText(re.getRefName());
   91           }
   92       }
   93   
   94       /**
   95        * @see org.apache.jmeter.gui.JMeterGUIComponent#createTestElement()
   96        */
   97       public TestElement createTestElement() {
   98           RegexExtractor extractor = new RegexExtractor();
   99           modifyTestElement(extractor);
  100           return extractor;
  101       }
  102   
  103       /**
  104        * Modifies a given TestElement to mirror the data in the gui components.
  105        *
  106        * @see org.apache.jmeter.gui.JMeterGUIComponent#modifyTestElement(TestElement)
  107        */
  108       public void modifyTestElement(TestElement extractor) {
  109           super.configureTestElement(extractor);
  110           if (extractor instanceof RegexExtractor) {
  111               RegexExtractor regex = (RegexExtractor) extractor;
  112               regex.setUseField(group.getSelection().getActionCommand());
  113               regex.setRefName(refNameField.getText());
  114               regex.setRegex(regexField.getText());
  115               regex.setTemplate(templateField.getText());
  116               regex.setDefaultValue(defaultField.getText());
  117               regex.setMatchNumber(matchNumberField.getText());
  118           }
  119       }
  120   
  121       /**
  122        * Implements JMeterGUIComponent.clearGui
  123        */
  124       public void clearGui() {
  125           super.clearGui();
  126   
  127           useBody.setSelected(true);
  128   
  129           regexField.setText(""); //$NON-NLS-1$
  130           templateField.setText(""); //$NON-NLS-1$
  131           defaultField.setText(""); //$NON-NLS-1$
  132           refNameField.setText(""); //$NON-NLS-1$
  133           matchNumberField.setText(""); //$NON-NLS-1$
  134       }
  135   
  136       private void init() {
  137           setLayout(new BorderLayout());
  138           setBorder(makeBorder());
  139   
  140           Box box = Box.createVerticalBox();
  141           box.add(makeTitlePanel());
  142           box.add(makeSourcePanel());
  143           add(box, BorderLayout.NORTH);
  144           add(makeParameterPanel(), BorderLayout.CENTER);
  145       }
  146   
  147       private JPanel makeSourcePanel() {
  148           JPanel panel = new JPanel();
  149           panel.setBorder(BorderFactory.createTitledBorder(JMeterUtils.getResString("regex_source"))); //$NON-NLS-1$
  150   
  151           useBody = new JRadioButton(JMeterUtils.getResString("regex_src_body")); //$NON-NLS-1$
  152           useUnescapedBody = new JRadioButton(JMeterUtils.getResString("regex_src_body_unescaped")); //$NON-NLS-1$
  153           useHeaders = new JRadioButton(JMeterUtils.getResString("regex_src_hdrs")); //$NON-NLS-1$
  154           useURL = new JRadioButton(JMeterUtils.getResString("regex_src_url")); //$NON-NLS-1$
  155           useCode = new JRadioButton(JMeterUtils.getResString("assertion_code_resp")); //$NON-NLS-1$
  156           useMessage = new JRadioButton(JMeterUtils.getResString("assertion_message_resp")); //$NON-NLS-1$
  157   
  158           group = new ButtonGroup();
  159           group.add(useBody);
  160           group.add(useUnescapedBody);
  161           group.add(useHeaders);
  162           group.add(useURL);
  163           group.add(useCode);
  164           group.add(useMessage);
  165   
  166           panel.add(useBody);
  167           panel.add(useUnescapedBody);
  168           panel.add(useHeaders);
  169           panel.add(useURL);
  170           panel.add(useCode);
  171           panel.add(useMessage);
  172   
  173           useBody.setSelected(true);
  174   
  175           // So we know which button is selected
  176           useBody.setActionCommand(RegexExtractor.USE_BODY);
  177           useUnescapedBody.setActionCommand(RegexExtractor.USE_BODY_UNESCAPED);
  178           useHeaders.setActionCommand(RegexExtractor.USE_HDRS);
  179           useURL.setActionCommand(RegexExtractor.USE_URL);
  180           useCode.setActionCommand(RegexExtractor.USE_CODE);
  181           useMessage.setActionCommand(RegexExtractor.USE_MESSAGE);
  182   
  183           return panel;
  184       }
  185   
  186       private JPanel makeParameterPanel() {
  187           regexField = new JLabeledTextField(JMeterUtils.getResString("regex_field")); //$NON-NLS-1$
  188           templateField = new JLabeledTextField(JMeterUtils.getResString("template_field")); //$NON-NLS-1$
  189           defaultField = new JLabeledTextField(JMeterUtils.getResString("default_value_field")); //$NON-NLS-1$
  190           refNameField = new JLabeledTextField(JMeterUtils.getResString("ref_name_field")); //$NON-NLS-1$
  191           matchNumberField = new JLabeledTextField(JMeterUtils.getResString("match_num_field")); //$NON-NLS-1$
  192   
  193           JPanel panel = new JPanel(new GridBagLayout());
  194           GridBagConstraints gbc = new GridBagConstraints();
  195           initConstraints(gbc);
  196           addField(panel, refNameField, gbc);
  197           resetContraints(gbc);
  198           addField(panel, regexField, gbc);
  199           resetContraints(gbc);
  200           addField(panel, templateField, gbc);
  201           resetContraints(gbc);
  202           addField(panel, matchNumberField, gbc);
  203           resetContraints(gbc);
  204           gbc.weighty = 1;
  205           addField(panel, defaultField, gbc);
  206           return panel;
  207       }
  208   
  209       private void addField(JPanel panel, JLabeledTextField field, GridBagConstraints gbc) {
  210           List item = field.getComponentList();
  211           panel.add((Component) item.get(0), gbc.clone());
  212           gbc.gridx++;
  213           gbc.weightx = 1;
  214           gbc.fill=GridBagConstraints.HORIZONTAL;
  215           panel.add((Component) item.get(1), gbc.clone());
  216       }
  217   
  218       // Next line
  219       private void resetContraints(GridBagConstraints gbc) {
  220           gbc.gridx = 0;
  221           gbc.gridy++;
  222           gbc.weightx = 0;
  223           gbc.fill=GridBagConstraints.NONE;
  224       }
  225   
  226       private void initConstraints(GridBagConstraints gbc) {
  227           gbc.anchor = GridBagConstraints.NORTHWEST;
  228           gbc.fill = GridBagConstraints.NONE;
  229           gbc.gridheight = 1;
  230           gbc.gridwidth = 1;
  231           gbc.gridx = 0;
  232           gbc.gridy = 0;
  233           gbc.weightx = 0;
  234           gbc.weighty = 0;
  235       }
  236   }

Home » jakarta-jmeter-2.3.4_src » org.apache.jmeter.extractor.gui » [javadoc | source]