Skip to content

Commit 5d6d352

Browse files
committed
[5683] Decouple library publication from a single IInput type
Bug: #5683 Signed-off-by: Florent Latombe <florent.latombe@obeo.fr>
1 parent b143db7 commit 5d6d352

File tree

12 files changed

+56
-24
lines changed

12 files changed

+56
-24
lines changed

CHANGELOG.adoc

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -55,6 +55,7 @@ On the frontend, the `ProjectTemplateCard` component has been removed; the `NewP
5555
- Remove the useless property `WorkbenchEntry#kind` from the GraphQL API and the DTO.
5656
The `WorkbenchEntry` object has also been transformed into a record
5757
- https://github.com/eclipse-sirius/sirius-web/issues/4348[#4348] [diagram] The interfaces `ISingleClickOnMultipleDiagramElementHandler` `ISingleClickOnOneDiagramElementHandler` `IPaletteToolsProvider` have been modified to take the `DiagramContext` instead of the `Diagram` as parameter.
58+
- https://github.com/eclipse-sirius/sirius-web/issues/5684[#5684] All APIs related to library publication now rely on interface `IPublishLibraryInput` instead of record `PublishLibrariesInput`, making it extensible by downstream applications.
5859

5960

6061
=== Dependency update
@@ -126,7 +127,6 @@ Downstream applications can now implement `IProxyRemovalServiceDelegate` to cust
126127
- https://github.com/eclipse-sirius/sirius-web/issues/4348[#4348] [diagram] Move default quick tools declaration on the backend
127128

128129

129-
130130
== 2025.12.0
131131

132132
=== Shapes
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,31 @@
1+
/*******************************************************************************
2+
* Copyright (c) 2025 Obeo.
3+
* This program and the accompanying materials
4+
* are made available under the terms of the Eclipse Public License v2.0
5+
* which accompanies this distribution, and is available at
6+
* https://www.eclipse.org/legal/epl-2.0/
7+
*
8+
* SPDX-License-Identifier: EPL-2.0
9+
*
10+
* Contributors:
11+
* Obeo - initial API and implementation
12+
*******************************************************************************/
13+
package org.eclipse.sirius.web.application.library.api;
14+
15+
import org.eclipse.sirius.components.core.api.IInput;
16+
17+
/**
18+
* {@link IInput} for publishing a library.
19+
*
20+
* @author flatombe
21+
*/
22+
public interface IPublishLibraryInput extends IInput {
23+
24+
String projectId();
25+
26+
String publicationKind();
27+
28+
String version();
29+
30+
String description();
31+
}

packages/sirius-web/backend/sirius-web-application/src/main/java/org/eclipse/sirius/web/application/library/controllers/MutationPublishLibrariesDataFetcher.java

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -19,7 +19,7 @@
1919
import org.eclipse.sirius.components.annotations.spring.graphql.QueryDataFetcher;
2020
import org.eclipse.sirius.components.core.api.IPayload;
2121
import org.eclipse.sirius.components.graphql.api.IDataFetcherWithFieldCoordinates;
22-
import org.eclipse.sirius.web.application.library.dto.PublishLibrariesInput;
22+
import org.eclipse.sirius.web.application.library.api.IPublishLibraryInput;
2323
import org.eclipse.sirius.web.application.library.services.api.ILibraryApplicationService;
2424

2525
import graphql.schema.DataFetchingEnvironment;
@@ -46,7 +46,7 @@ public MutationPublishLibrariesDataFetcher(ObjectMapper objectMapper, ILibraryAp
4646
@Override
4747
public IPayload get(DataFetchingEnvironment environment) throws Exception {
4848
Object argument = environment.getArgument(INPUT_ARGUMENT);
49-
var input = this.objectMapper.convertValue(argument, PublishLibrariesInput.class);
49+
var input = this.objectMapper.convertValue(argument, IPublishLibraryInput.class);
5050

5151
return this.libraryApplicationService.publishLibraries(input);
5252
}

packages/sirius-web/backend/sirius-web-application/src/main/java/org/eclipse/sirius/web/application/library/dto/PublishLibrariesInput.java

Lines changed: 3 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -14,7 +14,7 @@
1414

1515
import java.util.UUID;
1616

17-
import org.eclipse.sirius.components.core.api.IInput;
17+
import org.eclipse.sirius.web.application.library.api.IPublishLibraryInput;
1818

1919
import jakarta.validation.constraints.NotNull;
2020

@@ -23,6 +23,7 @@
2323
*
2424
* @author gdaniel
2525
*/
26-
public record PublishLibrariesInput(@NotNull UUID id, @NotNull String projectId, @NotNull String publicationKind, @NotNull String version, @NotNull String description) implements IInput {
26+
public record PublishLibrariesInput(@NotNull UUID id, @NotNull String projectId, @NotNull String publicationKind, @NotNull String version, @NotNull String description)
27+
implements IPublishLibraryInput {
2728

2829
}

packages/sirius-web/backend/sirius-web-application/src/main/java/org/eclipse/sirius/web/application/library/services/LibraryApplicationService.java

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -18,8 +18,8 @@
1818

1919
import org.eclipse.sirius.components.core.api.ErrorPayload;
2020
import org.eclipse.sirius.components.core.api.IPayload;
21+
import org.eclipse.sirius.web.application.library.api.IPublishLibraryInput;
2122
import org.eclipse.sirius.web.application.library.dto.LibraryDTO;
22-
import org.eclipse.sirius.web.application.library.dto.PublishLibrariesInput;
2323
import org.eclipse.sirius.web.application.library.services.api.ILibraryApplicationService;
2424
import org.eclipse.sirius.web.application.library.services.api.ILibraryMapper;
2525
import org.eclipse.sirius.web.application.library.services.api.ILibraryPublicationHandler;
@@ -77,7 +77,7 @@ public Page<LibraryDTO> findByNamespaceAndName(String namespace, String name, Pa
7777

7878
@Override
7979
@Transactional
80-
public IPayload publishLibraries(PublishLibrariesInput input) {
80+
public IPayload publishLibraries(IPublishLibraryInput input) {
8181
IPayload payload = new ErrorPayload(input.id(), this.messageService.unexpectedError());
8282
Optional<ILibraryPublicationHandler> optionalHandler = this.libraryPublicationHandlers.stream()
8383
.filter(handler -> handler.canHandle(input))

packages/sirius-web/backend/sirius-web-application/src/main/java/org/eclipse/sirius/web/application/library/services/api/ILibraryApplicationService.java

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -15,8 +15,8 @@
1515
import java.util.Optional;
1616

1717
import org.eclipse.sirius.components.core.api.IPayload;
18+
import org.eclipse.sirius.web.application.library.api.IPublishLibraryInput;
1819
import org.eclipse.sirius.web.application.library.dto.LibraryDTO;
19-
import org.eclipse.sirius.web.application.library.dto.PublishLibrariesInput;
2020
import org.springframework.data.domain.Page;
2121
import org.springframework.data.domain.Pageable;
2222

@@ -33,5 +33,5 @@ public interface ILibraryApplicationService {
3333

3434
Page<LibraryDTO> findByNamespaceAndName(String namespace, String name, Pageable pageable);
3535

36-
IPayload publishLibraries(PublishLibrariesInput input);
36+
IPayload publishLibraries(IPublishLibraryInput input);
3737
}

packages/sirius-web/backend/sirius-web-application/src/main/java/org/eclipse/sirius/web/application/library/services/api/ILibraryPublicationHandler.java

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -13,7 +13,7 @@
1313
package org.eclipse.sirius.web.application.library.services.api;
1414

1515
import org.eclipse.sirius.components.core.api.IPayload;
16-
import org.eclipse.sirius.web.application.library.dto.PublishLibrariesInput;
16+
import org.eclipse.sirius.web.application.library.api.IPublishLibraryInput;
1717

1818
/**
1919
* Handles the publication of libraries.
@@ -22,8 +22,8 @@
2222
*/
2323
public interface ILibraryPublicationHandler {
2424

25-
boolean canHandle(PublishLibrariesInput input);
25+
boolean canHandle(IPublishLibraryInput input);
2626

27-
IPayload handle(PublishLibrariesInput input);
27+
IPayload handle(IPublishLibraryInput input);
2828

2929
}

packages/sirius-web/backend/sirius-web-application/src/main/java/org/eclipse/sirius/web/application/studio/services/library/StudioLibraryPublicationHandler.java

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -27,7 +27,7 @@
2727
import org.eclipse.sirius.components.emf.services.api.IEMFEditingContext;
2828
import org.eclipse.sirius.components.representations.Message;
2929
import org.eclipse.sirius.components.representations.MessageLevel;
30-
import org.eclipse.sirius.web.application.library.dto.PublishLibrariesInput;
30+
import org.eclipse.sirius.web.application.library.api.IPublishLibraryInput;
3131
import org.eclipse.sirius.web.application.library.services.api.ILibraryPublicationHandler;
3232
import org.eclipse.sirius.web.application.studio.services.library.api.DependencyGraph;
3333
import org.eclipse.sirius.web.application.studio.services.library.api.IStudioLibraryDependencyCollector;
@@ -65,12 +65,12 @@ public StudioLibraryPublicationHandler(IEditingContextSearchService editingConte
6565
}
6666

6767
@Override
68-
public boolean canHandle(PublishLibrariesInput input) {
68+
public boolean canHandle(IPublishLibraryInput input) {
6969
return Objects.equals(input.publicationKind(), "studio-all");
7070
}
7171

7272
@Override
73-
public IPayload handle(PublishLibrariesInput input) {
73+
public IPayload handle(IPublishLibraryInput input) {
7474
IPayload result = new ErrorPayload(input.id(), this.messageService.unexpectedError());
7575

7676
Optional<IEMFEditingContext> optionalEditingContext = this.projectSemanticDataSearchService.findByProjectId(AggregateReference.to(input.projectId()))

packages/sirius-web/backend/sirius-web-application/src/main/java/org/eclipse/sirius/web/application/studio/services/library/StudioLibraryPublicationListener.java

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -12,7 +12,7 @@
1212
*******************************************************************************/
1313
package org.eclipse.sirius.web.application.studio.services.library;
1414

15-
import org.eclipse.sirius.web.application.library.dto.PublishLibrariesInput;
15+
import org.eclipse.sirius.web.application.library.api.IPublishLibraryInput;
1616
import org.eclipse.sirius.web.domain.boundedcontexts.library.Library;
1717
import org.eclipse.sirius.web.domain.boundedcontexts.library.services.api.ILibraryCreationService;
1818
import org.eclipse.sirius.web.domain.boundedcontexts.semanticdata.events.SemanticDataCreatedEvent;
@@ -39,7 +39,7 @@ public StudioLibraryPublicationListener(ILibraryCreationService libraryCreationS
3939
@Transactional(propagation = Propagation.REQUIRES_NEW)
4040
@TransactionalEventListener
4141
public void onSemanticDataCreatedEvent(SemanticDataCreatedEvent semanticDataCreatedEvent) {
42-
if (semanticDataCreatedEvent.causedBy() instanceof StudioLibrarySemanticDataCreationRequested request && request.causedBy() instanceof PublishLibrariesInput publishLibrariesInput) {
42+
if (semanticDataCreatedEvent.causedBy() instanceof StudioLibrarySemanticDataCreationRequested request && request.causedBy() instanceof IPublishLibraryInput publishLibrariesInput) {
4343
var semanticData = semanticDataCreatedEvent.semanticData();
4444

4545
Library library = Library.newLibrary()

packages/sirius-web/backend/sirius-web-application/src/main/java/org/eclipse/sirius/web/application/studio/services/library/StudioLibrarySemanticDataCreationService.java

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -34,7 +34,7 @@
3434
import org.eclipse.sirius.web.application.editingcontext.services.DocumentData;
3535
import org.eclipse.sirius.web.application.editingcontext.services.EPackageEntry;
3636
import org.eclipse.sirius.web.application.editingcontext.services.api.IResourceToDocumentService;
37-
import org.eclipse.sirius.web.application.library.dto.PublishLibrariesInput;
37+
import org.eclipse.sirius.web.application.library.api.IPublishLibraryInput;
3838
import org.eclipse.sirius.web.application.library.services.LibraryMetadataAdapter;
3939
import org.eclipse.sirius.web.application.studio.services.library.api.DependencyGraph;
4040
import org.eclipse.sirius.web.application.studio.services.library.api.IStudioLibrarySemanticDataCreationService;
@@ -71,7 +71,7 @@ public StudioLibrarySemanticDataCreationService(IIdentityService identityService
7171
}
7272

7373
@Override
74-
public Collection<SemanticData> createSemanticData(PublishLibrariesInput input, DependencyGraph<EObject> dependencyGraph, ResourceSet resourceSet) {
74+
public Collection<SemanticData> createSemanticData(IPublishLibraryInput input, DependencyGraph<EObject> dependencyGraph, ResourceSet resourceSet) {
7575
// Compute the topological ordering to ensure that all the dependencies of a library have been created before it.
7676
List<EObject> libraryCandidates = dependencyGraph.computeTopologicalOrdering();
7777
for (EObject libraryCandidate : libraryCandidates) {

0 commit comments

Comments
 (0)