IvyDE
  1. IvyDE
  2. IVYDE-351

SWTException in PreferenceInitializer

    Details

    • Type: Bug Bug
    • Status: Resolved
    • Priority: Minor Minor
    • Resolution: Fixed
    • Affects Version/s: 2.2.0.beta1
    • Fix Version/s: 2.2.0.final
    • Component/s: None
    • Labels:

      Description

      PreferenceInitializer may be run by the framework in non-UI threads, so it cannot use the class PreferenceConverter (which uses/creates an SWT Display).

      PreferenceInitializer only uses the Converter class for serializing RGB values, so we can do that directly and skip PreferenceConverter entirely.

      java.lang.ExceptionInInitializerError
              at org.apache.ivyde.internal.eclipse.ui.preferences.PreferenceInitializer.initializeDefaultPreferences(PreferenceInitializer.java:194)
              at org.eclipse.core.internal.preferences.PreferenceServiceRegistryHelper$1.run(PreferenceServiceRegistryHelper.java:281)
              at org.eclipse.core.runtime.SafeRunner.run(SafeRunner.java:42)
              at org.eclipse.core.internal.preferences.PreferenceServiceRegistryHelper.runInitializer(PreferenceServiceRegistryHelper.java:284)
              at org.eclipse.core.internal.preferences.PreferenceServiceRegistryHelper.applyRuntimeDefaults(PreferenceServiceRegistryHelper.java:130)
              at org.eclipse.core.internal.preferences.PreferencesService.applyRuntimeDefaults(PreferencesService.java:368)
              at org.eclipse.core.internal.preferences.DefaultPreferences.applyRuntimeDefaults(DefaultPreferences.java:166)
              at org.eclipse.core.internal.preferences.DefaultPreferences.load(DefaultPreferences.java:237)
              at org.eclipse.core.internal.preferences.EclipsePreferences.create(EclipsePreferences.java:387)
              at org.eclipse.core.internal.preferences.EclipsePreferences.internalNode(EclipsePreferences.java:631)
              at org.eclipse.core.internal.preferences.EclipsePreferences.node(EclipsePreferences.java:757)
              at org.eclipse.core.internal.preferences.AbstractScope.getNode(AbstractScope.java:38)
              at org.eclipse.core.runtime.preferences.DefaultScope.getNode(DefaultScope.java:76)
              at org.eclipse.ui.preferences.ScopedPreferenceStore.getDefaultPreferences(ScopedPreferenceStore.java:250)
              at org.eclipse.ui.preferences.ScopedPreferenceStore.getPreferenceNodes(ScopedPreferenceStore.java:285)
              at org.eclipse.ui.preferences.ScopedPreferenceStore.internalGet(ScopedPreferenceStore.java:475)
              at org.eclipse.ui.preferences.ScopedPreferenceStore.getBoolean(ScopedPreferenceStore.java:387)
              at org.apache.ivyde.internal.eclipse.cpcontainer.IvyClasspathContainerConfAdapter.convertOldRetrieveConf(IvyClasspathContainerConfAdapter.java:268)
              at org.apache.ivyde.internal.eclipse.cpcontainer.IvyClasspathContainerConfAdapter.loadV1(IvyClasspathContainerConfAdapter.java:242)
              at org.apache.ivyde.internal.eclipse.cpcontainer.IvyClasspathContainerConfAdapter.load(IvyClasspathContainerConfAdapter.java:71)
              at org.apache.ivyde.eclipse.cp.IvyClasspathContainerConfiguration.<init>(IvyClasspathContainerConfiguration.java:95)
              at org.apache.ivyde.internal.eclipse.cpcontainer.IvyClasspathContainerImpl.<init>(IvyClasspathContainerImpl.java:81)
              at org.apache.ivyde.internal.eclipse.cpcontainer.IvyClasspathInitializer.initialize(IvyClasspathInitializer.java:114)
              at org.eclipse.jdt.internal.core.JavaModelManager.initializeContainer(JavaModelManager.java:2841)
              at org.eclipse.jdt.internal.core.JavaModelManager$11.run(JavaModelManager.java:2747)
              at org.eclipse.core.internal.resources.Workspace.run(Workspace.java:2344)
              at org.eclipse.jdt.internal.core.JavaModelManager.initializeAllContainers(JavaModelManager.java:2787)
              at org.eclipse.jdt.internal.core.JavaModelManager.getClasspathContainer(JavaModelManager.java:1871)
              at org.eclipse.jdt.core.JavaCore.getClasspathContainer(JavaCore.java:2811)
              at org.eclipse.jdt.internal.core.JavaProject.resolveClasspath(JavaProject.java:2689)
              at org.eclipse.jdt.internal.core.JavaProject.resolveClasspath(JavaProject.java:2853)
              at org.eclipse.jdt.internal.core.ClasspathChange.generateDelta(ClasspathChange.java:219)
              at org.eclipse.jdt.internal.core.DeltaProcessor.resourceChanged(DeltaProcessor.java:2040)
              at org.eclipse.jdt.internal.core.DeltaProcessingState.resourceChanged(DeltaProcessingState.java:470)
              at org.eclipse.core.internal.events.NotificationManager$1.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:186)
              at org.eclipse.core.internal.resources.SavedState.processResourceChangeEvents(SavedState.java:77)
              at org.eclipse.jdt.internal.core.JavaModelManager$20.run(JavaModelManager.java:4919)
              at org.eclipse.core.internal.resources.Workspace.run(Workspace.java:2344)
              at org.eclipse.core.internal.resources.Workspace.run(Workspace.java:2326)
              at org.eclipse.jdt.internal.core.JavaModelManager$19.run(JavaModelManager.java:4911)
              at org.eclipse.core.internal.jobs.Worker.run(Worker.java:54)
      Caused by: org.eclipse.swt.SWTException: Invalid thread access
              at org.eclipse.swt.SWT.error(SWT.java:4282)
              at org.eclipse.swt.SWT.error(SWT.java:4197)
              at org.eclipse.swt.SWT.error(SWT.java:4168)
              at org.eclipse.swt.widgets.Display.error(Display.java:1210)
              at org.eclipse.swt.widgets.Display.checkDevice(Display.java:752)
              at org.eclipse.swt.widgets.Display.getSystemFont(Display.java:2323)
              at org.eclipse.jface.preference.PreferenceConverter.<clinit>(PreferenceConverter.java:84)
      
      1. initializer.patch
        3 kB
        Carsten Pfeiffer

        Issue Links

          Activity

          Hide
          Nicolas Lalevée added a comment -

          Patch applied on trunk. Thanks !

          Show
          Nicolas Lalevée added a comment - Patch applied on trunk. Thanks !

            People

            • Assignee:
              Nicolas Lalevée
              Reporter:
              Carsten Pfeiffer
            • Votes:
              0 Vote for this issue
              Watchers:
              2 Start watching this issue

              Dates

              • Created:
                Updated:
                Resolved:

                Development