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 fb9dd9c775f753419606eaf775dea1ab9bd08ce7..8f18ab65213f7d209cf92a8dbc64855df9442b3a 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; } - }