├── .gitattributes ├── src ├── main │ ├── webapp │ │ ├── META-INF │ │ │ └── MANIFEST.MF │ │ ├── components │ │ │ ├── header │ │ │ │ ├── social-buttons.jsp │ │ │ │ ├── header.jsp │ │ │ │ └── github-ribbon.jsp │ │ │ ├── footer │ │ │ │ └── footer.jsp │ │ │ ├── preview │ │ │ │ ├── paginator │ │ │ │ │ ├── paginator.jsp │ │ │ │ │ ├── paginator.css │ │ │ │ │ └── paginator.js │ │ │ │ ├── social-buttons.jsp │ │ │ │ ├── preview.css │ │ │ │ ├── preview.jsp │ │ │ │ ├── diagram │ │ │ │ │ ├── preview-diagram.jsp │ │ │ │ │ ├── preview-diagram.css │ │ │ │ │ └── preview-diagram.js │ │ │ │ ├── menu │ │ │ │ │ ├── preview-menu.css │ │ │ │ │ └── preview-menu.jsp │ │ │ │ └── preview.js │ │ │ ├── modals │ │ │ │ ├── diagram-export │ │ │ │ │ ├── diagram-export.css │ │ │ │ │ ├── diagram-export.jsp │ │ │ │ │ └── diagram-export.js │ │ │ │ ├── settings │ │ │ │ │ ├── settings.css │ │ │ │ │ ├── settings.jsp │ │ │ │ │ └── settings.js │ │ │ │ ├── diagram-import │ │ │ │ │ ├── diagram-import.jsp │ │ │ │ │ └── diagram-import.css │ │ │ │ ├── modals.js │ │ │ │ └── modals.css │ │ │ ├── editor │ │ │ │ ├── url-input │ │ │ │ │ ├── editor-url-input.jsp │ │ │ │ │ ├── editor-url-input.css │ │ │ │ │ └── editor-url-input.js │ │ │ │ ├── editor.jsp │ │ │ │ ├── menu │ │ │ │ │ ├── editor-menu.js │ │ │ │ │ ├── editor-menu.jsp │ │ │ │ │ └── editor-menu.css │ │ │ │ └── editor.css │ │ │ ├── app-head.jsp │ │ │ ├── app.js │ │ │ └── app.css │ │ ├── favicon.ico │ │ ├── resource │ │ │ └── test │ │ │ │ ├── bob.png │ │ │ │ ├── test2diagrams.txt │ │ │ │ └── bob.svg │ │ ├── js │ │ │ ├── utilities │ │ │ │ ├── os-helpers.js │ │ │ │ ├── dom-helpers.js │ │ │ │ ├── theme-helpers.js │ │ │ │ └── url-helpers.js │ │ │ ├── communication │ │ │ │ └── server.js │ │ │ ├── language │ │ │ │ ├── completion │ │ │ │ │ ├── utils.js │ │ │ │ │ ├── icons.js │ │ │ │ │ ├── themes.js │ │ │ │ │ └── emojis.js │ │ │ │ ├── validation │ │ │ │ │ ├── validation.js │ │ │ │ │ └── listeners │ │ │ │ │ │ └── start-end-validation.js │ │ │ │ └── language.js │ │ │ └── config │ │ │ │ └── config.js │ │ ├── assets │ │ │ ├── actions │ │ │ │ ├── download.svg │ │ │ │ ├── upload.svg │ │ │ │ ├── undock.svg │ │ │ │ ├── copy.svg │ │ │ │ ├── dock.svg │ │ │ │ └── settings.svg │ │ │ └── file-types │ │ │ │ ├── txt.svg │ │ │ │ ├── map.svg │ │ │ │ ├── pdf.svg │ │ │ │ ├── png.svg │ │ │ │ ├── svg.svg │ │ │ │ └── ascii.svg │ │ ├── previewer.jsp │ │ ├── error.jsp │ │ └── index.jsp │ ├── resources │ │ ├── config.properties │ │ └── log4j.properties │ ├── java │ │ └── net │ │ │ └── sourceforge │ │ │ └── plantuml │ │ │ └── servlet │ │ │ ├── utility │ │ │ ├── package.html │ │ │ ├── NullOutputStream.java │ │ │ ├── Configuration.java │ │ │ └── UrlDataExtractor.java │ │ │ ├── package.html │ │ │ ├── EpsServlet.java │ │ │ ├── PdfServlet.java │ │ │ ├── SvgServlet.java │ │ │ ├── ImgServlet.java │ │ │ ├── AsciiServlet.java │ │ │ ├── Base64Servlet.java │ │ │ ├── EpsTextServlet.java │ │ │ ├── diagrams.txt │ │ │ ├── LanguageServlet.java │ │ │ ├── CheckSyntaxServlet.java │ │ │ └── MapServlet.java │ └── config │ │ └── rules.xml └── test │ └── java │ └── net │ └── sourceforge │ └── plantuml │ └── servlet │ ├── server │ ├── ServerUtils.java │ ├── ExternalServer.java │ └── EmbeddedJettyServer.java │ ├── AllTests.java │ ├── TestLanguage.java │ ├── TestEPS.java │ ├── TestAsciiArt.java │ ├── utils │ ├── TestUtils.java │ ├── JUnitWebDriver.java │ ├── WebappUITestCase.java │ └── WebappTestCase.java │ ├── TestPDF.java │ ├── TestCheck.java │ ├── TestDependencies.java │ ├── TestCharset.java │ ├── TestAsciiCoder.java │ ├── TestOldProxy.java │ ├── TestImage.java │ └── TestMap.java ├── .dockerignore ├── docs ├── screenshot.png ├── WebUI │ ├── gifs │ │ ├── alice-bob.gif │ │ ├── multipaging.gif │ │ ├── diagram-export.gif │ │ ├── diagram-import.gif │ │ ├── settings-theme.gif │ │ ├── split-screen.gif │ │ ├── mobile-alice-bob.gif │ │ ├── mobile-settings.gif │ │ ├── auto-completion-icons.gif │ │ ├── validation-start-end.gif │ │ ├── auto-completion-emojis.gif │ │ ├── auto-completion-themes.gif │ │ ├── settings-rendering-type.gif │ │ └── auto-completion-themes+icons.gif │ ├── mobile.md │ ├── import-export.md │ ├── README.md │ ├── settings.md │ └── language-features.md └── contribution │ └── front-end.md ├── .github ├── FUNDING.yml └── ISSUE_TEMPLATE │ ├── feature_request.md │ ├── bug_report.md │ └── documentation_request.md ├── .gitignore ├── SECURITY.md ├── docker-compose.yml ├── examples ├── README.md ├── additional-fonts │ ├── docker-compose.yml │ └── README.md ├── nginx-simple │ ├── docker-compose.yml │ ├── nginx.conf │ └── README.md ├── nginx-contextpath │ ├── docker-compose.yml │ ├── nginx.conf │ └── README.md └── kubernetes-simple │ ├── README.md │ └── deployment.yaml ├── ROOT.jetty.xml ├── docker-entrypoint.jetty.sh ├── .editorconfig ├── pom.xml ├── docker-entrypoint.tomcat.sh ├── .vscode └── settings.json ├── Dockerfile.tomcat ├── Dockerfile.jetty-alpine ├── pom.jdk8.xml └── Dockerfile.jetty /.gitattributes: -------------------------------------------------------------------------------- 1 | * text=auto eol=lf 2 | -------------------------------------------------------------------------------- /src/main/webapp/META-INF/MANIFEST.MF: -------------------------------------------------------------------------------- 1 | Manifest-Version: 1.0 2 | Class-Path: 3 | 4 | -------------------------------------------------------------------------------- /.dockerignore: -------------------------------------------------------------------------------- 1 | # .dockerignore -- stuff we don't need during image builds 2 | 3 | /.git/ 4 | -------------------------------------------------------------------------------- /src/main/resources/config.properties: -------------------------------------------------------------------------------- 1 | #PlantUML configuration file 2 | # 3 | SHOW_GITHUB_RIBBON=on -------------------------------------------------------------------------------- /docs/screenshot.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ShaheenJawadi/plantuml-server/HEAD/docs/screenshot.png -------------------------------------------------------------------------------- /src/main/webapp/components/header/social-buttons.jsp: -------------------------------------------------------------------------------- 1 | 2 | -------------------------------------------------------------------------------- /docs/WebUI/gifs/alice-bob.gif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ShaheenJawadi/plantuml-server/HEAD/docs/WebUI/gifs/alice-bob.gif -------------------------------------------------------------------------------- /src/main/webapp/components/footer/footer.jsp: -------------------------------------------------------------------------------- 1 |
<%= net.sourceforge.plantuml.version.Version.fullDescription() %>
2 | -------------------------------------------------------------------------------- /src/main/webapp/favicon.ico: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ShaheenJawadi/plantuml-server/HEAD/src/main/webapp/favicon.ico -------------------------------------------------------------------------------- /docs/WebUI/gifs/multipaging.gif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ShaheenJawadi/plantuml-server/HEAD/docs/WebUI/gifs/multipaging.gif -------------------------------------------------------------------------------- /docs/WebUI/gifs/diagram-export.gif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ShaheenJawadi/plantuml-server/HEAD/docs/WebUI/gifs/diagram-export.gif -------------------------------------------------------------------------------- /docs/WebUI/gifs/diagram-import.gif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ShaheenJawadi/plantuml-server/HEAD/docs/WebUI/gifs/diagram-import.gif -------------------------------------------------------------------------------- /docs/WebUI/gifs/settings-theme.gif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ShaheenJawadi/plantuml-server/HEAD/docs/WebUI/gifs/settings-theme.gif -------------------------------------------------------------------------------- /docs/WebUI/gifs/split-screen.gif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ShaheenJawadi/plantuml-server/HEAD/docs/WebUI/gifs/split-screen.gif -------------------------------------------------------------------------------- /docs/WebUI/gifs/mobile-alice-bob.gif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ShaheenJawadi/plantuml-server/HEAD/docs/WebUI/gifs/mobile-alice-bob.gif -------------------------------------------------------------------------------- /docs/WebUI/gifs/mobile-settings.gif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ShaheenJawadi/plantuml-server/HEAD/docs/WebUI/gifs/mobile-settings.gif -------------------------------------------------------------------------------- /.github/FUNDING.yml: -------------------------------------------------------------------------------- 1 | # These are supported funding model platforms 2 | 3 | github: plantuml 4 | patreon: plantuml 5 | liberapay: plantuml 6 | -------------------------------------------------------------------------------- /src/main/webapp/resource/test/bob.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ShaheenJawadi/plantuml-server/HEAD/src/main/webapp/resource/test/bob.png -------------------------------------------------------------------------------- /docs/WebUI/gifs/auto-completion-icons.gif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ShaheenJawadi/plantuml-server/HEAD/docs/WebUI/gifs/auto-completion-icons.gif -------------------------------------------------------------------------------- /docs/WebUI/gifs/validation-start-end.gif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ShaheenJawadi/plantuml-server/HEAD/docs/WebUI/gifs/validation-start-end.gif -------------------------------------------------------------------------------- /src/main/webapp/components/preview/paginator/paginator.jsp: -------------------------------------------------------------------------------- 1 | 2 | -------------------------------------------------------------------------------- /docs/WebUI/gifs/auto-completion-emojis.gif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ShaheenJawadi/plantuml-server/HEAD/docs/WebUI/gifs/auto-completion-emojis.gif -------------------------------------------------------------------------------- /docs/WebUI/gifs/auto-completion-themes.gif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ShaheenJawadi/plantuml-server/HEAD/docs/WebUI/gifs/auto-completion-themes.gif -------------------------------------------------------------------------------- /docs/WebUI/gifs/settings-rendering-type.gif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ShaheenJawadi/plantuml-server/HEAD/docs/WebUI/gifs/settings-rendering-type.gif -------------------------------------------------------------------------------- /docs/WebUI/gifs/auto-completion-themes+icons.gif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ShaheenJawadi/plantuml-server/HEAD/docs/WebUI/gifs/auto-completion-themes+icons.gif -------------------------------------------------------------------------------- /.gitignore: -------------------------------------------------------------------------------- 1 | # Eclipse Ignores 2 | target 3 | .settings 4 | .classpath 5 | .project 6 | .checkstyle 7 | 8 | # IntelliJ ignores 9 | .idea/ 10 | out/ 11 | *.iml 12 | *.ipr 13 | *.iws -------------------------------------------------------------------------------- /src/main/webapp/components/preview/social-buttons.jsp: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /src/main/webapp/components/preview/paginator/paginator.css: -------------------------------------------------------------------------------- 1 | /**************** 2 | * Paginator CSS * 3 | *****************/ 4 | 5 | #paginator { 6 | text-align: center; 7 | margin-bottom: 1rem; 8 | } 9 | -------------------------------------------------------------------------------- /src/main/webapp/components/modals/diagram-export/diagram-export.css: -------------------------------------------------------------------------------- 1 | /********************* 2 | * Diagram Export CSS * 3 | **********************/ 4 | 5 | #diagram-export.modal .label-input-pair label { 6 | min-width: 8rem; 7 | } 8 | -------------------------------------------------------------------------------- /src/main/webapp/components/modals/settings/settings.css: -------------------------------------------------------------------------------- 1 | /*************** 2 | * Settings CSS * 3 | ****************/ 4 | 5 | #settings #settings-monaco-editor { 6 | height: 17rem; 7 | border: 1px solid var(--border-color); 8 | } 9 | -------------------------------------------------------------------------------- /src/main/webapp/resource/test/test2diagrams.txt: -------------------------------------------------------------------------------- 1 | ' This file is used by the TestProxy unit test. 2 | ' It contains 2 diagrams description. 3 | 4 | @startuml 5 | Bob -> Alice : hello 6 | @enduml 7 | 8 | @startuml 9 | version 10 | @enduml 11 | -------------------------------------------------------------------------------- /src/main/webapp/js/utilities/os-helpers.js: -------------------------------------------------------------------------------- 1 | /************* 2 | * OS Helpers * 3 | **************/ 4 | 5 | const isMac = (function() { 6 | const PLATFORM = navigator?.userAgentData?.platform || navigator?.platform || "unknown"; 7 | return PLATFORM.match("Mac"); 8 | })(); 9 | -------------------------------------------------------------------------------- /src/main/webapp/components/editor/url-input/editor-url-input.jsp: -------------------------------------------------------------------------------- 1 |This package contains utility classes of the JEE PlantUml Server.
4 |Create your PlantUML diagrams directly in your browser!
9 | -------------------------------------------------------------------------------- /examples/additional-fonts/docker-compose.yml: -------------------------------------------------------------------------------- 1 | version: "3" 2 | 3 | services: 4 | plantuml-server: 5 | image: plantuml/plantuml-server:jetty 6 | container_name: plantuml-server 7 | ports: 8 | - "80:8080" 9 | environment: 10 | - TZ=Europe/Berlin 11 | - BASE_URL=plantuml 12 | volumes: 13 | - /usr/share/fonts:/var/lib/jetty/.local/share/fonts/host:ro 14 | -------------------------------------------------------------------------------- /docker-entrypoint.jetty.sh: -------------------------------------------------------------------------------- 1 | #!/bin/sh 2 | # cspell:words mkdir 3 | # cspell:enableCompoundWords 4 | ########################################################### 5 | 6 | # ensure context path starts with a slash 7 | export CONTEXT_PATH="/${BASE_URL#'/'}" 8 | 9 | # base image entrypoint 10 | if [ -x /docker-entrypoint.sh ]; then 11 | /docker-entrypoint.sh "$@" 12 | else 13 | exec "$@" 14 | fi 15 | -------------------------------------------------------------------------------- /docs/WebUI/mobile.md: -------------------------------------------------------------------------------- 1 | # Mobile Version 2 | 3 | PlantUML Server is mobile ready. 4 | 5 | ## First example: "Alice and Bob" 6 | 7 |  8 | 9 | 10 | ## Settings 11 | 12 |  13 | -------------------------------------------------------------------------------- /src/main/webapp/assets/actions/dock.svg: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /examples/nginx-simple/docker-compose.yml: -------------------------------------------------------------------------------- 1 | version: "3" 2 | 3 | services: 4 | plantuml-server: 5 | image: plantuml/plantuml-server:jetty 6 | container_name: plantuml-server 7 | environment: 8 | - TZ=Europe/Berlin 9 | 10 | nginx: 11 | image: nginx:alpine 12 | container_name: nginx 13 | ports: 14 | - "80:80" 15 | environment: 16 | - TZ=Europe/Berlin 17 | volumes: 18 | - ./nginx.conf:/etc/nginx/nginx.conf:ro 19 | -------------------------------------------------------------------------------- /.editorconfig: -------------------------------------------------------------------------------- 1 | root = true 2 | 3 | [*] 4 | charset = utf-8 5 | end_of_line = lf 6 | insert_final_newline = true 7 | indent_style = space 8 | indent_size = 2 9 | trim_trailing_whitespace = true 10 | 11 | [*.java] 12 | indent_size = 4 13 | 14 | [*.md] 15 | max_line_length = off 16 | trim_trailing_whitespace = false 17 | 18 | [*.puml] 19 | insert_final_newline = false 20 | 21 | [{Dockerfile,Dockerfile.*}] 22 | indent_size = 4 23 | 24 | [.vscode/*.json] 25 | indent_size = 4 26 | -------------------------------------------------------------------------------- /src/main/webapp/js/communication/server.js: -------------------------------------------------------------------------------- 1 | /*********************** 2 | * Server Communication * 3 | ************************/ 4 | 5 | function makeRequest( 6 | method, 7 | url, 8 | { 9 | data = null, 10 | headers = { "Content-Type": "text/plain" }, 11 | responseType = "text", 12 | baseUrl = "", 13 | } = {} 14 | ) { 15 | return PlantUmlLanguageFeatures.makeRequest( 16 | method, 17 | url, 18 | { data, headers, responseType, baseUrl } 19 | ); 20 | } 21 | -------------------------------------------------------------------------------- /examples/nginx-contextpath/docker-compose.yml: -------------------------------------------------------------------------------- 1 | version: "3" 2 | 3 | services: 4 | plantuml-server: 5 | image: plantuml/plantuml-server:jetty 6 | container_name: plantuml-server 7 | environment: 8 | - TZ=Europe/Berlin 9 | - BASE_URL=plantuml 10 | 11 | nginx: 12 | image: nginx:alpine 13 | container_name: nginx 14 | ports: 15 | - "80:80" 16 | environment: 17 | - TZ=Europe/Berlin 18 | volumes: 19 | - ./nginx.conf:/etc/nginx/nginx.conf:ro 20 | -------------------------------------------------------------------------------- /src/main/webapp/assets/file-types/txt.svg: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /src/main/webapp/js/language/completion/utils.js: -------------------------------------------------------------------------------- 1 | /********************************************** 2 | * PlantUML Language Completion Provider Utils * 3 | ***********************************************/ 4 | 5 | PlantUmlLanguageFeatures.prototype.getWordRange = function(model, position) { 6 | const word = model.getWordUntilPosition(position); 7 | return { 8 | startLineNumber: position.lineNumber, 9 | endLineNumber: position.lineNumber, 10 | startColumn: word.startColumn, 11 | endColumn: word.endColumn, 12 | }; 13 | } 14 | -------------------------------------------------------------------------------- /src/main/webapp/components/editor/editor.jsp: -------------------------------------------------------------------------------- 1 |19 | Sorry, but things didn't work out as planned. 20 |
21 |This package is in charge of the JEE PlantUml Server.
4 |There are 2 kind of servlets in this package:
5 | - Interactive servlets: Welcome, PlantUmlServlet that are in charge of the web pages dedicated to human users.
6 | - Service servlets: ImgServlet, SvgServlet, EpsServlet, EpsTextServlet, AsciiServlet, ProxyServlet that only produce a diagram as output.
7 |
8 | Structure of the service part of the PlantUmlServer:
9 |
13 |
15 |
19 |