Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Refactor base protocol #315

Closed
tortmayr opened this issue Aug 12, 2021 · 1 comment
Closed

Refactor base protocol #315

tortmayr opened this issue Aug 12, 2021 · 1 comment

Comments

@tortmayr
Copy link
Contributor

In preparation for #150 it is necessary to refactor our current base protocol.
Currently the base protocol only provides methods for initializing the server and processing action messages. The actual initialization and disposal of a client session is done via action messages. In order to split the network-related classes from the language-related classes we would like to use child injectors for each language/session. This means we need methods for initializing and disposing client sessions directly in the base protocol because those methods provide the entrypoint for the server to know when to create/dispose a language specific injector for a client session.

tortmayr added a commit to eclipse-glsp/glsp-client that referenced this issue Aug 12, 2021
Refactor the base communication protocol to support initializing and disposing a client session for a given language. The method parameters are encapsulated in dedicated parameter objects to provide a stable API.

Also:
- Remove no longer needs actions for initializing/disposing a client session.
- Refactor `InitializeParameters` to use a custom args map instead of an arbitrary object. The additional map is the default approach in GLSP to provide additional custom arguments. 

Part of eclipse-glsp/glsp/issues/315
tortmayr added a commit to eclipse-glsp/glsp-server that referenced this issue Aug 12, 2021
Refactor the base communication protocol to support initializing and disposing a client session for a given language. The method parameters are encapsulated in dedicated parameter objects to provide a stable API. Refactor the existing `initialize` method to return void instead of a boolean and use a generic args map for custom arguments instead of a dedicated object. In addition, the protocol version that is implemented by the client is now passed as part of the `InitializeParameters`;

Other fixes/improvements:
- Fixed code template for new files. Used  ${year} variable for the copyright header instead of hard coded 2020 string.
- Refactor `ActionRegistry` to use Class<Action> instead of dedicated action instances.
- Fixed bug in "Disposable". Previously the 'disposed' flag was not set correctly
- Refactor `ClientOptions` util class and extract a generic `MapUtil`  class.

Part of eclipse-glsp/glsp/issues/315
tortmayr added a commit to eclipse-glsp/glsp-server that referenced this issue Aug 12, 2021
Refactor the base communication protocol to support initializing and disposing a client session for a given language. The method parameters are encapsulated in dedicated parameter objects to provide a stable API. Refactor the existing `initialize` method to return void instead of a boolean and use a generic args map for custom arguments instead of a dedicated object. In addition, the protocol version that is implemented by the client is now passed as part of the `InitializeParameters`

Other fixes/improvements:
- Fixed code template for new files. Used  ${year} variable for the copyright header instead of hard coded 2020 string.
- Refactor `ActionRegistry` to use Class<Action> instead of dedicated action instances.
- Fixed bug in "Disposable". Previously the 'disposed' flag was not set correctly
- Refactor `ClientOptions` util class and extract a generic `MapUtil`  class.

Part of eclipse-glsp/glsp/issues/315
tortmayr added a commit to eclipse-glsp/glsp-client that referenced this issue Aug 12, 2021
Refactor the base communication protocol to support initializing and disposing a client session for a given language. The method parameters are encapsulated in dedicated parameter objects to provide a stable API. Refactor the existing `initializeServer` method to return void instead of a boolean and use a generic args map for custom arguments instead of a dedicated object. In addition, the protocol version that is implemented by the client is now passed as part of the `InitializeParameters`

Refactor the standlone example to properly implement the new protocol.

Also:
- Remove no longer needs actions for initializing/disposing a client session.


Part of eclipse-glsp/glsp/issues/315
tortmayr added a commit to eclipse-glsp/glsp-server that referenced this issue Aug 12, 2021
Refactor the base communication protocol to support initializing and disposing a client session for a given language. The method parameters are encapsulated in dedicated parameter objects to provide a stable API. Refactor the existing `initialize` method to return void instead of a boolean and use a generic args map for custom arguments instead of a dedicated object. In addition, the protocol version that is implemented by the client is now passed as part of the `InitializeParameters`

Other fixes/improvements:
- Fixed code template for new files. Used  ${year} variable for the copyright header instead of hard coded 2020 string.
- Refactor `ActionRegistry` to use Class<Action> instead of dedicated action instances.
- Fixed bug in "Disposable". Previously the 'disposed' flag was not set correctly
- Refactor `ClientOptions` util class and extract a generic `MapUtil`  class.

Part of eclipse-glsp/glsp/issues/315
tortmayr added a commit to eclipse-glsp/glsp-theia-integration that referenced this issue Aug 12, 2021
Adapt integration code to conform to the changes of :
eclipse-glsp/glsp-client#132

Also:
-Fix bug and typo in glsp-theia-container-module
-Cleanup implementation of glsp-client-contribution and ensure that the ready() promise resolves AFTER the server has been initialized.
- Re-add WorkflowGLSPClientContribution (provides custom initialize options)

Requires eclipse-glsp/glsp-client#132
Part-of eclipse-glsp/glsp/issues/315
tortmayr added a commit to eclipse-glsp/glsp-theia-integration that referenced this issue Aug 15, 2021
Adapt integration code to conform to the changes of :
eclipse-glsp/glsp-client#132

Also:
-Fix bug and typo in glsp-theia-container-module
-Cleanup implementation of glsp-client-contribution and ensure that the ready() promise resolves AFTER the server has been initialized.
- Remove unncessary injected `TheiaGLSPConnector`in `GLSPTheiaDiagramServer`
- Re-add WorkflowGLSPClientContribution (provides custom initialize options)
- Add utility function for configuring a digram server. 

Requires eclipse-glsp/glsp-client#132
Part-of eclipse-glsp/glsp/issues/315
tortmayr added a commit that referenced this issue Aug 15, 2021
Update protocol.md to conform to changes from eclipse-glsp/glsp/315.

- Update `Server-Client Lifecycle` section
- Remove  `Session-Lifecycle` from the `Graphical Language Server Protocol` section. The session lifecycle has moved to the Server-Client Lifecycle` section
tortmayr added a commit to eclipse-glsp/glsp-server that referenced this issue Aug 15, 2021
Refactor the base communication protocol to support initializing and disposing a client session for a given language. The method parameters are encapsulated in dedicated parameter objects to provide a stable API. Refactor the existing `initialize` method to return void instead of a boolean and use a generic args map for custom arguments instead of a dedicated object. In addition, the protocol version that is implemented by the client is now passed as part of the `InitializeParameters`

Other fixes/improvements:
- Fixed code template for new files. Used  ${year} variable for the copyright header instead of hard coded 2020 string.
- Refactor `ActionRegistry` to use Class<Action> instead of dedicated action instances.
- Fixed bug in "Disposable". Previously the 'disposed' flag was not set correctly
- Refactor `ClientOptions` util class and extract a generic `MapUtil`  class.
- Merge `GLSPServer` and `GLSPJsonRpcServer` interfaces. There is no need of a dediacted subinterface because the GLSPServer interface is already tailored for JSON-RPC and not generically reuseable.
- Improve documentation for protocol components and related classes.
Part of eclipse-glsp/glsp/issues/315
tortmayr added a commit to eclipse-glsp/glsp-client that referenced this issue Aug 15, 2021
Refactor the base communication protocol to support initializing and disposing a client session for a given language. The method parameters are encapsulated in dedicated parameter objects to provide a stable API. Refactor the existing `initializeServer` method to return an `InitializeResult` instead of a boolean and use a generic args map for custom arguments instead of a dedicated object. The `InitializeResult` also provides the information about which actionKinds are handled by the server. In addition, the protocol version that is implemented by the client is now passed as part of the `InitializeParameters`

Using the new initialize result  the server action handlers can be configured BEFORE the first action is dispatched in a diagram container, which means its no longer necessary to register certain early actions directly in the diagram server.

Refactor the standalone example to properly implement the new protocol.

Also:
- Remove no longer needs protocol actions for initializing/disposing a client session.
- Update webpack config of standalone example to properly support typescript source maps.


Part of eclipse-glsp/glsp/issues/315
tortmayr added a commit that referenced this issue Aug 16, 2021
Update protocol.md to conform to changes from eclipse-glsp/glsp/315.

- Update `Server-Client Lifecycle` section
- Remove  `Session-Lifecycle` from the `Graphical Language Server Protocol` section. The session lifecycle has moved to the Server-Client Lifecycle` section
tortmayr added a commit to eclipse-glsp/glsp-server that referenced this issue Aug 16, 2021
Refactor the base communication protocol to support initializing and disposing a client session for a given language. The method parameters are encapsulated in dedicated parameter objects to provide a stable API. Refactor the existing `initialize` method to return void instead of a boolean and use a generic args map for custom arguments instead of a dedicated object. In addition, the protocol version that is implemented by the client is now passed as part of the `InitializeParameters`

Other fixes/improvements:
- Fixed code template for new files. Used  ${year} variable for the copyright header instead of hard coded 2020 string.
- Refactor `ActionRegistry` to use Class<Action> instead of dedicated action instances.
- Fixed bug in "Disposable". Previously the 'disposed' flag was not set correctly
- Refactor `ClientOptions` util class and extract a generic `MapUtil`  class.
- Merge `GLSPServer` and `GLSPJsonRpcServer` interfaces. There is no need of a dediacted subinterface because the GLSPServer interface is already tailored for JSON-RPC and not generically reuseable.
- Improve documentation for protocol components and related classes.
Part of eclipse-glsp/glsp/issues/315
tortmayr added a commit to eclipse-glsp/glsp-server that referenced this issue Aug 16, 2021
Refactor the base communication protocol to support initializing and disposing a client session for a given language. The method parameters are encapsulated in dedicated parameter objects to provide a stable API. Refactor the existing `initialize` method to return void instead of a boolean and use a generic args map for custom arguments instead of a dedicated object. In addition, the protocol version that is implemented by the client is now passed as part of the `InitializeParameters`

Other fixes/improvements:
- Fixed code template for new files. Used  ${year} variable for the copyright header instead of hard coded 2020 string.
- Refactor `ActionRegistry` to use Class<Action> instead of dedicated action instances.
- Fixed bug in "Disposable". Previously the 'disposed' flag was not set correctly
- Refactor `ClientOptions` util class and extract a generic `MapUtil`  class.
- Merge `GLSPServer` and `GLSPJsonRpcServer` interfaces. There is no need of a dediacted subinterface because the GLSPServer interface is already tailored for JSON-RPC and not generically reuseable.
- Improve documentation for protocol components and related classes.
Part of eclipse-glsp/glsp/issues/315
tortmayr added a commit to eclipse-glsp/glsp-client that referenced this issue Aug 16, 2021
Refactor the base communication protocol to support initializing and disposing a client session for a given language. The method parameters are encapsulated in dedicated parameter objects to provide a stable API. Refactor the existing `initializeServer` method to return an `InitializeResult` instead of a boolean and use a generic args map for custom arguments instead of a dedicated object. The `InitializeResult` also provides the information about which actionKinds are handled by the server. In addition, the protocol version that is implemented by the client is now passed as part of the `InitializeParameters`

Using the new initialize result  the server action handlers can be configured BEFORE the first action is dispatched in a diagram container, which means its no longer necessary to register certain early actions directly in the diagram server.

Refactor the standalone example to properly implement the new protocol.

Also:
- Remove no longer needs protocol actions for initializing/disposing a client session.
- Update webpack config of standalone example to properly support typescript source maps.


Part of eclipse-glsp/glsp/issues/315
tortmayr added a commit to eclipse-glsp/glsp-theia-integration that referenced this issue Aug 16, 2021
Adapt integration code to conform to the changes of :
eclipse-glsp/glsp-client#132

Also:
-Fix bug and typo in glsp-theia-container-module
-Cleanup implementation of glsp-client-contribution and ensure that the ready() promise resolves AFTER the server has been initialized.
- Remove unncessary injected `TheiaGLSPConnector`in `GLSPTheiaDiagramServer`
- Re-add WorkflowGLSPClientContribution (provides custom initialize options)
- Add utility function for configuring a digram server. 

Requires eclipse-glsp/glsp-client#132
Part-of eclipse-glsp/glsp/issues/315
tortmayr added a commit to eclipse-glsp/glsp-server that referenced this issue Aug 16, 2021
Refactor the base communication protocol to support initializing and disposing a client session for a given language. The method parameters are encapsulated in dedicated parameter objects to provide a stable API. Refactor the existing `initialize` method to return void instead of a boolean and use a generic args map for custom arguments instead of a dedicated object. In addition, the protocol version that is implemented by the client is now passed as part of the `InitializeParameters`

Other fixes/improvements:
- Fixed code template for new files. Used  ${year} variable for the copyright header instead of hard coded 2020 string.
- Refactor `ActionRegistry` to use Class<Action> instead of dedicated action instances.
- Fixed bug in "Disposable". Previously the 'disposed' flag was not set correctly
- Refactor `ClientOptions` util class and extract a generic `MapUtil`  class.
- Merge `GLSPServer` and `GLSPJsonRpcServer` interfaces. There is no need of a dediacted subinterface because the GLSPServer interface is already tailored for JSON-RPC and not generically reuseable.
- Improve documentation for protocol components and related classes.
Part of eclipse-glsp/glsp/issues/315
tortmayr added a commit to eclipse-glsp/glsp-client that referenced this issue Aug 16, 2021
Refactor the base communication protocol to support initializing and disposing a client session for a given language. The method parameters are encapsulated in dedicated parameter objects to provide a stable API. Refactor the existing `initializeServer` method to return an `InitializeResult` instead of a boolean and use a generic args map for custom arguments instead of a dedicated object. The `InitializeResult` also provides the information about which actionKinds are handled by the server. In addition, the protocol version that is implemented by the client is now passed as part of the `InitializeParameters`

Using the new initialize result  the server action handlers can be configured BEFORE the first action is dispatched in a diagram container, which means its no longer necessary to register certain early actions directly in the diagram server.

Refactor the standalone example to properly implement the new protocol.

Also:
- Remove no longer needs protocol actions for initializing/disposing a client session.
- Update webpack config of standalone example to properly support typescript source maps.


Part of eclipse-glsp/glsp/issues/315
tortmayr added a commit to eclipse-glsp/glsp-theia-integration that referenced this issue Aug 16, 2021
Adapt integration code to conform to the changes of :
eclipse-glsp/glsp-client#132

Also:
-Fix bug and typo in glsp-theia-container-module
-Cleanup implementation of glsp-client-contribution and ensure that the ready() promise resolves AFTER the server has been initialized.
- Remove unncessary injected `TheiaGLSPConnector`in `GLSPTheiaDiagramServer`
- Re-add WorkflowGLSPClientContribution (provides custom initialize options)
- Add utility function for configuring a digram server. 

Requires eclipse-glsp/glsp-client#132
Part-of eclipse-glsp/glsp/issues/315
tortmayr added a commit to eclipse-glsp/glsp-theia-integration that referenced this issue Aug 16, 2021
Adapt integration code to conform to the changes of :
eclipse-glsp/glsp-client#132

Also:
-Fix bug and typo in glsp-theia-container-module
-Cleanup implementation of glsp-client-contribution and ensure that the ready() promise resolves AFTER the server has been initialized.
- Remove unncessary injected `TheiaGLSPConnector`in `GLSPTheiaDiagramServer`
- Re-add WorkflowGLSPClientContribution (provides custom initialize options)
- Add utility function for configuring a digram server. 

Requires eclipse-glsp/glsp-client#132
Part-of eclipse-glsp/glsp/issues/315
tortmayr added a commit to eclipse-glsp/glsp-theia-integration that referenced this issue Aug 16, 2021
Adapt integration code to conform to the changes of :
eclipse-glsp/glsp-client#132

Also:
-Fix bug and typo in glsp-theia-container-module
-Cleanup implementation of glsp-client-contribution and ensure that the ready() promise resolves AFTER the server has been initialized.
- Remove unncessary injected `TheiaGLSPConnector`in `GLSPTheiaDiagramServer`
- Re-add WorkflowGLSPClientContribution (provides custom initialize options)
- Add utility function for configuring a digram server. 

Requires eclipse-glsp/glsp-client#132
Part-of eclipse-glsp/glsp/issues/315
tortmayr added a commit that referenced this issue Aug 16, 2021
Update protocol.md to conform to changes from eclipse-glsp/glsp/315.

- Update `Server-Client Lifecycle` section
- Remove  `Session-Lifecycle` from the `Graphical Language Server Protocol` section. The session lifecycle has moved to the Server-Client Lifecycle` section
tortmayr added a commit to eclipse-glsp/glsp-eclipse-integration that referenced this issue Aug 17, 2021
- Update targetplatform to use latest glsp versions and
Adapt cllient code to conform to the changes of :
eclipse-glsp/glsp-client#132

Part-of eclipse-glsp/glsp/issues/315
@tortmayr
Copy link
Contributor Author

The base protocol has been refactored and the core repositories (client& theia) have been updated.
The eclipse integration and the vscode-integration still need to consume the changes. I opened #380 and #379 to track this.

tortmayr added a commit to eclipse-glsp/glsp-eclipse-integration that referenced this issue Aug 30, 2021
Adapt the codebase to the changes from the protocol update of eclipse-glsp/glsp/issues/315.

Fixes eclipse-glsp/glsp/380
tortmayr added a commit to eclipse-glsp/glsp-eclipse-integration that referenced this issue Aug 30, 2021
Adapt the codebase to the changes from the protocol update of eclipse-glsp/glsp/issues/315.

Fixes eclipse-glsp/glsp/issues/380
tortmayr added a commit to eclipse-glsp/glsp-eclipse-integration that referenced this issue Aug 31, 2021
* #380 Adapt codebase to changes from #315

Adapt the codebase to the changes from the protocol update of eclipse-glsp/glsp/issues/315.

Fixes eclipse-glsp/glsp/issues/380

* Update package.json
holkerveen pushed a commit to holkerveen/glsp-client that referenced this issue Dec 21, 2024
Refactor the base communication protocol to support initializing and disposing a client session for a given language. The method parameters are encapsulated in dedicated parameter objects to provide a stable API. Refactor the existing `initializeServer` method to return an `InitializeResult` instead of a boolean and use a generic args map for custom arguments instead of a dedicated object. The `InitializeResult` also provides the information about which actionKinds are handled by the server. In addition, the protocol version that is implemented by the client is now passed as part of the `InitializeParameters`

Using the new initialize result  the server action handlers can be configured BEFORE the first action is dispatched in a diagram container, which means its no longer necessary to register certain early actions directly in the diagram server.

Refactor the standalone example to properly implement the new protocol.

Also:
- Remove no longer needs protocol actions for initializing/disposing a client session.
- Update webpack config of standalone example to properly support typescript source maps.


Part of eclipse-glsp/glsp/issues/315
holkerveen pushed a commit to holkerveen/glsp-client that referenced this issue Dec 21, 2024
Refactor the base communication protocol to support initializing and disposing a client session for a given language. The method parameters are encapsulated in dedicated parameter objects to provide a stable API. Refactor the existing `initializeServer` method to return an `InitializeResult` instead of a boolean and use a generic args map for custom arguments instead of a dedicated object. The `InitializeResult` also provides the information about which actionKinds are handled by the server. In addition, the protocol version that is implemented by the client is now passed as part of the `InitializeParameters`

Using the new initialize result  the server action handlers can be configured BEFORE the first action is dispatched in a diagram container, which means its no longer necessary to register certain early actions directly in the diagram server.

Refactor the standalone example to properly implement the new protocol.

Also:
- Remove no longer needs protocol actions for initializing/disposing a client session.
- Update webpack config of standalone example to properly support typescript source maps.


Part of eclipse-glsp/glsp/issues/315
MatthiasHofstaetter pushed a commit to MatthiasHofstaetter/glsp-server that referenced this issue Dec 21, 2024
Refactor the base communication protocol to support initializing and disposing a client session for a given language. The method parameters are encapsulated in dedicated parameter objects to provide a stable API. Refactor the existing `initialize` method to return void instead of a boolean and use a generic args map for custom arguments instead of a dedicated object. In addition, the protocol version that is implemented by the client is now passed as part of the `InitializeParameters`

Other fixes/improvements:
- Fixed code template for new files. Used  ${year} variable for the copyright header instead of hard coded 2020 string.
- Refactor `ActionRegistry` to use Class<Action> instead of dedicated action instances.
- Fixed bug in "Disposable". Previously the 'disposed' flag was not set correctly
- Refactor `ClientOptions` util class and extract a generic `MapUtil`  class.
- Merge `GLSPServer` and `GLSPJsonRpcServer` interfaces. There is no need of a dediacted subinterface because the GLSPServer interface is already tailored for JSON-RPC and not generically reuseable.
- Improve documentation for protocol components and related classes.
Part of eclipse-glsp/glsp/issues/315
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Projects
None yet
Development

No branches or pull requests

1 participant