Some Eclipse Foundation services are deprecated, or will be soon. Please ensure you've read this important communication.
Bug 315293 - XHTMLContentAssistProcessor causing duplicate IContextInformation in HTMLs & JSPs
Summary: XHTMLContentAssistProcessor causing duplicate IContextInformation in HTMLs & ...
Status: CLOSED INVALID
Alias: None
Product: Java Server Faces
Classification: WebTools
Component: UI (show other bugs)
Version: 3.2   Edit
Hardware: PC Windows XP
: P3 normal (vote)
Target Milestone: 3.2   Edit
Assignee: Cameron Bateman CLA
QA Contact:
URL:
Whiteboard:
Keywords:
Depends on:
Blocks:
 
Reported: 2010-06-01 16:17 EDT by Ian Tewksbury CLA
Modified: 2010-06-02 16:40 EDT (History)
2 users (show)

See Also:


Attachments

Note You need to log in before you can comment on or make changes to this bug.
Description Ian Tewksbury CLA 2010-06-01 16:17:15 EDT
Once the fix for Bug 314972 is in and context (ctrl+shift+space) assist is working again in HTML and JSP editors duplicate context information is provided by both the core structured content assist framework and org.eclipse.jst.jsf.facelet.ui.internal.contentassist.XHTMLContentAssistProcessor. 
The new (as of WTP 3.2 M6) Structur5edContentAssistProcessor that now uses a new set of extension points still allows for 'legacy' content assist extensions through the editor configuration extension point for backwards compatibility.  It is through this legacy layer that XHTMLContentAssistProcessor is providing its suggestions for both content assist and context assist. But it would seem the context assist XHTMLContentAssistProcessor is providing is identical to the context assist that is already provided by the SSE content assist framework.

This duplication causes a context assist list to appear rather then just a context assist dialog when context assist is invoked.  The user is then forced to chose between seemingly (and in reality) identical options to then see the desired context assist dialog.  If the XHTMLContentAssistProcessor ceases to provide this duplicate context information then a list will no longer need to be shown and the context dialog will be shown promptly.

To be more specific the duplicated context is org.eclipse.wst.xml.ui.internal.contentassist.AttributeContextInformation.
Comment 1 Raghunathan Srinivasan CLA 2010-06-01 17:20:26 EDT
Using the RC3 build, I don't see the issue in both the HTML and JSP file in the WPE Source editor. 
Additional steps would be useful.
Comment 2 Ian Tewksbury CLA 2010-06-02 08:03:24 EDT
As I stated in the description this is not reproducible without the fix for Bug 314972 applied.  Without the patch for Bug 314972 I would expect that you are seeing NPEs as the description of that bug states.
Comment 3 Cameron Bateman CLA 2010-06-02 16:02:56 EDT
(In reply to comment #2)
> As I stated in the description this is not reproducible without the fix for Bug
> 314972 applied.  Without the patch for Bug 314972 I would expect that you are
> seeing NPEs as the description of that bug states.

We are seeing this one but it's clear that it is connected.  Do you have stack trace that shows the NPE you are talking about?


java.lang.ClassCastException: java.lang.String
at org.eclipse.wst.html.core.internal.htmlcss.HTMLDocumentAdapter.notifyChanged(HTMLDocumentAdapter.java:255)
at org.eclipse.wst.sse.core.internal.provisional.AbstractNotifier.notify(AbstractNotifier.java:202)
at org.eclipse.wst.xml.core.internal.document.AttrImpl.setName(AttrImpl.java:672)
at org.eclipse.wst.xml.core.internal.document.XMLModelParser.changeAttrName(XMLModelParser.java:159)
at org.eclipse.wst.xml.core.internal.document.XMLModelParser.changeRegion(XMLModelParser.java:326)
at org.eclipse.wst.xml.core.internal.document.DOMModelImpl.regionChanged(DOMModelImpl.java:725)
at org.eclipse.wst.sse.core.internal.text.BasicStructuredDocument._fireEvent(BasicStructuredDocument.java:542)
at org.eclipse.wst.sse.core.internal.text.BasicStructuredDocument.fireStructuredDocumentEvent(BasicStructuredDocument.java:1180)
at org.eclipse.wst.sse.core.internal.text.BasicStructuredDocument.internalReplaceText(BasicStructuredDocument.java:1964)
at org.eclipse.wst.sse.core.internal.text.BasicStructuredDocument.replaceText(BasicStructuredDocument.java:2419)
at org.eclipse.wst.sse.core.internal.text.BasicStructuredDocument.replaceText(BasicStructuredDocument.java:2404)
at org.eclipse.wst.sse.core.internal.text.JobSafeStructuredDocument.access$2(JobSafeStructuredDocument.java:1)
at org.eclipse.wst.sse.core.internal.text.JobSafeStructuredDocument$3.run(JobSafeStructuredDocument.java:141)
at org.eclipse.core.runtime.SafeRunner.run(SafeRunner.java:42)
at org.eclipse.wst.sse.ui.EditorExecutionContext.execute(EditorExecutionContext.java:149)
at org.eclipse.wst.sse.core.internal.text.JobSafeStructuredDocument.replaceText(JobSafeStructuredDocument.java:144)
at org.eclipse.wst.sse.core.internal.text.BasicStructuredDocument.replace(BasicStructuredDocument.java:2364)
at org.eclipse.wst.sse.core.internal.text.JobSafeStructuredDocument.access$0(JobSafeStructuredDocument.java:1)
at org.eclipse.wst.sse.core.internal.text.JobSafeStructuredDocument$1.run(JobSafeStructuredDocument.java:103)
at org.eclipse.core.runtime.SafeRunner.run(SafeRunner.java:42)
at org.eclipse.wst.sse.ui.EditorExecutionContext.execute(EditorExecutionContext.java:149)
at org.eclipse.wst.sse.core.internal.text.JobSafeStructuredDocument.replace(JobSafeStructuredDocument.java:106)
at org.eclipse.jface.text.projection.ProjectionTextStore.replace(ProjectionTextStore.java:111)
at org.eclipse.jface.text.AbstractDocument.replace(AbstractDocument.java:1184)
at org.eclipse.jface.text.AbstractDocument.replace(AbstractDocument.java:1210)
at org.eclipse.jface.text.projection.ProjectionDocument.replace(ProjectionDocument.java:629)
at org.eclipse.jface.text.DefaultDocumentAdapter.replaceTextRange(DefaultDocumentAdapter.java:248)
at org.eclipse.swt.custom.StyledText.modifyContent(StyledText.java:7159)
at org.eclipse.swt.custom.StyledText.sendKeyEvent(StyledText.java:7966)
at org.eclipse.swt.custom.StyledText.doContent(StyledText.java:2456)
at org.eclipse.swt.custom.StyledText.handleKey(StyledText.java:5919)
at org.eclipse.swt.custom.StyledText.handleKeyDown(StyledText.java:5949)
at org.eclipse.swt.custom.StyledText$7.handleEvent(StyledText.java:5643)
at org.eclipse.swt.widgets.EventTable.sendEvent(EventTable.java:84)
at org.eclipse.swt.widgets.Widget.sendEvent(Widget.java:1052)
at org.eclipse.swt.widgets.Widget.sendEvent(Widget.java:1076)
at org.eclipse.swt.widgets.Widget.sendEvent(Widget.java:1061)
at org.eclipse.swt.widgets.Widget.sendKeyEvent(Widget.java:1102)
at org.eclipse.swt.widgets.Widget.sendKeyEvent(Widget.java:1098)
at org.eclipse.swt.widgets.Widget.wmChar(Widget.java:1507)
at org.eclipse.swt.widgets.Control.WM_CHAR(Control.java:4267)
at org.eclipse.swt.widgets.Canvas.WM_CHAR(Canvas.java:345)
at org.eclipse.swt.widgets.Control.windowProc(Control.java:4159)
at org.eclipse.swt.widgets.Canvas.windowProc(Canvas.java:341)
at org.eclipse.swt.widgets.Display.windowProc(Display.java:4873)
at org.eclipse.swt.internal.win32.OS.DispatchMessageW(Native Method)
at org.eclipse.swt.internal.win32.OS.DispatchMessage(OS.java:2459)
at org.eclipse.swt.widgets.Display.readAndDispatch(Display.java:3655)
at org.eclipse.ui.internal.Workbench.runEventLoop(Workbench.java:2629)
at org.eclipse.ui.internal.Workbench.runUI(Workbench.java:2593)
at org.eclipse.ui.internal.Workbench.access$4(Workbench.java:2427)
at org.eclipse.ui.internal.Workbench$7.run(Workbench.java:670)
at org.eclipse.core.databinding.observable.Realm.runWithDefault(Realm.java:332)
at org.eclipse.ui.internal.Workbench.createAndRunWorkbench(Workbench.java:663)
at org.eclipse.ui.PlatformUI.createAndRunWorkbench(PlatformUI.java:149)
at org.eclipse.ui.internal.ide.application.IDEApplication.start(IDEApplication.java:115)
at org.eclipse.equinox.internal.app.EclipseAppHandle.run(EclipseAppHandle.java:196)
at org.eclipse.core.runtime.internal.adaptor.EclipseAppLauncher.runApplication(EclipseAppLauncher.java:110)
at org.eclipse.core.runtime.internal.adaptor.EclipseAppLauncher.start(EclipseAppLauncher.java:79)
at org.eclipse.core.runtime.adaptor.EclipseStarter.run(EclipseStarter.java:369)
at org.eclipse.core.runtime.adaptor.EclipseStarter.run(EclipseStarter.java:179)
at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:39)
at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:25)
at java.lang.reflect.Method.invoke(Method.java:597)
at org.eclipse.equinox.launcher.Main.invokeFramework(Main.java:619)
at org.eclipse.equinox.launcher.Main.basicRun(Main.java:574)
at org.eclipse.equinox.launcher.Main.run(Main.java:1407)
at org.eclipse.equinox.launcher.Main.main(Main.java:1383)
Comment 4 Ian Tewksbury CLA 2010-06-02 16:40:20 EDT
I do not know what that exception is you are seeing.

But as for this bug I am canceling.  I turns out that the duplicate context information that XHTMLContentAssistProcessor is providing is actually coming from its super class AbstractContentAssistPrcoessor (that is now deprecated). So rather then having you and any other adopter still using this deprecated class have to override the  #computeContextInformation method to return nothing we are going to change AbstractContentAssistPrcoessor to return nothing.

Thanks for the work you put into this and apologies for the wild goose chase.