Andreas Mülder 10 роки тому
батько
коміт
4182c60cdb

+ 13 - 3
plugins/org.yakindu.sct.model.resource/src/org/yakindu/sct/model/resource/SCTResourceFactory.java

@@ -11,6 +11,8 @@
 package org.yakindu.sct.model.resource;
 
 import java.io.IOException;
+import java.util.HashMap;
+import java.util.Map;
 
 import org.eclipse.emf.common.util.URI;
 import org.eclipse.emf.ecore.resource.Resource;
@@ -37,13 +39,21 @@ import com.google.inject.Module;
  */
 public class SCTResourceFactory extends XMIResourceFactoryImpl {
 
+	private Map<String, Injector> injectorCache;
+
+	public SCTResourceFactory() {
+		injectorCache = new HashMap<String, Injector>();
+	}
+
 	@Override
 	public Resource createResource(URI uri) {
 		String domainID = determineDomainID(uri);
 		DomainDescriptor domainDescriptor = DomainRegistry.getDomainDescriptor(domainID);
-		Module runtimeModule = domainDescriptor.getModuleProvider().getResourceModule();
-		Injector injector = Guice.createInjector(runtimeModule);
-		Resource resource = injector.getInstance(Resource.class);
+		Module resourceModule = domainDescriptor.getModuleProvider().getResourceModule();
+		if (injectorCache.get(domainID) == null) {
+			injectorCache.put(domainID, Guice.createInjector(resourceModule));
+		}
+		Resource resource = injectorCache.get(domainID).getInstance(Resource.class);
 		ResourceSet set = new ResourceSetImpl();
 		set.getResources().add(resource);
 		resource.setURI(uri);