Search in sources :

Example 1 with ITreeInput

use of org.eclipse.sirius.components.collaborative.trees.api.ITreeInput in project sirius-components by eclipse-sirius.

the class TreePathEventHandler method handle.

@Override
public void handle(One<IPayload> payloadSink, Many<ChangeDescription> changeDescriptionSink, IEditingContext editingContext, Tree tree, ITreeInput treeInput) {
    IPayload payload = new TreePathSuccessPayload(treeInput.getId(), new TreePath(List.of(), 0));
    ChangeDescription changeDescription = new ChangeDescription(ChangeKind.NOTHING, treeInput.getRepresentationId(), treeInput);
    if (treeInput instanceof TreePathInput) {
        TreePathInput input = (TreePathInput) treeInput;
        Optional<ITreePathProvider> optionalPathProvider = this.treePathProviders.stream().filter(treePathProvider -> treePathProvider.canHandle(tree)).findFirst();
        if (optionalPathProvider.isPresent()) {
            IPayload resultPayload = optionalPathProvider.get().handle(editingContext, tree, input);
            if (resultPayload instanceof TreePathSuccessPayload) {
                payload = resultPayload;
            } else if (resultPayload instanceof ErrorPayload) {
                ErrorPayload errorPayload = (ErrorPayload) resultPayload;
                this.logger.warn(errorPayload.getMessage());
            }
        }
    }
    changeDescriptionSink.tryEmitNext(changeDescription);
    payloadSink.tryEmitValue(payload);
}
Also used : ErrorPayload(org.eclipse.sirius.components.core.api.ErrorPayload) ChangeKind(org.eclipse.sirius.components.collaborative.api.ChangeKind) TreePathSuccessPayload(org.eclipse.sirius.components.collaborative.trees.dto.TreePathSuccessPayload) IEditingContext(org.eclipse.sirius.components.core.api.IEditingContext) Logger(org.slf4j.Logger) TreePath(org.eclipse.sirius.components.collaborative.trees.dto.TreePath) ChangeDescription(org.eclipse.sirius.components.collaborative.api.ChangeDescription) LoggerFactory(org.slf4j.LoggerFactory) One(reactor.core.publisher.Sinks.One) ITreeEventHandler(org.eclipse.sirius.components.collaborative.trees.api.ITreeEventHandler) ITreeInput(org.eclipse.sirius.components.collaborative.trees.api.ITreeInput) Objects(java.util.Objects) List(java.util.List) IPayload(org.eclipse.sirius.components.core.api.IPayload) Service(org.springframework.stereotype.Service) Many(reactor.core.publisher.Sinks.Many) Optional(java.util.Optional) ITreePathProvider(org.eclipse.sirius.components.collaborative.trees.api.ITreePathProvider) TreePathInput(org.eclipse.sirius.components.collaborative.trees.dto.TreePathInput) Tree(org.eclipse.sirius.components.trees.Tree) TreePathInput(org.eclipse.sirius.components.collaborative.trees.dto.TreePathInput) ErrorPayload(org.eclipse.sirius.components.core.api.ErrorPayload) TreePath(org.eclipse.sirius.components.collaborative.trees.dto.TreePath) ChangeDescription(org.eclipse.sirius.components.collaborative.api.ChangeDescription) IPayload(org.eclipse.sirius.components.core.api.IPayload) TreePathSuccessPayload(org.eclipse.sirius.components.collaborative.trees.dto.TreePathSuccessPayload) ITreePathProvider(org.eclipse.sirius.components.collaborative.trees.api.ITreePathProvider)

Example 2 with ITreeInput

use of org.eclipse.sirius.components.collaborative.trees.api.ITreeInput in project sirius-components by eclipse-sirius.

the class TreeEventProcessor method handle.

@Override
public void handle(One<IPayload> payloadSink, Many<ChangeDescription> changeDescriptionSink, IRepresentationInput representationInput) {
    if (representationInput instanceof ITreeInput) {
        ITreeInput treeInput = (ITreeInput) representationInput;
        Optional<ITreeEventHandler> optionalTreeEventHandler = this.treeEventHandlers.stream().filter(handler -> handler.canHandle(treeInput)).findFirst();
        if (optionalTreeEventHandler.isPresent()) {
            ITreeEventHandler treeEventHandler = optionalTreeEventHandler.get();
            treeEventHandler.handle(payloadSink, changeDescriptionSink, this.editingContext, this.currentTree.get(), treeInput);
        } else {
            // $NON-NLS-1$
            this.logger.warn("No handler found for event: {}", treeInput);
        }
    }
}
Also used : Sinks(reactor.core.publisher.Sinks) IEditingContext(org.eclipse.sirius.components.core.api.IEditingContext) LoggerFactory(org.slf4j.LoggerFactory) One(reactor.core.publisher.Sinks.One) IInput(org.eclipse.sirius.components.core.api.IInput) AtomicReference(java.util.concurrent.atomic.AtomicReference) Timer(io.micrometer.core.instrument.Timer) Monitoring(org.eclipse.sirius.components.collaborative.api.Monitoring) IRepresentation(org.eclipse.sirius.components.representations.IRepresentation) IRepresentationRefreshPolicyRegistry(org.eclipse.sirius.components.collaborative.api.IRepresentationRefreshPolicyRegistry) EmitResult(reactor.core.publisher.Sinks.EmitResult) ITreeEventProcessor(org.eclipse.sirius.components.collaborative.trees.api.ITreeEventProcessor) ChangeKind(org.eclipse.sirius.components.collaborative.api.ChangeKind) ISubscriptionManager(org.eclipse.sirius.components.collaborative.api.ISubscriptionManager) Logger(org.slf4j.Logger) ChangeDescription(org.eclipse.sirius.components.collaborative.api.ChangeDescription) Mono(reactor.core.publisher.Mono) IRepresentationInput(org.eclipse.sirius.components.core.api.IRepresentationInput) ITreeEventHandler(org.eclipse.sirius.components.collaborative.trees.api.ITreeEventHandler) IRepresentationRefreshPolicy(org.eclipse.sirius.components.collaborative.api.IRepresentationRefreshPolicy) ITreeInput(org.eclipse.sirius.components.collaborative.trees.api.ITreeInput) ITreeService(org.eclipse.sirius.components.collaborative.trees.api.ITreeService) Objects(java.util.Objects) TimeUnit(java.util.concurrent.TimeUnit) Flux(reactor.core.publisher.Flux) List(java.util.List) IPayload(org.eclipse.sirius.components.core.api.IPayload) TreeRefreshedEventPayload(org.eclipse.sirius.components.collaborative.trees.dto.TreeRefreshedEventPayload) MeterRegistry(io.micrometer.core.instrument.MeterRegistry) TreeCreationParameters(org.eclipse.sirius.components.collaborative.trees.api.TreeCreationParameters) Many(reactor.core.publisher.Sinks.Many) Optional(java.util.Optional) Tree(org.eclipse.sirius.components.trees.Tree) ITreeInput(org.eclipse.sirius.components.collaborative.trees.api.ITreeInput) ITreeEventHandler(org.eclipse.sirius.components.collaborative.trees.api.ITreeEventHandler)

Aggregations

List (java.util.List)2 Objects (java.util.Objects)2 Optional (java.util.Optional)2 ChangeDescription (org.eclipse.sirius.components.collaborative.api.ChangeDescription)2 ChangeKind (org.eclipse.sirius.components.collaborative.api.ChangeKind)2 ITreeEventHandler (org.eclipse.sirius.components.collaborative.trees.api.ITreeEventHandler)2 ITreeInput (org.eclipse.sirius.components.collaborative.trees.api.ITreeInput)2 IEditingContext (org.eclipse.sirius.components.core.api.IEditingContext)2 IPayload (org.eclipse.sirius.components.core.api.IPayload)2 Tree (org.eclipse.sirius.components.trees.Tree)2 Logger (org.slf4j.Logger)2 LoggerFactory (org.slf4j.LoggerFactory)2 Many (reactor.core.publisher.Sinks.Many)2 One (reactor.core.publisher.Sinks.One)2 MeterRegistry (io.micrometer.core.instrument.MeterRegistry)1 Timer (io.micrometer.core.instrument.Timer)1 TimeUnit (java.util.concurrent.TimeUnit)1 AtomicReference (java.util.concurrent.atomic.AtomicReference)1 IRepresentationRefreshPolicy (org.eclipse.sirius.components.collaborative.api.IRepresentationRefreshPolicy)1 IRepresentationRefreshPolicyRegistry (org.eclipse.sirius.components.collaborative.api.IRepresentationRefreshPolicyRegistry)1