You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@netbeans.apache.org by "Eirik Bakke (Jira)" <ji...@apache.org> on 2020/08/30 05:20:00 UTC
[jira] [Created] (NETBEANS-4754) Action gets called with wrong
context until garbage collection
Eirik Bakke created NETBEANS-4754:
-------------------------------------
Summary: Action gets called with wrong context until garbage collection
Key: NETBEANS-4754
URL: https://issues.apache.org/jira/browse/NETBEANS-4754
Project: NetBeans
Issue Type: Bug
Components: platform - Actions
Affects Versions: 12.0
Environment: NetBeans Platform application running on NetBeans Platform 12.0 on Windows 10 / Java 13.0.2.
Reporter: Eirik Bakke
My NetBeans Platform application has an action declared as follows:
{code:java}
@ActionID(category = "Ultorg", id = "com.ultorg.actionids.FieldsAction")
@ActionRegistration(displayName = "#CTL_FieldsAction")
@Messages("CTL_FieldsAction=Fields & Joins...")
public class FieldsAction implements ActionListener {
private final ToolboxInvoker invoker;
public FieldsAction(ToolboxInvoker invoker) {
Preconditions.checkNotNull(invoker);
this.invoker = invoker;
}
@Override
public void actionPerformed(ActionEvent e) {
invoker.invoke();
}
}
{code}
The ToolboxInvoker context is provided by the lookup of a custom TopComponent implementation. When I have multiple such TopComponent tabs open, switching between them, and invoking the action above with a keyboard shortcut, the wrong FieldsAction instance will occasionally be called (i.e. an instance with the wrong ToolboxInvoker context).
After some debugging, the problem seems to be caused by https://github.com/apache/netbeans/pull/652 , specifically by ContextAction.delegate0 assuming that instDelegate can be used as a cached value without checking whether the lookup (data parameter) has changed. Or perhaps instDelegate was supposed to be cleared elsewhere whenever the lookup changes--but this is not happening properly.
Because the instDelegate field holds only weak references, the buggy state only lasts until the next garbage collection.
--
This message was sent by Atlassian Jira
(v8.3.4#803005)
---------------------------------------------------------------------
To unsubscribe, e-mail: commits-unsubscribe@netbeans.apache.org
For additional commands, e-mail: commits-help@netbeans.apache.org
For further information about the NetBeans mailing lists, visit:
https://cwiki.apache.org/confluence/display/NETBEANS/Mailing+lists