@eclipse-glsp/server 1.1.0-next.9fd0925.53 → 1.1.0-next.b17a86c.64
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/lib/browser/launch/worker-server-launcher.js +26 -3
- package/lib/browser/launch/worker-server-launcher.js.map +1 -1
- package/lib/common/actions/action-dispatcher.d.ts +2 -1
- package/lib/common/actions/action-dispatcher.d.ts.map +1 -1
- package/lib/common/actions/action-dispatcher.js +9 -7
- package/lib/common/actions/action-dispatcher.js.map +1 -1
- package/lib/common/actions/action-handler-registry.js +4 -4
- package/lib/common/actions/action-handler-registry.js.map +1 -1
- package/lib/common/actions/client-action-handler.d.ts +17 -8
- package/lib/common/actions/client-action-handler.d.ts.map +1 -1
- package/lib/common/actions/client-action-handler.js +32 -22
- package/lib/common/actions/client-action-handler.js.map +1 -1
- package/lib/common/actions/global-action-provider.d.ts +6 -21
- package/lib/common/actions/global-action-provider.d.ts.map +1 -1
- package/lib/common/actions/global-action-provider.js +17 -22
- package/lib/common/actions/global-action-provider.js.map +1 -1
- package/lib/common/command/command-stack.js +2 -2
- package/lib/common/command/command-stack.js.map +1 -1
- package/lib/common/command/command.js +1 -1
- package/lib/common/command/command.js.map +1 -1
- package/lib/common/command/recording-command.js +24 -1
- package/lib/common/command/recording-command.js.map +1 -1
- package/lib/common/command/undo-redo-action-handler.js +2 -2
- package/lib/common/command/undo-redo-action-handler.js.map +1 -1
- package/lib/common/di/binding-target.d.ts.map +1 -1
- package/lib/common/di/binding-target.js +3 -2
- package/lib/common/di/binding-target.js.map +1 -1
- package/lib/common/di/client-session-module.d.ts +9 -1
- package/lib/common/di/client-session-module.d.ts.map +1 -1
- package/lib/common/di/client-session-module.js +9 -9
- package/lib/common/di/client-session-module.js.map +1 -1
- package/lib/common/di/diagram-module.d.ts +20 -1
- package/lib/common/di/diagram-module.d.ts.map +1 -1
- package/lib/common/di/diagram-module.js +10 -48
- package/lib/common/di/diagram-module.js.map +1 -1
- package/lib/common/di/glsp-module.js +2 -2
- package/lib/common/di/glsp-module.js.map +1 -1
- package/lib/common/di/server-module.d.ts +0 -1
- package/lib/common/di/server-module.d.ts.map +1 -1
- package/lib/common/di/server-module.js +0 -1
- package/lib/common/di/server-module.js.map +1 -1
- package/lib/common/diagram/diagram-configuration.js +1 -1
- package/lib/common/diagram/diagram-configuration.js.map +1 -1
- package/lib/common/diagram/request-type-hints-action-handler.js +2 -2
- package/lib/common/diagram/request-type-hints-action-handler.js.map +1 -1
- package/lib/common/features/clipboard/request-clipboard-data-action-handler.js +2 -2
- package/lib/common/features/clipboard/request-clipboard-data-action-handler.js.map +1 -1
- package/lib/common/features/contextactions/command-palette-action-provider.js +2 -2
- package/lib/common/features/contextactions/command-palette-action-provider.js.map +1 -1
- package/lib/common/features/contextactions/context-actions-provider-registry.js +2 -2
- package/lib/common/features/contextactions/context-actions-provider-registry.js.map +1 -1
- package/lib/common/features/contextactions/context-menu-item-provider.js +2 -2
- package/lib/common/features/contextactions/context-menu-item-provider.js.map +1 -1
- package/lib/common/features/contextactions/request-context-actions-handler.js +2 -2
- package/lib/common/features/contextactions/request-context-actions-handler.js.map +1 -1
- package/lib/common/features/contextactions/tool-palette-item-provider.js +4 -4
- package/lib/common/features/contextactions/tool-palette-item-provider.js.map +1 -1
- package/lib/common/features/directediting/context-edit-validator-registry.js +2 -2
- package/lib/common/features/directediting/context-edit-validator-registry.js.map +1 -1
- package/lib/common/features/directediting/label-edit-validator.js +2 -2
- package/lib/common/features/directediting/label-edit-validator.js.map +1 -1
- package/lib/common/features/directediting/request-edit-validation-handler.js +2 -2
- package/lib/common/features/directediting/request-edit-validation-handler.js.map +1 -1
- package/lib/common/features/layout/computed-bounds-action-handler.js +2 -2
- package/lib/common/features/layout/computed-bounds-action-handler.js.map +1 -1
- package/lib/common/features/layout/layout-operation-handler.js +2 -2
- package/lib/common/features/layout/layout-operation-handler.js.map +1 -1
- package/lib/common/features/model/gmodel-factory.js +2 -2
- package/lib/common/features/model/gmodel-factory.js.map +1 -1
- package/lib/common/features/model/gmodel-index.js +2 -2
- package/lib/common/features/model/gmodel-index.js.map +1 -1
- package/lib/common/features/model/gmodel-serializer.js +2 -2
- package/lib/common/features/model/gmodel-serializer.js.map +1 -1
- package/lib/common/features/model/model-state.js +2 -2
- package/lib/common/features/model/model-state.js.map +1 -1
- package/lib/common/features/model/model-submission-handler.d.ts +31 -3
- package/lib/common/features/model/model-submission-handler.d.ts.map +1 -1
- package/lib/common/features/model/model-submission-handler.js +56 -7
- package/lib/common/features/model/model-submission-handler.js.map +1 -1
- package/lib/common/features/model/request-model-action-handler.d.ts +5 -6
- package/lib/common/features/model/request-model-action-handler.d.ts.map +1 -1
- package/lib/common/features/model/request-model-action-handler.js +37 -15
- package/lib/common/features/model/request-model-action-handler.js.map +1 -1
- package/lib/common/features/model/save-model-action-handler.js +2 -2
- package/lib/common/features/model/save-model-action-handler.js.map +1 -1
- package/lib/common/features/navigation/navigation-target-provider-registry.js +2 -2
- package/lib/common/features/navigation/navigation-target-provider-registry.js.map +1 -1
- package/lib/common/features/navigation/navigation-target-resolver.js +2 -2
- package/lib/common/features/navigation/navigation-target-resolver.js.map +1 -1
- package/lib/common/features/navigation/request-navigation-targets-action-handler.js +2 -2
- package/lib/common/features/navigation/request-navigation-targets-action-handler.js.map +1 -1
- package/lib/common/features/navigation/resolve-navigation-targets-action-handler.js +2 -2
- package/lib/common/features/navigation/resolve-navigation-targets-action-handler.js.map +1 -1
- package/lib/common/features/popup/request-popup-model-action-handler.js +2 -2
- package/lib/common/features/popup/request-popup-model-action-handler.js.map +1 -1
- package/lib/common/features/progress/progress-service.d.ts +44 -0
- package/lib/common/features/progress/progress-service.d.ts.map +1 -0
- package/lib/common/features/progress/progress-service.js +74 -0
- package/lib/common/features/progress/progress-service.js.map +1 -0
- package/lib/common/features/validation/model-validator.d.ts +47 -2
- package/lib/common/features/validation/model-validator.d.ts.map +1 -1
- package/lib/common/features/validation/model-validator.js +80 -1
- package/lib/common/features/validation/model-validator.js.map +1 -1
- package/lib/common/features/validation/request-markers-handler.d.ts +15 -0
- package/lib/common/features/validation/request-markers-handler.d.ts.map +1 -1
- package/lib/common/features/validation/request-markers-handler.js +5 -11
- package/lib/common/features/validation/request-markers-handler.js.map +1 -1
- package/lib/common/gmodel/apply-label-edit-operation-handler.js +2 -2
- package/lib/common/gmodel/apply-label-edit-operation-handler.js.map +1 -1
- package/lib/common/gmodel/change-bounds-operation-handler.js +2 -2
- package/lib/common/gmodel/change-bounds-operation-handler.js.map +1 -1
- package/lib/common/gmodel/change-routing-points-operation-handler.js +2 -2
- package/lib/common/gmodel/change-routing-points-operation-handler.js.map +1 -1
- package/lib/common/gmodel/cut-operation-handler.js +2 -2
- package/lib/common/gmodel/cut-operation-handler.js.map +1 -1
- package/lib/common/gmodel/delete-operation-handler.js +2 -2
- package/lib/common/gmodel/delete-operation-handler.js.map +1 -1
- package/lib/common/gmodel/gmodel-create-edge-operation-handler.js +2 -2
- package/lib/common/gmodel/gmodel-create-edge-operation-handler.js.map +1 -1
- package/lib/common/gmodel/gmodel-create-node-operation-handler.js +2 -2
- package/lib/common/gmodel/gmodel-create-node-operation-handler.js.map +1 -1
- package/lib/common/gmodel/gmodel-diagram-module.js +2 -2
- package/lib/common/gmodel/gmodel-diagram-module.js.map +1 -1
- package/lib/common/gmodel/gmodel-operation-handler.js +1 -1
- package/lib/common/gmodel/gmodel-operation-handler.js.map +1 -1
- package/lib/common/gmodel/paste-operation-handler.js +26 -3
- package/lib/common/gmodel/paste-operation-handler.js.map +1 -1
- package/lib/common/gmodel/reconnect-edge-operation-handler.js +2 -2
- package/lib/common/gmodel/reconnect-edge-operation-handler.js.map +1 -1
- package/lib/common/launch/glsp-server-launcher.js +2 -2
- package/lib/common/launch/glsp-server-launcher.js.map +1 -1
- package/lib/common/launch/jsonrpc-server-launcher.js +2 -2
- package/lib/common/launch/jsonrpc-server-launcher.js.map +1 -1
- package/lib/common/operations/compound-operation-handler.js +6 -11
- package/lib/common/operations/compound-operation-handler.js.map +1 -1
- package/lib/common/operations/create-operation-handler.js +1 -1
- package/lib/common/operations/create-operation-handler.js.map +1 -1
- package/lib/common/operations/operation-action-handler.d.ts.map +1 -1
- package/lib/common/operations/operation-action-handler.js +3 -3
- package/lib/common/operations/operation-action-handler.js.map +1 -1
- package/lib/common/operations/operation-handler-registry.js +4 -4
- package/lib/common/operations/operation-handler-registry.js.map +1 -1
- package/lib/common/operations/operation-handler.js +2 -2
- package/lib/common/operations/operation-handler.js.map +1 -1
- package/lib/common/protocol/client-action.d.ts +31 -0
- package/lib/common/protocol/client-action.d.ts.map +1 -0
- package/lib/common/protocol/client-action.js +35 -0
- package/lib/common/protocol/client-action.js.map +1 -0
- package/lib/common/protocol/glsp-server.d.ts +1 -1
- package/lib/common/protocol/glsp-server.d.ts.map +1 -1
- package/lib/common/protocol/glsp-server.js +9 -11
- package/lib/common/protocol/glsp-server.js.map +1 -1
- package/lib/common/session/client-session-factory.js +5 -5
- package/lib/common/session/client-session-factory.js.map +1 -1
- package/lib/common/session/client-session-manager.js +2 -2
- package/lib/common/session/client-session-manager.js.map +1 -1
- package/lib/common/utils/args-util.js +2 -2
- package/lib/common/utils/args-util.js.map +1 -1
- package/lib/common/utils/client-options-util.d.ts +3 -0
- package/lib/common/utils/client-options-util.d.ts.map +1 -1
- package/lib/common/utils/client-options-util.js +5 -15
- package/lib/common/utils/client-options-util.js.map +1 -1
- package/lib/common/utils/console-logger.js +2 -2
- package/lib/common/utils/console-logger.js.map +1 -1
- package/lib/common/utils/logger.d.ts.map +1 -1
- package/lib/common/utils/logger.js +5 -4
- package/lib/common/utils/logger.js.map +1 -1
- package/lib/common/utils/registry.js +4 -4
- package/lib/common/utils/registry.js.map +1 -1
- package/lib/node/abstract-json-model-storage.d.ts.map +1 -1
- package/lib/node/abstract-json-model-storage.js +33 -4
- package/lib/node/abstract-json-model-storage.js.map +1 -1
- package/lib/node/di/app-module.js +24 -1
- package/lib/node/di/app-module.js.map +1 -1
- package/lib/node/gmodel/gmodel-storage.js +2 -2
- package/lib/node/gmodel/gmodel-storage.js.map +1 -1
- package/lib/node/launch/cli-parser.js +26 -3
- package/lib/node/launch/cli-parser.js.map +1 -1
- package/lib/node/launch/socket-cli-parser.js +24 -1
- package/lib/node/launch/socket-cli-parser.js.map +1 -1
- package/lib/node/launch/socket-server-launcher.js +27 -4
- package/lib/node/launch/socket-server-launcher.js.map +1 -1
- package/lib/node/launch/websocket-server-launcher.js +27 -4
- package/lib/node/launch/websocket-server-launcher.js.map +1 -1
- package/package.json +6 -5
- package/src/common/actions/action-dispatcher.spec.ts +2 -0
- package/src/common/actions/action-dispatcher.ts +8 -5
- package/src/common/actions/client-action-handler.ts +28 -18
- package/src/common/actions/global-action-provider.spec.ts +4 -15
- package/src/common/actions/global-action-provider.ts +21 -25
- package/src/common/di/binding-target.ts +1 -0
- package/src/common/di/client-session-module.ts +17 -10
- package/src/common/di/diagram-module.ts +14 -66
- package/src/common/di/server-module.ts +0 -1
- package/src/common/features/model/model-submission-handler.ts +62 -5
- package/src/common/features/model/request-model-action-handler.ts +37 -17
- package/src/common/features/progress/progress-service.ts +74 -0
- package/src/common/features/validation/model-validator.ts +75 -3
- package/src/common/features/validation/request-markers-handler.ts +4 -10
- package/src/common/operations/operation-action-handler.ts +2 -2
- package/src/common/protocol/client-action.ts +38 -0
- package/src/common/protocol/glsp-server.spec.ts +11 -10
- package/src/common/protocol/glsp-server.ts +11 -14
- package/src/common/session/client-session-factory.spec.ts +2 -2
- package/src/common/session/client-session-factory.ts +3 -3
- package/src/common/session/client-session-manager.spec.ts +4 -3
- package/src/common/utils/args-util.ts +1 -1
- package/src/common/utils/client-options-util.ts +8 -0
- package/src/common/utils/logger.ts +2 -1
- package/src/node/abstract-json-model-storage.ts +8 -2
- package/src/node/launch/cli-parser.ts +1 -1
|
@@ -20,6 +20,7 @@ import {
|
|
|
20
20
|
InitializeClientSessionParameters,
|
|
21
21
|
InitializeParameters
|
|
22
22
|
} from '@eclipse-glsp/protocol';
|
|
23
|
+
import * as assert from 'assert';
|
|
23
24
|
import { expect } from 'chai';
|
|
24
25
|
import { Container, ContainerModule } from 'inversify';
|
|
25
26
|
import * as sinon from 'sinon';
|
|
@@ -28,7 +29,6 @@ import { ClientSessionManager } from '../session/client-session-manager';
|
|
|
28
29
|
import * as mock from '../test/mock-util';
|
|
29
30
|
import { Logger } from '../utils/logger';
|
|
30
31
|
import { DefaultGLSPServer } from './glsp-server';
|
|
31
|
-
import assert = require('assert');
|
|
32
32
|
|
|
33
33
|
describe('test DefaultGLSPServer', () => {
|
|
34
34
|
const container = new Container();
|
|
@@ -36,8 +36,8 @@ describe('test DefaultGLSPServer', () => {
|
|
|
36
36
|
const diagramType = 'myDiagram';
|
|
37
37
|
const applicationId = 'Test';
|
|
38
38
|
const protocolVersion = '1.0.0';
|
|
39
|
-
const
|
|
40
|
-
|
|
39
|
+
const actionKinds = new Map<string, string[]>();
|
|
40
|
+
actionKinds.set(diagramType, ['A1', 'A2']);
|
|
41
41
|
const sessionManager = new mock.StubClientSessionManager();
|
|
42
42
|
const spy_sessionManager_getOrCreate = sinon.spy(sessionManager, 'getOrCreateClientSession');
|
|
43
43
|
const spy_sessionManager_dispose = sinon.spy(sessionManager, 'disposeClientSession');
|
|
@@ -53,7 +53,7 @@ describe('test DefaultGLSPServer', () => {
|
|
|
53
53
|
bind(Logger).toConstantValue(new mock.StubLogger());
|
|
54
54
|
bind(GLSPClientProxy).toConstantValue(new mock.StubGLSPClientProxy());
|
|
55
55
|
bind(ClientSessionManager).toConstantValue(sessionManager);
|
|
56
|
-
bind(GlobalActionProvider).toConstantValue(
|
|
56
|
+
bind(GlobalActionProvider).toConstantValue(<GlobalActionProvider>{ actionKinds });
|
|
57
57
|
bind(GLSPServerListener).toConstantValue(listener1);
|
|
58
58
|
})
|
|
59
59
|
);
|
|
@@ -70,7 +70,7 @@ describe('test DefaultGLSPServer', () => {
|
|
|
70
70
|
});
|
|
71
71
|
|
|
72
72
|
it('Test calls before server initialization (should throw errors)', async () => {
|
|
73
|
-
assert.rejects(() => glspServer.initializeClientSession({ clientSessionId: 'id', diagramType: 'type' }));
|
|
73
|
+
assert.rejects(() => glspServer.initializeClientSession({ clientSessionId: 'id', diagramType: 'type', clientActionKinds: [] }));
|
|
74
74
|
assert.rejects(() => glspServer.disposeClientSession({ clientSessionId: 'id' }));
|
|
75
75
|
assert.throws(() => glspServer.process({ clientId: 'id', action: { kind: 'action' } }));
|
|
76
76
|
});
|
|
@@ -109,8 +109,8 @@ describe('test DefaultGLSPServer', () => {
|
|
|
109
109
|
const initializeParameters: InitializeParameters = { applicationId, protocolVersion };
|
|
110
110
|
const result = await glspServer.initialize(initializeParameters);
|
|
111
111
|
expect(result.protocolVersion).to.be.equal(protocolVersion);
|
|
112
|
-
expect(result.serverActions[diagramType]).to.be.equal(
|
|
113
|
-
expect(result.serverActions[diagramType]).to.be.equal(
|
|
112
|
+
expect(result.serverActions[diagramType]).to.be.equal(actionKinds.get(diagramType));
|
|
113
|
+
expect(result.serverActions[diagramType]).to.be.equal(actionKinds.get(diagramType));
|
|
114
114
|
expect(spy_listener1_initialize.calledWith(glspServer));
|
|
115
115
|
expect(spy_listener2_initialize.notCalled);
|
|
116
116
|
});
|
|
@@ -119,8 +119,8 @@ describe('test DefaultGLSPServer', () => {
|
|
|
119
119
|
const initializeParameters: InitializeParameters = { applicationId, protocolVersion };
|
|
120
120
|
const result = await glspServer.initialize(initializeParameters);
|
|
121
121
|
expect(result.protocolVersion).to.be.equal(protocolVersion);
|
|
122
|
-
expect(result.serverActions[diagramType]).to.be.equal(
|
|
123
|
-
expect(result.serverActions[diagramType]).to.be.equal(
|
|
122
|
+
expect(result.serverActions[diagramType]).to.be.equal(actionKinds.get(diagramType));
|
|
123
|
+
expect(result.serverActions[diagramType]).to.be.equal(actionKinds.get(diagramType));
|
|
124
124
|
});
|
|
125
125
|
|
|
126
126
|
it('initialize - subsequent call with other parameters', async () => {
|
|
@@ -131,7 +131,8 @@ describe('test DefaultGLSPServer', () => {
|
|
|
131
131
|
it('initialize client session', async () => {
|
|
132
132
|
const initializeClientSessionParameters: InitializeClientSessionParameters = {
|
|
133
133
|
clientSessionId,
|
|
134
|
-
diagramType
|
|
134
|
+
diagramType,
|
|
135
|
+
clientActionKinds: []
|
|
135
136
|
};
|
|
136
137
|
await glspServer.initializeClientSession(initializeClientSessionParameters);
|
|
137
138
|
expect(spy_sessionManager_getOrCreate.calledWith(initializeClientSessionParameters));
|
|
@@ -17,7 +17,6 @@ import {
|
|
|
17
17
|
ActionMessage,
|
|
18
18
|
Args,
|
|
19
19
|
DisposeClientSessionParameters,
|
|
20
|
-
distinctAdd,
|
|
21
20
|
GLSPClientProxy,
|
|
22
21
|
GLSPServer,
|
|
23
22
|
GLSPServerListener,
|
|
@@ -25,9 +24,10 @@ import {
|
|
|
25
24
|
InitializeParameters,
|
|
26
25
|
InitializeResult,
|
|
27
26
|
MaybePromise,
|
|
28
|
-
|
|
27
|
+
MessageAction,
|
|
29
28
|
ServerActions,
|
|
30
|
-
|
|
29
|
+
distinctAdd,
|
|
30
|
+
remove
|
|
31
31
|
} from '@eclipse-glsp/protocol';
|
|
32
32
|
import { inject, injectable, multiInject, optional } from 'inversify';
|
|
33
33
|
import { GlobalActionProvider } from '../actions/global-action-provider';
|
|
@@ -35,6 +35,7 @@ import { ClientSession } from '../session/client-session';
|
|
|
35
35
|
import { ClientSessionManager } from '../session/client-session-manager';
|
|
36
36
|
import { GLSPServerError } from '../utils/glsp-server-error';
|
|
37
37
|
import { Logger } from '../utils/logger';
|
|
38
|
+
import { ClientAction } from './client-action';
|
|
38
39
|
|
|
39
40
|
@injectable()
|
|
40
41
|
export class DefaultGLSPServer implements GLSPServer {
|
|
@@ -50,8 +51,7 @@ export class DefaultGLSPServer implements GLSPServer {
|
|
|
50
51
|
protected actionProvider: GlobalActionProvider;
|
|
51
52
|
|
|
52
53
|
@inject(GLSPClientProxy)
|
|
53
|
-
|
|
54
|
-
protected glspClientProxy?: GLSPClientProxy;
|
|
54
|
+
protected glspClientProxy: GLSPClientProxy;
|
|
55
55
|
|
|
56
56
|
protected initializeResult?: InitializeResult;
|
|
57
57
|
|
|
@@ -97,7 +97,7 @@ export class DefaultGLSPServer implements GLSPServer {
|
|
|
97
97
|
this.applicationId = params.applicationId;
|
|
98
98
|
const serverActions: ServerActions = {};
|
|
99
99
|
|
|
100
|
-
this.actionProvider.
|
|
100
|
+
this.actionProvider.actionKinds.forEach((kinds, diagramType) => (serverActions[diagramType] = kinds));
|
|
101
101
|
|
|
102
102
|
let result = { protocolVersion: DefaultGLSPServer.PROTOCOL_VERSION, serverActions };
|
|
103
103
|
|
|
@@ -149,8 +149,9 @@ export class DefaultGLSPServer implements GLSPServer {
|
|
|
149
149
|
if (!clientSession) {
|
|
150
150
|
throw new Error(`No client session has been initialized for client id: ${clientSessionId}`);
|
|
151
151
|
}
|
|
152
|
-
|
|
153
|
-
|
|
152
|
+
const action = message.action;
|
|
153
|
+
ClientAction.mark(action);
|
|
154
|
+
clientSession.actionDispatcher.dispatch(action).catch(error => this.handleProcessError(message, error));
|
|
154
155
|
}
|
|
155
156
|
|
|
156
157
|
protected handleProcessError(message: ActionMessage, reason: any): void | PromiseLike<void> {
|
|
@@ -162,16 +163,12 @@ export class DefaultGLSPServer implements GLSPServer {
|
|
|
162
163
|
details = reason.cause?.toString?.();
|
|
163
164
|
errorMsg = reason.message;
|
|
164
165
|
}
|
|
165
|
-
const errorAction =
|
|
166
|
+
const errorAction = MessageAction.create(errorMsg, { severity: 'ERROR', details });
|
|
166
167
|
this.sendToClient({ clientId: message.clientId, action: errorAction });
|
|
167
168
|
}
|
|
168
169
|
|
|
169
170
|
protected sendToClient(message: ActionMessage): void {
|
|
170
|
-
|
|
171
|
-
this.glspClientProxy.process(message);
|
|
172
|
-
return;
|
|
173
|
-
}
|
|
174
|
-
throw new Error("Could not send message to client. No 'GLSPClientProxy' is connected");
|
|
171
|
+
this.glspClientProxy.process(message);
|
|
175
172
|
}
|
|
176
173
|
|
|
177
174
|
getClientSession(sessionId: string): ClientSession | undefined {
|
|
@@ -47,7 +47,7 @@ describe('test DefaultClientSessionFactory', () => {
|
|
|
47
47
|
const factory = container.resolve(DefaultClientSessionFactory);
|
|
48
48
|
|
|
49
49
|
it('create - new client session', () => {
|
|
50
|
-
const session = factory.create({ clientSessionId, diagramType });
|
|
50
|
+
const session = factory.create({ clientSessionId, diagramType, clientActionKinds: [] });
|
|
51
51
|
expect(session.id).to.be.equal(clientSessionId);
|
|
52
52
|
expect(session.diagramType).to.be.equal(diagramType);
|
|
53
53
|
expect(session.container.parent).to.be.equal(container);
|
|
@@ -55,6 +55,6 @@ describe('test DefaultClientSessionFactory', () => {
|
|
|
55
55
|
});
|
|
56
56
|
|
|
57
57
|
it('create - unknown diagram type', () => {
|
|
58
|
-
expect(() => factory.create({ clientSessionId, diagramType: 'unknown-type' })).to.throw(GLSPServerError);
|
|
58
|
+
expect(() => factory.create({ clientSessionId, diagramType: 'unknown-type', clientActionKinds: [] })).to.throw(GLSPServerError);
|
|
59
59
|
});
|
|
60
60
|
});
|
|
@@ -52,18 +52,18 @@ export class DefaultClientSessionFactory implements ClientSessionFactory {
|
|
|
52
52
|
protected glspClient: GLSPClientProxy;
|
|
53
53
|
|
|
54
54
|
create(params: InitializeClientSessionParameters): ClientSession {
|
|
55
|
-
const { clientSessionId:
|
|
55
|
+
const { clientSessionId: clientId, diagramType, clientActionKinds, args } = params;
|
|
56
56
|
const diagramModules = this.diagramModules.get(diagramType);
|
|
57
57
|
if (!diagramModules || diagramModules.length === 0) {
|
|
58
58
|
throw new GLSPServerError(`Could not retrieve diagram module configuration for diagram type: '${diagramType}''`);
|
|
59
59
|
}
|
|
60
60
|
|
|
61
|
-
const sessionModule = createClientSessionModule(
|
|
61
|
+
const sessionModule = createClientSessionModule({ clientId, glspClient: this.glspClient, clientActionKinds });
|
|
62
62
|
const sessionContainer = this.serverContainer.createChild();
|
|
63
63
|
sessionContainer.load(...diagramModules, sessionModule);
|
|
64
64
|
const initializers = sessionContainer.getAll<ClientSessionInitializer>(ClientSessionInitializer);
|
|
65
65
|
initializers.forEach(service => service.initialize(args));
|
|
66
66
|
const actionDispatcher = sessionContainer.get<ActionDispatcher>(ActionDispatcher);
|
|
67
|
-
return new DefaultClientSession(
|
|
67
|
+
return new DefaultClientSession(clientId, diagramType, actionDispatcher, sessionContainer);
|
|
68
68
|
}
|
|
69
69
|
}
|
|
@@ -13,13 +13,13 @@
|
|
|
13
13
|
*
|
|
14
14
|
* SPDX-License-Identifier: EPL-2.0 OR GPL-2.0 WITH Classpath-exception-2.0
|
|
15
15
|
********************************************************************************/
|
|
16
|
+
import { expect } from 'chai';
|
|
16
17
|
import { Container, ContainerModule } from 'inversify';
|
|
18
|
+
import * as sinon from 'sinon';
|
|
17
19
|
import * as mock from '../test/mock-util';
|
|
18
20
|
import { Logger } from '../utils/logger';
|
|
19
21
|
import { ClientSessionFactory } from './client-session-factory';
|
|
20
22
|
import { DefaultClientSessionManager } from './client-session-manager';
|
|
21
|
-
import { expect } from 'chai';
|
|
22
|
-
import * as sinon from 'sinon';
|
|
23
23
|
|
|
24
24
|
describe('test DefaultClientSessionManager', () => {
|
|
25
25
|
const testSession = mock.createClientSession('myId', 'myDiagram');
|
|
@@ -47,7 +47,8 @@ describe('test DefaultClientSessionManager', () => {
|
|
|
47
47
|
// Test execution
|
|
48
48
|
const createdSession = sessionManager.getOrCreateClientSession({
|
|
49
49
|
clientSessionId: testSession.id,
|
|
50
|
-
diagramType: testSession.diagramType
|
|
50
|
+
diagramType: testSession.diagramType,
|
|
51
|
+
clientActionKinds: []
|
|
51
52
|
});
|
|
52
53
|
expect(createdSession).to.not.be.undefined;
|
|
53
54
|
expect(createdSession.id).to.be.equal(testSession.id);
|
|
@@ -13,10 +13,18 @@
|
|
|
13
13
|
*
|
|
14
14
|
* SPDX-License-Identifier: EPL-2.0 OR GPL-2.0 WITH Classpath-exception-2.0
|
|
15
15
|
********************************************************************************/
|
|
16
|
+
import { Args } from '@eclipse-glsp/protocol';
|
|
17
|
+
import { ArgsUtil } from './args-util';
|
|
18
|
+
|
|
16
19
|
export class ClientOptionsUtil {
|
|
17
20
|
private static FILE_PREFIX = 'file://';
|
|
21
|
+
public static IS_RECONNECTING = 'isReconnecting';
|
|
18
22
|
|
|
19
23
|
public static adaptUri(uri: string): string {
|
|
20
24
|
return uri.replace(this.FILE_PREFIX, '');
|
|
21
25
|
}
|
|
26
|
+
|
|
27
|
+
public static isReconnecting(options?: Args): boolean {
|
|
28
|
+
return ArgsUtil.getBoolean(options, ClientOptionsUtil.IS_RECONNECTING);
|
|
29
|
+
}
|
|
22
30
|
}
|
|
@@ -80,7 +80,8 @@ export function getRequestParentName(context: interfaces.Context): string | unde
|
|
|
80
80
|
if (context.currentRequest.parentRequest) {
|
|
81
81
|
const bindings = context.currentRequest.parentRequest.bindings;
|
|
82
82
|
if (bindings.length > 0) {
|
|
83
|
-
|
|
83
|
+
const binding = bindings[0] as interfaces.Binding<{ name?: string }>;
|
|
84
|
+
return binding.implementationType?.name;
|
|
84
85
|
}
|
|
85
86
|
}
|
|
86
87
|
return undefined;
|
|
@@ -14,8 +14,9 @@
|
|
|
14
14
|
* SPDX-License-Identifier: EPL-2.0 OR GPL-2.0 WITH Classpath-exception-2.0
|
|
15
15
|
********************************************************************************/
|
|
16
16
|
import { MaybePromise, RequestModelAction, SaveModelAction, TypeGuard } from '@eclipse-glsp/protocol';
|
|
17
|
-
import * as fs from 'fs
|
|
17
|
+
import * as fs from 'fs';
|
|
18
18
|
import { inject, injectable } from 'inversify';
|
|
19
|
+
import * as os from 'os';
|
|
19
20
|
import { fileURLToPath } from 'url';
|
|
20
21
|
import { ModelState, SOURCE_URI_ARG } from '../common/features/model/model-state';
|
|
21
22
|
import { SourceModelStorage } from '../common/features/model/source-model-storage';
|
|
@@ -91,7 +92,12 @@ export abstract class AbstractJsonModelStorage implements SourceModelStorage {
|
|
|
91
92
|
}
|
|
92
93
|
|
|
93
94
|
protected toPath(sourceUri: string): string {
|
|
94
|
-
|
|
95
|
+
let path = sourceUri.startsWith('file://') ? fileURLToPath(sourceUri) : sourceUri;
|
|
96
|
+
if (os.platform() === 'win32') {
|
|
97
|
+
// Remove the leading slash if it exists (Windows paths don't have it)
|
|
98
|
+
path = path.replace(/^\//, '');
|
|
99
|
+
}
|
|
100
|
+
return path;
|
|
95
101
|
}
|
|
96
102
|
|
|
97
103
|
protected getFileUri(action: SaveModelAction): string {
|
|
@@ -14,7 +14,7 @@
|
|
|
14
14
|
* SPDX-License-Identifier: EPL-2.0 OR GPL-2.0 WITH Classpath-exception-2.0
|
|
15
15
|
********************************************************************************/
|
|
16
16
|
import * as cmd from 'commander';
|
|
17
|
-
import * as fs from 'fs
|
|
17
|
+
import * as fs from 'fs';
|
|
18
18
|
import * as path from 'path';
|
|
19
19
|
import { LogLevel, LoggerConfigOptions, asLogLevel } from '../../common/utils/logger';
|
|
20
20
|
|