Bug 64286 - JMeter-Plugins-Manager is broken with current jmeter nightly
Summary: JMeter-Plugins-Manager is broken with current jmeter nightly
Status: RESOLVED FIXED
Alias: None
Product: JMeter
Classification: Unclassified
Component: Main (show other bugs)
Version: Nightly (Please specify date)
Hardware: All All
: P1 regression (vote)
Target Milestone: JMETER_5.3.0
Assignee: JMeter issues mailing list
URL:
Keywords: FixedInTrunk
Depends on:
Blocks:
 
Reported: 2020-03-29 18:01 UTC by Philippe Mouawad
Modified: 2020-04-25 13:03 UTC (History)
1 user (show)



Attachments

Note You need to log in before you can comment on or make changes to this bug.
Description Philippe Mouawad 2020-03-29 18:01:45 UTC
Install plugins manager
Start JMeter
Click on JPM icon
Go to Available Plugins Tab
Filter on Graphs word
Try to check one of the results, the UI is broken and in logs:
2020-03-29 19:59:10,252 ERROR o.a.j.JMeter: Uncaught exception in thread Thread[AWT-EventQueue-0,6,main]
java.lang.NullPointerException: null
	at org.jmeterplugins.repository.CheckBoxList$1.mousePressed(CheckBoxList.java:32) ~[plugins-manager.jar:?]
	at java.awt.AWTEventMulticaster.mousePressed(AWTEventMulticaster.java:280) ~[?:1.8.0_161]
	at java.awt.Component.processMouseEvent(Component.java:6530) ~[?:1.8.0_161]
	at javax.swing.JComponent.processMouseEvent(JComponent.java:3324) ~[?:1.8.0_161]
	at java.awt.Component.processEvent(Component.java:6298) ~[?:1.8.0_161]
	at java.awt.Container.processEvent(Container.java:2237) ~[?:1.8.0_161]
	at java.awt.Component.dispatchEventImpl(Component.java:4889) ~[?:1.8.0_161]
	at java.awt.Container.dispatchEventImpl(Container.java:2295) ~[?:1.8.0_161]
	at java.awt.Component.dispatchEvent(Component.java:4711) ~[?:1.8.0_161]
	at java.awt.LightweightDispatcher.retargetMouseEvent(Container.java:4889) ~[?:1.8.0_161]
	at java.awt.LightweightDispatcher.processMouseEvent(Container.java:4523) ~[?:1.8.0_161]
	at java.awt.LightweightDispatcher.dispatchEvent(Container.java:4467) ~[?:1.8.0_161]
	at java.awt.Container.dispatchEventImpl(Container.java:2281) ~[?:1.8.0_161]
	at java.awt.Window.dispatchEventImpl(Window.java:2746) ~[?:1.8.0_161]
	at java.awt.Component.dispatchEvent(Component.java:4711) ~[?:1.8.0_161]
	at java.awt.EventQueue.dispatchEventImpl(EventQueue.java:758) ~[?:1.8.0_161]
	at java.awt.EventQueue.access$500(EventQueue.java:97) ~[?:1.8.0_161]
	at java.awt.EventQueue$3.run(EventQueue.java:709) ~[?:1.8.0_161]
	at java.awt.EventQueue$3.run(EventQueue.java:703) ~[?:1.8.0_161]
	at java.security.AccessController.doPrivileged(Native Method) ~[?:1.8.0_161]
	at java.security.ProtectionDomain$JavaSecurityAccessImpl.doIntersectionPrivilege(ProtectionDomain.java:80) ~[?:1.8.0_161]
	at java.security.ProtectionDomain$JavaSecurityAccessImpl.doIntersectionPrivilege(ProtectionDomain.java:90) ~[?:1.8.0_161]
	at java.awt.EventQueue$4.run(EventQueue.java:731) ~[?:1.8.0_161]
	at java.awt.EventQueue$4.run(EventQueue.java:729) ~[?:1.8.0_161]
	at java.security.AccessController.doPrivileged(Native Method) ~[?:1.8.0_161]
	at java.security.ProtectionDomain$JavaSecurityAccessImpl.doIntersectionPrivilege(ProtectionDomain.java:80) ~[?:1.8.0_161]
	at java.awt.EventQueue.dispatchEvent(EventQueue.java:728) ~[?:1.8.0_161]
	at java.awt.EventDispatchThread.pumpOneEventForFilters(EventDispatchThread.java:201) [?:1.8.0_161]
	at java.awt.EventDispatchThread.pumpEventsForFilter(EventDispatchThread.java:116) [?:1.8.0_161]
	at java.awt.EventDispatchThread.pumpEventsForFilter(EventDispatchThread.java:109) [?:1.8.0_161]
	at java.awt.WaitDispatchSupport$2.run(WaitDispatchSupport.java:190) [?:1.8.0_161]
	at java.awt.WaitDispatchSupport$4.run(WaitDispatchSupport.java:235) [?:1.8.0_161]
	at java.awt.WaitDispatchSupport$4.run(WaitDispatchSupport.java:233) [?:1.8.0_161]
	at java.security.AccessController.doPrivileged(Native Method) ~[?:1.8.0_161]
	at java.awt.WaitDispatchSupport.enter(WaitDispatchSupport.java:233) [?:1.8.0_161]
	at java.awt.Dialog.show(Dialog.java:1084) [?:1.8.0_161]
	at java.awt.Component.show(Component.java:1671) [?:1.8.0_161]
	at java.awt.Component.setVisible(Component.java:1623) [?:1.8.0_161]
	at java.awt.Window.setVisible(Window.java:1014) [?:1.8.0_161]
	at java.awt.Dialog.setVisible(Dialog.java:1005) [?:1.8.0_161]
	at org.jmeterplugins.repository.PluginManagerMenuItem.actionPerformed(PluginManagerMenuItem.java:100) [plugins-manager.jar:?]
	at javax.swing.AbstractButton.fireActionPerformed(AbstractButton.java:2022) [?:1.8.0_161]
	at javax.swing.AbstractButton$Handler.actionPerformed(AbstractButton.java:2348) [?:1.8.0_161]
	at javax.swing.DefaultButtonModel.fireActionPerformed(DefaultButtonModel.java:402) [?:1.8.0_161]
	at javax.swing.DefaultButtonModel.setPressed(DefaultButtonModel.java:259) [?:1.8.0_161]
	at javax.swing.plaf.basic.BasicButtonListener.mouseReleased(BasicButtonListener.java:252) [?:1.8.0_161]
	at java.awt.AWTEventMulticaster.mouseReleased(AWTEventMulticaster.java:289) [?:1.8.0_161]
	at java.awt.Component.processMouseEvent(Component.java:6533) [?:1.8.0_161]
	at javax.swing.JComponent.processMouseEvent(JComponent.java:3324) [?:1.8.0_161]
	at java.awt.Component.processEvent(Component.java:6298) [?:1.8.0_161]
	at java.awt.Container.processEvent(Container.java:2237) [?:1.8.0_161]
	at java.awt.Component.dispatchEventImpl(Component.java:4889) [?:1.8.0_161]
	at java.awt.Container.dispatchEventImpl(Container.java:2295) [?:1.8.0_161]
	at java.awt.Component.dispatchEvent(Component.java:4711) [?:1.8.0_161]
	at java.awt.LightweightDispatcher.retargetMouseEvent(Container.java:4889) [?:1.8.0_161]
	at java.awt.LightweightDispatcher.processMouseEvent(Container.java:4526) [?:1.8.0_161]
	at java.awt.LightweightDispatcher.dispatchEvent(Container.java:4467) [?:1.8.0_161]
	at java.awt.Container.dispatchEventImpl(Container.java:2281) [?:1.8.0_161]
	at java.awt.Window.dispatchEventImpl(Window.java:2746) [?:1.8.0_161]
	at java.awt.Component.dispatchEvent(Component.java:4711) [?:1.8.0_161]
	at java.awt.EventQueue.dispatchEventImpl(EventQueue.java:758) [?:1.8.0_161]
	at java.awt.EventQueue.access$500(EventQueue.java:97) [?:1.8.0_161]
	at java.awt.EventQueue$3.run(EventQueue.java:709) [?:1.8.0_161]
	at java.awt.EventQueue$3.run(EventQueue.java:703) [?:1.8.0_161]
	at java.security.AccessController.doPrivileged(Native Method) ~[?:1.8.0_161]
	at java.security.ProtectionDomain$JavaSecurityAccessImpl.doIntersectionPrivilege(ProtectionDomain.java:80) [?:1.8.0_161]
	at java.security.ProtectionDomain$JavaSecurityAccessImpl.doIntersectionPrivilege(ProtectionDomain.java:90) [?:1.8.0_161]
	at java.awt.EventQueue$4.run(EventQueue.java:731) [?:1.8.0_161]
	at java.awt.EventQueue$4.run(EventQueue.java:729) [?:1.8.0_161]
	at java.security.AccessController.doPrivileged(Native Method) ~[?:1.8.0_161]
	at java.security.ProtectionDomain$JavaSecurityAccessImpl.doIntersectionPrivilege(ProtectionDomain.java:80) [?:1.8.0_161]
	at java.awt.EventQueue.dispatchEvent(EventQueue.java:728) [?:1.8.0_161]
	at java.awt.EventDispatchThread.pumpOneEventForFilters(EventDispatchThread.java:201) [?:1.8.0_161]
	at java.awt.EventDispatchThread.pumpEventsForFilter(EventDispatchThread.java:116) [?:1.8.0_161]
	at java.awt.EventDispatchThread.pumpEventsForHierarchy(EventDispatchThread.java:105) [?:1.8.0_161]
	at java.awt.EventDispatchThread.pumpEvents(EventDispatchThread.java:101) [?:1.8.0_161]
	at java.awt.EventDispatchThread.pumpEvents(EventDispatchThread.java:93) [?:1.8.0_161]
	at java.awt.EventDispatchThread.run(EventDispatchThread.java:82) [?:1.8.0_161]
Comment 1 Vladimir Sitnikov 2020-03-29 19:16:12 UTC
Why do you think it is JMeter bug?

I'm inclined that it is jmeter-plugins-manager bug.

What it does it requests CheckBox.icon from UIDefaults, however, the icon is not there.
Note: there's no specification that requires the value to be there.

https://github.com/undera/jmeter-plugins-manager/blob/d801d8b8d8b7e7d31c8d55203f95b1702b93ec69/src/main/java/org/jmeterplugins/repository/CheckBoxList.java#L31

So jmeter-plugins-manager should add a null check (or remove the use of CheckBox.icon completely).

I've filed https://github.com/weisJ/darklaf/issues/125 so Darklaf could consider adding CheckBox.icon property.
Comment 2 Philippe Mouawad 2020-03-29 20:09:39 UTC
(In reply to Vladimir Sitnikov from comment #1)
> Why do you think it is JMeter bug?

I don't think it's a jmeter bug, I just logged it as I think it's important that we don't release a new version without sorting out this issue.

> 
> I'm inclined that it is jmeter-plugins-manager bug.
> 
> What it does it requests CheckBox.icon from UIDefaults, however, the icon is
> not there.
> Note: there's no specification that requires the value to be there.
> 
> https://github.com/undera/jmeter-plugins-manager/blob/
> d801d8b8d8b7e7d31c8d55203f95b1702b93ec69/src/main/java/org/jmeterplugins/
> repository/CheckBoxList.java#L31
> 
> So jmeter-plugins-manager should add a null check (or remove the use of
> CheckBox.icon completely).
> 
> I've filed https://github.com/weisJ/darklaf/issues/125 so Darklaf could
> consider adding CheckBox.icon property.

I suggest we reopen until it is fixed in LAF or JPM.
Comment 3 Vladimir Sitnikov 2020-03-29 20:12:27 UTC
Is there something to be done at JMeter side?
Who's working in JPM fix?

Why the release of JMeter gets blocked by JPM?
Comment 4 Philippe Mouawad 2020-03-29 20:17:52 UTC
(In reply to Vladimir Sitnikov from comment #3)
> Is there something to be done at JMeter side?
> Who's working in JPM fix?
> 
I'll propose a fix if needed.

> Why the release of JMeter gets blocked by JPM?

JPM is now an important tool for installing plugins.
If a change in JMeter breaks it, then at least we should report it, if possible fix JPM.
Comment 5 Philippe Mouawad 2020-04-25 13:03:01 UTC
This has been fixed in JPM through this PR:

- https://github.com/undera/jmeter-plugins-manager/pull/53

And released in 1.4