Skip to content

Commit 0e5d086

Browse files
authored
#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
1 parent 69e1a7b commit 0e5d086

File tree

18 files changed

+80
-117
lines changed

18 files changed

+80
-117
lines changed

plugins/org.eclipse.emfcloud.modelserver.glsp.integration/src/org/eclipse/emfcloud/modelserver/glsp/EMSGLSPModule.java

Lines changed: 1 addition & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -23,7 +23,6 @@
2323
import org.eclipse.glsp.server.di.MultiBinding;
2424
import org.eclipse.glsp.server.features.undoredo.UndoRedoActionHandler;
2525
import org.eclipse.glsp.server.layout.LayoutEngine;
26-
import org.eclipse.glsp.server.model.GModelState;
2726
import org.eclipse.glsp.server.operations.OperationActionHandler;
2827

2928
public abstract class EMSGLSPModule extends GModelJsonDiagramModule {
@@ -50,7 +49,7 @@ protected Class<? extends LayoutEngine> bindLayoutEngine() {
5049
}
5150

5251
@Override
53-
protected Class<? extends GModelState> bindGModelState() {
52+
protected Class<? extends EMSModelState> bindGModelState() {
5453
return EMSModelState.class;
5554
}
5655

plugins/org.eclipse.emfcloud.modelserver.glsp.integration/src/org/eclipse/emfcloud/modelserver/glsp/actions/handlers/EMSActionHandler.java

Lines changed: 2 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -13,13 +13,12 @@
1313
import java.util.List;
1414

1515
import org.eclipse.emfcloud.modelserver.glsp.EMSModelServerAccess;
16-
import org.eclipse.emfcloud.modelserver.glsp.model.EMSModelState;
1716
import org.eclipse.glsp.server.actions.Action;
1817
import org.eclipse.glsp.server.actions.ActionHandler;
1918

20-
public interface EMSActionHandler<T extends Action, U extends EMSModelState, V extends EMSModelServerAccess>
19+
public interface EMSActionHandler<T extends Action, U extends EMSModelServerAccess>
2120
extends ActionHandler {
2221

23-
List<Action> executeAction(T action, U modelState, V modelServerAccess);
22+
List<Action> executeAction(T action, U modelServerAccess);
2423

2524
}

plugins/org.eclipse.emfcloud.modelserver.glsp.integration/src/org/eclipse/emfcloud/modelserver/glsp/actions/handlers/EMSBasicActionHandler.java

Lines changed: 7 additions & 14 deletions
Original file line numberDiff line numberDiff line change
@@ -22,18 +22,16 @@
2222
import com.google.inject.Inject;
2323

2424
@SuppressWarnings("restriction")
25-
public abstract class EMSBasicActionHandler<T extends Action, U extends EMSModelState, V extends EMSModelServerAccess>
26-
extends AbstractActionHandler<T> implements EMSActionHandler<T, U, V> {
25+
public abstract class EMSBasicActionHandler<T extends Action, U extends EMSModelServerAccess>
26+
extends AbstractActionHandler<T> implements EMSActionHandler<T, U> {
2727

28-
protected final Class<U> modelStateType;
29-
protected final Class<V> modelServerAccessType;
28+
protected final Class<U> modelServerAccessType;
3029

3130
@Inject
3231
protected GModelState gModelState;
3332

3433
public EMSBasicActionHandler() {
3534
super();
36-
this.modelStateType = deriveModelStateType();
3735
this.modelServerAccessType = deriveModelServerAccessType();
3836
}
3937

@@ -45,25 +43,20 @@ protected Class<T> deriveActionType() {
4543
}
4644

4745
@SuppressWarnings("unchecked")
48-
protected Class<U> deriveModelStateType() {
46+
protected Class<U> deriveModelServerAccessType() {
4947
return (Class<U>) (GenericsUtil.getParametrizedType(getClass(), EMSBasicActionHandler.class))
5048
.getActualTypeArguments()[1];
5149
}
5250

53-
@SuppressWarnings("unchecked")
54-
protected Class<V> deriveModelServerAccessType() {
55-
return (Class<V>) (GenericsUtil.getParametrizedType(getClass(), EMSBasicActionHandler.class))
56-
.getActualTypeArguments()[2];
57-
}
58-
5951
@Override
6052
public List<Action> executeAction(final T actualAction) {
6153
if (handles(actualAction)) {
6254
EMSModelServerAccess modelServerAccess = EMSModelState.getModelServerAccess(gModelState);
63-
return executeAction(actionType.cast(actualAction), modelStateType.cast(gModelState),
64-
modelServerAccessType.cast(modelServerAccess));
55+
return executeAction(actionType.cast(actualAction), modelServerAccessType.cast(modelServerAccess));
6556
}
6657
return none();
6758
}
6859

60+
protected EMSModelState getEMSModelState() { return EMSModelState.getModelState(gModelState); }
61+
6962
}

plugins/org.eclipse.emfcloud.modelserver.glsp.integration/src/org/eclipse/emfcloud/modelserver/glsp/actions/handlers/EMSRedoActionHandler.java

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

1919
import org.apache.log4j.Logger;
2020
import org.eclipse.emfcloud.modelserver.glsp.EMSModelServerAccess;
21-
import org.eclipse.emfcloud.modelserver.glsp.model.EMSModelState;
2221
import org.eclipse.glsp.server.actions.Action;
2322
import org.eclipse.glsp.server.features.undoredo.RedoAction;
2423

25-
public class EMSRedoActionHandler extends EMSBasicActionHandler<RedoAction, EMSModelState, EMSModelServerAccess> {
24+
public class EMSRedoActionHandler extends EMSBasicActionHandler<RedoAction, EMSModelServerAccess> {
2625

2726
private static final Logger LOGGER = Logger.getLogger(EMSRedoActionHandler.class.getSimpleName());
2827

2928
@Override
30-
public List<Action> executeAction(final RedoAction action, final EMSModelState modelState,
29+
public List<Action> executeAction(final RedoAction action,
3130
final EMSModelServerAccess modelServerAccess) {
3231

3332
CompletableFuture<Void> result = modelServerAccess.redo().thenAccept(response -> {

plugins/org.eclipse.emfcloud.modelserver.glsp.integration/src/org/eclipse/emfcloud/modelserver/glsp/actions/handlers/EMSRefreshModelActionHandler.java

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

1515
import org.eclipse.emfcloud.modelserver.glsp.EMSModelServerAccess;
1616
import org.eclipse.emfcloud.modelserver.glsp.actions.EMSRefreshModelAction;
17-
import org.eclipse.emfcloud.modelserver.glsp.model.EMSModelState;
1817
import org.eclipse.glsp.server.actions.Action;
1918
import org.eclipse.glsp.server.features.core.model.ModelSubmissionHandler;
2019

@@ -24,16 +23,16 @@
2423
* Handles model updates with an ActionHandler, to make sure we're in a thread-safe context.
2524
*/
2625
public class EMSRefreshModelActionHandler
27-
extends EMSBasicActionHandler<EMSRefreshModelAction, EMSModelState, EMSModelServerAccess> {
26+
extends EMSBasicActionHandler<EMSRefreshModelAction, EMSModelServerAccess> {
2827

2928
@Inject
3029
protected ModelSubmissionHandler submissionHandler;
3130

3231
@Override
33-
public List<Action> executeAction(final EMSRefreshModelAction action, final EMSModelState modelState,
32+
public List<Action> executeAction(final EMSRefreshModelAction action,
3433
final EMSModelServerAccess modelServerAccess) {
3534
// reload models
36-
modelState.loadSourceModels();
35+
getEMSModelState().loadSourceModels();
3736
// refresh GModelRoot
3837
return submissionHandler.submitModel();
3938
}

plugins/org.eclipse.emfcloud.modelserver.glsp.integration/src/org/eclipse/emfcloud/modelserver/glsp/actions/handlers/EMSSaveModelActionHandler.java

Lines changed: 2 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -13,17 +13,15 @@
1313
import java.util.List;
1414

1515
import org.eclipse.emfcloud.modelserver.glsp.EMSModelServerAccess;
16-
import org.eclipse.emfcloud.modelserver.glsp.model.EMSModelState;
1716
import org.eclipse.glsp.server.actions.Action;
1817
import org.eclipse.glsp.server.actions.SaveModelAction;
1918
import org.eclipse.glsp.server.types.GLSPServerException;
2019

2120
public class EMSSaveModelActionHandler
22-
extends EMSBasicActionHandler<SaveModelAction, EMSModelState, EMSModelServerAccess> {
21+
extends EMSBasicActionHandler<SaveModelAction, EMSModelServerAccess> {
2322

2423
@Override
25-
public List<Action> executeAction(final SaveModelAction action, final EMSModelState modelState,
26-
final EMSModelServerAccess modelServerAccess) {
24+
public List<Action> executeAction(final SaveModelAction action, final EMSModelServerAccess modelServerAccess) {
2725

2826
modelServerAccess.save().thenAccept(response -> {
2927
if (!response.body()) {

plugins/org.eclipse.emfcloud.modelserver.glsp.integration/src/org/eclipse/emfcloud/modelserver/glsp/actions/handlers/EMSUndoActionHandler.java

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

1919
import org.apache.log4j.Logger;
2020
import org.eclipse.emfcloud.modelserver.glsp.EMSModelServerAccess;
21-
import org.eclipse.emfcloud.modelserver.glsp.model.EMSModelState;
2221
import org.eclipse.glsp.server.actions.Action;
2322
import org.eclipse.glsp.server.features.undoredo.UndoAction;
2423

2524
public class EMSUndoActionHandler
26-
extends EMSBasicActionHandler<UndoAction, EMSModelState, EMSModelServerAccess> {
25+
extends EMSBasicActionHandler<UndoAction, EMSModelServerAccess> {
2726

2827
private static final Logger LOGGER = Logger.getLogger(EMSUndoActionHandler.class.getSimpleName());
2928

3029
@Override
31-
public List<Action> executeAction(final UndoAction action, final EMSModelState modelState,
32-
final EMSModelServerAccess modelServerAccess) {
30+
public List<Action> executeAction(final UndoAction action, final EMSModelServerAccess modelServerAccess) {
3331

3432
CompletableFuture<Void> result = modelServerAccess.undo().thenAccept(response -> {
3533
int status = response.getStatusCode();

plugins/org.eclipse.emfcloud.modelserver.glsp.integration/src/org/eclipse/emfcloud/modelserver/glsp/model/EMSModelSourceLoader.java

Lines changed: 1 addition & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -24,16 +24,13 @@
2424
import org.eclipse.glsp.server.model.GModelState;
2525
import org.eclipse.glsp.server.types.GLSPServerException;
2626
import org.eclipse.glsp.server.utils.ClientOptionsUtil;
27-
import org.eclipse.glsp.server.utils.MapUtil;
2827

2928
import com.google.inject.Inject;
3029

3130
public abstract class EMSModelSourceLoader implements ModelSourceLoader {
3231

3332
private static Logger LOGGER = Logger.getLogger(EMSModelSourceLoader.class.getSimpleName());
3433

35-
public static final String WORKSPACE_ROOT_OPTION = "workspaceRoot";
36-
3734
@Inject
3835
protected ModelServerClientProvider modelServerClientProvider;
3936

@@ -88,10 +85,7 @@ public EMSSubscriptionListener createSubscriptionListener(final EMSModelState mo
8885
protected String getSourceURI(final Map<String, String> clientOptions) {
8986
String sourceURI = ClientOptionsUtil.getSourceUri(clientOptions)
9087
.orElseThrow(() -> new GLSPServerException("No source URI given to load model!"));
91-
String workspaceRoot = MapUtil.getValue(clientOptions, WORKSPACE_ROOT_OPTION)
92-
.orElseThrow(() -> new GLSPServerException("No workspace URI given to load model!"));
93-
94-
return sourceURI.replace(ClientOptionsUtil.adaptUri(workspaceRoot), "").replaceFirst("/", "");
88+
return sourceURI;
9589
}
9690

9791
}

plugins/org.eclipse.emfcloud.modelserver.glsp.integration/src/org/eclipse/emfcloud/modelserver/glsp/notation/integration/EMSNotationGLSPModule.java

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -11,10 +11,10 @@
1111
package org.eclipse.emfcloud.modelserver.glsp.notation.integration;
1212

1313
import org.eclipse.emfcloud.modelserver.glsp.EMSGLSPModule;
14+
import org.eclipse.emfcloud.modelserver.glsp.model.EMSModelState;
1415
import org.eclipse.emfcloud.modelserver.glsp.operations.handlers.EMSChangeBoundsOperationHandler;
1516
import org.eclipse.emfcloud.modelserver.glsp.operations.handlers.EMSLayoutOperationHandler;
1617
import org.eclipse.glsp.server.di.MultiBinding;
17-
import org.eclipse.glsp.server.model.GModelState;
1818
import org.eclipse.glsp.server.operations.OperationHandler;
1919
import org.eclipse.glsp.server.operations.gmodel.ChangeBoundsOperationHandler;
2020
import org.eclipse.glsp.server.operations.gmodel.LayoutOperationHandler;
@@ -29,7 +29,7 @@ protected void configureOperationHandlers(final MultiBinding<OperationHandler> b
2929
}
3030

3131
@Override
32-
protected Class<? extends GModelState> bindGModelState() {
32+
protected Class<? extends EMSModelState> bindGModelState() {
3333
return EMSNotationModelState.class;
3434
}
3535

plugins/org.eclipse.emfcloud.modelserver.glsp.integration/src/org/eclipse/emfcloud/modelserver/glsp/notation/integration/EMSNotationModelState.java

Lines changed: 8 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -11,10 +11,18 @@
1111
package org.eclipse.emfcloud.modelserver.glsp.notation.integration;
1212

1313
import org.eclipse.emfcloud.modelserver.glsp.model.EMSModelState;
14+
import org.eclipse.glsp.server.model.GModelState;
1415

1516
public abstract class EMSNotationModelState extends EMSModelState {
1617

1718
@Override
1819
public abstract EMSNotationModelIndex getIndex();
1920

21+
public static EMSNotationModelState getModelState(final GModelState state) {
22+
if (!(state instanceof EMSNotationModelState)) {
23+
throw new IllegalArgumentException("Argument must be a EMSNotationModelState");
24+
}
25+
return ((EMSNotationModelState) state);
26+
}
27+
2028
}

0 commit comments

Comments
 (0)