From 78254333d84de6cbb8234c4a445416dff622ed13 Mon Sep 17 00:00:00 2001
From: Nikolaus Huber <nikolaus.huber@uni-wuerzburg.de>
Date: Tue, 11 Jun 2013 09:16:37 +0000
Subject: [PATCH] improved model instance loading

git-svn-id: https://se1.informatik.uni-wuerzburg.de/usvn/svn/code/code/DMM/trunk@12014 9e42b895-fcda-4063-8a3b-11be15eb1bbd
---
 .../adaptation/model/AbstractEcoreModelLoader.java    | 11 ++++++++---
 1 file changed, 8 insertions(+), 3 deletions(-)

diff --git a/edu.kit.ipd.descartes.adaptation/src/edu/kit/ipd/descartes/adaptation/model/AbstractEcoreModelLoader.java b/edu.kit.ipd.descartes.adaptation/src/edu/kit/ipd/descartes/adaptation/model/AbstractEcoreModelLoader.java
index fb9dd9c7..8f18ab65 100644
--- a/edu.kit.ipd.descartes.adaptation/src/edu/kit/ipd/descartes/adaptation/model/AbstractEcoreModelLoader.java
+++ b/edu.kit.ipd.descartes.adaptation/src/edu/kit/ipd/descartes/adaptation/model/AbstractEcoreModelLoader.java
@@ -20,6 +20,7 @@ public abstract class AbstractEcoreModelLoader {
     private static Logger logger = Logger.getLogger(AbstractEcoreModelLoader.class);
     private ResourceSet resourceSet = null;
     private URI currentUri = null;
+    private EObject loadedModel;
     
 	protected ResourceSet getResourceSet() {
 	    if (resourceSet == null)
@@ -46,9 +47,13 @@ public abstract class AbstractEcoreModelLoader {
 	 * @throws IOException
 	 */
     public EObject load(URI uri) {
-        if (null == uri) {
+        
+        if (null == uri)
             throw new IllegalArgumentException("Missing file URI.");
-        }
+        
+        if (uri.equals(currentUri) && loadedModel != null)
+            return loadedModel;
+        
         // Resource resource = resourceSet.createResource(fileURI);
         Resource resource = resourceSet.getResource(uri, true);
         try {
@@ -60,6 +65,7 @@ public abstract class AbstractEcoreModelLoader {
         }
         currentUri = uri;
         EcoreUtil.resolveAll(resourceSet);
+        loadedModel = resource.getContents().get(0);
         return resource.getContents().get(0);
     }
 	
@@ -115,5 +121,4 @@ public abstract class AbstractEcoreModelLoader {
     public URI getCurrentModelUri() {
         return currentUri;
     }
-
 }
-- 
GitLab