NPE in org.apache.ivyde.eclipse.IvyPlugin.getIvy
------------------------------------------------

                 Key: IVYDE-132
                 URL: https://issues.apache.org/jira/browse/IVYDE-132
             Project: IvyDE
          Issue Type: Bug
          Components: classpath container
    Affects Versions: 2.0.0.alpha1
         Environment: Eclipse 3.2.2 / Rational v7.0 (pre 7.5)
            Reporter: Mladen Maravic
            Priority: Minor


Sometimes, IvyDE would cause the following errors to be logged into the Eclipse 
error log:

java.lang.NullPointerException
        at org.eclipse.jface.dialogs.IconAndMessageDialog.getSWTImage(Unknown 
Source)
        at 
org.eclipse.jface.dialogs.IconAndMessageDialog.getWarningImage(Unknown Source)
        at org.eclipse.jface.dialogs.MessageDialog.<init>(Unknown Source)
        at org.eclipse.jface.dialogs.MessageDialog.openWarning(Unknown Source)
        at org.apache.ivyde.eclipse.IvyPlugin.getIvy(Unknown Source)
        at 
org.apache.ivyde.eclipse.cpcontainer.IvyClasspathContainer.computeClasspathEntries(Unknown
 Source)
        at 
org.apache.ivyde.eclipse.cpcontainer.IvyClasspathContainer.scheduleRefresh(Unknown
 Source)
        at 
org.apache.ivyde.eclipse.cpcontainer.IvyClasspathInitializer.initialize(Unknown 
Source)
        at 
org.eclipse.jdt.internal.core.JavaModelManager.initializeContainer(Unknown 
Source)
        at org.eclipse.jdt.internal.core.JavaModelManager$8.run(Unknown Source)
        at org.eclipse.core.internal.resources.Workspace.run(Unknown Source)
        at 
org.eclipse.jdt.internal.core.JavaModelManager.initializeAllContainers(Unknown 
Source)
        at 
org.eclipse.jdt.internal.core.JavaModelManager.getClasspathContainer(Unknown 
Source)
        at org.eclipse.jdt.core.JavaCore.getClasspathContainer(Unknown Source)
        at 
org.eclipse.jdt.internal.core.JavaProject.getResolvedClasspath(Unknown Source)
        at 
org.eclipse.jdt.internal.core.JavaProject.getResolvedClasspath(Unknown Source)
        at 
org.eclipse.jdt.internal.core.DeltaProcessingState.initializeRoots(Unknown 
Source)
        at org.eclipse.jdt.core.JavaCore.initializeAfterLoad(Unknown Source)
        at 
org.eclipse.jdt.internal.ui.InitializeAfterLoadJob$RealJob.run(Unknown Source)
        at org.eclipse.core.internal.jobs.Worker.run(Unknown Source)

(I've seen instances where line number are present!).

This is due to the fact that the org.apache.ivyde.eclipse.IvyPlugin.getIvy() 
method uses MessageDialog.openWarning method. MessageDialog uses 
Display.getCurrent() internally. This results in errors if 
MessageDialog.openXXXX is used outside of the UI thread. 

To correct this, every MessageDialog.openXYZ in getIvy method should be 
surrounded by this code:

Display.getDefault().asyncExec(new Runnable() {
      public void run() {
            MessageDialog.openXYZ(.......);
       }
});




-- 
This message is automatically generated by JIRA.
-
You can reply to this email to add a comment to the issue online.

Reply via email to