From ec46f5eb6496db0a9d8a2fbb9aa1db9b92dc1a7c Mon Sep 17 00:00:00 2001
From: Nikolaus Huber <nikolaus.huber@uni-wuerzburg.de>
Date: Thu, 26 Jun 2014 09:35:00 +0000
Subject: [PATCH] split *.descartes.model.repository package: - connector for
 performance data repositories has been moved to
 *.descartes.evaluation.performance - logic for handling model files will be
 moved to *.descartes.model

git-svn-id: https://se1.informatik.uni-wuerzburg.de/usvn/svn/code/DMM/trunk@16122 9e42b895-fcda-4063-8a3b-11be15eb1bbd
---
 .../META-INF/MANIFEST.MF                      | 12 ++-
 .../IPerformanceDataRepositoryHandler.java    | 17 ++++
 .../ObservationRepositoryHandler.java         | 62 +++++++++++++++
 .../ObservationRepositoryHelper.java          | 52 ++++++++++++
 .../ObservationRepositoryModelLoader.java     | 45 +++++++++++
 .../repository/PerfDataRepoConverter.java     | 79 +++++++++++++++++++
 .../PerformanceDataRepositoryHandler.java     | 54 +++++++++++++
 ...rformanceDataRepositoryHandlerFactory.java | 18 +++++
 .../PerformanceDataRepositoryModelLoader.java | 51 ++++++++++++
 9 files changed, 389 insertions(+), 1 deletion(-)
 create mode 100644 edu.kit.ipd.descartes.adaptation.evaluation.performance/src/edu/kit/ipd/descartes/adaptation/evaluation/performance/repository/IPerformanceDataRepositoryHandler.java
 create mode 100644 edu.kit.ipd.descartes.adaptation.evaluation.performance/src/edu/kit/ipd/descartes/adaptation/evaluation/performance/repository/ObservationRepositoryHandler.java
 create mode 100644 edu.kit.ipd.descartes.adaptation.evaluation.performance/src/edu/kit/ipd/descartes/adaptation/evaluation/performance/repository/ObservationRepositoryHelper.java
 create mode 100644 edu.kit.ipd.descartes.adaptation.evaluation.performance/src/edu/kit/ipd/descartes/adaptation/evaluation/performance/repository/ObservationRepositoryModelLoader.java
 create mode 100644 edu.kit.ipd.descartes.adaptation.evaluation.performance/src/edu/kit/ipd/descartes/adaptation/evaluation/performance/repository/PerfDataRepoConverter.java
 create mode 100644 edu.kit.ipd.descartes.adaptation.evaluation.performance/src/edu/kit/ipd/descartes/adaptation/evaluation/performance/repository/PerformanceDataRepositoryHandler.java
 create mode 100644 edu.kit.ipd.descartes.adaptation.evaluation.performance/src/edu/kit/ipd/descartes/adaptation/evaluation/performance/repository/PerformanceDataRepositoryHandlerFactory.java
 create mode 100644 edu.kit.ipd.descartes.adaptation.evaluation.performance/src/edu/kit/ipd/descartes/adaptation/evaluation/performance/repository/PerformanceDataRepositoryModelLoader.java

diff --git a/edu.kit.ipd.descartes.adaptation.evaluation.performance/META-INF/MANIFEST.MF b/edu.kit.ipd.descartes.adaptation.evaluation.performance/META-INF/MANIFEST.MF
index 1bd23780..382a7e26 100644
--- a/edu.kit.ipd.descartes.adaptation.evaluation.performance/META-INF/MANIFEST.MF
+++ b/edu.kit.ipd.descartes.adaptation.evaluation.performance/META-INF/MANIFEST.MF
@@ -7,13 +7,23 @@ Bundle-Activator: edu.kit.ipd.descartes.adaptation.evaluation.performance.Activa
 Bundle-Vendor: Descartes Research Group
 Bundle-RequiredExecutionEnvironment: JavaSE-1.6
 Import-Package: edu.kit.ipd.descartes.core,
+ edu.kit.ipd.descartes.identifier,
  edu.kit.ipd.descartes.mm.adaptation,
+ edu.kit.ipd.descartes.adaptation.model,
  edu.kit.ipd.descartes.perfdatarepo,
+ edu.kit.ipd.descartes.ql.models.mapping.domain,
+ edu.kit.ipd.descartes.ql.models.mapping.mapping,
+ edu.kit.ipd.descartes.ql.models.repository,
  org.apache.log4j;version="1.2.15",
  org.eclipse.emf.common.util,
  org.eclipse.emf.ecore,
  org.eclipse.emf.ecore.util,
+ org.eclipse.emf.ecore.resource,
+ org.eclipse.emf.ecore.resource.impl,
+ org.eclipse.emf.ecore.xmi,
+ org.eclipse.emf.ecore.xmi.impl,
  org.osgi.framework;version="1.3.0"
-Export-Package: edu.kit.ipd.descartes.adaptation.evaluation.performance, 
+Export-Package: edu.kit.ipd.descartes.adaptation.evaluation.performance,
+ edu.kit.ipd.descartes.adaptation.evaluation.performance.repository,
  edu.kit.ipd.descartes.adaptation.evaluation.performance.weightingfunction
 
diff --git a/edu.kit.ipd.descartes.adaptation.evaluation.performance/src/edu/kit/ipd/descartes/adaptation/evaluation/performance/repository/IPerformanceDataRepositoryHandler.java b/edu.kit.ipd.descartes.adaptation.evaluation.performance/src/edu/kit/ipd/descartes/adaptation/evaluation/performance/repository/IPerformanceDataRepositoryHandler.java
new file mode 100644
index 00000000..98c71a7f
--- /dev/null
+++ b/edu.kit.ipd.descartes.adaptation.evaluation.performance/src/edu/kit/ipd/descartes/adaptation/evaluation/performance/repository/IPerformanceDataRepositoryHandler.java
@@ -0,0 +1,17 @@
+package edu.kit.ipd.descartes.adaptation.evaluation.performance.repository;
+
+import org.eclipse.emf.ecore.EObject;
+
+import edu.kit.ipd.descartes.perfdatarepo.Impact;
+import edu.kit.ipd.descartes.perfdatarepo.Result;
+
+public interface IPerformanceDataRepositoryHandler {
+    
+    public void load(String modelFileUri);
+    
+    public Impact getLatestImpact();
+
+    public Result getCurrentSystemState();
+
+    public EObject getRepository();
+}
diff --git a/edu.kit.ipd.descartes.adaptation.evaluation.performance/src/edu/kit/ipd/descartes/adaptation/evaluation/performance/repository/ObservationRepositoryHandler.java b/edu.kit.ipd.descartes.adaptation.evaluation.performance/src/edu/kit/ipd/descartes/adaptation/evaluation/performance/repository/ObservationRepositoryHandler.java
new file mode 100644
index 00000000..4922aa52
--- /dev/null
+++ b/edu.kit.ipd.descartes.adaptation.evaluation.performance/src/edu/kit/ipd/descartes/adaptation/evaluation/performance/repository/ObservationRepositoryHandler.java
@@ -0,0 +1,62 @@
+package edu.kit.ipd.descartes.adaptation.evaluation.performance.repository;
+
+import static edu.kit.ipd.descartes.adaptation.evaluation.performance.repository.PerfDataRepoConverter.convertObservableImpact;
+
+import org.apache.log4j.Logger;
+import org.eclipse.emf.common.util.URI;
+import org.eclipse.emf.ecore.EObject;
+
+import edu.kit.ipd.descartes.adaptation.model.AbstractEcoreModelLoader;
+import edu.kit.ipd.descartes.perfdatarepo.Impact;
+import edu.kit.ipd.descartes.perfdatarepo.Result;
+import edu.kit.ipd.descartes.ql.models.repository.Observation;
+import edu.kit.ipd.descartes.ql.models.repository.ObservationRepository;
+//import edu.kit.ipd.descartes.adaptation.model.repository.dmm.AdaptationProcessModelLoader;
+
+public class ObservationRepositoryHandler implements IPerformanceDataRepositoryHandler {
+
+    private static Logger logger = Logger.getLogger(ObservationRepositoryHandler.class);
+    private AbstractEcoreModelLoader modelLoader = null;
+    private ObservationRepository repository = null;
+
+    public ObservationRepositoryHandler() {
+        modelLoader = ObservationRepositoryModelLoader.getInstance();
+        logger.debug("ObservationRepositoryHandler loaded.");
+    }
+
+    @Override
+    public Impact getLatestImpact() {
+        return convertObservableImpact(repository.getLatestImpact());
+    }
+
+    @Override
+    public void load(String modelFileUri) {
+        repository = (ObservationRepository) modelLoader.load(URI.createFileURI(modelFileUri));
+    }
+
+    @Override
+    public Result getCurrentSystemState() {
+        Observation o = repository.getLatestObservation();
+
+//        WeightedTactic latestTactic = TacticsHistory.getInstance().getLatestAppliedTactic();
+//        if (latestTactic == null) {
+//            o = repository.getLatestObservation();
+//        } else {
+//            // TODO: Blue Yonder specific, introduce abstraction layer
+//            String expName = BlueYonderExperimentTracker.getInstance.getExperimentNameForDistributedDataCenter(AdaptationProcessModelLoader.getDistributedDataCenter());
+//            logger.debug("Searching for result of " + expName);
+//            o = ObservationRepositoryHelper.getResultEndingWith(expName, repository);
+//        }
+
+        if (o == null)
+            return null;
+        else 
+            return PerfDataRepoConverter.convertResult(o);
+    }
+
+    @Override
+    public EObject getRepository() {
+        return repository;
+    }
+
+}
diff --git a/edu.kit.ipd.descartes.adaptation.evaluation.performance/src/edu/kit/ipd/descartes/adaptation/evaluation/performance/repository/ObservationRepositoryHelper.java b/edu.kit.ipd.descartes.adaptation.evaluation.performance/src/edu/kit/ipd/descartes/adaptation/evaluation/performance/repository/ObservationRepositoryHelper.java
new file mode 100644
index 00000000..1ce114f9
--- /dev/null
+++ b/edu.kit.ipd.descartes.adaptation.evaluation.performance/src/edu/kit/ipd/descartes/adaptation/evaluation/performance/repository/ObservationRepositoryHelper.java
@@ -0,0 +1,52 @@
+package edu.kit.ipd.descartes.adaptation.evaluation.performance.repository;
+
+import java.util.List;
+
+import org.eclipse.emf.ecore.util.EcoreUtil;
+
+import edu.kit.ipd.descartes.ql.models.repository.ObservableImpact;
+import edu.kit.ipd.descartes.ql.models.repository.Observation;
+import edu.kit.ipd.descartes.ql.models.repository.ObservationRepository;
+
+public class ObservationRepositoryHelper {
+    
+    public static ObservableImpact searchImpactOfTactic(String name, ObservationRepository repository) {
+        // Get correct result
+        Observation o = getResultEndingWith(name, repository);
+
+        // Derive impact from result
+        ObservableImpact i = getImpactForObservation(o, repository);
+        return i;
+    }
+
+    public static ObservableImpact getImpactForObservation(Observation o, ObservationRepository repo) {
+        if (o == null || repo == null)
+            return null;
+        
+        List<ObservableImpact> impacts = repo.getImpacts();
+        for (ObservableImpact oi : impacts) {
+            if (EcoreUtil.equals(oi.getAfter(), o))
+                return oi;
+        }
+
+        return null;
+    }
+
+    /**
+     * Searches the observation repository for an observation that ends with the given suffix.
+     * 
+     * @param suffix
+     * @return first result that ends the given suffix, null otherwise.
+     */
+    public static Observation getResultEndingWith(String suffix, ObservationRepository repo) {
+        if (suffix == null || repo == null)
+            return null;
+        
+        List<Observation> results = repo.getObservations();
+        for (Observation o : results) {
+            if (o.getIdentifier().endsWith(suffix))
+                return o;
+        }
+        return null;
+    }
+}
diff --git a/edu.kit.ipd.descartes.adaptation.evaluation.performance/src/edu/kit/ipd/descartes/adaptation/evaluation/performance/repository/ObservationRepositoryModelLoader.java b/edu.kit.ipd.descartes.adaptation.evaluation.performance/src/edu/kit/ipd/descartes/adaptation/evaluation/performance/repository/ObservationRepositoryModelLoader.java
new file mode 100644
index 00000000..b083974f
--- /dev/null
+++ b/edu.kit.ipd.descartes.adaptation.evaluation.performance/src/edu/kit/ipd/descartes/adaptation/evaluation/performance/repository/ObservationRepositoryModelLoader.java
@@ -0,0 +1,45 @@
+package edu.kit.ipd.descartes.adaptation.evaluation.performance.repository;
+
+import org.eclipse.emf.ecore.EPackage;
+import org.eclipse.emf.ecore.resource.Resource;
+import org.eclipse.emf.ecore.resource.ResourceSet;
+import org.eclipse.emf.ecore.resource.impl.ResourceSetImpl;
+import org.eclipse.emf.ecore.xmi.impl.XMIResourceFactoryImpl;
+
+import edu.kit.ipd.descartes.adaptation.model.AbstractEcoreModelLoader;
+import edu.kit.ipd.descartes.ql.models.repository.RepositoryPackage;
+
+public class ObservationRepositoryModelLoader extends AbstractEcoreModelLoader {
+
+    public static final EPackage[] OBSERVATION_REPO_EPACKAGES = new EPackage[] { 
+        RepositoryPackage.eINSTANCE
+        };
+
+    private static ObservationRepositoryModelLoader instance = null;
+
+    public static ObservationRepositoryModelLoader getInstance() {
+        if (instance == null) {
+            instance = new ObservationRepositoryModelLoader();
+        }
+        return instance;
+    }
+    
+    private ObservationRepositoryModelLoader() {
+        initializeResourceSet(new ResourceSetImpl());
+    }
+    
+    @Override
+    public void initializeResourceSet(ResourceSet resourceSet) {
+        setResourceSet(resourceSet);
+        
+        /* Register the default resource factory -- only needed for stand-alone! */
+        getResourceSet().getResourceFactoryRegistry().getExtensionToFactoryMap()
+                .put(Resource.Factory.Registry.DEFAULT_EXTENSION, new XMIResourceFactoryImpl());
+
+        /* Register also the packages needed for the DMM meta model */
+        for (EPackage ePackage : OBSERVATION_REPO_EPACKAGES) {
+            getResourceSet().getResourceFactoryRegistry().getExtensionToFactoryMap().put(ePackage.getNsURI(), ePackage);
+        }
+    }
+
+}
diff --git a/edu.kit.ipd.descartes.adaptation.evaluation.performance/src/edu/kit/ipd/descartes/adaptation/evaluation/performance/repository/PerfDataRepoConverter.java b/edu.kit.ipd.descartes.adaptation.evaluation.performance/src/edu/kit/ipd/descartes/adaptation/evaluation/performance/repository/PerfDataRepoConverter.java
new file mode 100644
index 00000000..7ca9d1d5
--- /dev/null
+++ b/edu.kit.ipd.descartes.adaptation.evaluation.performance/src/edu/kit/ipd/descartes/adaptation/evaluation/performance/repository/PerfDataRepoConverter.java
@@ -0,0 +1,79 @@
+package edu.kit.ipd.descartes.adaptation.evaluation.performance.repository;
+
+import java.util.ArrayList;
+import java.util.Collection;
+
+import edu.kit.ipd.descartes.perfdatarepo.Impact;
+import edu.kit.ipd.descartes.perfdatarepo.MeasuredEntity;
+import edu.kit.ipd.descartes.perfdatarepo.MetricType;
+import edu.kit.ipd.descartes.perfdatarepo.MetricValue;
+import edu.kit.ipd.descartes.perfdatarepo.PerfdatarepoFactory;
+import edu.kit.ipd.descartes.perfdatarepo.Result;
+import edu.kit.ipd.descartes.ql.models.mapping.domain.DecimalResult;
+import edu.kit.ipd.descartes.ql.models.mapping.domain.Entity;
+import edu.kit.ipd.descartes.ql.models.mapping.domain.Probe;
+import edu.kit.ipd.descartes.ql.models.mapping.domain.Resource;
+import edu.kit.ipd.descartes.ql.models.mapping.domain.Service;
+import edu.kit.ipd.descartes.ql.models.mapping.mapping.EntityMapping;
+import edu.kit.ipd.descartes.ql.models.repository.ObservableImpact;
+import edu.kit.ipd.descartes.ql.models.repository.Observation;
+
+public class PerfDataRepoConverter {
+    
+    public static Impact convertObservableImpact(ObservableImpact o) {
+        if (o == null)
+            return null;
+        Impact impact = PerfdatarepoFactory.eINSTANCE.createImpact();
+        impact.setId(o.getIdentifier());
+        impact.setName("ObservableImpact (ID: " + o.getIdentifier() + ")");
+        impact.setBefore(convertResult(o.getBefore()));
+        impact.setAfter(convertResult(o.getAfter()));
+        return impact;
+    }
+
+    public static Result convertResult(Observation o) {
+        Result result = PerfdatarepoFactory.eINSTANCE.createResult();
+        result.setId(o.getIdentifier());
+        result.setName("Observation (ID: " + o.getIdentifier() + ")");
+        Collection<MetricValue> values = convertMapping(o.getObservation());
+        result.getMetricValues().addAll(values);
+        return result;
+    }
+
+    public static Collection<MetricValue> convertMapping(EntityMapping observation) {
+        Collection<MetricValue> values = new ArrayList<MetricValue>();
+        
+        for (Resource r : observation.getResources()) {
+            values.addAll(convertProbes(r));        
+        }
+        
+        for (Service s : observation.getServices()) {
+            values.addAll(convertProbes(s));   
+        }
+        
+        return values;
+    }
+
+    private static Collection<MetricValue> convertProbes(Entity e) {
+        Collection<MetricValue> values = new ArrayList<MetricValue>();
+        MetricType mType = PerfdatarepoFactory.eINSTANCE.createMetricType();
+        mType.setName(e.getProbes().get(0).getMetricName());
+        mType.setId(e.getProbes().get(0).getMetricName());
+        MeasuredEntity entity = PerfdatarepoFactory.eINSTANCE.createMeasuredEntity();
+        entity.setName(e.getAlias());
+        entity.setId(e.getIdentifier());
+
+        for (Probe p : e.getProbes()) {
+            DecimalResult r = (DecimalResult) p;
+            MetricValue value = PerfdatarepoFactory.eINSTANCE.createMetricValue();
+            value.setMeasuredEntity(entity);
+            value.setName(e.getAlias() + ": " + r.getMetricName());
+            value.setMetricType(mType);
+            value.setValue(r.getValue().doubleValue());
+            values.add(value);
+        }
+        
+        return values;
+    }
+
+}
diff --git a/edu.kit.ipd.descartes.adaptation.evaluation.performance/src/edu/kit/ipd/descartes/adaptation/evaluation/performance/repository/PerformanceDataRepositoryHandler.java b/edu.kit.ipd.descartes.adaptation.evaluation.performance/src/edu/kit/ipd/descartes/adaptation/evaluation/performance/repository/PerformanceDataRepositoryHandler.java
new file mode 100644
index 00000000..4825beff
--- /dev/null
+++ b/edu.kit.ipd.descartes.adaptation.evaluation.performance/src/edu/kit/ipd/descartes/adaptation/evaluation/performance/repository/PerformanceDataRepositoryHandler.java
@@ -0,0 +1,54 @@
+package edu.kit.ipd.descartes.adaptation.evaluation.performance.repository;
+
+import org.apache.log4j.Logger;
+import org.eclipse.emf.common.util.EList;
+import org.eclipse.emf.common.util.URI;
+import org.eclipse.emf.ecore.EObject;
+
+import edu.kit.ipd.descartes.perfdatarepo.Impact;
+import edu.kit.ipd.descartes.perfdatarepo.PerformanceDataRepository;
+import edu.kit.ipd.descartes.perfdatarepo.Result;
+
+public class PerformanceDataRepositoryHandler implements IPerformanceDataRepositoryHandler {
+    
+    private static Logger logger = Logger.getLogger(PerformanceDataRepositoryHandler.class); 
+    
+    private int iteration = 0;
+    
+    private PerformanceDataRepository repository = null;
+    private PerformanceDataRepositoryModelLoader modelLoader = null;
+    
+    public PerformanceDataRepositoryHandler() {
+        modelLoader = PerformanceDataRepositoryModelLoader.getInstance();
+        logger.debug("PerformanceDataRepositoryHandler instantiated.");
+    }
+    
+    public void load(String fileUri) {
+        repository = modelLoader.load(URI.createFileURI(fileUri));
+    }
+
+    @Override
+    public Impact getLatestImpact() {
+        EList<Impact> impactHistory = repository.getImpactHistory();
+        Impact mostRecentImpact =  impactHistory.get(impactHistory.size() - 1);
+                
+        for (Impact currentImpact : impactHistory) {
+            Result afterResult = currentImpact.getAfter();
+            if (afterResult.getTimestamp().compareTo(mostRecentImpact.getAfter().getTimestamp()) > 0 )
+                mostRecentImpact = currentImpact;
+        }
+        
+        return mostRecentImpact;
+    }
+
+    @Override
+    public Result getCurrentSystemState() {
+        return repository.getResultHistory().get(iteration++);
+    }
+
+    @Override
+    public EObject getRepository() {
+        return repository;
+    }
+
+}
diff --git a/edu.kit.ipd.descartes.adaptation.evaluation.performance/src/edu/kit/ipd/descartes/adaptation/evaluation/performance/repository/PerformanceDataRepositoryHandlerFactory.java b/edu.kit.ipd.descartes.adaptation.evaluation.performance/src/edu/kit/ipd/descartes/adaptation/evaluation/performance/repository/PerformanceDataRepositoryHandlerFactory.java
new file mode 100644
index 00000000..e9f5328f
--- /dev/null
+++ b/edu.kit.ipd.descartes.adaptation.evaluation.performance/src/edu/kit/ipd/descartes/adaptation/evaluation/performance/repository/PerformanceDataRepositoryHandlerFactory.java
@@ -0,0 +1,18 @@
+package edu.kit.ipd.descartes.adaptation.evaluation.performance.repository;
+
+import edu.kit.ipd.descartes.perfdatarepo.PerformanceDataRepository;
+import edu.kit.ipd.descartes.ql.models.repository.ObservationRepository;
+
+public class PerformanceDataRepositoryHandlerFactory {
+
+    public static IPerformanceDataRepositoryHandler createHandler(String repositoryType) {
+
+        if (repositoryType.equals(PerformanceDataRepository.class.getName()))
+            return new PerformanceDataRepositoryHandler();
+        
+        if (repositoryType.equals(ObservationRepository.class.getName()))
+            return new ObservationRepositoryHandler();
+        
+        return null;
+    }
+}
diff --git a/edu.kit.ipd.descartes.adaptation.evaluation.performance/src/edu/kit/ipd/descartes/adaptation/evaluation/performance/repository/PerformanceDataRepositoryModelLoader.java b/edu.kit.ipd.descartes.adaptation.evaluation.performance/src/edu/kit/ipd/descartes/adaptation/evaluation/performance/repository/PerformanceDataRepositoryModelLoader.java
new file mode 100644
index 00000000..4de1502b
--- /dev/null
+++ b/edu.kit.ipd.descartes.adaptation.evaluation.performance/src/edu/kit/ipd/descartes/adaptation/evaluation/performance/repository/PerformanceDataRepositoryModelLoader.java
@@ -0,0 +1,51 @@
+package edu.kit.ipd.descartes.adaptation.evaluation.performance.repository;
+
+import org.eclipse.emf.common.util.URI;
+import org.eclipse.emf.ecore.EPackage;
+import org.eclipse.emf.ecore.resource.Resource;
+import org.eclipse.emf.ecore.resource.ResourceSet;
+import org.eclipse.emf.ecore.resource.impl.ResourceSetImpl;
+import org.eclipse.emf.ecore.xmi.impl.XMIResourceFactoryImpl;
+
+import edu.kit.ipd.descartes.adaptation.model.AbstractEcoreModelLoader;
+import edu.kit.ipd.descartes.perfdatarepo.PerfdatarepoPackage;
+import edu.kit.ipd.descartes.perfdatarepo.PerformanceDataRepository;
+
+public class PerformanceDataRepositoryModelLoader extends AbstractEcoreModelLoader {
+
+    public static final EPackage[] PERF_DATA_REPO_EPACKAGES = new EPackage[] { PerfdatarepoPackage.eINSTANCE };
+
+    private static PerformanceDataRepositoryModelLoader instance = null;
+
+    public static PerformanceDataRepositoryModelLoader getInstance() {
+        if (instance == null) {
+            instance = new PerformanceDataRepositoryModelLoader();
+        }
+        return instance;
+    }
+
+
+    private PerformanceDataRepositoryModelLoader() {
+        initializeResourceSet(new ResourceSetImpl());
+    }
+
+    @Override
+    public void initializeResourceSet(ResourceSet resourceSet) {
+        setResourceSet(resourceSet);
+        /* Register the default resource factory -- only needed for stand-alone! */
+        getResourceSet().getResourceFactoryRegistry().getExtensionToFactoryMap()
+                .put(Resource.Factory.Registry.DEFAULT_EXTENSION, new XMIResourceFactoryImpl());
+
+        /* Register also the packages needed for the DMM meta model */
+        for (EPackage ePackage : PERF_DATA_REPO_EPACKAGES) {
+            getResourceSet().getResourceFactoryRegistry().getExtensionToFactoryMap().put(ePackage.getNsURI(), ePackage);
+        }
+
+    }
+
+    @Override
+    public PerformanceDataRepository load(URI uri) {
+        return (PerformanceDataRepository) super.load(uri);
+    }
+
+}
-- 
GitLab