Community
Participate
Working Groups
StructuredContentAssistProcessor#CompletionListener#assistSessionEnded is always being skipped right now because it starts with the following statement: event.processor == StructuredContentAssistProcessor.this This would be fine except in SSE the StructuredContentAssistProcessor is always a child of a CompoundContentAssistProcessor and thus that statement fails. Ironically enough StructuredContentAssistProcessor#CompletionListener#assistSessionStarted already has the correct if check of: if (event.processor == StructuredContentAssistProcessor.this || (event.processor instanceof CompoundContentAssistProcessor && ((CompoundContentAssistProcessor)event.processor).containsProcessor(StructuredContentAssistProcessor.this))) { This most likly happned because none of the SSE code takes advantage of ICompletionProposalComputer#sessionEnded so the issue was never noticed there like it was in ICompletionProposalComputer#sessionStarted. Because of this bug anyone who implements ICompletionProposalComputer will never have their #sessionEnded method called. Fix is simple, use the same if statment in #assistSessionEnded as in #assistSessionStarted.
Created attachment 167534 [details] Fix Patch Fix as described in the description. This fix really should go into WTP 3.2 otherwise any adopter of the new content assist framework will not be able to take advantage of the ICompletionProposalComputer#sessionEnded method.
Looks good to me.