Skip to main content

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index] [List Home]
[Dltk-dev] IModelElement cache needs to be cleared when rebuilding a project AND Rebuilding not working triggered for opened source modules

Hi Alex,

Your solution is good but I don't see how can it work in my scenario.
I don't know how to pass the changed properties down to the
SourceParser that requires those properties.

In my previous post I came to that problem because my preferences need
to be saved because the rebuilding requires reparsing the code. But
parsing the code is dependent on the project properties (the ones
saved in the property page). In the rebuilding process the cache is
populated with my modules and after a couple of property
modifications, it doesn't work anymore because the source modules are
taken from the cache. (Reparsing is not triggered anymore). In order
to clear the cache I performed this in the performOK of my options
block:

				IWorkspaceRunnable runnable = new IWorkspaceRunnable() {
					public void run(IProgressMonitor monitor) throws CoreException,
OperationCanceledException {
						SetPropertyOperation op = new
SetPropertyOperation(DLTKCore.create(MyLanguagePreferencePage.this.getProject()));
						op.runOperation(monitor);
					}
				};
				WorkbenchRunnableAdapter op = new WorkbenchRunnableAdapter(runnable);
				op.runAsUserJob("Building project", null);


The SetPropertyOperation class is a ModelOperation that deletes the
modules from cache like this:

		DeltaProcessor deltaProcessor =
ModelManager.getModelManager().getDeltaProcessor();
		for (IModelElement element : moduleCollector.fModules) {
			ModelElementDelta delta = new ModelElementDelta(element);
			delta.changed(element, IModelElementDelta.F_CONTENT);
			deltaProcessor.registerModelDelta(delta);
		}
		deltaProcessor.fire(null, DeltaProcessor.DEFAULT_CHANGE_EVENT);



Moreover, having opened documents while changing those properties
seems to have some more problems: the parsing occurs before the
properties are saved and therefore the old properties are read. Thus,
the editor remains out of sync, or delayed until one changes text in
the editor.


1. Could you clear the cache during the rebuilding process?  Or, can I
clear the cache for a certain project in another way (also other way
than clearing the whole cache)?
2. The opened editors should also reflect the changes properties. This
means saving the properties first. (The opened source modules are not
built in the same way/or not built at all during a project rebuilt.)


Best regards,
Gabriel

-- 
MSc Gabriel Petrovay
MCSA, MCDBA, MCAD
Mobile: +41(0)787978034


Back to the top