View | Details | Raw Unified | Return to bug 37156
Collapse All | Expand All

(-)src/core/org/apache/jmeter/resources/messages.properties (+14 lines)
Lines 989-994 Link Here
989
view_results_table_fields_value=Value
989
view_results_table_fields_value=Value
990
view_results_table_headers_key=Response header
990
view_results_table_headers_key=Response header
991
view_results_table_headers_value=Value
991
view_results_table_headers_value=Value
992
view_results_table_request_headers_key=Request header
993
view_results_table_request_headers_value=Value
994
view_results_table_request_http_cookie=Cookie
995
view_results_table_request_http_host=Host
996
view_results_table_request_http_method=Method
997
view_results_table_request_http_nohttp=No HTTP Sample
998
view_results_table_request_http_path=Path
999
view_results_table_request_http_port=Port
1000
view_results_table_request_http_protocol=Protocol
1001
view_results_table_request_raw_nodata=No data to display
1002
view_results_table_request_params_key=Parameter name
1003
view_results_table_request_params_value=Value
1004
view_results_table_request_tab_http=HTTP
1005
view_results_table_request_tab_raw=Raw
992
view_results_table_result_tab_parsed=Parsed
1006
view_results_table_result_tab_parsed=Parsed
993
view_results_table_result_tab_raw=Raw
1007
view_results_table_result_tab_raw=Raw
994
view_results_thread_name=Thread Name: 
1008
view_results_thread_name=Thread Name: 
(-)src/core/org/apache/jmeter/resources/messages_fr.properties (+14 lines)
Lines 886-891 Link Here
886
view_results_table_fields_value=Valeur
886
view_results_table_fields_value=Valeur
887
view_results_table_headers_key=Ent\u00EAte de r\u00E9ponse
887
view_results_table_headers_key=Ent\u00EAte de r\u00E9ponse
888
view_results_table_headers_value=Valeur
888
view_results_table_headers_value=Valeur
889
view_results_table_request_headers_key=Ent\u00EAte de r\u00E9qu\u00EAte
890
view_results_table_request_headers_value=Valeur
891
view_results_table_request_http_cookie=Cookie
892
view_results_table_request_http_host=H\u00F4te
893
view_results_table_request_http_method=M\u00E9thode
894
view_results_table_request_http_nohttp=N'est pas un \u00E9chantillon HTTP
895
view_results_table_request_http_path=Cheming
896
view_results_table_request_http_port=Port
897
view_results_table_request_http_protocol=Protocole
898
view_results_table_request_raw_nodata=Pas de donn\u00E9es \u00E0 afficher
899
view_results_table_request_params_key=Nom de param\u00E8tre
900
view_results_table_request_params_value=Valeur
901
view_results_table_request_tab_http=HTTP
902
view_results_table_request_tab_raw=Brut
889
view_results_table_result_tab_parsed=D\u00E9cod\u00E9
903
view_results_table_result_tab_parsed=D\u00E9cod\u00E9
890
view_results_table_result_tab_raw=Brut
904
view_results_table_result_tab_raw=Brut
891
view_results_thread_name=Nom d'unit\u00E9 \: 
905
view_results_thread_name=Nom d'unit\u00E9 \: 
(-)src/core/org/apache/jmeter/util/JMeterUtils.java (-1 / +36 lines)
Lines 33-38 Link Here
33
import java.util.Enumeration;
33
import java.util.Enumeration;
34
import java.util.Hashtable;
34
import java.util.Hashtable;
35
import java.util.Iterator;
35
import java.util.Iterator;
36
import java.util.LinkedHashMap;
36
import java.util.List;
37
import java.util.List;
37
import java.util.Locale;
38
import java.util.Locale;
38
import java.util.MissingResourceException;
39
import java.util.MissingResourceException;
Lines 46-52 Link Here
46
import javax.swing.JButton;
47
import javax.swing.JButton;
47
import javax.swing.JComboBox;
48
import javax.swing.JComboBox;
48
import javax.swing.JOptionPane;
49
import javax.swing.JOptionPane;
49
// import javax.xml.parsers.SAXParserFactory;
50
50
51
import org.apache.commons.io.IOUtils;
51
import org.apache.commons.io.IOUtils;
52
import org.apache.jmeter.gui.GuiPackage;
52
import org.apache.jmeter.gui.GuiPackage;
Lines 464-469 Link Here
464
    }
464
    }
465
465
466
    /**
466
    /**
467
     * To get I18N label from properties file
468
     * 
469
     * @param key
470
     *            in messages.properties
471
     * @return I18N label without (if exists) last colon ':' and spaces
472
     */
473
    public static String getParsedLabel(String key) {
474
        String value = JMeterUtils.getResString(key);
475
        return value.replaceFirst("(?m)\\s*?:\\s*$", ""); // $NON-NLS-1$ $NON-NLS-2$
476
    }
477
    
478
    /**
467
     * Get the locale name as a resource.
479
     * Get the locale name as a resource.
468
     * Does not log an error if the resource does not exist.
480
     * Does not log an error if the resource does not exist.
469
     * This is needed to support additional locales, as they won't be in existing messages files.
481
     * This is needed to support additional locales, as they won't be in existing messages files.
Lines 1202-1205 Link Here
1202
        localHostName=localHost.getHostName();
1214
        localHostName=localHost.getHostName();
1203
        localHostFullName=localHost.getCanonicalHostName();
1215
        localHostFullName=localHost.getCanonicalHostName();
1204
    }
1216
    }
1217
    
1218
    /**
1219
     * Split line into name/value pairs and remove colon ':'
1220
     * 
1221
     * @param headers
1222
     *            multi-line string headers
1223
     * @return a map name/value for each header
1224
     */
1225
    public static LinkedHashMap<String, String> parseHeaders(String headers) {
1226
        LinkedHashMap<String, String> linkedHeaders = new LinkedHashMap<String, String>();
1227
        String[] list = headers.split("\n"); // $NON-NLS-1$
1228
        for (String header : list) {
1229
            int colon = header.indexOf(':'); // $NON-NLS-1$
1230
            if (colon <= 0) {
1231
                linkedHeaders.put(header, ""); // Empty value // $NON-NLS-1$
1232
            } else {
1233
                linkedHeaders.put(header.substring(0, colon).trim(), header
1234
                        .substring(colon + 1).trim());
1235
            }
1236
        }
1237
        return linkedHeaders;
1238
    }
1239
    
1205
}
1240
}
(-)src/components/org/apache/jmeter/visualizers/SamplerResultTab.java (-73 / +23 lines)
Lines 38-44 Link Here
38
import javax.swing.JSplitPane;
38
import javax.swing.JSplitPane;
39
import javax.swing.JTabbedPane;
39
import javax.swing.JTabbedPane;
40
import javax.swing.JTable;
40
import javax.swing.JTable;
41
import javax.swing.JTextArea;
42
import javax.swing.JTextPane;
41
import javax.swing.JTextPane;
43
import javax.swing.table.TableCellRenderer;
42
import javax.swing.table.TableCellRenderer;
44
import javax.swing.table.TableColumn;
43
import javax.swing.table.TableColumn;
Lines 57-62 Link Here
57
import org.apache.jorphan.gui.RendererUtils;
56
import org.apache.jorphan.gui.RendererUtils;
58
import org.apache.jorphan.reflect.Functor;
57
import org.apache.jorphan.reflect.Functor;
59
58
59
/**
60
 * Right side in View Results Tree
61
 *
62
 */
60
public abstract class SamplerResultTab implements ResultRenderer {
63
public abstract class SamplerResultTab implements ResultRenderer {
61
64
62
    // N.B. these are not multi-threaded, so don't make it static
65
    // N.B. these are not multi-threaded, so don't make it static
Lines 71-76 Link Here
71
    public static final Color REDIRECT_COLOR = Color.green;
74
    public static final Color REDIRECT_COLOR = Color.green;
72
75
73
    protected static final String TEXT_COMMAND = "text"; // $NON-NLS-1$
76
    protected static final String TEXT_COMMAND = "text"; // $NON-NLS-1$
77
    
78
    protected static final String REQUEST_VIEW_COMMAND = "change_request_view"; // $NON-NLS-1$
74
79
75
    private static final String STYLE_SERVER_ERROR = "ServerError"; // $NON-NLS-1$
80
    private static final String STYLE_SERVER_ERROR = "ServerError"; // $NON-NLS-1$
76
81
Lines 86-94 Link Here
86
91
87
    private JLabel imageLabel;
92
    private JLabel imageLabel;
88
93
89
    private JPanel requestPane;
94
    private RequestPanel requestPanel; /** request pane content */
90
91
    private JTextArea sampleDataField; /** request pane content */
92
95
93
    protected JTabbedPane rightSide; /** holds the tabbed panes */
96
    protected JTabbedPane rightSide; /** holds the tabbed panes */
94
97
Lines 187-199 Link Here
187
190
188
    public void clearData() {
191
    public void clearData() {
189
        results.setText("");// Response Data // $NON-NLS-1$
192
        results.setText("");// Response Data // $NON-NLS-1$
190
        sampleDataField.setText("");// Request Data // $NON-NLS-1$
193
        requestPanel.clearData();// Request Data // $NON-NLS-1$
191
    }
194
    }
192
195
193
    public void init() {
196
    public void init() {
194
        rightSide.addTab(JMeterUtils.getResString("view_results_tab_sampler"), createResponseMetadataPanel()); // $NON-NLS-1$
197
        rightSide.addTab(JMeterUtils.getResString("view_results_tab_sampler"), createResponseMetadataPanel()); // $NON-NLS-1$
195
        // Create the panels for the other tabs
198
        // Create the panels for the other tabs
196
        requestPane = createRequestPanel();
199
        requestPanel = new RequestPanel();
197
        resultsPane = createResponseDataPanel();
200
        resultsPane = createResponseDataPanel();
198
    }
201
    }
199
202
Lines 201-229 Link Here
201
    public void setupTabPane() {
204
    public void setupTabPane() {
202
        StyledDocument statsDoc = stats.getStyledDocument();
205
        StyledDocument statsDoc = stats.getStyledDocument();
203
        try {
206
        try {
207
            // Clear data before display a new
204
            statsDoc.remove(0, statsDoc.getLength());
208
            statsDoc.remove(0, statsDoc.getLength());
205
            sampleDataField.setText(""); // $NON-NLS-1$
209
            requestPanel.clearData();
206
            results.setText(""); // $NON-NLS-1$
210
            results.setText(""); // $NON-NLS-1$
207
            if (userObject instanceof SampleResult) {
211
            if (userObject instanceof SampleResult) {
208
                sampleResult = (SampleResult) userObject;
212
                sampleResult = (SampleResult) userObject;
209
                // We are displaying a SampleResult
213
                // We are displaying a SampleResult
210
                setupTabPaneForSampleResult();
214
                setupTabPaneForSampleResult();
211
215
                requestPanel.setSamplerResult(sampleResult);                
212
                // load time label
213
                String sd = sampleResult.getSamplerData();
214
                if (sd != null) {
215
                    String rh = sampleResult.getRequestHeaders();
216
                    if (rh != null) {
217
                        StringBuilder sb = new StringBuilder(sd.length() + rh.length() + 20);
218
                        sb.append(sd);
219
                        sb.append("\n"); //$NON-NLS-1$
220
                        sb.append(JMeterUtils.getResString("view_results_request_headers")); //$NON-NLS-1$
221
                        sb.append("\n"); //$NON-NLS-1$
222
                        sb.append(rh);
223
                        sd = sb.toString();
224
                    }
225
                    sampleDataField.setText(sd);
226
                }
227
216
228
                final String samplerClass = sampleResult.getClass().getName();
217
                final String samplerClass = sampleResult.getClass().getName();
229
                String typeResult = samplerClass.substring(1 + samplerClass.lastIndexOf('.'));
218
                String typeResult = samplerClass.substring(1 + samplerClass.lastIndexOf('.'));
Lines 285-303 Link Here
285
                // Tabbed results      
274
                // Tabbed results      
286
                resultModel.clearData(); // clear results table before filling
275
                resultModel.clearData(); // clear results table before filling
287
                // fill table
276
                // fill table
288
                resultModel.addRow(new RowResult(getParsedLabel("view_results_thread_name"), sampleResult.getThreadName())); //$NON-NLS-1$
277
                resultModel.addRow(new RowResult(JMeterUtils.getParsedLabel("view_results_thread_name"), sampleResult.getThreadName())); //$NON-NLS-1$
289
                resultModel.addRow(new RowResult(getParsedLabel("view_results_sample_start"), startTime)); //$NON-NLS-1$
278
                resultModel.addRow(new RowResult(JMeterUtils.getParsedLabel("view_results_sample_start"), startTime)); //$NON-NLS-1$
290
                resultModel.addRow(new RowResult(getParsedLabel("view_results_load_time"), sampleResult.getTime())); //$NON-NLS-1$
279
                resultModel.addRow(new RowResult(JMeterUtils.getParsedLabel("view_results_load_time"), sampleResult.getTime())); //$NON-NLS-1$
291
                resultModel.addRow(new RowResult(getParsedLabel("view_results_latency"), sampleResult.getLatency())); //$NON-NLS-1$
280
                resultModel.addRow(new RowResult(JMeterUtils.getParsedLabel("view_results_latency"), sampleResult.getLatency())); //$NON-NLS-1$
292
                resultModel.addRow(new RowResult(getParsedLabel("view_results_size_in_bytes"), sampleResult.getBytes())); //$NON-NLS-1$
281
                resultModel.addRow(new RowResult(JMeterUtils.getParsedLabel("view_results_size_in_bytes"), sampleResult.getBytes())); //$NON-NLS-1$
293
                resultModel.addRow(new RowResult(getParsedLabel("view_results_sample_count"), sampleResult.getSampleCount())); //$NON-NLS-1$
282
                resultModel.addRow(new RowResult(JMeterUtils.getParsedLabel("view_results_sample_count"), sampleResult.getSampleCount())); //$NON-NLS-1$
294
                resultModel.addRow(new RowResult(getParsedLabel("view_results_error_count"), sampleResult.getErrorCount())); //$NON-NLS-1$
283
                resultModel.addRow(new RowResult(JMeterUtils.getParsedLabel("view_results_error_count"), sampleResult.getErrorCount())); //$NON-NLS-1$
295
                resultModel.addRow(new RowResult(getParsedLabel("view_results_response_code"), responseCode)); //$NON-NLS-1$
284
                resultModel.addRow(new RowResult(JMeterUtils.getParsedLabel("view_results_response_code"), responseCode)); //$NON-NLS-1$
296
                resultModel.addRow(new RowResult(getParsedLabel("view_results_response_message"), responseMsgStr)); //$NON-NLS-1$
285
                resultModel.addRow(new RowResult(JMeterUtils.getParsedLabel("view_results_response_message"), responseMsgStr)); //$NON-NLS-1$
297
                
286
                
298
                resHeadersModel.clearData(); // clear response table before filling
287
                resHeadersModel.clearData(); // clear response table before filling
299
                // Parsed response headers
288
                // Parsed response headers
300
                LinkedHashMap<String, String> lhm = parseResponseHeaders(sampleResult.getResponseHeaders());
289
                LinkedHashMap<String, String> lhm = JMeterUtils.parseHeaders(sampleResult.getResponseHeaders());
301
                Set<String> keySet = lhm.keySet();
290
                Set<String> keySet = lhm.keySet();
302
                for (String key : keySet) {
291
                for (String key : keySet) {
303
                    resHeadersModel.addRow(new RowResult(key, lhm.get(key)));
292
                    resHeadersModel.addRow(new RowResult(key, lhm.get(key)));
Lines 341-347 Link Here
341
        rightSide.setTitleAt(0, JMeterUtils.getResString("view_results_tab_sampler")); //$NON-NLS-1$
330
        rightSide.setTitleAt(0, JMeterUtils.getResString("view_results_tab_sampler")); //$NON-NLS-1$
342
        // Add the other tabs if not present
331
        // Add the other tabs if not present
343
        if(rightSide.indexOfTab(JMeterUtils.getResString("view_results_tab_request")) < 0) { // $NON-NLS-1$
332
        if(rightSide.indexOfTab(JMeterUtils.getResString("view_results_tab_request")) < 0) { // $NON-NLS-1$
344
            rightSide.addTab(JMeterUtils.getResString("view_results_tab_request"), requestPane); // $NON-NLS-1$
333
            rightSide.addTab(JMeterUtils.getResString("view_results_tab_request"), requestPanel.getPanel()); // $NON-NLS-1$
345
        }
334
        }
346
        if(rightSide.indexOfTab(JMeterUtils.getResString("view_results_tab_response")) < 0) { // $NON-NLS-1$
335
        if(rightSide.indexOfTab(JMeterUtils.getResString("view_results_tab_response")) < 0) { // $NON-NLS-1$
347
            rightSide.addTab(JMeterUtils.getResString("view_results_tab_response"), resultsPane); // $NON-NLS-1$
336
            rightSide.addTab(JMeterUtils.getResString("view_results_tab_response"), resultsPane); // $NON-NLS-1$
Lines 444-460 Link Here
444
        return panel;
433
        return panel;
445
    }
434
    }
446
435
447
    private JPanel createRequestPanel() {
448
        sampleDataField = new JTextArea();
449
        sampleDataField.setEditable(false);
450
        sampleDataField.setLineWrap(true);
451
        sampleDataField.setWrapStyleWord(true);
452
453
        JPanel pane = new JPanel(new BorderLayout(0, 5));
454
        pane.add(GuiUtils.makeScrollPane(sampleDataField));
455
        return pane;
456
    }
457
458
    private JPanel createResponseDataPanel() {
436
    private JPanel createResponseDataPanel() {
459
        results = new JEditorPane();
437
        results = new JEditorPane();
460
        results.setEditable(false);
438
        results.setEditable(false);
Lines 506-544 Link Here
506
        this.backGround = backGround;
484
        this.backGround = backGround;
507
    }
485
    }
508
    
486
    
509
    /**
510
     * To get I18N label from properties file
511
     * @param key in messages.properties
512
     * @return I18N label without (if exists) last colon ':' and spaces
513
     */
514
    private String getParsedLabel(String key) {
515
        String value = JMeterUtils.getResString(key);
516
        return value.replaceFirst("(?m)\\s*?:\\s*$", ""); // $NON-NLS-1$ $NON-NLS-2$
517
    }
518
    
519
    private void setFirstColumnPreferredSize(JTable table) {
487
    private void setFirstColumnPreferredSize(JTable table) {
520
        TableColumn column = table.getColumnModel().getColumn(0);
488
        TableColumn column = table.getColumnModel().getColumn(0);
521
        column.setMaxWidth(300);
489
        column.setMaxWidth(300);
522
        column.setPreferredWidth(180);
490
        column.setPreferredWidth(180);
523
    }
491
    }
524
525
    /**
526
     * Split line into name/value pairs and remove colon ':'
527
     */
528
    private LinkedHashMap<String, String> parseResponseHeaders(String responseHeaders) {
529
        LinkedHashMap<String, String> linkedHeaders = new LinkedHashMap<String, String>();
530
        String[] list = responseHeaders.split(NL);
531
        for (String header : list) {
532
            int colon = header.indexOf(':'); // $NON-NLS-1$
533
            if (colon <= 0) {
534
                linkedHeaders.put(header, ""); // Empty value // $NON-NLS-1$
535
            } else {
536
                linkedHeaders.put(header.substring(0, colon).trim(), header
537
                        .substring(colon + 1).trim());
538
            }
539
        }
540
        return linkedHeaders;
541
    }
542
    
492
    
543
    /**
493
    /**
544
     * For model table
494
     * For model table

Return to bug 37156