Some Eclipse Foundation services are deprecated, or will be soon. Please ensure you've read this important communication.

Bug 330648

Summary: Syntax error in plugin.xml should not be written to System.out
Product: [Eclipse Project] PDE Reporter: Markus Keller <markus.kell.r>
Component: UIAssignee: Curtis Windatt <curtis.windatt.public>
Status: VERIFIED FIXED QA Contact:
Severity: normal    
Priority: P3 CC: curtis.windatt.public, ob1.eclipse, tjwatson
Version: 3.7   
Target Milestone: 3.7 M4   
Hardware: PC   
OS: Windows 7   
Whiteboard:

Description Markus Keller CLA 2010-11-19 06:03:37 EST
I20101116-0800

- Add a syntax error to a plugin.xml and save (I took org.eclipse.core.expressions and changed "<extension" to "<extensionXXX").

=> The following is written to the console:
Error:  Could not parse XML contribution for "org.eclipse.core.expressions/C:\e\w\runtime-head-CLEAN-2\org.eclipse.core.expressions\plugin.xml". Any contributed extensions and extension points will be ignored.

Stacktrace:

java.lang.Exception
	at java.io.PrintStream.print(PrintStream.java:616)
	at java.io.PrintStream.println(PrintStream.java:756)
	at org.eclipse.core.internal.registry.RegistrySupport.log(RegistrySupport.java:65)
	at org.eclipse.core.runtime.spi.RegistryStrategy.log(RegistryStrategy.java:128)
	at org.eclipse.core.internal.registry.ExtensionRegistry.log(ExtensionRegistry.java:850)
	at org.eclipse.core.internal.registry.ExtensionRegistry.logError(ExtensionRegistry.java:1090)
	at org.eclipse.core.internal.registry.ExtensionRegistry.addContribution(ExtensionRegistry.java:1072)
	at org.eclipse.pde.internal.core.PDERegistryStrategy.addBundle(PDERegistryStrategy.java:201)
	at org.eclipse.pde.internal.core.PDERegistryStrategy.addBundles(PDERegistryStrategy.java:173)
	at org.eclipse.pde.internal.core.PDERegistryStrategy.access$2(PDERegistryStrategy.java:171)
	at org.eclipse.pde.internal.core.PDERegistryStrategy$ExtensionListener.extensionsChanged(PDERegistryStrategy.java:104)
	at org.eclipse.pde.internal.core.WorkspacePluginModelManager.fireExtensionDeltaEvent(WorkspacePluginModelManager.java:455)
	at org.eclipse.pde.internal.core.WorkspacePluginModelManager.createAndFireEvent(WorkspacePluginModelManager.java:469)
	at org.eclipse.pde.internal.core.WorkspaceModelManager.processModelChanges(WorkspaceModelManager.java:235)
	at org.eclipse.pde.internal.core.WorkspacePluginModelManager.processModelChanges(WorkspacePluginModelManager.java:462)
	at org.eclipse.pde.internal.core.WorkspaceModelManager.resourceChanged(WorkspaceModelManager.java:114)
	at org.eclipse.jdt.internal.core.DeltaProcessingState$1.run(DeltaProcessingState.java:465)
	at org.eclipse.core.runtime.SafeRunner.run(SafeRunner.java:42)
	at org.eclipse.jdt.internal.core.DeltaProcessingState.resourceChanged(DeltaProcessingState.java:460)
	at org.eclipse.core.internal.events.NotificationManager$2.run(NotificationManager.java:291)
	at org.eclipse.core.runtime.SafeRunner.run(SafeRunner.java:42)
	at org.eclipse.core.internal.events.NotificationManager.notify(NotificationManager.java:285)
	at org.eclipse.core.internal.events.NotificationManager.broadcastChanges(NotificationManager.java:149)
	at org.eclipse.core.internal.resources.Workspace.broadcastPostChange(Workspace.java:397)
	at org.eclipse.core.internal.resources.Workspace.endOperation(Workspace.java:1494)
	at org.eclipse.core.internal.resources.Workspace.run(Workspace.java:2317)
	at org.eclipse.ui.actions.WorkspaceModifyOperation.run(WorkspaceModifyOperation.java:118)
	at org.eclipse.ui.internal.editors.text.WorkspaceOperationRunner.run(WorkspaceOperationRunner.java:75)
	at org.eclipse.ui.internal.editors.text.WorkspaceOperationRunner.run(WorkspaceOperationRunner.java:65)
	at org.eclipse.ui.editors.text.TextFileDocumentProvider.executeOperation(TextFileDocumentProvider.java:456)
	at org.eclipse.ui.editors.text.TextFileDocumentProvider.saveDocument(TextFileDocumentProvider.java:772)
	at org.eclipse.ui.editors.text.ForwardingDocumentProvider.saveDocument(ForwardingDocumentProvider.java:148)
	at org.eclipse.pde.internal.ui.editor.context.InputContext.doSave(InputContext.java:188)
	at org.eclipse.pde.internal.ui.editor.context.InputContextManager.save(InputContextManager.java:78)
	at org.eclipse.pde.internal.ui.editor.PDEFormEditor.doSave(PDEFormEditor.java:350)
	at org.eclipse.ui.internal.SaveableHelper$2.run(SaveableHelper.java:151)
	at org.eclipse.ui.internal.SaveableHelper$5.run(SaveableHelper.java:277)
	at org.eclipse.jface.operation.ModalContext.runInCurrentThread(ModalContext.java:464)
	at org.eclipse.jface.operation.ModalContext.run(ModalContext.java:372)
	at org.eclipse.jface.window.ApplicationWindow$1.run(ApplicationWindow.java:759)
	at org.eclipse.swt.custom.BusyIndicator.showWhile(BusyIndicator.java:70)
	at org.eclipse.jface.window.ApplicationWindow.run(ApplicationWindow.java:756)
	at org.eclipse.ui.internal.WorkbenchWindow.run(WorkbenchWindow.java:2613)
	at org.eclipse.ui.internal.SaveableHelper.runProgressMonitorOperation(SaveableHelper.java:285)
	at org.eclipse.ui.internal.SaveableHelper.runProgressMonitorOperation(SaveableHelper.java:264)
	at org.eclipse.ui.internal.SaveableHelper.savePart(SaveableHelper.java:156)
	at org.eclipse.ui.internal.EditorManager.savePart(EditorManager.java:1369)
	at org.eclipse.ui.internal.WorkbenchPage.savePart(WorkbenchPage.java:3334)
	at org.eclipse.ui.internal.WorkbenchPage.saveEditor(WorkbenchPage.java:3347)
	at org.eclipse.ui.internal.SaveAction.run(SaveAction.java:76)
	at org.eclipse.jface.action.Action.runWithEvent(Action.java:498)
...
Comment 1 Thomas Watson CLA 2010-11-19 09:09:30 EST
If I remember correctly this is by design for the default RegistryStrategy.  The default RegistryStrategy does not know what kind of logging system you want to use.  At runtime the EquinoxRegistryStrategy is used, which logs to the eclipse log.  PDE is using its own RegistryStrategy.  If PDE wants things to get logged to someplace other than the console then they will need to override the method org.eclipse.core.runtime.spi.RegistryStrategy.log(IStatus)

Moving to PDE.
Comment 2 Markus Keller CLA 2010-11-19 10:01:15 EST
(In reply to comment #1)
Thanks, I missed the RegistryStrategy APIs that describe this.

Adding the following to org.eclipse.pde.internal.core.PDERegistryStrategy solves the problem (and I still get error markers in the file):

public final void log(IStatus status) {
	// don't log, see https://bugs.eclipse.org/bugs/show_bug.cgi?id=330648
}
Comment 3 Curtis Windatt CLA 2010-11-19 12:01:59 EST
Fixed in HEAD.
Comment 4 Curtis Windatt CLA 2010-12-07 14:03:55 EST
Verified in I20101206-1800