diff --git a/atomic/src/main/java/tools/vitruv/change/atomic/uuid/UuidResolver.java b/atomic/src/main/java/tools/vitruv/change/atomic/uuid/UuidResolver.java index eb311e811..510150bd0 100644 --- a/atomic/src/main/java/tools/vitruv/change/atomic/uuid/UuidResolver.java +++ b/atomic/src/main/java/tools/vitruv/change/atomic/uuid/UuidResolver.java @@ -7,7 +7,6 @@ import org.eclipse.emf.common.util.URI; import org.eclipse.emf.ecore.EObject; import org.eclipse.emf.ecore.resource.Resource; -import org.eclipse.emf.ecore.resource.ResourceSet; /** * A UUID resolver manages the mapping of {@link org.eclipse.emf.ecore.EObject} to UUIDs within one @@ -150,16 +149,6 @@ public default void resolveResource( resolveResources(Map.of(sourceResource, targetResource), targetUuidResolver); } - /** - * Creates a new {@link UuidResolver} with the given resource set. - * - * @param resourceSet is the resource set the UUID resolver uses. - * @return a new {@link UuidResolver} instance. - */ - public static UuidResolver create(ResourceSet resourceSet) { - return new UuidResolverImpl(resourceSet); - } - /** * Stores the contents of this resolver at the given {@link URI}. * diff --git a/atomic/src/main/java/tools/vitruv/change/atomic/uuid/UuidResolverFactory.java b/atomic/src/main/java/tools/vitruv/change/atomic/uuid/UuidResolverFactory.java new file mode 100644 index 000000000..5543fab01 --- /dev/null +++ b/atomic/src/main/java/tools/vitruv/change/atomic/uuid/UuidResolverFactory.java @@ -0,0 +1,26 @@ +package tools.vitruv.change.atomic.uuid; + +import org.eclipse.emf.ecore.resource.ResourceSet; + +/** + * Factory class to instantiate implementations of a {@link UuidResolver}. + * + * @author Maik Sept + */ +public class UuidResolverFactory { + + /** + * Private constructor to prevent instantiation. + */ + private UuidResolverFactory() {} + + /** + * Creates a new {@link UuidResolver} with the given resource set. + * + * @param resourceSet is the resource set the UUID resolver uses. + * @return a new {@link UuidResolver} instance. + */ + public static UuidResolver create(ResourceSet resourceSet) { + return new UuidResolverImpl(resourceSet); + } +} diff --git a/atomic/src/test/java/tools/vitruv/change/atomic/resolve/internal/AtomicEChangeUnresolver.java b/atomic/src/test/java/tools/vitruv/change/atomic/resolve/internal/AtomicEChangeUnresolver.java index 7585dcd9e..593ec9b39 100644 --- a/atomic/src/test/java/tools/vitruv/change/atomic/resolve/internal/AtomicEChangeUnresolver.java +++ b/atomic/src/test/java/tools/vitruv/change/atomic/resolve/internal/AtomicEChangeUnresolver.java @@ -7,6 +7,7 @@ import tools.vitruv.change.atomic.resolve.AtomicEChangeResolverHelper; import tools.vitruv.change.atomic.uuid.Uuid; import tools.vitruv.change.atomic.uuid.UuidResolver; +import tools.vitruv.change.atomic.uuid.UuidResolverFactory; /** * Utility class to allow unresolving changes that were created using the atomic change factories. @@ -35,7 +36,7 @@ public AtomicEChangeUnresolver(UuidResolver uuidResolver, ResourceSet uuidResolv * @return The unresolving {@link EChange}. */ public EChange unresolve(EChange eChange) { - UuidResolver temporaryUuidResolver = UuidResolver.create(uuidResolverResourceSet); + UuidResolver temporaryUuidResolver = UuidResolverFactory.create(uuidResolverResourceSet); return unresolve(eChange, temporaryUuidResolver); } @@ -46,7 +47,7 @@ public EChange unresolve(EChange eChange) { * @return The list of unresolving {@link EChange}s. */ public List> unresolve(List> eChanges) { - UuidResolver temporaryUuidResolver = UuidResolver.create(uuidResolverResourceSet); + UuidResolver temporaryUuidResolver = UuidResolverFactory.create(uuidResolverResourceSet); return eChanges.stream().map(eChange -> unresolve(eChange, temporaryUuidResolver)).toList(); } diff --git a/atomic/src/test/java/tools/vitruv/change/atomic/uuid/MultiResourceSetUuidResolvingTest.java b/atomic/src/test/java/tools/vitruv/change/atomic/uuid/MultiResourceSetUuidResolvingTest.java index e9719c6ab..b8c26822a 100644 --- a/atomic/src/test/java/tools/vitruv/change/atomic/uuid/MultiResourceSetUuidResolvingTest.java +++ b/atomic/src/test/java/tools/vitruv/change/atomic/uuid/MultiResourceSetUuidResolvingTest.java @@ -38,9 +38,9 @@ class MultiResourceSetUuidResolvingTest { void setup(@TestProject Path testProjectPath) { this.testProjectPath = testProjectPath; this.sourceResourceSet = withGlobalFactories(new ResourceSetImpl()); - this.sourceUuidResolver = UuidResolver.create(sourceResourceSet); + this.sourceUuidResolver = UuidResolverFactory.create(sourceResourceSet); this.targetResourceSet = withGlobalFactories(new ResourceSetImpl()); - this.targetUuidResolver = UuidResolver.create(targetResourceSet); + this.targetUuidResolver = UuidResolverFactory.create(targetResourceSet); } @ParameterizedTest(name = "{0} resource(s)") diff --git a/atomic/src/test/java/tools/vitruv/change/atomic/uuid/UuidResolvingTest.java b/atomic/src/test/java/tools/vitruv/change/atomic/uuid/UuidResolvingTest.java index 2c976795e..d49bada63 100644 --- a/atomic/src/test/java/tools/vitruv/change/atomic/uuid/UuidResolvingTest.java +++ b/atomic/src/test/java/tools/vitruv/change/atomic/uuid/UuidResolvingTest.java @@ -38,7 +38,7 @@ class UuidResolvingTest { void setup(@TestProject Path testProjectPath) { this.testProjectPath = testProjectPath; this.resourceSet = withGlobalFactories(new ResourceSetImpl()); - this.uuidResolver = UuidResolver.create(resourceSet); + this.uuidResolver = UuidResolverFactory.create(resourceSet); } @ParameterizedTest(name = "{0} element(s)") diff --git a/atomic/src/test/java/tools/vitruv/change/atomic/uuid/UuidSerializationTest.java b/atomic/src/test/java/tools/vitruv/change/atomic/uuid/UuidSerializationTest.java index 4373881a6..a76d8cd94 100644 --- a/atomic/src/test/java/tools/vitruv/change/atomic/uuid/UuidSerializationTest.java +++ b/atomic/src/test/java/tools/vitruv/change/atomic/uuid/UuidSerializationTest.java @@ -40,9 +40,9 @@ private URI getSerializationUri() { void setup(@TestProject Path testProjectPath) { this.testProjectPath = testProjectPath; this.storeResourceSet = withGlobalFactories(new ResourceSetImpl()); - this.storeUuidResolver = UuidResolver.create(storeResourceSet); + this.storeUuidResolver = UuidResolverFactory.create(storeResourceSet); this.loadResourceSet = withGlobalFactories(new ResourceSetImpl()); - this.loadUuidResolver = UuidResolver.create(loadResourceSet); + this.loadUuidResolver = UuidResolverFactory.create(loadResourceSet); } @ParameterizedTest(name = "{0} element(s)") diff --git a/atomic/src/test/xtend/tools/vitruv/change/atomic/EChangeTest.xtend b/atomic/src/test/xtend/tools/vitruv/change/atomic/EChangeTest.xtend index c6a67fdfa..c9b277f62 100644 --- a/atomic/src/test/xtend/tools/vitruv/change/atomic/EChangeTest.xtend +++ b/atomic/src/test/xtend/tools/vitruv/change/atomic/EChangeTest.xtend @@ -16,6 +16,7 @@ import tools.vitruv.change.atomic.util.EChangeAssertHelper import tools.vitruv.change.atomic.uuid.AtomicEChangeUuidResolver import tools.vitruv.change.atomic.uuid.Uuid import tools.vitruv.change.atomic.uuid.UuidResolver +import tools.vitruv.change.atomic.uuid.UuidResolverFactory import static tools.vitruv.change.testutils.metamodels.AllElementTypesCreators.* @@ -62,7 +63,7 @@ abstract class EChangeTest { // Create model resourceSet = new ResourceSetImpl().withGlobalFactories - uuidResolver = UuidResolver.create(resourceSet) + uuidResolver = UuidResolverFactory.create(resourceSet) atomicChangeResolver = new AtomicEChangeUuidResolver(uuidResolver) resource = resourceSet.createResource(fileUri) diff --git a/atomic/src/test/xtend/tools/vitruv/change/atomic/feature/FeatureEChangeTest.xtend b/atomic/src/test/xtend/tools/vitruv/change/atomic/feature/FeatureEChangeTest.xtend index 9fe8b630b..fd155472f 100644 --- a/atomic/src/test/xtend/tools/vitruv/change/atomic/feature/FeatureEChangeTest.xtend +++ b/atomic/src/test/xtend/tools/vitruv/change/atomic/feature/FeatureEChangeTest.xtend @@ -14,6 +14,7 @@ import tools.vitruv.change.atomic.EChange import tools.vitruv.change.atomic.EChangeTest import tools.vitruv.change.atomic.uuid.Uuid import tools.vitruv.change.atomic.uuid.UuidResolver +import tools.vitruv.change.atomic.uuid.UuidResolverFactory import static org.junit.jupiter.api.Assertions.assertNull import static org.junit.jupiter.api.Assertions.assertThrows @@ -41,7 +42,7 @@ class FeatureEChangeTest extends EChangeTest { // Load model in second resource val resourceSet2 = new ResourceSetImpl().withGlobalFactories resource2 = resourceSet2.getResource(resource.URI, true) - uuidResolver2 = UuidResolver.create(resourceSet2) + uuidResolver2 = UuidResolverFactory.create(resourceSet2) resource2.allContents.forEach[uuidResolver2.registerEObject(it)] } diff --git a/composite/src/test/xtend/tools/vitruv/change/composite/ChangeDescription2ChangeTransformationTest.xtend b/composite/src/test/xtend/tools/vitruv/change/composite/ChangeDescription2ChangeTransformationTest.xtend index 202173b0f..cbd45c31b 100644 --- a/composite/src/test/xtend/tools/vitruv/change/composite/ChangeDescription2ChangeTransformationTest.xtend +++ b/composite/src/test/xtend/tools/vitruv/change/composite/ChangeDescription2ChangeTransformationTest.xtend @@ -15,6 +15,7 @@ import org.junit.jupiter.api.^extension.ExtendWith import tools.vitruv.change.atomic.EChange import tools.vitruv.change.atomic.uuid.Uuid import tools.vitruv.change.atomic.uuid.UuidResolver +import tools.vitruv.change.atomic.uuid.UuidResolverFactory import tools.vitruv.change.composite.description.VitruviusChange import tools.vitruv.change.composite.description.VitruviusChangeResolver import tools.vitruv.change.composite.description.VitruviusChangeResolverFactory @@ -51,7 +52,7 @@ abstract class ChangeDescription2ChangeTransformationTest { def void beforeTest(@TestProject Path tempFolder) { this.tempFolder = tempFolder this.resourceSet = new ResourceSetImpl().withGlobalFactories() - this.uuidResolver = UuidResolver.create(resourceSet) + this.uuidResolver = UuidResolverFactory.create(resourceSet) this.changeRecorder = new ChangeRecorder(resourceSet) this.changeResolver = VitruviusChangeResolverFactory.forUuids(uuidResolver); this.resourceSet.startRecording @@ -124,7 +125,7 @@ abstract class ChangeDescription2ChangeTransformationTest { private def T validateChange(Function>, T> operationToValidate) { val comparisonResourceSet = new ResourceSetImpl().withGlobalFactories() val originalToComparisonResourceMapping = resourceSet.copyTo(comparisonResourceSet) - val comparisonUuidResolver = UuidResolver.create(comparisonResourceSet) + val comparisonUuidResolver = UuidResolverFactory.create(comparisonResourceSet) val comparisonChangeResolver = VitruviusChangeResolverFactory.forUuids(comparisonUuidResolver) uuidResolver.resolveResources(originalToComparisonResourceMapping, comparisonUuidResolver) operationToValidate.apply [ unresolvedChange | diff --git a/composite/src/test/xtend/tools/vitruv/change/composite/recording/ChangeRecorderTest.xtend b/composite/src/test/xtend/tools/vitruv/change/composite/recording/ChangeRecorderTest.xtend index 7c147198d..e507ff598 100644 --- a/composite/src/test/xtend/tools/vitruv/change/composite/recording/ChangeRecorderTest.xtend +++ b/composite/src/test/xtend/tools/vitruv/change/composite/recording/ChangeRecorderTest.xtend @@ -26,7 +26,7 @@ import tools.vitruv.change.atomic.feature.reference.RemoveEReference import tools.vitruv.change.atomic.feature.reference.ReplaceSingleValuedEReference import tools.vitruv.change.atomic.root.InsertRootEObject import tools.vitruv.change.atomic.root.RemoveRootEObject -import tools.vitruv.change.atomic.uuid.UuidResolver +import tools.vitruv.change.atomic.uuid.UuidResolverFactory import tools.vitruv.change.composite.description.TransactionalChange import tools.vitruv.change.testutils.RegisterMetamodelsInStandalone import tools.vitruv.change.testutils.TestProject @@ -47,7 +47,7 @@ class ChangeRecorderTest { // this test only covers general behaviour of ChangeRecorder. Whether it always produces correct change sequences // is covered by other tests val ResourceSet resourceSet = new ResourceSetImpl().withGlobalFactories() - val uuidResolver = UuidResolver.create(resourceSet) + val uuidResolver = UuidResolverFactory.create(resourceSet) val ChangeRecorder changeRecorder = new ChangeRecorder(resourceSet) private def T wrapIntoRecordedResource(T object) { diff --git a/propagation/src/main/java/tools/vitruv/change/propagation/impl/DefaultChangeRecordingModelRepository.java b/propagation/src/main/java/tools/vitruv/change/propagation/impl/DefaultChangeRecordingModelRepository.java index 6e84ae1e9..26ace5141 100644 --- a/propagation/src/main/java/tools/vitruv/change/propagation/impl/DefaultChangeRecordingModelRepository.java +++ b/propagation/src/main/java/tools/vitruv/change/propagation/impl/DefaultChangeRecordingModelRepository.java @@ -19,6 +19,7 @@ import org.eclipse.emf.ecore.resource.impl.ResourceSetImpl; import tools.vitruv.change.atomic.uuid.Uuid; import tools.vitruv.change.atomic.uuid.UuidResolver; +import tools.vitruv.change.atomic.uuid.UuidResolverFactory; import tools.vitruv.change.composite.description.TransactionalChange; import tools.vitruv.change.composite.description.VitruviusChange; import tools.vitruv.change.composite.description.VitruviusChangeResolver; @@ -66,7 +67,7 @@ public DefaultChangeRecordingModelRepository( URI correspondencesURI, Path consistencyMetadataFolder) { this.consistencyMetadataFolder = consistencyMetadataFolder; this.modelsResourceSet = withGlobalFactories(new ResourceSetImpl()); - this.uuidResolver = UuidResolver.create(modelsResourceSet); + this.uuidResolver = UuidResolverFactory.create(modelsResourceSet); this.changeResolver = VitruviusChangeResolverFactory.forUuids(uuidResolver); this.correspondenceModel = createPersistableCorrespondenceModel(correspondencesURI); this.modelsResourceSet diff --git a/testutils/integration/src/main/xtend/tools/vitruv/change/testutils/views/ChangePublishingTestView.xtend b/testutils/integration/src/main/xtend/tools/vitruv/change/testutils/views/ChangePublishingTestView.xtend index 968aaed23..ff1817cf5 100644 --- a/testutils/integration/src/main/xtend/tools/vitruv/change/testutils/views/ChangePublishingTestView.xtend +++ b/testutils/integration/src/main/xtend/tools/vitruv/change/testutils/views/ChangePublishingTestView.xtend @@ -16,6 +16,7 @@ import org.eclipse.emf.ecore.resource.impl.ResourceSetImpl import org.eclipse.xtend.lib.annotations.Delegate import tools.vitruv.change.atomic.uuid.Uuid import tools.vitruv.change.atomic.uuid.UuidResolver +import tools.vitruv.change.atomic.uuid.UuidResolverFactory import tools.vitruv.change.composite.description.PropagatedChange import tools.vitruv.change.composite.description.TransactionalChange import tools.vitruv.change.composite.description.VitruviusChangeResolver @@ -69,7 +70,7 @@ class ChangePublishingTestView implements NonTransactionalTestView { BiConsumer uuidResolution ) { this.resourceSet = new ResourceSetImpl().withGlobalFactories() - this.uuidResolver = UuidResolver.create(resourceSet) + this.uuidResolver = UuidResolverFactory.create(resourceSet) this.modelRepository = changeableModelRepository this.delegate = new BasicTestView(persistenceDirectory, resourceSet, userInteraction, uriMode) this.changeRecorder = new ChangeRecorder(resourceSet)