summaryrefslogtreecommitdiffstats
path: root/rba.tool.editor.ui/src/rba/tool/editor/ui/resource/RBAModelResourceSetProvider.xtend
blob: 5c4a6ddcbf798a979bb246d0aa8af8f0bd4e3ae9 (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
package rba.tool.editor.ui.resource

import com.google.inject.Singleton
import java.util.concurrent.ConcurrentHashMap
import org.eclipse.core.resources.IProject
import org.eclipse.emf.ecore.resource.ResourceSet
import org.eclipse.xtext.ui.resource.SimpleResourceSetProvider

@Singleton
class RBAModelResourceSetProvider extends SimpleResourceSetProvider {

	private ConcurrentHashMap<IProject, ResourceSet> projectXtextResourceSetMap = new ConcurrentHashMap<IProject, ResourceSet>();

	override get(IProject project) {
		val ResourceSet result = super.get(project);
		if(project !== null) {
			if(projectXtextResourceSetMap.containsKey(project)) {
				projectXtextResourceSetMap.remove(project);
			}
			projectXtextResourceSetMap.put(project, result);
		}
		return result;
	}

	def public ResourceSet getResourceSet(IProject project) {
		if(project === null) {
			return get(project);
		} else {
			return projectXtextResourceSetMap.get(project) ?: get(project);
		}
	}

	def public void setResourceSet(IProject project, ResourceSet resourceSet) {
		projectXtextResourceSetMap.put(project, resourceSet);
	}

}