diff --git a/src/doc/conf.py b/src/doc/conf.py index fee036d0a8a6a090edcdb0025cbc1198406b8f40..119f966e706a5c440a74b62eae93b984e7151552 100644 --- a/src/doc/conf.py +++ b/src/doc/conf.py @@ -47,6 +47,7 @@ extensions = [ "recommonmark", # For markdown files. "sphinx.ext.autosectionlabel", # Allow reference sections using its title "sphinx_rtd_theme", + "sphinxcontrib.plantuml", # PlantUML diagrams ] # Add any paths that contain templates here, relative to this directory. diff --git a/src/doc/development/structure.rst b/src/doc/development/structure.rst index 03950db99b0b5257a55f0ae8285bfe60d35b897a..41fd33241250da8ce5368e1d87292e69879f6158 100644 --- a/src/doc/development/structure.rst +++ b/src/doc/development/structure.rst @@ -30,8 +30,12 @@ Transactions are explained in detail in the :ref:`Transactions and Schedules<tra .. uml:: @startuml - abstract AbstractCaosDBServerResource - class RetrieveEntityResource + abstract AbstractCaosDBServerResource { + {abstract} httpGetInChildClass() + {abstract} httpPostInChildClass() + {abstract} ...InChildClass() + } + abstract RetrieveEntityResource class EntityResource AbstractCaosDBServerResource <|-- RetrieveEntityResource RetrieveEntityResource <|-- EntityResource @@ -60,6 +64,43 @@ main packages which handle the backend: method. These classes may use specific backend implementations (like for example the MySQL implementations) to interact with the backend database. + +.. uml:: + + @startuml + together { + abstract BackendTransaction { + HashMap impl // stores all implementations + abstract execute() + } + note left of BackendTransaction::impl + Stores the + implementation + for each + interface." + end note + package ...backend.interfaces { + interface GetIDByNameImpl { + abstract execute(String name, String role, String limit) + } + } + } + together { + package ...backend.transaction { + class GetIDByName extends BackendTransaction { + execute() + } + } + package ...backend.implementation.MySQL { + class MySQLGetIDByName implements GetIDByNameImpl { + execute(String name, String role, String limit) + } + } + } + + GetIDByName::execute --r-> MySQLGetIDByName + @enduml + .. _transactions: Transactions and Schedules diff --git a/src/test/docker/Dockerfile b/src/test/docker/Dockerfile index 08a2a0884d1f154bb941388075b2bdd915125f99..f3c8b98fdab34400cccfc11f0c9211eeca37f845 100644 --- a/src/test/docker/Dockerfile +++ b/src/test/docker/Dockerfile @@ -2,10 +2,11 @@ FROM debian:buster RUN apt-get update && \ apt-get install -y \ git make mariadb-server maven openjdk-11-jdk-headless \ + plantuml \ python3-pip screen libpam0g-dev unzip curl shunit2 \ python3-sphinx \ && \ - pip3 install javasphinx recommonmark sphinx-rtd-theme + pip3 install javasphinx recommonmark sphinx-rtd-theme sphinxcontrib-plantuml # Alternative, if javasphinx fails because python3-sphinx is too recent: # (`_l` not found):