Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Error updating text editor (copying lib resources) #1083

Closed
fdodino opened this issue May 11, 2017 · 3 comments
Closed

Error updating text editor (copying lib resources) #1083

fdodino opened this issue May 11, 2017 · 3 comments

Comments

@fdodino
Copy link
Collaborator

fdodino commented May 11, 2017

If you rename a project, change display resolution, and sometimes when you rename a method, you get

image

It happens apparently if you need to copy or refresh a wollok library, that is cached now.

org.eclipse.xtext.resource.ClasspathUriResolutionException: classpath:/wollok/lang.wlk#//@elements.5
	at org.eclipse.xtext.resource.XtextResourceSet$1.normalize(XtextResourceSet.java:286)
	at org.eclipse.xtext.EcoreUtil2.getPlatformResourceOrNormalizedURI(EcoreUtil2.java:620)
	at org.eclipse.xtext.resource.impl.DefaultReferenceDescription.<init>(DefaultReferenceDescription.java:29)
	at org.eclipse.xtext.resource.impl.DefaultResourceDescriptionStrategy.createReferenceDescription(DefaultResourceDescriptionStrategy.java:112)
	at org.eclipse.xtext.resource.impl.DefaultResourceDescriptionStrategy.createReferenceDescriptions(DefaultResourceDescriptionStrategy.java:100)
	at org.eclipse.xtext.resource.impl.DefaultResourceDescription.computeReferenceDescriptions(DefaultResourceDescription.java:141)
	at org.eclipse.xtext.resource.impl.DefaultResourceDescription$2.get(DefaultResourceDescription.java:123)
	at org.eclipse.xtext.resource.impl.DefaultResourceDescription$2.get(DefaultResourceDescription.java:120)
	at org.eclipse.xtext.util.OnChangeEvictingCache.get(OnChangeEvictingCache.java:77)
	at org.eclipse.xtext.resource.impl.DefaultResourceDescription.getReferenceDescriptions(DefaultResourceDescription.java:120)
	at org.eclipse.xtext.resource.DescriptionUtils.collectOutgoingReferences(DescriptionUtils.java:29)
	at org.eclipse.xtext.resource.impl.DefaultResourceDescriptionManager.isAffected(DefaultResourceDescriptionManager.java:117)
	at org.eclipse.xtext.ui.editor.DirtyStateEditorSupport.isReparseRequired(DirtyStateEditorSupport.java:649)
	at org.eclipse.xtext.ui.editor.DirtyStateEditorSupport$UpdateEditorStateJob$1.exec(DirtyStateEditorSupport.java:161)
	at org.eclipse.xtext.ui.editor.DirtyStateEditorSupport$UpdateEditorStateJob$1.exec(DirtyStateEditorSupport.java:1)
	at org.eclipse.xtext.resource.OutdatedStateManager.exec(OutdatedStateManager.java:91)
	at org.eclipse.xtext.ui.editor.model.XtextDocument$XtextDocumentLocker.internalReadOnly(XtextDocument.java:520)
	at org.eclipse.xtext.ui.editor.model.XtextDocument$XtextDocumentLocker.readOnly(XtextDocument.java:492)
	at org.eclipse.xtext.ui.editor.model.XtextDocument.readOnly(XtextDocument.java:133)
	at org.eclipse.xtext.ui.editor.DirtyStateEditorSupport$UpdateEditorStateJob.run(DirtyStateEditorSupport.java:146)
	at org.eclipse.core.internal.jobs.Worker.run(Worker.java:55)

org.eclipse.xtext.resource.ClasspathUriResolutionException: classpath:/wollok/lang.wlk#//@elements.5
	at org.eclipse.xtext.resource.XtextResourceSet$1.normalize(XtextResourceSet.java:286)
	at org.eclipse.xtext.EcoreUtil2.getPlatformResourceOrNormalizedURI(EcoreUtil2.java:620)
	at org.eclipse.xtext.resource.impl.DefaultReferenceDescription.<init>(DefaultReferenceDescription.java:29)
	at org.eclipse.xtext.resource.impl.DefaultResourceDescriptionStrategy.createReferenceDescription(DefaultResourceDescriptionStrategy.java:112)
	at org.eclipse.xtext.resource.impl.DefaultResourceDescriptionStrategy.createReferenceDescriptions(DefaultResourceDescriptionStrategy.java:100)
	at org.eclipse.xtext.resource.impl.DefaultResourceDescription.computeReferenceDescriptions(DefaultResourceDescription.java:141)
	at org.eclipse.xtext.resource.impl.DefaultResourceDescription$2.get(DefaultResourceDescription.java:123)
	at org.eclipse.xtext.resource.impl.DefaultResourceDescription$2.get(DefaultResourceDescription.java:120)
	at org.eclipse.xtext.util.OnChangeEvictingCache.get(OnChangeEvictingCache.java:77)
	at org.eclipse.xtext.resource.impl.DefaultResourceDescription.getReferenceDescriptions(DefaultResourceDescription.java:120)
	at org.eclipse.xtext.resource.DescriptionUtils.collectOutgoingReferences(DescriptionUtils.java:29)
	at org.eclipse.xtext.resource.impl.DefaultResourceDescriptionManager.isAffected(DefaultResourceDescriptionManager.java:117)
	at org.eclipse.xtext.ui.editor.DirtyStateEditorSupport.isReparseRequired(DirtyStateEditorSupport.java:649)
	at org.eclipse.xtext.ui.editor.DirtyStateEditorSupport$UpdateEditorStateJob$1.exec(DirtyStateEditorSupport.java:161)
	at org.eclipse.xtext.ui.editor.DirtyStateEditorSupport$UpdateEditorStateJob$1.exec(DirtyStateEditorSupport.java:1)
	at org.eclipse.xtext.resource.OutdatedStateManager.exec(OutdatedStateManager.java:91)
	at org.eclipse.xtext.ui.editor.model.XtextDocument$XtextDocumentLocker.internalReadOnly(XtextDocument.java:520)
	at org.eclipse.xtext.ui.editor.model.XtextDocument$XtextDocumentLocker.readOnly(XtextDocument.java:492)
	at org.eclipse.xtext.ui.editor.model.XtextDocument.readOnly(XtextDocument.java:133)
	at org.eclipse.xtext.ui.editor.DirtyStateEditorSupport$UpdateEditorStateJob.run(DirtyStateEditorSupport.java:146)
	at org.eclipse.core.internal.jobs.Worker.run(Worker.java:55)
@fdodino fdodino added this to the Wollok v1.6 F milestone May 11, 2017
@fdodino fdodino added the ready label May 13, 2017
@fdodino
Copy link
Collaborator Author

fdodino commented Jun 3, 2017

Maybe related to eclipse/xtext-xtend#166
(fixed in... 2.12)

I thought that I could add a subclass to DefaultRenameStrategy for applyDeclarationChange, but debugging show no breakpoint.

Problem occurs only when you keep open files of project renamed in editor. If you close them and reopen everything works fine

@fdodino
Copy link
Collaborator Author

fdodino commented Sep 29, 2017

So... after debugging for 1 hour, I came with this conclusion:

You rename a project, a file... so, you change context. Let's say you have a class A. Its parent is class Object. So cache resource triggers a linking process from editor. But, Object (element 5 in lang.wlk) fails when trying to get that URI in a deprecated project. If you had "project1" and you rename it to "project2", context still points to "project1":

JdtClasspathUriResolver class

	@Override
	public URI resolve(Object context, URI classpathUri) {
		if (!(context instanceof IJavaElement)) {
			throw new IllegalArgumentException("Context must implement IResource");
		}
		javaElement = (IJavaElement) context;  (1)
		try {
			if (ClasspathUriUtil.isClasspathUri(classpathUri)) {
				IJavaProject javaProject = javaElement.getJavaProject();
				URI result = findResourceInWorkspace(javaProject, classpathUri); (2)
				if (classpathUri.fragment() != null)
					result = result.appendFragment(classpathUri.fragment());
				return result;
			}
		}
		catch (Exception exc) {
			throw new ClasspathUriResolutionException(exc);
		}
		return classpathUri;
	}

So, that's why context is a java element (1), but you can't find resource in workspace any more (2). So you get the same uri as result, and caller fails subsequently:

XtextResourceSet class

                	if (ClasspathUriUtil.isClasspathUri(uri)) {
                        URI result = XtextResourceSet.this.resolveClasspathURI(uri);
                        if (ClasspathUriUtil.isClasspathUri(result))
                        	throw new ClasspathUriResolutionException(result);

What do you think @Juancete @npasserini @tesonep ?

@fdodino
Copy link
Collaborator Author

fdodino commented Sep 30, 2017

I think this could be a good clue:
http://koehnlein.blogspot.com.ar/2011/06/rename-refactoring-in-xtext-20.html

Update: no, it is useful but for refactoring issues.

Currently the problem is in Rename resources, so Refactoring rename is not triggered.
But a dev called Stephane has a good point here:
https://www.eclipse.org/forums/index.php/t/1080002/

@fdodino fdodino self-assigned this Oct 2, 2017
@fdodino fdodino removed the ready label Oct 2, 2017
fdodino added a commit that referenced this issue Oct 2, 2017
@fdodino fdodino mentioned this issue Oct 2, 2017
@tesonep tesonep closed this as completed Oct 4, 2017
@tesonep tesonep added this to the Wollok v.1.6.3 milestone Oct 4, 2017
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Projects
None yet
Development

No branches or pull requests

2 participants