Skip to content

Commit

Permalink
[2124] Rename DocumentMetadataAdapter and move it in sirius-component…
Browse files Browse the repository at this point in the history
…s-emf

Bug: #2124
Signed-off-by: Pierre-Charles David <pierre-charles.david@obeo.fr>
  • Loading branch information
pcdavid committed Jul 3, 2023
1 parent 4d9c791 commit e36dc77
Show file tree
Hide file tree
Showing 17 changed files with 56 additions and 48 deletions.
3 changes: 3 additions & 0 deletions CHANGELOG.adoc
Original file line number Diff line number Diff line change
Expand Up @@ -21,6 +21,9 @@
+
As such targetObjectId is removed from RepresentationMetadata.

- https://github.com/eclipse-sirius/sirius-components/issues/2124[#2124] [sirius-web,emf] The `org.eclipse.sirius.web.services.documents.DocumentMetadataAdapter` has been renamed `ResourceMetadataAdapter` and moved to the `org.eclipse.sirius.components.emf` package (in `sirius-components-emf`).
This allows for code which does not depend on Sirius Web and the Document notion to properly display the top-level elements of a project in the UI.

=== Dependency update

- [releng] Switch to Jacoco 0.8.10
Expand Down
Original file line number Diff line number Diff line change
@@ -1,5 +1,5 @@
/*******************************************************************************
* Copyright (c) 2019, 2022 Obeo.
* Copyright (c) 2019, 2023 Obeo.
* This program and the accompanying materials
* are made available under the terms of the Eclipse Public License v2.0
* which accompanies this distribution, and is available at
Expand All @@ -10,7 +10,7 @@
* Contributors:
* Obeo - initial API and implementation
*******************************************************************************/
package org.eclipse.sirius.web.services.documents;
package org.eclipse.sirius.components.emf;

import java.util.Objects;

Expand All @@ -19,23 +19,23 @@
import org.eclipse.emf.common.notify.Notifier;

/**
* An EMF adapter used to store some metadata related to the documents.
* An EMF adapter used to store some metadata related to EMF Resources.
*
* <p>
* This adapter is currently used to store the following metadata:
* </p>
* <ul>
* <li>name: The name of the document which can be modified</li>
* <li>name: The user-friendly name of the resource if presented in the UI</li>
* </ul>
*
* @author sbegaudeau
*/
public class DocumentMetadataAdapter implements Adapter {
public class ResourceMetadataAdapter implements Adapter {
private String name;

private Notifier notifier;

public DocumentMetadataAdapter(String name) {
public ResourceMetadataAdapter(String name) {
this.name = Objects.requireNonNull(name);
}

Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -36,6 +36,7 @@
import org.eclipse.sirius.components.core.api.IRepresentationDescriptionSearchService;
import org.eclipse.sirius.components.diagrams.Diagram;
import org.eclipse.sirius.components.diagrams.description.DiagramDescription;
import org.eclipse.sirius.components.emf.ResourceMetadataAdapter;
import org.eclipse.sirius.components.emf.services.EditingContext;
import org.eclipse.sirius.components.emf.services.JSONResourceFactory;
import org.eclipse.sirius.emfjson.resource.JsonResource;
Expand All @@ -44,7 +45,6 @@
import org.eclipse.sirius.web.persistence.repositories.IProjectRepository;
import org.eclipse.sirius.web.services.api.id.IDParser;
import org.eclipse.sirius.web.services.api.projects.IProjectTemplateInitializer;
import org.eclipse.sirius.web.services.documents.DocumentMetadataAdapter;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import org.springframework.context.annotation.Configuration;
Expand Down Expand Up @@ -141,7 +141,7 @@ private Optional<RepresentationMetadata> initializeFlowProject(IEditingContext e
this.logger.warn(exception.getMessage(), exception);
}

resource.eAdapters().add(new DocumentMetadataAdapter(DOCUMENT_TITLE));
resource.eAdapters().add(new ResourceMetadataAdapter(DOCUMENT_TITLE));

resourceSet.getResources().add(resource);
}
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -35,6 +35,7 @@
import org.eclipse.sirius.components.domain.DomainFactory;
import org.eclipse.sirius.components.domain.Entity;
import org.eclipse.sirius.components.domain.Relation;
import org.eclipse.sirius.components.emf.ResourceMetadataAdapter;
import org.eclipse.sirius.components.emf.services.EditingContext;
import org.eclipse.sirius.components.emf.services.JSONResourceFactory;
import org.eclipse.sirius.components.view.ChangeContext;
Expand All @@ -60,7 +61,6 @@
import org.eclipse.sirius.web.persistence.repositories.IProjectRepository;
import org.eclipse.sirius.web.services.api.id.IDParser;
import org.eclipse.sirius.web.services.api.projects.IProjectTemplateInitializer;
import org.eclipse.sirius.web.services.documents.DocumentMetadataAdapter;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import org.springframework.context.annotation.Configuration;
Expand Down Expand Up @@ -166,7 +166,7 @@ private Optional<RepresentationMetadata> initializeStudioProject(IEditingContext
this.logger.warn(exception.getMessage(), exception);
}

resource.eAdapters().add(new DocumentMetadataAdapter(DOMAIN_DOCUMENT_NAME));
resource.eAdapters().add(new ResourceMetadataAdapter(DOMAIN_DOCUMENT_NAME));

resourceSet.getResources().add(resource);
}
Expand All @@ -184,7 +184,7 @@ private Optional<RepresentationMetadata> initializeStudioProject(IEditingContext
if (optionalViewDocumentEntity.isPresent()) {
DocumentEntity documentEntity = optionalViewDocumentEntity.get();
JsonResource resource = new JSONResourceFactory().createResourceFromPath(documentEntity.getId().toString());
resource.eAdapters().add(new DocumentMetadataAdapter(VIEW_DOCUMENT_NAME));
resource.eAdapters().add(new ResourceMetadataAdapter(VIEW_DOCUMENT_NAME));
try (var inputStream = new ByteArrayInputStream(documentEntity.getContent().getBytes())) {
resource.load(inputStream, null);
} catch (IOException exception) {
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -28,6 +28,7 @@
import org.eclipse.sirius.components.core.api.IRepresentationDescriptionSearchService;
import org.eclipse.sirius.components.diagrams.Diagram;
import org.eclipse.sirius.components.diagrams.description.DiagramDescription;
import org.eclipse.sirius.components.emf.ResourceMetadataAdapter;
import org.eclipse.sirius.components.emf.services.EditingContext;
import org.eclipse.sirius.components.emf.services.JSONResourceFactory;
import org.eclipse.sirius.emfjson.resource.JsonResource;
Expand All @@ -39,7 +40,6 @@
import org.eclipse.sirius.web.sample.papaya.view.PapayaViewProvider;
import org.eclipse.sirius.web.services.api.id.IDParser;
import org.eclipse.sirius.web.services.api.projects.IProjectTemplateInitializer;
import org.eclipse.sirius.web.services.documents.DocumentMetadataAdapter;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import org.springframework.context.annotation.Configuration;
Expand Down Expand Up @@ -139,7 +139,7 @@ private Optional<RepresentationMetadata> initializeStudioProject(IEditingContext
this.logger.warn(exception.getMessage(), exception);
}

resource.eAdapters().add(new DocumentMetadataAdapter(DOMAIN_DOCUMENT_NAME));
resource.eAdapters().add(new ResourceMetadataAdapter(DOMAIN_DOCUMENT_NAME));

resourceSet.getResources().add(resource);
}
Expand All @@ -156,7 +156,7 @@ private Optional<RepresentationMetadata> initializeStudioProject(IEditingContext
if (optionalViewDocumentEntity.isPresent()) {
DocumentEntity documentEntity = optionalViewDocumentEntity.get();
JsonResource resource = new JSONResourceFactory().createResourceFromPath(documentEntity.getId().toString());
resource.eAdapters().add(new DocumentMetadataAdapter(VIEW_DOCUMENT_NAME));
resource.eAdapters().add(new ResourceMetadataAdapter(VIEW_DOCUMENT_NAME));
try (var inputStream = new ByteArrayInputStream(documentEntity.getContent().getBytes())) {
resource.load(inputStream, null);
} catch (IOException exception) {
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -43,6 +43,7 @@
import org.eclipse.sirius.components.collaborative.api.IEditingContextActionHandler;
import org.eclipse.sirius.components.core.api.IEditingContext;
import org.eclipse.sirius.components.domain.DomainFactory;
import org.eclipse.sirius.components.emf.ResourceMetadataAdapter;
import org.eclipse.sirius.components.emf.services.EditingContext;
import org.eclipse.sirius.components.emf.services.JSONResourceFactory;
import org.eclipse.sirius.components.emf.utils.EMFResourceUtils;
Expand All @@ -56,7 +57,6 @@
import org.eclipse.sirius.emfjson.resource.JsonResource;
import org.eclipse.sirius.web.sample.papaya.domain.PapayaDomainProvider;
import org.eclipse.sirius.web.sample.papaya.view.PapayaViewProvider;
import org.eclipse.sirius.web.services.documents.DocumentMetadataAdapter;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import org.springframework.core.io.ClassPathResource;
Expand Down Expand Up @@ -116,28 +116,28 @@ private IStatus createResourceAndReturnSuccess(ResourceSet resourceSet, Consumer

private void createEmptyResource(ResourceSet resourceSet) {
JsonResource resource = new JSONResourceFactory().createResourceFromPath(UUID.randomUUID().toString());
resource.eAdapters().add(new DocumentMetadataAdapter("Others..."));
resource.eAdapters().add(new ResourceMetadataAdapter("Others..."));
resourceSet.getResources().add(resource);
}

private void createEmptyFlowResource(ResourceSet resourceSet) {
JsonResource resource = new JSONResourceFactory().createResourceFromPath(UUID.randomUUID().toString());
resource.getContents().add(FlowFactory.eINSTANCE.createSystem());
resource.eAdapters().add(new DocumentMetadataAdapter("Flow"));
resource.eAdapters().add(new ResourceMetadataAdapter("Flow"));
resourceSet.getResources().add(resource);
}

private void createEmptyDomainResource(ResourceSet resourceSet) {
JsonResource resource = new JSONResourceFactory().createResourceFromPath(UUID.randomUUID().toString());
resource.getContents().add(DomainFactory.eINSTANCE.createDomain());
resource.eAdapters().add(new DocumentMetadataAdapter("Domain"));
resource.eAdapters().add(new ResourceMetadataAdapter("Domain"));
resourceSet.getResources().add(resource);
}

private void createPapayaDomainResource(ResourceSet resourceSet) {
JsonResource resource = new JSONResourceFactory().createResourceFromPath(UUID.randomUUID().toString());
new PapayaDomainProvider().getDomains().forEach(resource.getContents()::add);
resource.eAdapters().add(new DocumentMetadataAdapter("Papaya Domain"));
resource.eAdapters().add(new ResourceMetadataAdapter("Papaya Domain"));
resourceSet.getResources().add(resource);
}

Expand All @@ -148,29 +148,29 @@ private void createEmptyViewResource(ResourceSet resourceSet) {
newView.getDescriptions().add(diagramDescription);
JsonResource resource = new JSONResourceFactory().createResourceFromPath(UUID.randomUUID().toString());
resource.getContents().add(newView);
resource.eAdapters().add(new DocumentMetadataAdapter("View"));
resource.eAdapters().add(new ResourceMetadataAdapter("View"));
resourceSet.getResources().add(resource);
}

private void createPapayaViewResource(ResourceSet resourceSet) {

JsonResource resource = new JSONResourceFactory().createResourceFromPath(UUID.randomUUID().toString());
resource.getContents().add(new PapayaViewProvider().getView());
resource.eAdapters().add(new DocumentMetadataAdapter("Papaya View"));
resource.eAdapters().add(new ResourceMetadataAdapter("Papaya View"));
resourceSet.getResources().add(resource);
}


private void createRobotFlowResource(ResourceSet resourceSet) {
this.getResourceFromClassPathResource(new ClassPathResource("robot.flow")).ifPresent(resource -> {
resource.eAdapters().add(new DocumentMetadataAdapter("Robot Flow"));
resource.eAdapters().add(new ResourceMetadataAdapter("Robot Flow"));
resourceSet.getResources().add(resource);
});
}

private void createBigGuyFlowResource(ResourceSet resourceSet) {
this.getResourceFromClassPathResource(new ClassPathResource("Big_Guy.flow")).ifPresent(resource -> {
resource.eAdapters().add(new DocumentMetadataAdapter("Big Guy Flow (17k elements)"));
resource.eAdapters().add(new ResourceMetadataAdapter("Big Guy Flow (17k elements)"));
resourceSet.getResources().add(resource);
});
}
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -29,6 +29,7 @@
import org.eclipse.sirius.components.core.api.IInput;
import org.eclipse.sirius.components.core.api.IPayload;
import org.eclipse.sirius.components.core.configuration.StereotypeDescription;
import org.eclipse.sirius.components.emf.ResourceMetadataAdapter;
import org.eclipse.sirius.components.emf.services.EditingContext;
import org.eclipse.sirius.components.emf.services.JSONResourceFactory;
import org.eclipse.sirius.emfjson.resource.JsonResource;
Expand Down Expand Up @@ -142,7 +143,7 @@ private void createDocument(One<IPayload> payloadSink, Many<ChangeDescription> c
this.logger.warn(exception.getMessage(), exception);
}

resource.eAdapters().add(new DocumentMetadataAdapter(name));
resource.eAdapters().add(new ResourceMetadataAdapter(name));

resourceSet.getResources().add(resource);

Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -28,6 +28,7 @@
import org.eclipse.sirius.components.core.api.IInput;
import org.eclipse.sirius.components.core.api.IPayload;
import org.eclipse.sirius.components.core.api.SuccessPayload;
import org.eclipse.sirius.components.emf.ResourceMetadataAdapter;
import org.eclipse.sirius.components.emf.services.EditingContext;
import org.eclipse.sirius.web.services.api.document.Document;
import org.eclipse.sirius.web.services.api.document.IDocumentService;
Expand Down Expand Up @@ -101,8 +102,8 @@ public void handle(One<IPayload> payloadSink, Many<ChangeDescription> changeDesc
.findFirst()
.ifPresent(resource -> {
resource.eAdapters().stream()
.filter(DocumentMetadataAdapter.class::isInstance)
.map(DocumentMetadataAdapter.class::cast)
.filter(ResourceMetadataAdapter.class::isInstance)
.map(ResourceMetadataAdapter.class::cast)
.findFirst()
.ifPresent(adapter -> adapter.setName(newName));
});
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -44,6 +44,7 @@
import org.eclipse.sirius.components.core.api.IEditingContext;
import org.eclipse.sirius.components.core.api.IInput;
import org.eclipse.sirius.components.core.api.IPayload;
import org.eclipse.sirius.components.emf.ResourceMetadataAdapter;
import org.eclipse.sirius.components.emf.services.EditingContext;
import org.eclipse.sirius.components.emf.services.JSONResourceFactory;
import org.eclipse.sirius.components.emf.utils.EMFResourceUtils;
Expand Down Expand Up @@ -141,7 +142,7 @@ public void handle(One<IPayload> payloadSink, Many<ChangeDescription> changeDesc
this.logger.warn(exception.getMessage(), exception);
}

resource.eAdapters().add(new DocumentMetadataAdapter(name));
resource.eAdapters().add(new ResourceMetadataAdapter(name));
resourceSet.getResources().add(resource);

payload = new UploadDocumentSuccessPayload(input.id(), document);
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -25,6 +25,7 @@
import org.eclipse.emf.ecore.resource.Resource;
import org.eclipse.sirius.components.core.api.IEditingContext;
import org.eclipse.sirius.components.core.api.IEditingContextPersistenceService;
import org.eclipse.sirius.components.emf.ResourceMetadataAdapter;
import org.eclipse.sirius.components.emf.services.EObjectIDManager;
import org.eclipse.sirius.components.emf.services.EditingContext;
import org.eclipse.sirius.emfjson.resource.JsonResource;
Expand All @@ -35,7 +36,6 @@
import org.eclipse.sirius.web.services.api.events.DocumentsModifiedEvent;
import org.eclipse.sirius.web.services.api.id.IDParser;
import org.eclipse.sirius.web.services.documents.DocumentMapper;
import org.eclipse.sirius.web.services.documents.DocumentMetadataAdapter;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import org.springframework.context.ApplicationEventPublisher;
Expand Down Expand Up @@ -151,9 +151,9 @@ private Optional<DocumentEntity> createNewDocumentEntityWithoutContent(Resource
.flatMap(this.projectRepository::findById)
.map(projectEntity -> {
var name = resource.eAdapters().stream()
.filter(DocumentMetadataAdapter.class::isInstance)
.map(DocumentMetadataAdapter.class::cast)
.findFirst().map(DocumentMetadataAdapter::getName)
.filter(ResourceMetadataAdapter.class::isInstance)
.map(ResourceMetadataAdapter.class::cast)
.findFirst().map(ResourceMetadataAdapter::getName)
.orElse("");

DocumentEntity documentEntity = new DocumentEntity();
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -28,6 +28,7 @@
import org.eclipse.sirius.components.core.api.IEditingContext;
import org.eclipse.sirius.components.core.api.IEditingContextSearchService;
import org.eclipse.sirius.components.core.configuration.IRepresentationDescriptionRegistryConfigurer;
import org.eclipse.sirius.components.emf.ResourceMetadataAdapter;
import org.eclipse.sirius.components.emf.services.EditingContext;
import org.eclipse.sirius.components.emf.services.EditingContextCrossReferenceAdapter;
import org.eclipse.sirius.components.emf.services.JSONResourceFactory;
Expand All @@ -37,7 +38,6 @@
import org.eclipse.sirius.web.persistence.repositories.IDocumentRepository;
import org.eclipse.sirius.web.persistence.repositories.IProjectRepository;
import org.eclipse.sirius.web.services.api.id.IDParser;
import org.eclipse.sirius.web.services.documents.DocumentMetadataAdapter;
import org.eclipse.sirius.web.services.editingcontext.api.IDynamicRepresentationDescriptionService;
import org.eclipse.sirius.web.services.editingcontext.api.IEditingDomainFactoryService;
import org.eclipse.sirius.web.services.representations.RepresentationDescriptionRegistry;
Expand Down Expand Up @@ -107,7 +107,7 @@ public Optional<IEditingContext> findById(String editingContextId) {
resourceSet.getResources().add(resource);
resource.load(inputStream, null);

resource.eAdapters().add(new DocumentMetadataAdapter(documentEntity.getName()));
resource.eAdapters().add(new ResourceMetadataAdapter(documentEntity.getName()));
} catch (IOException | IllegalArgumentException exception) {
this.logger.warn("An error occured while loading document {}: {}.", documentEntity.getId(), exception.getMessage());
resourceSet.getResources().remove(resource);
Expand Down

0 comments on commit e36dc77

Please sign in to comment.