Bug 220453 - Addition of externalFoldersManager inside the java model manager breaks retrieval of JavaCore.getOptions() with no headless eclipse
Summary: Addition of externalFoldersManager inside the java model manager breaks retri...
Status: VERIFIED FIXED
Alias: None
Product: JDT
Classification: Eclipse Project
Component: Core (show other bugs)
Version: 3.4   Edit
Hardware: PC Windows XP
: P3 critical (vote)
Target Milestone: 3.4 M6   Edit
Assignee: Jerome Lanneluc CLA
QA Contact:
URL:
Whiteboard:
Keywords:
Depends on:
Blocks:
 
Reported: 2008-02-26 15:38 EST by Olivier Thomann CLA
Modified: 2008-09-16 07:53 EDT (History)
1 user (show)

See Also:


Attachments
Proposed fix (3.91 KB, patch)
2008-02-27 07:38 EST, Jerome Lanneluc CLA
no flags Details | Diff

Note You need to log in before you can comment on or make changes to this bug.
Description Olivier Thomann CLA 2008-02-26 15:38:25 EST
The addition of this field requires the resource plugin to be initialized in order to start the java model manager.
This breaks the fact that the DOM/AST parser can be used without having Eclipse running. It is no longer possible to retrieve the JavaCore.getOptions() outside of a headless Eclipse.

java.lang.ExceptionInInitializerError
	at org.eclipse.jdt.core.JavaCore.getOptions(JavaCore.java:3132)
	at org.eclipse.jdt.core.dom.ASTParser.initializeDefaults(ASTParser.java:232)
	at org.eclipse.jdt.core.dom.ASTParser.<init>(ASTParser.java:215)
	at org.eclipse.jdt.core.dom.ASTParser.newParser(ASTParser.java:115)
	at org.eclipse.pde.api.tools.internal.provisional.scanner.TagScanner.scan(TagScanner.java:440)
	at org.eclipse.pde.api.tools.model.tests.TagScannerTests.doScan(TagScannerTests.java:82)
	at org.eclipse.pde.api.tools.model.tests.TagScannerTests.testBug212276(TagScannerTests.java:110)
	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 junit.framework.TestCase.runTest(TestCase.java:164)
	at junit.framework.TestCase.runBare(TestCase.java:130)
	at junit.framework.TestResult$1.protect(TestResult.java:106)
	at junit.framework.TestResult.runProtected(TestResult.java:124)
	at junit.framework.TestResult.run(TestResult.java:109)
	at junit.framework.TestCase.run(TestCase.java:120)
	at junit.framework.TestSuite.runTest(TestSuite.java:230)
	at junit.framework.TestSuite.run(TestSuite.java:225)
	at junit.framework.TestSuite.runTest(TestSuite.java:230)
	at junit.framework.TestSuite.run(TestSuite.java:225)
	at org.eclipse.jdt.internal.junit.runner.junit3.JUnit3TestReference.run(JUnit3TestReference.java:130)
	at org.eclipse.jdt.internal.junit.runner.TestExecution.run(TestExecution.java:38)
	at org.eclipse.jdt.internal.junit.runner.RemoteTestRunner.runTests(RemoteTestRunner.java:460)
	at org.eclipse.jdt.internal.junit.runner.RemoteTestRunner.runTests(RemoteTestRunner.java:673)
	at org.eclipse.jdt.internal.junit.runner.RemoteTestRunner.run(RemoteTestRunner.java:386)
	at org.eclipse.jdt.internal.junit.runner.RemoteTestRunner.main(RemoteTestRunner.java:196)
Caused by: java.lang.IllegalStateException: Workspace is closed.
	at org.eclipse.core.resources.ResourcesPlugin.getWorkspace(ResourcesPlugin.java:326)
	at org.eclipse.jdt.internal.core.ExternalFoldersManager.getExternalFoldersProject(ExternalFoldersManager.java:108)
	at org.eclipse.jdt.internal.core.ExternalFoldersManager.<init>(ExternalFoldersManager.java:38)
	at org.eclipse.jdt.internal.core.JavaModelManager.<init>(JavaModelManager.java:410)
	at org.eclipse.jdt.internal.core.JavaModelManager.<clinit>(JavaModelManager.java:969)
	... 27 more
Comment 1 Jerome Lanneluc CLA 2008-02-27 07:38:01 EST
Created attachment 90845 [details]
Proposed fix

The fix consists in lazy initializing the "folders" of the ExternalFoldersManager.
So if not used (as in the secnario described above), the Platform won't be accessed.

Note there is no regression test as this would require to run the test externally to the Platform.
Comment 2 Jerome Lanneluc CLA 2008-02-27 09:06:34 EST
Fix released for 3.4M6
Comment 3 David Audel CLA 2008-09-16 07:53:24 EDT
Verified for 3.5M2