[ 
https://issues.apache.org/jira/browse/NETBEANS-4754?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=17188233#comment-17188233
 ] 

Eirik Bakke commented on NETBEANS-4754:
---------------------------------------

I'll sneak in a question before bedtime--how does enabler get initialized? Is 
there reflection magic happening somewhere?

(If so, then I'm not exactly sure how the patch should work, since it wouldn't 
be enough to just rip out instDelegate. But you probably have an idea...)

> 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
>            Assignee: Svatopluk Dedic
>            Priority: Major
>         Attachments: netbeans-4754-eiriktest.patch
>
>
> 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-unsubscr...@netbeans.apache.org
For additional commands, e-mail: commits-h...@netbeans.apache.org

For further information about the NetBeans mailing lists, visit:
https://cwiki.apache.org/confluence/display/NETBEANS/Mailing+lists

Reply via email to