This is an automated email from the ASF dual-hosted git repository.

fschumacher pushed a commit to branch master
in repository https://gitbox.apache.org/repos/asf/jmeter.git


The following commit(s) were added to refs/heads/master by this push:
     new c2f29cc  Setup GUI in Swing thread
c2f29cc is described below

commit c2f29ccfd1e2619ae2960c96bd54e76e2ba0e03b
Author: Felix Schumacher <[email protected]>
AuthorDate: Sat Feb 19 19:41:27 2022 +0100

    Setup GUI in Swing thread
    
    This seems to be the right thing to do and it fixes an exception, that 
happens
    on startup after the code for Bug 63620 has been incorporated.
    
    The exception was:
    
    ERROR o.a.j.g.u.JSyntaxTextArea: Dubious problem while setting text to 
SOMETHING
    java.lang.NullPointerException: null
            at 
org.fife.ui.rsyntaxtextarea.WrappedSyntaxView.updateMetrics(WrappedSyntaxView.java:1081)
 ~[rsyntaxtextarea-3.1.3.jar:3.1.3]
            at 
org.fife.ui.rsyntaxtextarea.WrappedSyntaxView.getPreferredSpan(WrappedSyntaxView.java:618)
 ~[rsyntaxtextarea-3.1.3.jar:3.1.3]
            at 
org.fife.ui.rsyntaxtextarea.WrappedSyntaxView.calculateBreakPosition(WrappedSyntaxView.java:114)
 ~[rsyntaxtextarea-3.1.3.jar:3.1.3]
            at 
org.fife.ui.rsyntaxtextarea.WrappedSyntaxView$WrappedLine.calculateLineCount(WrappedSyntaxView.java:1191)
 ~[rsyntaxtextarea-3.1.3.jar:3.1.3]
            at 
org.fife.ui.rsyntaxtextarea.WrappedSyntaxView$WrappedLine.handleDocumentEvent(WrappedSyntaxView.java:1440)
 ~[rsyntaxtextarea-3.1.3.jar:3.1.3]
            at 
org.fife.ui.rsyntaxtextarea.WrappedSyntaxView$WrappedLine.insertUpdate(WrappedSyntaxView.java:1464)
 ~[rsyntaxtextarea-3.1.3.jar:3.1.3]
            at 
org.fife.ui.rsyntaxtextarea.WrappedSyntaxView.insertUpdate(WrappedSyntaxView.java:705)
 ~[rsyntaxtextarea-3.1.3.jar:3.1.3]
            at 
javax.swing.plaf.basic.BasicTextUI$RootView.insertUpdate(BasicTextUI.java:1706) 
~[?:?]
            at 
javax.swing.plaf.basic.BasicTextUI$UpdateHandler.insertUpdate(BasicTextUI.java:1965)
 ~[?:?]
            at 
javax.swing.text.AbstractDocument.fireInsertUpdate(AbstractDocument.java:203) 
~[?:?]
            at 
org.fife.ui.rsyntaxtextarea.RSyntaxDocument.fireInsertUpdate(RSyntaxDocument.java:187)
 ~[rsyntaxtextarea-3.1.3.jar:3.1.3]
            at 
javax.swing.text.AbstractDocument.handleInsertString(AbstractDocument.java:757) 
~[?:?]
            at 
javax.swing.text.AbstractDocument.insertString(AbstractDocument.java:716) ~[?:?]
            at 
javax.swing.text.PlainDocument.insertString(PlainDocument.java:131) ~[?:?]
            at 
javax.swing.text.AbstractDocument.replace(AbstractDocument.java:675) ~[?:?]
            at 
javax.swing.text.JTextComponent.setText(JTextComponent.java:1729) ~[?:?]
            at 
org.apache.jmeter.gui.util.JSyntaxTextArea.setInitialText(JSyntaxTextArea.java:296)
 [ApacheJMeter_core.jar:5.5-SNAPSHOT]
            at 
org.apache.jmeter.testbeans.gui.TextAreaEditor.setValue(TextAreaEditor.java:112)
 [ApacheJMeter_core.jar:5.5-SNAPSHOT]
            at 
org.apache.jmeter.testbeans.gui.GenericTestBeanCustomizer.setEditorValue(GenericTestBeanCustomizer.java:479)
 [ApacheJMeter_core.jar:5.5-SNAPSHOT]
            at 
org.apache.jmeter.testbeans.gui.GenericTestBeanCustomizer.setObject(GenericTestBeanCustomizer.java:511)
 [ApacheJMeter_core.jar:5.5-SNAPSHOT]
            at 
org.apache.jmeter.testbeans.gui.TestBeanGUI.setValues(TestBeanGUI.java:323) 
[ApacheJMeter_core.jar:5.5-SNAPSHOT]
            at 
org.apache.jmeter.testbeans.gui.TestBeanGUI.configure(TestBeanGUI.java:307) 
[ApacheJMeter_core.jar:5.5-SNAPSHOT]
            at 
org.apache.jmeter.gui.tree.JMeterTreeModel.addComponent(JMeterTreeModel.java:162)
 [ApacheJMeter_core.jar:5.5-SNAPSHOT]
            at 
org.apache.jmeter.gui.tree.JMeterTreeModel.addSubTree(JMeterTreeModel.java:131) 
[ApacheJMeter_core.jar:5.5-SNAPSHOT]
            at 
org.apache.jmeter.gui.tree.JMeterTreeModel.addSubTree(JMeterTreeModel.java:123) 
[ApacheJMeter_core.jar:5.5-SNAPSHOT]
            at org.apache.jmeter.gui.GuiPackage.addSubTree(GuiPackage.java:554) 
[ApacheJMeter_core.jar:5.5-SNAPSHOT]
            at 
org.apache.jmeter.gui.action.Load.insertLoadedTree(Load.java:199) 
[ApacheJMeter_core.jar:5.5-SNAPSHOT]
            at 
org.apache.jmeter.gui.action.Load.insertLoadedTree(Load.java:235) 
[ApacheJMeter_core.jar:5.5-SNAPSHOT]
            at org.apache.jmeter.JMeter.startGui(JMeter.java:431) 
[ApacheJMeter_core.jar:5.5-SNAPSHOT]
            at org.apache.jmeter.JMeter.start(JMeter.java:566) 
[ApacheJMeter_core.jar:5.5-SNAPSHOT]
            at jdk.internal.reflect.NativeMethodAccessorImpl.invoke0(Native 
Method) ~[?:?]
            at 
jdk.internal.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62)
 ~[?:?]
            at 
jdk.internal.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
 ~[?:?]
            at java.lang.reflect.Method.invoke(Method.java:564) ~[?:?]
            at org.apache.jmeter.NewDriver.main(NewDriver.java:257)
    
    Which seemed to happen on the main thread.
    
    Part of [Bug 63620] Fix GUI freeze when viewing response body with long 
lines
    
    Bugzilla Id: 63620
---
 src/core/src/main/java/org/apache/jmeter/JMeter.java | 4 +++-
 1 file changed, 3 insertions(+), 1 deletion(-)

diff --git a/src/core/src/main/java/org/apache/jmeter/JMeter.java 
b/src/core/src/main/java/org/apache/jmeter/JMeter.java
index e5dffc6..3fa0d81 100644
--- a/src/core/src/main/java/org/apache/jmeter/JMeter.java
+++ b/src/core/src/main/java/org/apache/jmeter/JMeter.java
@@ -54,6 +54,7 @@ import javax.script.ScriptEngineFactory;
 import javax.script.ScriptEngineManager;
 import javax.script.ScriptException;
 import javax.swing.JTree;
+import javax.swing.SwingUtilities;
 import javax.swing.tree.TreePath;
 
 import org.apache.commons.cli.avalon.CLArgsParser;
@@ -563,7 +564,8 @@ public class JMeter implements JMeterPlugin {
                     ReportGenerator generator = new 
ReportGenerator(reportFile, null);
                     generator.generate();
                 } else if (parser.getArgumentById(NONGUI_OPT) == null) { // 
not non-GUI => GUI
-                    startGui(testFile);
+                    String initialTestFile = testFile;
+                    SwingUtilities.invokeAndWait(() -> 
startGui(initialTestFile));
                     startOptionalServers();
                 } else { // NON-GUI must be true
                     extractAndSetReportOutputFolder(parser, deleteResultFile);

Reply via email to