Skip to content

Do not return null from ClassFileEditorInputFactory when type not found#2372

Closed
laeubi wants to merge 1 commit intoeclipse-jdt:masterfrom
laeubi:fix_null_editor_kiss
Closed

Do not return null from ClassFileEditorInputFactory when type not found#2372
laeubi wants to merge 1 commit intoeclipse-jdt:masterfrom
laeubi:fix_null_editor_kiss

Conversation

@laeubi
Copy link
Copy Markdown
Contributor

@laeubi laeubi commented Jul 23, 2025

Currently the ClassFileEditorInputFactory tries to update a stored element reference to a type in the project when it encounters an IOrdinaryClassFile. If that lookup fails (for whatever reason) it return null that results in a complete crash of the editor during restore as null is not a valid EditorInput.

What it does

This now returns an InternalClassFileEditorInput instead to make it show the editor again after a restart.

Fixes #2371

How to test

See instructions here:

Author checklist

@iloveeclipse please kindly review this as it is a long outstanding issue (has been introduced 19 years ago with fixing a NPE in Bug 170552 as a follow up from Bug 83221) it would be good to have it in M2.

This has also been reported before as

It is NOT related to the follwoing (so please don't expect it shows any source)

FYI @merks

Currently the ClassFileEditorInputFactory tries to update a stored
element reference to a type in the project when it encounters an
IOrdinaryClassFile. If that lookup fails (for whatever reason) it return
null that results in a complete crash of the editor during restore as
null is not a valid EditorInput.

This now returns an InternalClassFileEditorInput instead to make it show
the editor again after a restart.

Fixes eclipse-jdt#2371
type= project.findType(type.getFullyQualifiedName());
if (type == null)
return null;
return new InternalClassFileEditorInput(cf);
Copy link
Copy Markdown
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

I've commented already on #2353 (comment).

This would bring back the problem described in the comment above, see https://bugs.eclipse.org/bugs/show_bug.cgi?id=83221

I will push a patch that fixes that in a different way without regression.

Copy link
Copy Markdown
Contributor Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

This would bring back the problem described in the comment above, see https://bugs.eclipse.org/bugs/show_bug.cgi?id=83221

Can you please explain why. The null is only returned when the type is not found, the Bug 83221 is fixing the case where it is found...

Copy link
Copy Markdown
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Copy link
Copy Markdown
Contributor Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Because of #2245 aka eclipse-pde/eclipse.pde#1667.

Have you tried out the reproducer? It does not contain anything from PDE just plain JDT project...

Copy link
Copy Markdown
Contributor Author

@laeubi laeubi Jul 23, 2025

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Also please look at the patch from Bug 83221 da65fe2

it does not aimed to ever return null .. then there was a potential problem that the type is null and the check was returned then returning null here 5a30402 .

so how could it be a "regression" to the bug if it never would open the editor in such case? This does not make sense as one really can't depend on seeing a broken ClassFileEditor (again without PDE) after a restart, so this is clearly a bug and it is unrelated to if PDE has any change or not.

You asked me to stay "professional" but honestly this does not feel any profession from your side to ever repeat the same sentence without even look at the reported problem.

Copy link
Copy Markdown
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

but honestly this does not feel any profession from your side to ever repeat the same sentence without even look at the reported problem.

How do you know that? Please stop making offending personal comments!
Please carefully read https://github.com/eclipse-jdt/eclipse.jdt.ui?tab=coc-ov-file#our-standards and understand that personal attacks are violating our code of conduct.

I do not want to answer to such comments anymore.

Copy link
Copy Markdown
Contributor Author

@laeubi laeubi Jul 23, 2025

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

You asked me to create an own issue for my different problem and I did it here:

it describes detailed steps how to reproduce the issue that ClassFileEditorInputFactory return null with an example project that only uses JDT.

I also added detailed description in the PR to fix that problem when it was introduced and why it causes problem.

Then you argue that it is caused by a change in PDE... so maybe you can kindly give me an advice on what conclusion I should draw from that?

@laeubi laeubi requested a review from iloveeclipse July 23, 2025 12:44
@laeubi
Copy link
Copy Markdown
Contributor Author

laeubi commented Jul 24, 2025

@laeubi laeubi closed this Jul 24, 2025
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

ClassFileEditor is not restored leading to ClassFileEditorInputFactory returned null error

2 participants