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());
}
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;
}
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;
}
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);
}
}
}
Aggregations