Search in sources :

Example 1 with Import

use of org.contextmapper.dsl.contextMappingDSL.Import in project context-mapper-dsl by ContextMapper.

the class MergeBoundedContextsTest method canFixImportsWhenMergingAcrossFiles.

@Test
void canFixImportsWhenMergingAcrossFiles() throws IOException {
    // given
    CMLResource mainResource = getResourceCopyOfTestCML("merge-bounded-contexts-fix-import-test-1.cml");
    ResourceSet additionalResources = getResourceSetOfTestCMLFiles("merge-bounded-contexts-fix-import-test-2.cml", "merge-bounded-contexts-fix-import-test-3.cml", "merge-bounded-contexts-fix-import-test-4.cml");
    // when
    MergeBoundedContextsRefactoring ar = new MergeBoundedContextsRefactoring("CustomerManagement", "AnotherContext");
    ar.refactor(mainResource, additionalResources);
    ar.persistChanges(serializer);
    mainResource = reloadResource(mainResource);
    // then
    CMLResource updatedImportResource = new CMLResource(additionalResources.getResources().stream().filter(r -> r.getURI().toString().endsWith("merge-bounded-contexts-fix-import-test-4.cml")).findFirst().get());
    updatedImportResource = reloadResource(updatedImportResource);
    Optional<Import> neededImport = updatedImportResource.getContextMappingModel().getImports().stream().filter(i -> i.getImportURI().endsWith("merge-bounded-contexts-fix-import-test-3.cml")).findFirst();
    assertTrue(neededImport.isPresent());
}
Also used : SymmetricRelationship(org.contextmapper.dsl.contextMappingDSL.SymmetricRelationship) MergeBoundedContextsRefactoring(org.contextmapper.dsl.refactoring.MergeBoundedContextsRefactoring) Import(org.contextmapper.dsl.contextMappingDSL.Import) ContextMappingModel(org.contextmapper.dsl.contextMappingDSL.ContextMappingModel) Assertions.assertNull(org.junit.jupiter.api.Assertions.assertNull) IOException(java.io.IOException) KnowledgeLevel(org.contextmapper.dsl.contextMappingDSL.KnowledgeLevel) Collectors(java.util.stream.Collectors) ResourceSet(org.eclipse.emf.ecore.resource.ResourceSet) BoundedContextType(org.contextmapper.dsl.contextMappingDSL.BoundedContextType) Test(org.junit.jupiter.api.Test) List(java.util.List) UpstreamDownstreamRelationship(org.contextmapper.dsl.contextMappingDSL.UpstreamDownstreamRelationship) Assertions.assertTrue(org.junit.jupiter.api.Assertions.assertTrue) Optional(java.util.Optional) Assertions.assertEquals(org.junit.jupiter.api.Assertions.assertEquals) ContextMap(org.contextmapper.dsl.contextMappingDSL.ContextMap) CMLResource(org.contextmapper.dsl.cml.CMLResource) BoundedContext(org.contextmapper.dsl.contextMappingDSL.BoundedContext) Import(org.contextmapper.dsl.contextMappingDSL.Import) CMLResource(org.contextmapper.dsl.cml.CMLResource) ResourceSet(org.eclipse.emf.ecore.resource.ResourceSet) MergeBoundedContextsRefactoring(org.contextmapper.dsl.refactoring.MergeBoundedContextsRefactoring) Test(org.junit.jupiter.api.Test)

Example 2 with Import

use of org.contextmapper.dsl.contextMappingDSL.Import in project context-mapper-dsl by ContextMapper.

the class CMLImportResolver method resolveImportedResources.

public Set<CMLResource> resolveImportedResources(CMLResource rootResource) {
    Set<CMLResource> importedResources = Sets.newHashSet();
    Resource resource = rootResource;
    ResourceSet rs = resource.getResourceSet();
    ContextMappingModel cmlModel = (ContextMappingModel) resource.getContents().get(0);
    for (Import cmlImport : cmlModel.getImports()) {
        URI importURI = URI.createURI(cmlImport.getImportURI()).resolve(resource.getURI());
        Resource importedResource = rs.getResource(importURI, true);
        if (isResourceCMLModel(importedResource))
            importedResources.add(new CMLResource(importedResource));
    }
    return importedResources;
}
Also used : ContextMappingModel(org.contextmapper.dsl.contextMappingDSL.ContextMappingModel) Import(org.contextmapper.dsl.contextMappingDSL.Import) Resource(org.eclipse.emf.ecore.resource.Resource) ResourceSet(org.eclipse.emf.ecore.resource.ResourceSet) URI(org.eclipse.emf.common.util.URI)

Example 3 with Import

use of org.contextmapper.dsl.contextMappingDSL.Import in project context-mapper-dsl by ContextMapper.

the class AbstractRefactoringHandler method getReferencedContextMappingModels.

protected Set<ContextMappingModel> getReferencedContextMappingModels(ContextMappingModel rootModel) {
    Set<ContextMappingModel> models = Sets.newHashSet();
    if (currentResource == null)
        return models;
    for (Import cmlImport : rootModel.getImports()) {
        ResourceSet rs = currentResource.getResourceSet();
        URI importURI = URI.createURI(cmlImport.getImportURI());
        Resource resource = rs.getResource(importURI.resolve(currentResource.getURI()), true);
        if (resource != null) {
            List<ContextMappingModel> contextMappingModels = IteratorExtensions.<ContextMappingModel>toList(Iterators.<ContextMappingModel>filter(resource.getAllContents(), ContextMappingModel.class));
            models.addAll(contextMappingModels);
        }
    }
    return models;
}
Also used : ContextMappingModel(org.contextmapper.dsl.contextMappingDSL.ContextMappingModel) Import(org.contextmapper.dsl.contextMappingDSL.Import) IResource(org.eclipse.core.resources.IResource) Resource(org.eclipse.emf.ecore.resource.Resource) CMLResource(org.contextmapper.dsl.cml.CMLResource) ResourceSet(org.eclipse.emf.ecore.resource.ResourceSet) URI(org.eclipse.emf.common.util.URI)

Example 4 with Import

use of org.contextmapper.dsl.contextMappingDSL.Import in project context-mapper-dsl by ContextMapper.

the class MergeBoundedContextsRefactoring method handleImportsToRemovedBC.

private void handleImportsToRemovedBC(BoundedContext mergedBC, BoundedContext removedBC) {
    CMLResource mergedBCResource = getResource(mergedBC);
    CMLResource removedBCResource = getResource(removedBC);
    URI mergedBCURI = mergedBCResource.getURI();
    URI removedBCURI = removedBCResource.getURI();
    // precondition: if BCs are specified in same resource, imports are okay
    if (mergedBCResource.getURI().toString().equals(removedBCResource.getURI().toString()))
        return;
    // create import to removed BC resource
    Import importToRemovedBCResource = ContextMappingDSLFactory.eINSTANCE.createImport();
    importToRemovedBCResource.setImportURI(removedBCURI.toString());
    mergedBCResource.getContextMappingModel().getImports().add(importToRemovedBCResource);
    for (CMLResource resource : additionalResourcesToCheck) {
        Set<URI> importedURIs = resource.getContextMappingModel().getImports().stream().map(i -> URI.createURI(i.getImportURI()).resolve(resource.getURI())).collect(Collectors.toSet());
        if (mergedBCURI.toString().equals(resource.getURI().toString()))
            continue;
        if (importedURIs.contains(removedBCURI) && !importedURIs.contains(mergedBCURI)) {
            Import importToAdd = ContextMappingDSLFactory.eINSTANCE.createImport();
            importToAdd.setImportURI(mergedBCURI.toString());
            resource.getContextMappingModel().getImports().add(importToAdd);
        }
    }
}
Also used : Import(org.contextmapper.dsl.contextMappingDSL.Import) ContextMappingModel(org.contextmapper.dsl.contextMappingDSL.ContextMappingModel) URI(org.eclipse.emf.common.util.URI) Set(java.util.Set) Collectors(java.util.stream.Collectors) Sets(com.google.common.collect.Sets) BoundedContextType(org.contextmapper.dsl.contextMappingDSL.BoundedContextType) List(java.util.List) Optional(java.util.Optional) ContextMappingDSLFactory(org.contextmapper.dsl.contextMappingDSL.ContextMappingDSLFactory) Relationship(org.contextmapper.dsl.contextMappingDSL.Relationship) ContextMap(org.contextmapper.dsl.contextMappingDSL.ContextMap) CMLResource(org.contextmapper.dsl.cml.CMLResource) BoundedContext(org.contextmapper.dsl.contextMappingDSL.BoundedContext) Import(org.contextmapper.dsl.contextMappingDSL.Import) CMLResource(org.contextmapper.dsl.cml.CMLResource) URI(org.eclipse.emf.common.util.URI)

Aggregations

ContextMappingModel (org.contextmapper.dsl.contextMappingDSL.ContextMappingModel)4 Import (org.contextmapper.dsl.contextMappingDSL.Import)4 CMLResource (org.contextmapper.dsl.cml.CMLResource)3 URI (org.eclipse.emf.common.util.URI)3 ResourceSet (org.eclipse.emf.ecore.resource.ResourceSet)3 List (java.util.List)2 Optional (java.util.Optional)2 Collectors (java.util.stream.Collectors)2 BoundedContext (org.contextmapper.dsl.contextMappingDSL.BoundedContext)2 BoundedContextType (org.contextmapper.dsl.contextMappingDSL.BoundedContextType)2 ContextMap (org.contextmapper.dsl.contextMappingDSL.ContextMap)2 Resource (org.eclipse.emf.ecore.resource.Resource)2 Sets (com.google.common.collect.Sets)1 IOException (java.io.IOException)1 Set (java.util.Set)1 ContextMappingDSLFactory (org.contextmapper.dsl.contextMappingDSL.ContextMappingDSLFactory)1 KnowledgeLevel (org.contextmapper.dsl.contextMappingDSL.KnowledgeLevel)1 Relationship (org.contextmapper.dsl.contextMappingDSL.Relationship)1 SymmetricRelationship (org.contextmapper.dsl.contextMappingDSL.SymmetricRelationship)1 UpstreamDownstreamRelationship (org.contextmapper.dsl.contextMappingDSL.UpstreamDownstreamRelationship)1