Skip to content
This repository has been archived by the owner on Jan 15, 2020. It is now read-only.

Architectural Overview

Tobias Ortmayr edited this page Sep 19, 2018 · 10 revisions

Client

The generic Theia GLSP client is composed of three modules:

  1. glsp-sprotty
  2. theia-glsp
  3. glsp-theia-extension

glsp-sprotty

This module contains the implementation of the diagram framework which is used by a GLSP Theia client. The module is based on the sprotty-framework (https://github.com/theia-ide/sprotty). Additional features needed for GLSP compatibility are implemented using the extension approach provided by sprotty itself.

theia-glsp

This module contains the gluecode for using glsp-sprotty diagrams in Theia. This module is forked from the gluecode for using standard sprotty diagrams in Theia (https://github.com/theia-ide/theia-sprotty) and adds the necessary adaptions for glsp-sprotty and GLSP.

glsp-theia-extension

This module contains the frontend contributions needed to make a Theia application a full-fledged GLSP client. In addition, it provides a backend contribution for connecting the Theia GLSP client to a GLSP server. To minimize costs the implementation reuses parts of the LSP Theia module (https://www.npmjs.com/package/@theia/languages) where applicable. Extensions for a concrete graphical language will inject their custom implementations into this module

Server

The generic java-based GLSP server is composed of two modules:

  1. glsp-api
  2. glsp-server

glsp-api

This module implements the GLSP protocl-specific components like Actions, ActionMessages etc. In addition, it defines the interface for a generic modular GLSP-server component. The implemented protocol proposal can be found here: https://github.com/planger/GraphicalServerProtocol/blob/proposal-for-roadmap/specification.md

glsp-server

This module contributes the default implementation for the server interfaces provided by the glsp-api module. The implementation uses a module DI approach (similar to Xtext). Due to this approach a server implementation for a concrete graphical language can reuse the default implementation and change the behavior by injecting customized modules.

Clone this wiki locally