From 0e5d08620b0d6137f63161402a6b4d63125e5c04 Mon Sep 17 00:00:00 2001 From: Nina Doschek Date: Mon, 10 Jan 2022 13:24:21 +0100 Subject: [PATCH] #20#23 Update to GLSP 0.9.0 release version (#24) * #20 Fix default getSourceUri in EMSModelSourceLoader - Fix getSourceUri to return complete sourceUri instead of workspace relative Uri by default Fixes #20 * #23 Update EMSBasicHandlers and update to GLSP 0.9.0. - Update dependency to GLSP 0.9.0 release version - Improve EMSBasic(Action|Operation)Handlers by injecting EMSModelState and reduce generic Types - Replace deprecated usage of BasicOperationHandler/BasicCreateOperationHandler with AbstractOperationHandler/AbstractCreateOperationHandler Fixes #23 * Address review comments - Reuse injected GModelState in Basic*Handlers - Provide getter method for EMSModelState in Basic*Handlers --- .../modelserver/glsp/EMSGLSPModule.java | 3 +- .../actions/handlers/EMSActionHandler.java | 5 +-- .../handlers/EMSBasicActionHandler.java | 21 ++++------ .../handlers/EMSRedoActionHandler.java | 5 +-- .../EMSRefreshModelActionHandler.java | 7 ++-- .../handlers/EMSSaveModelActionHandler.java | 6 +-- .../handlers/EMSUndoActionHandler.java | 6 +-- .../glsp/model/EMSModelSourceLoader.java | 8 +--- .../integration/EMSNotationGLSPModule.java | 4 +- .../integration/EMSNotationModelState.java | 8 ++++ .../EMSBasicCreateOperationHandler.java | 39 +++++++------------ .../handlers/EMSBasicOperationHandler.java | 39 +++++++------------ .../EMSChangeBoundsOperationHandler.java | 12 +++--- .../handlers/EMSLayoutOperationHandler.java | 11 +++--- .../handlers/EMSOperationHandler.java | 5 +-- pom.xml | 2 +- .../targetdefinition.target | 12 +++--- .../targetdefinition.tpd | 4 +- 18 files changed, 80 insertions(+), 117 deletions(-) diff --git a/plugins/org.eclipse.emfcloud.modelserver.glsp.integration/src/org/eclipse/emfcloud/modelserver/glsp/EMSGLSPModule.java b/plugins/org.eclipse.emfcloud.modelserver.glsp.integration/src/org/eclipse/emfcloud/modelserver/glsp/EMSGLSPModule.java index fb67063..3a6e3e1 100644 --- a/plugins/org.eclipse.emfcloud.modelserver.glsp.integration/src/org/eclipse/emfcloud/modelserver/glsp/EMSGLSPModule.java +++ b/plugins/org.eclipse.emfcloud.modelserver.glsp.integration/src/org/eclipse/emfcloud/modelserver/glsp/EMSGLSPModule.java @@ -23,7 +23,6 @@ import org.eclipse.glsp.server.di.MultiBinding; import org.eclipse.glsp.server.features.undoredo.UndoRedoActionHandler; import org.eclipse.glsp.server.layout.LayoutEngine; -import org.eclipse.glsp.server.model.GModelState; import org.eclipse.glsp.server.operations.OperationActionHandler; public abstract class EMSGLSPModule extends GModelJsonDiagramModule { @@ -50,7 +49,7 @@ protected Class bindLayoutEngine() { } @Override - protected Class bindGModelState() { + protected Class bindGModelState() { return EMSModelState.class; } diff --git a/plugins/org.eclipse.emfcloud.modelserver.glsp.integration/src/org/eclipse/emfcloud/modelserver/glsp/actions/handlers/EMSActionHandler.java b/plugins/org.eclipse.emfcloud.modelserver.glsp.integration/src/org/eclipse/emfcloud/modelserver/glsp/actions/handlers/EMSActionHandler.java index 567c2ce..aec3398 100644 --- a/plugins/org.eclipse.emfcloud.modelserver.glsp.integration/src/org/eclipse/emfcloud/modelserver/glsp/actions/handlers/EMSActionHandler.java +++ b/plugins/org.eclipse.emfcloud.modelserver.glsp.integration/src/org/eclipse/emfcloud/modelserver/glsp/actions/handlers/EMSActionHandler.java @@ -13,13 +13,12 @@ import java.util.List; import org.eclipse.emfcloud.modelserver.glsp.EMSModelServerAccess; -import org.eclipse.emfcloud.modelserver.glsp.model.EMSModelState; import org.eclipse.glsp.server.actions.Action; import org.eclipse.glsp.server.actions.ActionHandler; -public interface EMSActionHandler +public interface EMSActionHandler extends ActionHandler { - List executeAction(T action, U modelState, V modelServerAccess); + List executeAction(T action, U modelServerAccess); } diff --git a/plugins/org.eclipse.emfcloud.modelserver.glsp.integration/src/org/eclipse/emfcloud/modelserver/glsp/actions/handlers/EMSBasicActionHandler.java b/plugins/org.eclipse.emfcloud.modelserver.glsp.integration/src/org/eclipse/emfcloud/modelserver/glsp/actions/handlers/EMSBasicActionHandler.java index 22dd82c..4727eb7 100644 --- a/plugins/org.eclipse.emfcloud.modelserver.glsp.integration/src/org/eclipse/emfcloud/modelserver/glsp/actions/handlers/EMSBasicActionHandler.java +++ b/plugins/org.eclipse.emfcloud.modelserver.glsp.integration/src/org/eclipse/emfcloud/modelserver/glsp/actions/handlers/EMSBasicActionHandler.java @@ -22,18 +22,16 @@ import com.google.inject.Inject; @SuppressWarnings("restriction") -public abstract class EMSBasicActionHandler - extends AbstractActionHandler implements EMSActionHandler { +public abstract class EMSBasicActionHandler + extends AbstractActionHandler implements EMSActionHandler { - protected final Class modelStateType; - protected final Class modelServerAccessType; + protected final Class modelServerAccessType; @Inject protected GModelState gModelState; public EMSBasicActionHandler() { super(); - this.modelStateType = deriveModelStateType(); this.modelServerAccessType = deriveModelServerAccessType(); } @@ -45,25 +43,20 @@ protected Class deriveActionType() { } @SuppressWarnings("unchecked") - protected Class deriveModelStateType() { + protected Class deriveModelServerAccessType() { return (Class) (GenericsUtil.getParametrizedType(getClass(), EMSBasicActionHandler.class)) .getActualTypeArguments()[1]; } - @SuppressWarnings("unchecked") - protected Class deriveModelServerAccessType() { - return (Class) (GenericsUtil.getParametrizedType(getClass(), EMSBasicActionHandler.class)) - .getActualTypeArguments()[2]; - } - @Override public List executeAction(final T actualAction) { if (handles(actualAction)) { EMSModelServerAccess modelServerAccess = EMSModelState.getModelServerAccess(gModelState); - return executeAction(actionType.cast(actualAction), modelStateType.cast(gModelState), - modelServerAccessType.cast(modelServerAccess)); + return executeAction(actionType.cast(actualAction), modelServerAccessType.cast(modelServerAccess)); } return none(); } + protected EMSModelState getEMSModelState() { return EMSModelState.getModelState(gModelState); } + } diff --git a/plugins/org.eclipse.emfcloud.modelserver.glsp.integration/src/org/eclipse/emfcloud/modelserver/glsp/actions/handlers/EMSRedoActionHandler.java b/plugins/org.eclipse.emfcloud.modelserver.glsp.integration/src/org/eclipse/emfcloud/modelserver/glsp/actions/handlers/EMSRedoActionHandler.java index 913a09a..1df8890 100644 --- a/plugins/org.eclipse.emfcloud.modelserver.glsp.integration/src/org/eclipse/emfcloud/modelserver/glsp/actions/handlers/EMSRedoActionHandler.java +++ b/plugins/org.eclipse.emfcloud.modelserver.glsp.integration/src/org/eclipse/emfcloud/modelserver/glsp/actions/handlers/EMSRedoActionHandler.java @@ -18,16 +18,15 @@ import org.apache.log4j.Logger; import org.eclipse.emfcloud.modelserver.glsp.EMSModelServerAccess; -import org.eclipse.emfcloud.modelserver.glsp.model.EMSModelState; import org.eclipse.glsp.server.actions.Action; import org.eclipse.glsp.server.features.undoredo.RedoAction; -public class EMSRedoActionHandler extends EMSBasicActionHandler { +public class EMSRedoActionHandler extends EMSBasicActionHandler { private static final Logger LOGGER = Logger.getLogger(EMSRedoActionHandler.class.getSimpleName()); @Override - public List executeAction(final RedoAction action, final EMSModelState modelState, + public List executeAction(final RedoAction action, final EMSModelServerAccess modelServerAccess) { CompletableFuture result = modelServerAccess.redo().thenAccept(response -> { diff --git a/plugins/org.eclipse.emfcloud.modelserver.glsp.integration/src/org/eclipse/emfcloud/modelserver/glsp/actions/handlers/EMSRefreshModelActionHandler.java b/plugins/org.eclipse.emfcloud.modelserver.glsp.integration/src/org/eclipse/emfcloud/modelserver/glsp/actions/handlers/EMSRefreshModelActionHandler.java index 1d3885e..8e18619 100644 --- a/plugins/org.eclipse.emfcloud.modelserver.glsp.integration/src/org/eclipse/emfcloud/modelserver/glsp/actions/handlers/EMSRefreshModelActionHandler.java +++ b/plugins/org.eclipse.emfcloud.modelserver.glsp.integration/src/org/eclipse/emfcloud/modelserver/glsp/actions/handlers/EMSRefreshModelActionHandler.java @@ -14,7 +14,6 @@ import org.eclipse.emfcloud.modelserver.glsp.EMSModelServerAccess; import org.eclipse.emfcloud.modelserver.glsp.actions.EMSRefreshModelAction; -import org.eclipse.emfcloud.modelserver.glsp.model.EMSModelState; import org.eclipse.glsp.server.actions.Action; import org.eclipse.glsp.server.features.core.model.ModelSubmissionHandler; @@ -24,16 +23,16 @@ * Handles model updates with an ActionHandler, to make sure we're in a thread-safe context. */ public class EMSRefreshModelActionHandler - extends EMSBasicActionHandler { + extends EMSBasicActionHandler { @Inject protected ModelSubmissionHandler submissionHandler; @Override - public List executeAction(final EMSRefreshModelAction action, final EMSModelState modelState, + public List executeAction(final EMSRefreshModelAction action, final EMSModelServerAccess modelServerAccess) { // reload models - modelState.loadSourceModels(); + getEMSModelState().loadSourceModels(); // refresh GModelRoot return submissionHandler.submitModel(); } diff --git a/plugins/org.eclipse.emfcloud.modelserver.glsp.integration/src/org/eclipse/emfcloud/modelserver/glsp/actions/handlers/EMSSaveModelActionHandler.java b/plugins/org.eclipse.emfcloud.modelserver.glsp.integration/src/org/eclipse/emfcloud/modelserver/glsp/actions/handlers/EMSSaveModelActionHandler.java index 6b1cddb..ee472a0 100644 --- a/plugins/org.eclipse.emfcloud.modelserver.glsp.integration/src/org/eclipse/emfcloud/modelserver/glsp/actions/handlers/EMSSaveModelActionHandler.java +++ b/plugins/org.eclipse.emfcloud.modelserver.glsp.integration/src/org/eclipse/emfcloud/modelserver/glsp/actions/handlers/EMSSaveModelActionHandler.java @@ -13,17 +13,15 @@ import java.util.List; import org.eclipse.emfcloud.modelserver.glsp.EMSModelServerAccess; -import org.eclipse.emfcloud.modelserver.glsp.model.EMSModelState; import org.eclipse.glsp.server.actions.Action; import org.eclipse.glsp.server.actions.SaveModelAction; import org.eclipse.glsp.server.types.GLSPServerException; public class EMSSaveModelActionHandler - extends EMSBasicActionHandler { + extends EMSBasicActionHandler { @Override - public List executeAction(final SaveModelAction action, final EMSModelState modelState, - final EMSModelServerAccess modelServerAccess) { + public List executeAction(final SaveModelAction action, final EMSModelServerAccess modelServerAccess) { modelServerAccess.save().thenAccept(response -> { if (!response.body()) { diff --git a/plugins/org.eclipse.emfcloud.modelserver.glsp.integration/src/org/eclipse/emfcloud/modelserver/glsp/actions/handlers/EMSUndoActionHandler.java b/plugins/org.eclipse.emfcloud.modelserver.glsp.integration/src/org/eclipse/emfcloud/modelserver/glsp/actions/handlers/EMSUndoActionHandler.java index e18264a..d318bba 100644 --- a/plugins/org.eclipse.emfcloud.modelserver.glsp.integration/src/org/eclipse/emfcloud/modelserver/glsp/actions/handlers/EMSUndoActionHandler.java +++ b/plugins/org.eclipse.emfcloud.modelserver.glsp.integration/src/org/eclipse/emfcloud/modelserver/glsp/actions/handlers/EMSUndoActionHandler.java @@ -18,18 +18,16 @@ import org.apache.log4j.Logger; import org.eclipse.emfcloud.modelserver.glsp.EMSModelServerAccess; -import org.eclipse.emfcloud.modelserver.glsp.model.EMSModelState; import org.eclipse.glsp.server.actions.Action; import org.eclipse.glsp.server.features.undoredo.UndoAction; public class EMSUndoActionHandler - extends EMSBasicActionHandler { + extends EMSBasicActionHandler { private static final Logger LOGGER = Logger.getLogger(EMSUndoActionHandler.class.getSimpleName()); @Override - public List executeAction(final UndoAction action, final EMSModelState modelState, - final EMSModelServerAccess modelServerAccess) { + public List executeAction(final UndoAction action, final EMSModelServerAccess modelServerAccess) { CompletableFuture result = modelServerAccess.undo().thenAccept(response -> { int status = response.getStatusCode(); diff --git a/plugins/org.eclipse.emfcloud.modelserver.glsp.integration/src/org/eclipse/emfcloud/modelserver/glsp/model/EMSModelSourceLoader.java b/plugins/org.eclipse.emfcloud.modelserver.glsp.integration/src/org/eclipse/emfcloud/modelserver/glsp/model/EMSModelSourceLoader.java index 9a98e2b..69a02bf 100644 --- a/plugins/org.eclipse.emfcloud.modelserver.glsp.integration/src/org/eclipse/emfcloud/modelserver/glsp/model/EMSModelSourceLoader.java +++ b/plugins/org.eclipse.emfcloud.modelserver.glsp.integration/src/org/eclipse/emfcloud/modelserver/glsp/model/EMSModelSourceLoader.java @@ -24,7 +24,6 @@ import org.eclipse.glsp.server.model.GModelState; import org.eclipse.glsp.server.types.GLSPServerException; import org.eclipse.glsp.server.utils.ClientOptionsUtil; -import org.eclipse.glsp.server.utils.MapUtil; import com.google.inject.Inject; @@ -32,8 +31,6 @@ public abstract class EMSModelSourceLoader implements ModelSourceLoader { private static Logger LOGGER = Logger.getLogger(EMSModelSourceLoader.class.getSimpleName()); - public static final String WORKSPACE_ROOT_OPTION = "workspaceRoot"; - @Inject protected ModelServerClientProvider modelServerClientProvider; @@ -88,10 +85,7 @@ public EMSSubscriptionListener createSubscriptionListener(final EMSModelState mo protected String getSourceURI(final Map clientOptions) { String sourceURI = ClientOptionsUtil.getSourceUri(clientOptions) .orElseThrow(() -> new GLSPServerException("No source URI given to load model!")); - String workspaceRoot = MapUtil.getValue(clientOptions, WORKSPACE_ROOT_OPTION) - .orElseThrow(() -> new GLSPServerException("No workspace URI given to load model!")); - - return sourceURI.replace(ClientOptionsUtil.adaptUri(workspaceRoot), "").replaceFirst("/", ""); + return sourceURI; } } diff --git a/plugins/org.eclipse.emfcloud.modelserver.glsp.integration/src/org/eclipse/emfcloud/modelserver/glsp/notation/integration/EMSNotationGLSPModule.java b/plugins/org.eclipse.emfcloud.modelserver.glsp.integration/src/org/eclipse/emfcloud/modelserver/glsp/notation/integration/EMSNotationGLSPModule.java index 7d4eed1..8677d29 100644 --- a/plugins/org.eclipse.emfcloud.modelserver.glsp.integration/src/org/eclipse/emfcloud/modelserver/glsp/notation/integration/EMSNotationGLSPModule.java +++ b/plugins/org.eclipse.emfcloud.modelserver.glsp.integration/src/org/eclipse/emfcloud/modelserver/glsp/notation/integration/EMSNotationGLSPModule.java @@ -11,10 +11,10 @@ package org.eclipse.emfcloud.modelserver.glsp.notation.integration; import org.eclipse.emfcloud.modelserver.glsp.EMSGLSPModule; +import org.eclipse.emfcloud.modelserver.glsp.model.EMSModelState; import org.eclipse.emfcloud.modelserver.glsp.operations.handlers.EMSChangeBoundsOperationHandler; import org.eclipse.emfcloud.modelserver.glsp.operations.handlers.EMSLayoutOperationHandler; import org.eclipse.glsp.server.di.MultiBinding; -import org.eclipse.glsp.server.model.GModelState; import org.eclipse.glsp.server.operations.OperationHandler; import org.eclipse.glsp.server.operations.gmodel.ChangeBoundsOperationHandler; import org.eclipse.glsp.server.operations.gmodel.LayoutOperationHandler; @@ -29,7 +29,7 @@ protected void configureOperationHandlers(final MultiBinding b } @Override - protected Class bindGModelState() { + protected Class bindGModelState() { return EMSNotationModelState.class; } diff --git a/plugins/org.eclipse.emfcloud.modelserver.glsp.integration/src/org/eclipse/emfcloud/modelserver/glsp/notation/integration/EMSNotationModelState.java b/plugins/org.eclipse.emfcloud.modelserver.glsp.integration/src/org/eclipse/emfcloud/modelserver/glsp/notation/integration/EMSNotationModelState.java index 20b38df..4d3608f 100644 --- a/plugins/org.eclipse.emfcloud.modelserver.glsp.integration/src/org/eclipse/emfcloud/modelserver/glsp/notation/integration/EMSNotationModelState.java +++ b/plugins/org.eclipse.emfcloud.modelserver.glsp.integration/src/org/eclipse/emfcloud/modelserver/glsp/notation/integration/EMSNotationModelState.java @@ -11,10 +11,18 @@ package org.eclipse.emfcloud.modelserver.glsp.notation.integration; import org.eclipse.emfcloud.modelserver.glsp.model.EMSModelState; +import org.eclipse.glsp.server.model.GModelState; public abstract class EMSNotationModelState extends EMSModelState { @Override public abstract EMSNotationModelIndex getIndex(); + public static EMSNotationModelState getModelState(final GModelState state) { + if (!(state instanceof EMSNotationModelState)) { + throw new IllegalArgumentException("Argument must be a EMSNotationModelState"); + } + return ((EMSNotationModelState) state); + } + } diff --git a/plugins/org.eclipse.emfcloud.modelserver.glsp.integration/src/org/eclipse/emfcloud/modelserver/glsp/operations/handlers/EMSBasicCreateOperationHandler.java b/plugins/org.eclipse.emfcloud.modelserver.glsp.integration/src/org/eclipse/emfcloud/modelserver/glsp/operations/handlers/EMSBasicCreateOperationHandler.java index f93886f..925f7cf 100644 --- a/plugins/org.eclipse.emfcloud.modelserver.glsp.integration/src/org/eclipse/emfcloud/modelserver/glsp/operations/handlers/EMSBasicCreateOperationHandler.java +++ b/plugins/org.eclipse.emfcloud.modelserver.glsp.integration/src/org/eclipse/emfcloud/modelserver/glsp/operations/handlers/EMSBasicCreateOperationHandler.java @@ -16,27 +16,28 @@ import org.eclipse.emfcloud.modelserver.glsp.model.EMSModelState; import org.eclipse.glsp.server.internal.util.GenericsUtil; import org.eclipse.glsp.server.model.GModelState; -import org.eclipse.glsp.server.operations.BasicCreateOperationHandler; +import org.eclipse.glsp.server.operations.AbstractCreateOperationHandler; import org.eclipse.glsp.server.operations.CreateOperation; import com.google.common.collect.Lists; +import com.google.inject.Inject; @SuppressWarnings("restriction") -public abstract class EMSBasicCreateOperationHandler - extends BasicCreateOperationHandler implements EMSOperationHandler { +public abstract class EMSBasicCreateOperationHandler + extends AbstractCreateOperationHandler implements EMSOperationHandler { - protected final Class modelStateType; - protected final Class modelServerAccessType; + @Inject + protected GModelState gModelState; + + protected final Class modelServerAccessType; public EMSBasicCreateOperationHandler(final String... elementTypeIds) { super(Lists.newArrayList(elementTypeIds)); - this.modelStateType = deriveModelStateType(); this.modelServerAccessType = deriveModelServerAccessType(); } public EMSBasicCreateOperationHandler(final List handledElementTypeIds) { super(handledElementTypeIds); - this.modelStateType = deriveModelStateType(); this.modelServerAccessType = deriveModelServerAccessType(); } @@ -48,33 +49,19 @@ protected Class deriveOperationType() { } @SuppressWarnings("unchecked") - protected Class deriveModelStateType() { + protected Class deriveModelServerAccessType() { return (Class) (GenericsUtil.getParametrizedType(getClass(), EMSBasicCreateOperationHandler.class)) .getActualTypeArguments()[1]; } - @SuppressWarnings("unchecked") - protected Class deriveModelServerAccessType() { - return (Class) (GenericsUtil.getParametrizedType(getClass(), EMSBasicCreateOperationHandler.class)) - .getActualTypeArguments()[2]; - } - @Override - public void executeOperation(final T operation, final GModelState gModelState) { + public void executeOperation(final T operation) { if (handles(operation)) { - EMSModelState modelState = getModelState(gModelState); - EMSModelServerAccess modelServerAccess = getModelServerAccess(gModelState); - executeOperation(operationType.cast(operation), modelStateType.cast(modelState), - modelServerAccessType.cast(modelServerAccess)); + EMSModelServerAccess modelServerAccess = EMSModelState.getModelServerAccess(gModelState); + executeOperation(operationType.cast(operation), modelServerAccessType.cast(modelServerAccess)); } } - protected EMSModelState getModelState(final GModelState gModelState) { - return EMSModelState.getModelState(gModelState); - } - - protected EMSModelServerAccess getModelServerAccess(final GModelState gModelState) { - return EMSModelState.getModelServerAccess(gModelState); - } + protected EMSModelState getEMSModelState() { return EMSModelState.getModelState(gModelState); } } diff --git a/plugins/org.eclipse.emfcloud.modelserver.glsp.integration/src/org/eclipse/emfcloud/modelserver/glsp/operations/handlers/EMSBasicOperationHandler.java b/plugins/org.eclipse.emfcloud.modelserver.glsp.integration/src/org/eclipse/emfcloud/modelserver/glsp/operations/handlers/EMSBasicOperationHandler.java index 3fa8822..bbef579 100644 --- a/plugins/org.eclipse.emfcloud.modelserver.glsp.integration/src/org/eclipse/emfcloud/modelserver/glsp/operations/handlers/EMSBasicOperationHandler.java +++ b/plugins/org.eclipse.emfcloud.modelserver.glsp.integration/src/org/eclipse/emfcloud/modelserver/glsp/operations/handlers/EMSBasicOperationHandler.java @@ -14,19 +14,22 @@ import org.eclipse.emfcloud.modelserver.glsp.model.EMSModelState; import org.eclipse.glsp.server.internal.util.GenericsUtil; import org.eclipse.glsp.server.model.GModelState; -import org.eclipse.glsp.server.operations.BasicOperationHandler; +import org.eclipse.glsp.server.operations.AbstractOperationHandler; import org.eclipse.glsp.server.operations.Operation; +import com.google.inject.Inject; + @SuppressWarnings("restriction") -public abstract class EMSBasicOperationHandler - extends BasicOperationHandler implements EMSOperationHandler { +public abstract class EMSBasicOperationHandler + extends AbstractOperationHandler implements EMSOperationHandler { + + @Inject + protected GModelState gModelState; - protected final Class modelStateType; - protected final Class modelServerAccessType; + protected final Class modelServerAccessType; public EMSBasicOperationHandler() { super(); - this.modelStateType = deriveModelStateType(); this.modelServerAccessType = deriveModelServerAccessType(); } @@ -38,32 +41,18 @@ protected Class deriveOperationType() { } @SuppressWarnings("unchecked") - protected Class deriveModelStateType() { + protected Class deriveModelServerAccessType() { return (Class) (GenericsUtil.getParametrizedType(getClass(), EMSBasicOperationHandler.class)) .getActualTypeArguments()[1]; } - @SuppressWarnings("unchecked") - protected Class deriveModelServerAccessType() { - return (Class) (GenericsUtil.getParametrizedType(getClass(), EMSBasicOperationHandler.class)) - .getActualTypeArguments()[2]; - } - @Override - public void executeOperation(final T operation, final GModelState gModelState) { + public void executeOperation(final T operation) { if (handles(operation)) { - EMSModelState modelState = getModelState(gModelState); - EMSModelServerAccess modelServerAccess = getModelServerAccess(gModelState); - executeOperation(operationType.cast(operation), modelStateType.cast(modelState), - modelServerAccessType.cast(modelServerAccess)); + EMSModelServerAccess modelServerAccess = EMSModelState.getModelServerAccess(gModelState); + executeOperation(operationType.cast(operation), modelServerAccessType.cast(modelServerAccess)); } } - protected EMSModelState getModelState(final GModelState gModelState) { - return EMSModelState.getModelState(gModelState); - } - - protected EMSModelServerAccess getModelServerAccess(final GModelState gModelState) { - return EMSModelState.getModelServerAccess(gModelState); - } + protected EMSModelState getEMSModelState() { return EMSModelState.getModelState(gModelState); } } diff --git a/plugins/org.eclipse.emfcloud.modelserver.glsp.integration/src/org/eclipse/emfcloud/modelserver/glsp/operations/handlers/EMSChangeBoundsOperationHandler.java b/plugins/org.eclipse.emfcloud.modelserver.glsp.integration/src/org/eclipse/emfcloud/modelserver/glsp/operations/handlers/EMSChangeBoundsOperationHandler.java index 14a3a92..10b51bf 100644 --- a/plugins/org.eclipse.emfcloud.modelserver.glsp.integration/src/org/eclipse/emfcloud/modelserver/glsp/operations/handlers/EMSChangeBoundsOperationHandler.java +++ b/plugins/org.eclipse.emfcloud.modelserver.glsp.integration/src/org/eclipse/emfcloud/modelserver/glsp/operations/handlers/EMSChangeBoundsOperationHandler.java @@ -21,17 +21,19 @@ import org.eclipse.glsp.server.types.GLSPServerException; public class EMSChangeBoundsOperationHandler - extends EMSBasicOperationHandler { + extends EMSBasicOperationHandler { @Override - public void executeOperation(final ChangeBoundsOperation operation, final EMSNotationModelState modelState, + public void executeOperation(final ChangeBoundsOperation operation, final EMSNotationModelServerAccess modelServerAccess) { + EMSNotationModelState emsModelState = EMSNotationModelState.getModelState(gModelState); Map changeBoundsMap = new HashMap<>(); for (ElementAndBounds element : operation.getNewBounds()) { - modelState.getIndex().getNotation(element.getElementId(), Shape.class).ifPresent(notationElement -> { - changeBoundsMap.put(notationElement, element); - }); + emsModelState.getIndex().getNotation(element.getElementId(), Shape.class) + .ifPresent(notationElement -> { + changeBoundsMap.put(notationElement, element); + }); } modelServerAccess.changeBounds(changeBoundsMap).thenAccept(response -> { if (!response.body()) { diff --git a/plugins/org.eclipse.emfcloud.modelserver.glsp.integration/src/org/eclipse/emfcloud/modelserver/glsp/operations/handlers/EMSLayoutOperationHandler.java b/plugins/org.eclipse.emfcloud.modelserver.glsp.integration/src/org/eclipse/emfcloud/modelserver/glsp/operations/handlers/EMSLayoutOperationHandler.java index d64da37..24818fe 100644 --- a/plugins/org.eclipse.emfcloud.modelserver.glsp.integration/src/org/eclipse/emfcloud/modelserver/glsp/operations/handlers/EMSLayoutOperationHandler.java +++ b/plugins/org.eclipse.emfcloud.modelserver.glsp.integration/src/org/eclipse/emfcloud/modelserver/glsp/operations/handlers/EMSLayoutOperationHandler.java @@ -23,7 +23,7 @@ import com.google.inject.Inject; public class EMSLayoutOperationHandler - extends EMSBasicOperationHandler { + extends EMSBasicOperationHandler { @Inject protected LayoutEngine layoutEngine; @@ -33,13 +33,12 @@ public class EMSLayoutOperationHandler protected DiagramConfiguration diagramConfiguration; @Override - public void executeOperation(final LayoutOperation operation, final EMSNotationModelState modelState, - final EMSNotationModelServerAccess modelServerAccess) { - + public void executeOperation(final LayoutOperation operation, final EMSNotationModelServerAccess modelServerAccess) { if (diagramConfiguration.getLayoutKind() == ServerLayoutKind.MANUAL) { if (layoutEngine != null && layoutEngine instanceof EMSLayoutEngine) { - GModelElement layoutedRoot = ((EMSLayoutEngine) layoutEngine).layoutRoot(modelState); - modelServerAccess.setLayout(modelState, layoutedRoot); + GModelElement layoutedRoot = ((EMSLayoutEngine) layoutEngine).layoutRoot(gModelState); + EMSNotationModelState emsModelState = EMSNotationModelState.getModelState(gModelState); + modelServerAccess.setLayout(emsModelState, layoutedRoot); } } } diff --git a/plugins/org.eclipse.emfcloud.modelserver.glsp.integration/src/org/eclipse/emfcloud/modelserver/glsp/operations/handlers/EMSOperationHandler.java b/plugins/org.eclipse.emfcloud.modelserver.glsp.integration/src/org/eclipse/emfcloud/modelserver/glsp/operations/handlers/EMSOperationHandler.java index 256197f..99f2834 100644 --- a/plugins/org.eclipse.emfcloud.modelserver.glsp.integration/src/org/eclipse/emfcloud/modelserver/glsp/operations/handlers/EMSOperationHandler.java +++ b/plugins/org.eclipse.emfcloud.modelserver.glsp.integration/src/org/eclipse/emfcloud/modelserver/glsp/operations/handlers/EMSOperationHandler.java @@ -11,12 +11,11 @@ package org.eclipse.emfcloud.modelserver.glsp.operations.handlers; import org.eclipse.emfcloud.modelserver.glsp.EMSModelServerAccess; -import org.eclipse.emfcloud.modelserver.glsp.model.EMSModelState; import org.eclipse.glsp.server.operations.Operation; import org.eclipse.glsp.server.operations.OperationHandler; -public interface EMSOperationHandler +public interface EMSOperationHandler extends OperationHandler { - void executeOperation(T operation, U modelState, V modelServerAccess); + void executeOperation(T operation, U modelServerAccess); } diff --git a/pom.xml b/pom.xml index 0857fb7..bca3b94 100644 --- a/pom.xml +++ b/pom.xml @@ -82,7 +82,7 @@ 2.24.0 2.16.0 - 0.9.0-SNAPSHOT + 0.9.0 0.7.0-SNAPSHOT 3.7.0 3.7.100 diff --git a/releng/org.eclipse.emfcloud.modelserver.glsp.releng.target/targetdefinition.target b/releng/org.eclipse.emfcloud.modelserver.glsp.releng.target/targetdefinition.target index de0f4b7..32a25d7 100644 --- a/releng/org.eclipse.emfcloud.modelserver.glsp.releng.target/targetdefinition.target +++ b/releng/org.eclipse.emfcloud.modelserver.glsp.releng.target/targetdefinition.target @@ -1,13 +1,13 @@ - + - - - - + + + + @@ -29,7 +29,7 @@ - + diff --git a/releng/org.eclipse.emfcloud.modelserver.glsp.releng.target/targetdefinition.tpd b/releng/org.eclipse.emfcloud.modelserver.glsp.releng.target/targetdefinition.tpd index dca2076..d96bcb3 100644 --- a/releng/org.eclipse.emfcloud.modelserver.glsp.releng.target/targetdefinition.tpd +++ b/releng/org.eclipse.emfcloud.modelserver.glsp.releng.target/targetdefinition.tpd @@ -1,6 +1,6 @@ target "EMF.cloud Model Server GLSP Integration Targetplatform" with source requirements -location "https://download.eclipse.org/glsp/server/p2/nightly/0.9/0.9.0.202111041528/" { +location "https://download.eclipse.org/glsp/server/p2/releases/0.9.0/" { org.eclipse.glsp.feature.feature.group [0.9.0,1.0.0) org.eclipse.glsp.layout [0.9.0,1.0.0) org.eclipse.glsp.graph [0.9.0,1.0.0) @@ -27,7 +27,7 @@ location "https://download.eclipse.org/elk/updates/releases/0.7.1/" { } location "https://download.eclipse.org/emfcloud/emfjson-jackson/p2/nightly/1.3/1.3.1.202109010859" { - org.eclipse.emfcloud.emfjson-jackson lazy + org.eclipse.emfcloud.emfjson-jackson [1.3.1,2.0.0) } location "https://download.eclipse.org/jetty/updates/jetty-bundles-9.x/9.4.44.v20210927/" {