Giter VIP home page Giter VIP logo

examples's People

Contributors

simonbrowndotje avatar

Stargazers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

Watchers

 avatar  avatar  avatar

examples's Issues

Mermaid.ink returns "Invalid encoded code" due to invalid base64 encoded data

Description

When running structurizr-lite war as Spring Boot executable in Windows 10, the structurizr plugin for mermaid is not able to construct a valid mermaid.ink link, and thus showing the error "Invalid encoded code"

Steps to reproduce

Fail case

  1. Run structurizr-lite.war as a Spring Boot executable on Windows 10
  2. Copy plugin-1.0-SNAPSHOT.jar from the plantuml and mermaid plugin into the plugins folder
  3. Create a markdown document with mermaid definition
  4. When accessing the document through structurizr, mermaid.ink shows "Invalid encoded code"

Success case

  1. Run structurizr-lite as docker
  2. Access the same markdown document with the mermaid definition
  3. mermaid diagram is shown successfully

Looking at the plugin code, it seems that System.lineSeparator() in MermaidEncoderPlugin.java is causing this. Changing them to '\n' and recompile the plugin works.

Screenshot

No response

Code sample

No response

Configuration

No response

Severity

Minor

Priority

I have no budget and there's no rush, please fix this for free

More information

No response

The mermaid encoder do not process the mermaid code if it contains "?"

Description

The documentation that consists of

graph TD
test{is it okay?}

Do not rendered

Steps to reproduce

Create a workspace that includes doc file doc.md and have a plugin mermaid encoder https://github.com/structurizr/examples/tree/main/dsl/plantuml-and-mermaid/plugin/src/main/java/mermaid
the doc.md is
Test

graph TD
test{is it okay?}

see that in structurizr lite the page will be "Test" and not contain image or mermaid code

Screenshot

No response

Code sample

No response

Configuration

No response

Severity

Minor

Priority

Low

Resolution

I have no budget, please fix this for free

More information

No response

How to create combined workplace.dsl file like in big-bank-plc example?

Question

I like how workplace.dsl files are broken up according to software system containers of internetbankingsystem and systemlandscape here

however a render tool will only accept 1 workplace.dsl file, like the one in the root above. How was that file created? Is there a tool to work with multiple workplace.dsl files that refer to each other?

Plantum and Mermaid documentation plugin example does not work

Description

Hi, tried to run this example via docker image structurizr/lite:3067

https://github.com/structurizr/examples/blob/84c796e06b18bb0fed3a79d5fd4df1c11b314e7b/dsl/plantuml-and-mermaid/workspace.dsl

But it does not render documentation with planutml. Instead, it throws an exception in plugin.

Servlet.service() for servlet [dispatcherServlet] in context with path [] threw exception [Handler dispatch failed: java.lang.NoSuchMethodError: 'java.util.Set com.structurizr.documentation.Documentation.getSections()'] with root cause

java.lang.NoSuchMethodError: 'java.util.Set com.structurizr.documentation.Documentation.getSections()'
        at com.structurizr.dsl.plugins.plantuml.PlantUMLEncoderPlugin.run(PlantUMLEncoderPlugin.java:22) ~[na:na]
        at com.structurizr.dsl.PluginDslContext.end(PluginDslContext.java:28) ~[structurizr-dsl-1.30.1.jar!/:1.30.1]
        at com.structurizr.dsl.StructurizrDslParser.endContext(StructurizrDslParser.java:964) ~[structurizr-dsl-1.30.1.jar!/:1.30.1]
        at com.structurizr.dsl.StructurizrDslParser.parse(StructurizrDslParser.java:239) ~[structurizr-dsl-1.30.1.jar!/:1.30.1]
        at com.structurizr.dsl.StructurizrDslParser.parse(StructurizrDslParser.java:128) ~[structurizr-dsl-1.30.1.jar!/:1.30.1]
        at com.structurizr.lite.component.workspace.FileSystemWorkspaceComponentImpl.loadWorkspaceFromDsl(FileSystemWorkspaceComponentImpl.java:122) ~[classes!/:na]
        at com.structurizr.lite.component.workspace.FileSystemWorkspaceComponentImpl.loadWorkspace(FileSystemWorkspaceComponentImpl.java:88) ~[classes!/:na]
        at com.structurizr.lite.component.workspace.FileSystemWorkspaceComponentImpl.getWorkspace(FileSystemWorkspaceComponentImpl.java:156) ~[classes!/:na]
        at com.structurizr.lite.web.ApiController.getWorkspace(ApiController.java:37) ~[classes!/:na]
        at java.base/jdk.internal.reflect.NativeMethodAccessorImpl.invoke0(Native Method) ~[na:na]
        at java.base/jdk.internal.reflect.NativeMethodAccessorImpl.invoke(Unknown Source) ~[na:na]
        at java.base/jdk.internal.reflect.DelegatingMethodAccessorImpl.invoke(Unknown Source) ~[na:na]
        at java.base/java.lang.reflect.Method.invoke(Unknown Source) ~[na:na]
        at org.springframework.web.method.support.InvocableHandlerMethod.doInvoke(InvocableHandlerMethod.java:207) ~[spring-web-6.0.6.jar!/:6.0.6]
        at org.springframework.web.method.support.InvocableHandlerMethod.invokeForRequest(InvocableHandlerMethod.java:152) ~[spring-web-6.0.6.jar!/:6.0.6]
        at org.springframework.web.servlet.mvc.method.annotation.ServletInvocableHandlerMethod.invokeAndHandle(ServletInvocableHandlerMethod.java:117) ~[spring-webmvc-6.0.6.jar!/:6.0.6]
        at org.springframework.web.servlet.mvc.method.annotation.RequestMappingHandlerAdapter.invokeHandlerMethod(RequestMappingHandlerAdapter.java:884) ~[spring-webmvc-6.0.6.jar!/:6.0.6]
        at org.springframework.web.servlet.mvc.method.annotation.RequestMappingHandlerAdapter.handleInternal(RequestMappingHandlerAdapter.java:797) ~[spring-webmvc-6.0.6.jar!/:6.0.6]
        at org.springframework.web.servlet.mvc.method.AbstractHandlerMethodAdapter.handle(AbstractHandlerMethodAdapter.java:87) ~[spring-webmvc-6.0.6.jar!/:6.0.6]
        at org.springframework.web.servlet.DispatcherServlet.doDispatch(DispatcherServlet.java:1081) ~[spring-webmvc-6.0.6.jar!/:6.0.6]
        at org.springframework.web.servlet.DispatcherServlet.doService(DispatcherServlet.java:974) ~[spring-webmvc-6.0.6.jar!/:6.0.6]
        at org.springframework.web.servlet.FrameworkServlet.processRequest(FrameworkServlet.java:1011) ~[spring-webmvc-6.0.6.jar!/:6.0.6]
        at org.springframework.web.servlet.FrameworkServlet.doGet(FrameworkServlet.java:903) ~[spring-webmvc-6.0.6.jar!/:6.0.6]
        at jakarta.servlet.http.HttpServlet.service(HttpServlet.java:705) ~[tomcat-embed-core-10.1.5.jar!/:6.0.0]
        at org.springframework.web.servlet.FrameworkServlet.service(FrameworkServlet.java:885) ~[spring-webmvc-6.0.6.jar!/:6.0.6]
        at jakarta.servlet.http.HttpServlet.service(HttpServlet.java:814) ~[tomcat-embed-core-10.1.5.jar!/:6.0.0]
        at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:223) ~[tomcat-embed-core-10.1.5.jar!/:na]
        at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:158) ~[tomcat-embed-core-10.1.5.jar!/:na]
        at org.apache.tomcat.websocket.server.WsFilter.doFilter(WsFilter.java:53) ~[tomcat-embed-websocket-10.1.5.jar!/:na]
        at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:185) ~[tomcat-embed-core-10.1.5.jar!/:na]
        at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:158) ~[tomcat-embed-core-10.1.5.jar!/:na]
        at org.springframework.web.filter.RequestContextFilter.doFilterInternal(RequestContextFilter.java:100) ~[spring-web-6.0.6.jar!/:6.0.6]
        at org.springframework.web.filter.OncePerRequestFilter.doFilter(OncePerRequestFilter.java:116) ~[spring-web-6.0.6.jar!/:6.0.6]
        at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:185) ~[tomcat-embed-core-10.1.5.jar!/:na]
        at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:158) ~[tomcat-embed-core-10.1.5.jar!/:na]
        at org.springframework.web.filter.FormContentFilter.doFilterInternal(FormContentFilter.java:93) ~[spring-web-6.0.6.jar!/:6.0.6]
        at org.springframework.web.filter.OncePerRequestFilter.doFilter(OncePerRequestFilter.java:116) ~[spring-web-6.0.6.jar!/:6.0.6]
        at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:185) ~[tomcat-embed-core-10.1.5.jar!/:na]
        at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:158) ~[tomcat-embed-core-10.1.5.jar!/:na]
        at org.springframework.web.filter.CharacterEncodingFilter.doFilterInternal(CharacterEncodingFilter.java:201) ~[spring-web-6.0.6.jar!/:6.0.6]
        at org.springframework.web.filter.OncePerRequestFilter.doFilter(OncePerRequestFilter.java:116) ~[spring-web-6.0.6.jar!/:6.0.6]
        at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:185) ~[tomcat-embed-core-10.1.5.jar!/:na]
        at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:158) ~[tomcat-embed-core-10.1.5.jar!/:na]
        at org.apache.catalina.core.StandardWrapperValve.invoke(StandardWrapperValve.java:177) ~[tomcat-embed-core-10.1.5.jar!/:na]
        at org.apache.catalina.core.StandardContextValve.invoke(StandardContextValve.java:97) ~[tomcat-embed-core-10.1.5.jar!/:na]
        at org.apache.catalina.authenticator.AuthenticatorBase.invoke(AuthenticatorBase.java:542) ~[tomcat-embed-core-10.1.5.jar!/:na]
        at org.apache.catalina.core.StandardHostValve.invoke(StandardHostValve.java:119) ~[tomcat-embed-core-10.1.5.jar!/:na]
        at org.apache.catalina.valves.ErrorReportValve.invoke(ErrorReportValve.java:92) ~[tomcat-embed-core-10.1.5.jar!/:na]
        at org.apache.catalina.core.StandardEngineValve.invoke(StandardEngineValve.java:78) ~[tomcat-embed-core-10.1.5.jar!/:na]
        at org.apache.catalina.connector.CoyoteAdapter.service(CoyoteAdapter.java:357) ~[tomcat-embed-core-10.1.5.jar!/:na]
        at org.apache.coyote.http11.Http11Processor.service(Http11Processor.java:400) ~[tomcat-embed-core-10.1.5.jar!/:na]
        at org.apache.coyote.AbstractProcessorLight.process(AbstractProcessorLight.java:65) ~[tomcat-embed-core-10.1.5.jar!/:na]
        at org.apache.coyote.AbstractProtocol$ConnectionHandler.process(AbstractProtocol.java:859) ~[tomcat-embed-core-10.1.5.jar!/:na]
        at org.apache.tomcat.util.net.NioEndpoint$SocketProcessor.doRun(NioEndpoint.java:1734) ~[tomcat-embed-core-10.1.5.jar!/:na]
        at org.apache.tomcat.util.net.SocketProcessorBase.run(SocketProcessorBase.java:52) ~[tomcat-embed-core-10.1.5.jar!/:na]
        at org.apache.tomcat.util.threads.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1191) ~[tomcat-embed-core-10.1.5.jar!/:na]
        at org.apache.tomcat.util.threads.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:659) ~[tomcat-embed-core-10.1.5.jar!/:na]
        at org.apache.tomcat.util.threads.TaskThread$WrappingRunnable.run(TaskThread.java:61) ~[tomcat-embed-core-10.1.5.jar!/:na]
        at java.base/java.lang.Thread.run(Unknown Source) ~[na:na]

Steps to reproduce

  1. clone folder https://github.com/structurizr/examples/blob/84c796e06b18bb0fed3a79d5fd4df1c11b314e7b/dsl/plantuml-and-mermaid

  2. go to cloned directory

  3. run docker run -it --rm -p 8080:8080 -v ${PWD}:/usr/local/structurizr structurizr/lite:3067

  4. Open documentation on localhost:8080

Screenshot

No response

Code sample

No response

Configuration

No response

Severity

Minor

Priority

Low

Resolution

I have no budget, please fix this for free

More information

No response

Example plugins do not work with the latest Structurizr Lite

Description

Greetings, kind people,

Thank you for the concept and the amazing toolset!

An error appears when trying out plugin examples with the latest Structurizr Lite running example workspace.

java.lang.NoSuchMethodError: 'java.util.Set com.structurizr.documentation.Documentation.getSections()'

Nothing custom, just using public repositories and no additional configuration.

Steps to reproduce

  1. In CLI
git clone [email protected]:structurizr/examples.git
docker pull structurizr/lite
docker run -it --rm -p 8080:8080 -v $(pwd)/examples/dsl/plantuml-and-mermaid:/usr/local/structurizr structurizr/lite
  1. Open http://localhost:8080/workspace/documentation in a browser -> that leads to error
  2. Check the container logs in the CLI session for the details

Screenshot

Container output:

$ docker run -it --rm -p 8080:8080 -v $(pwd)/examples/dsl/plantuml-and-mermaid:/usr/local/structurizr structurizr/lite
2023-06-18T12:34:53.181Z  INFO 1 --- [           main] com.structurizr.lite.StructurizrLite     : Starting StructurizrLite using Java 17.0.5 with PID 1 (/usr/local/structurizr-lite.war started by root in /)
2023-06-18T12:34:53.187Z  INFO 1 --- [           main] com.structurizr.lite.StructurizrLite     : No active profile set, falling back to 1 default profile: "default"
2023-06-18T12:34:59.601Z  INFO 1 --- [           main] com.structurizr.lite.StructurizrLite     : Started StructurizrLite in 7.829 seconds (process running for 10.09)
2023-06-18T12:34:59.605Z  INFO 1 --- [           main] com.structurizr.lite.StructurizrLite     : ***********************************************************************************
2023-06-18T12:34:59.606Z  INFO 1 --- [           main] com.structurizr.lite.StructurizrLite     :   _____ _                   _              _          
2023-06-18T12:34:59.606Z  INFO 1 --- [           main] com.structurizr.lite.StructurizrLite     :  / ____| |                 | |            (_)         
2023-06-18T12:34:59.607Z  INFO 1 --- [           main] com.structurizr.lite.StructurizrLite     : | (___ | |_ _ __ _   _  ___| |_ _   _ _ __ _ _____ __ 
2023-06-18T12:34:59.607Z  INFO 1 --- [           main] com.structurizr.lite.StructurizrLite     :  \___ \| __| '__| | | |/ __| __| | | | '__| |_  / '__|
2023-06-18T12:34:59.607Z  INFO 1 --- [           main] com.structurizr.lite.StructurizrLite     :  ____) | |_| |  | |_| | (__| |_| |_| | |  | |/ /| |   
2023-06-18T12:34:59.608Z  INFO 1 --- [           main] com.structurizr.lite.StructurizrLite     : |_____/ \__|_|   \__,_|\___|\__|\__,_|_|  |_/___|_|   
2023-06-18T12:34:59.608Z  INFO 1 --- [           main] com.structurizr.lite.StructurizrLite     :                                                       
2023-06-18T12:34:59.608Z  INFO 1 --- [           main] com.structurizr.lite.StructurizrLite     : Structurizr Lite
2023-06-18T12:34:59.611Z  INFO 1 --- [           main] com.structurizr.lite.StructurizrLite     :  - build: 3077 (2023-06-14T15:54:02Z
2023-06-18T12:34:59.613Z  INFO 1 --- [           main] com.structurizr.lite.StructurizrLite     :  - structurizr-java: v1.24.1
2023-06-18T12:34:59.627Z  INFO 1 --- [           main] com.structurizr.lite.StructurizrLite     :  - structurizr-dsl: v1.30.1
2023-06-18T12:34:59.629Z  INFO 1 --- [           main] com.structurizr.lite.StructurizrLite     :  - structurizr-import: v1.4.1
2023-06-18T12:34:59.629Z  INFO 1 --- [           main] com.structurizr.lite.StructurizrLite     : 
2023-06-18T12:34:59.630Z  INFO 1 --- [           main] com.structurizr.lite.StructurizrLite     : Workspace path: /usr/local/structurizr
2023-06-18T12:34:59.630Z  INFO 1 --- [           main] com.structurizr.lite.StructurizrLite     : Workspace filename: workspace[.dsl|.json]
2023-06-18T12:34:59.631Z  INFO 1 --- [           main] com.structurizr.lite.StructurizrLite     : URL: 
2023-06-18T12:34:59.633Z  INFO 1 --- [           main] com.structurizr.lite.StructurizrLite     : Auto-save interval: 5000ms
2023-06-18T12:34:59.635Z  INFO 1 --- [           main] com.structurizr.lite.StructurizrLite     : Auto-refresh interval: 0ms
2023-06-18T12:34:59.656Z  INFO 1 --- [           main] com.structurizr.lite.StructurizrLite     : dot: available
2023-06-18T12:34:59.657Z  INFO 1 --- [           main] com.structurizr.lite.StructurizrLite     : ***********************************************************************************
2023-06-18T12:34:59.658Z  INFO 1 --- [           main] com.structurizr.lite.StructurizrLite     : MIT License
2023-06-18T12:34:59.659Z  INFO 1 --- [           main] com.structurizr.lite.StructurizrLite     : 
2023-06-18T12:34:59.660Z  INFO 1 --- [           main] com.structurizr.lite.StructurizrLite     : Copyright (c) 2023 Structurizr Limited
2023-06-18T12:34:59.660Z  INFO 1 --- [           main] com.structurizr.lite.StructurizrLite     : 
2023-06-18T12:34:59.661Z  INFO 1 --- [           main] com.structurizr.lite.StructurizrLite     : Permission is hereby granted, free of charge, to any person obtaining a copy
2023-06-18T12:34:59.662Z  INFO 1 --- [           main] com.structurizr.lite.StructurizrLite     : of this software and associated documentation files (the "Software"), to deal
2023-06-18T12:34:59.662Z  INFO 1 --- [           main] com.structurizr.lite.StructurizrLite     : in the Software without restriction, including without limitation the rights
2023-06-18T12:34:59.663Z  INFO 1 --- [           main] com.structurizr.lite.StructurizrLite     : to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
2023-06-18T12:34:59.663Z  INFO 1 --- [           main] com.structurizr.lite.StructurizrLite     : copies of the Software, and to permit persons to whom the Software is
2023-06-18T12:34:59.664Z  INFO 1 --- [           main] com.structurizr.lite.StructurizrLite     : furnished to do so, subject to the following conditions:
2023-06-18T12:34:59.664Z  INFO 1 --- [           main] com.structurizr.lite.StructurizrLite     : 
2023-06-18T12:34:59.665Z  INFO 1 --- [           main] com.structurizr.lite.StructurizrLite     : The above copyright notice and this permission notice shall be included in all
2023-06-18T12:34:59.665Z  INFO 1 --- [           main] com.structurizr.lite.StructurizrLite     : copies or substantial portions of the Software.
2023-06-18T12:34:59.665Z  INFO 1 --- [           main] com.structurizr.lite.StructurizrLite     : 
2023-06-18T12:34:59.665Z  INFO 1 --- [           main] com.structurizr.lite.StructurizrLite     : THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
2023-06-18T12:34:59.666Z  INFO 1 --- [           main] com.structurizr.lite.StructurizrLite     : IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
2023-06-18T12:34:59.666Z  INFO 1 --- [           main] com.structurizr.lite.StructurizrLite     : FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
2023-06-18T12:34:59.666Z  INFO 1 --- [           main] com.structurizr.lite.StructurizrLite     : AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
2023-06-18T12:34:59.666Z  INFO 1 --- [           main] com.structurizr.lite.StructurizrLite     : LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
2023-06-18T12:34:59.667Z  INFO 1 --- [           main] com.structurizr.lite.StructurizrLite     : OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
2023-06-18T12:34:59.667Z  INFO 1 --- [           main] com.structurizr.lite.StructurizrLite     : SOFTWARE.
2023-06-18T12:34:59.667Z  INFO 1 --- [           main] com.structurizr.lite.StructurizrLite     : ***********************************************************************************
2023-06-18T12:35:06.165Z  WARN 1 --- [nio-8080-exec-2] .m.m.a.ExceptionHandlerExceptionResolver : Failure in @ExceptionHandler com.structurizr.lite.web.ApiController#error(HttpServletResponse, String)

java.lang.IllegalStateException: Could not resolve parameter [1] in public com.structurizr.lite.web.ApiResponse com.structurizr.lite.web.ApiController.error(jakarta.servlet.http.HttpServletResponse,java.lang.String): No suitable resolver
	at org.springframework.web.method.support.InvocableHandlerMethod.getMethodArgumentValues(InvocableHandlerMethod.java:178) ~[spring-web-6.0.6.jar!/:6.0.6]
	at org.springframework.web.method.support.InvocableHandlerMethod.invokeForRequest(InvocableHandlerMethod.java:148) ~[spring-web-6.0.6.jar!/:6.0.6]
	at org.springframework.web.servlet.mvc.method.annotation.ServletInvocableHandlerMethod.invokeAndHandle(ServletInvocableHandlerMethod.java:117) ~[spring-webmvc-6.0.6.jar!/:6.0.6]
	at org.springframework.web.servlet.mvc.method.annotation.ExceptionHandlerExceptionResolver.doResolveHandlerMethodException(ExceptionHandlerExceptionResolver.java:413) ~[spring-webmvc-6.0.6.jar!/:6.0.6]
	at org.springframework.web.servlet.handler.AbstractHandlerMethodExceptionResolver.doResolveException(AbstractHandlerMethodExceptionResolver.java:74) ~[spring-webmvc-6.0.6.jar!/:6.0.6]
	at org.springframework.web.servlet.handler.AbstractHandlerExceptionResolver.resolveException(AbstractHandlerExceptionResolver.java:141) ~[spring-webmvc-6.0.6.jar!/:6.0.6]
	at org.springframework.web.servlet.handler.HandlerExceptionResolverComposite.resolveException(HandlerExceptionResolverComposite.java:80) ~[spring-webmvc-6.0.6.jar!/:6.0.6]
	at org.springframework.web.servlet.DispatcherServlet.processHandlerException(DispatcherServlet.java:1341) ~[spring-webmvc-6.0.6.jar!/:6.0.6]
	at org.springframework.web.servlet.DispatcherServlet.processDispatchResult(DispatcherServlet.java:1152) ~[spring-webmvc-6.0.6.jar!/:6.0.6]
	at org.springframework.web.servlet.DispatcherServlet.doDispatch(DispatcherServlet.java:1098) ~[spring-webmvc-6.0.6.jar!/:6.0.6]
	at org.springframework.web.servlet.DispatcherServlet.doService(DispatcherServlet.java:974) ~[spring-webmvc-6.0.6.jar!/:6.0.6]
	at org.springframework.web.servlet.FrameworkServlet.processRequest(FrameworkServlet.java:1011) ~[spring-webmvc-6.0.6.jar!/:6.0.6]
	at org.springframework.web.servlet.FrameworkServlet.doGet(FrameworkServlet.java:903) ~[spring-webmvc-6.0.6.jar!/:6.0.6]
	at jakarta.servlet.http.HttpServlet.service(HttpServlet.java:705) ~[tomcat-embed-core-10.1.5.jar!/:6.0.0]
	at org.springframework.web.servlet.FrameworkServlet.service(FrameworkServlet.java:885) ~[spring-webmvc-6.0.6.jar!/:6.0.6]
	at jakarta.servlet.http.HttpServlet.service(HttpServlet.java:814) ~[tomcat-embed-core-10.1.5.jar!/:6.0.0]
	at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:223) ~[tomcat-embed-core-10.1.5.jar!/:na]
	at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:158) ~[tomcat-embed-core-10.1.5.jar!/:na]
	at org.apache.tomcat.websocket.server.WsFilter.doFilter(WsFilter.java:53) ~[tomcat-embed-websocket-10.1.5.jar!/:na]
	at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:185) ~[tomcat-embed-core-10.1.5.jar!/:na]
	at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:158) ~[tomcat-embed-core-10.1.5.jar!/:na]
	at org.springframework.web.filter.RequestContextFilter.doFilterInternal(RequestContextFilter.java:100) ~[spring-web-6.0.6.jar!/:6.0.6]
	at org.springframework.web.filter.OncePerRequestFilter.doFilter(OncePerRequestFilter.java:116) ~[spring-web-6.0.6.jar!/:6.0.6]
	at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:185) ~[tomcat-embed-core-10.1.5.jar!/:na]
	at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:158) ~[tomcat-embed-core-10.1.5.jar!/:na]
	at org.springframework.web.filter.FormContentFilter.doFilterInternal(FormContentFilter.java:93) ~[spring-web-6.0.6.jar!/:6.0.6]
	at org.springframework.web.filter.OncePerRequestFilter.doFilter(OncePerRequestFilter.java:116) ~[spring-web-6.0.6.jar!/:6.0.6]
	at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:185) ~[tomcat-embed-core-10.1.5.jar!/:na]
	at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:158) ~[tomcat-embed-core-10.1.5.jar!/:na]
	at org.springframework.web.filter.CharacterEncodingFilter.doFilterInternal(CharacterEncodingFilter.java:201) ~[spring-web-6.0.6.jar!/:6.0.6]
	at org.springframework.web.filter.OncePerRequestFilter.doFilter(OncePerRequestFilter.java:116) ~[spring-web-6.0.6.jar!/:6.0.6]
	at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:185) ~[tomcat-embed-core-10.1.5.jar!/:na]
	at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:158) ~[tomcat-embed-core-10.1.5.jar!/:na]
	at org.apache.catalina.core.StandardWrapperValve.invoke(StandardWrapperValve.java:177) ~[tomcat-embed-core-10.1.5.jar!/:na]
	at org.apache.catalina.core.StandardContextValve.invoke(StandardContextValve.java:97) ~[tomcat-embed-core-10.1.5.jar!/:na]
	at org.apache.catalina.authenticator.AuthenticatorBase.invoke(AuthenticatorBase.java:542) ~[tomcat-embed-core-10.1.5.jar!/:na]
	at org.apache.catalina.core.StandardHostValve.invoke(StandardHostValve.java:119) ~[tomcat-embed-core-10.1.5.jar!/:na]
	at org.apache.catalina.valves.ErrorReportValve.invoke(ErrorReportValve.java:92) ~[tomcat-embed-core-10.1.5.jar!/:na]
	at org.apache.catalina.core.StandardEngineValve.invoke(StandardEngineValve.java:78) ~[tomcat-embed-core-10.1.5.jar!/:na]
	at org.apache.catalina.connector.CoyoteAdapter.service(CoyoteAdapter.java:357) ~[tomcat-embed-core-10.1.5.jar!/:na]
	at org.apache.coyote.http11.Http11Processor.service(Http11Processor.java:400) ~[tomcat-embed-core-10.1.5.jar!/:na]
	at org.apache.coyote.AbstractProcessorLight.process(AbstractProcessorLight.java:65) ~[tomcat-embed-core-10.1.5.jar!/:na]
	at org.apache.coyote.AbstractProtocol$ConnectionHandler.process(AbstractProtocol.java:859) ~[tomcat-embed-core-10.1.5.jar!/:na]
	at org.apache.tomcat.util.net.NioEndpoint$SocketProcessor.doRun(NioEndpoint.java:1734) ~[tomcat-embed-core-10.1.5.jar!/:na]
	at org.apache.tomcat.util.net.SocketProcessorBase.run(SocketProcessorBase.java:52) ~[tomcat-embed-core-10.1.5.jar!/:na]
	at org.apache.tomcat.util.threads.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1191) ~[tomcat-embed-core-10.1.5.jar!/:na]
	at org.apache.tomcat.util.threads.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:659) ~[tomcat-embed-core-10.1.5.jar!/:na]
	at org.apache.tomcat.util.threads.TaskThread$WrappingRunnable.run(TaskThread.java:61) ~[tomcat-embed-core-10.1.5.jar!/:na]
	at java.base/java.lang.Thread.run(Unknown Source) ~[na:na]

2023-06-18T12:35:06.186Z ERROR 1 --- [nio-8080-exec-2] o.a.c.c.C.[.[.[/].[dispatcherServlet]    : Servlet.service() for servlet [dispatcherServlet] in context with path [] threw exception [Handler dispatch failed: java.lang.NoSuchMethodError: 'java.util.Set com.structurizr.documentation.Documentation.getSections()'] with root cause

java.lang.NoSuchMethodError: 'java.util.Set com.structurizr.documentation.Documentation.getSections()'
	at com.structurizr.dsl.plugins.plantuml.PlantUMLEncoderPlugin.run(PlantUMLEncoderPlugin.java:22) ~[na:na]
	at com.structurizr.dsl.PluginDslContext.end(PluginDslContext.java:28) ~[structurizr-dsl-1.30.1.jar!/:1.30.1]
	at com.structurizr.dsl.StructurizrDslParser.endContext(StructurizrDslParser.java:964) ~[structurizr-dsl-1.30.1.jar!/:1.30.1]
	at com.structurizr.dsl.StructurizrDslParser.parse(StructurizrDslParser.java:239) ~[structurizr-dsl-1.30.1.jar!/:1.30.1]
	at com.structurizr.dsl.StructurizrDslParser.parse(StructurizrDslParser.java:128) ~[structurizr-dsl-1.30.1.jar!/:1.30.1]
	at com.structurizr.lite.component.workspace.FileSystemWorkspaceComponentImpl.loadWorkspaceFromDsl(FileSystemWorkspaceComponentImpl.java:122) ~[classes!/:na]
	at com.structurizr.lite.component.workspace.FileSystemWorkspaceComponentImpl.loadWorkspace(FileSystemWorkspaceComponentImpl.java:88) ~[classes!/:na]
	at com.structurizr.lite.component.workspace.FileSystemWorkspaceComponentImpl.getWorkspace(FileSystemWorkspaceComponentImpl.java:156) ~[classes!/:na]
	at com.structurizr.lite.web.ApiController.getWorkspace(ApiController.java:37) ~[classes!/:na]
	at java.base/jdk.internal.reflect.NativeMethodAccessorImpl.invoke0(Native Method) ~[na:na]
	at java.base/jdk.internal.reflect.NativeMethodAccessorImpl.invoke(Unknown Source) ~[na:na]
	at java.base/jdk.internal.reflect.DelegatingMethodAccessorImpl.invoke(Unknown Source) ~[na:na]
	at java.base/java.lang.reflect.Method.invoke(Unknown Source) ~[na:na]
	at org.springframework.web.method.support.InvocableHandlerMethod.doInvoke(InvocableHandlerMethod.java:207) ~[spring-web-6.0.6.jar!/:6.0.6]
	at org.springframework.web.method.support.InvocableHandlerMethod.invokeForRequest(InvocableHandlerMethod.java:152) ~[spring-web-6.0.6.jar!/:6.0.6]
	at org.springframework.web.servlet.mvc.method.annotation.ServletInvocableHandlerMethod.invokeAndHandle(ServletInvocableHandlerMethod.java:117) ~[spring-webmvc-6.0.6.jar!/:6.0.6]
	at org.springframework.web.servlet.mvc.method.annotation.RequestMappingHandlerAdapter.invokeHandlerMethod(RequestMappingHandlerAdapter.java:884) ~[spring-webmvc-6.0.6.jar!/:6.0.6]
	at org.springframework.web.servlet.mvc.method.annotation.RequestMappingHandlerAdapter.handleInternal(RequestMappingHandlerAdapter.java:797) ~[spring-webmvc-6.0.6.jar!/:6.0.6]
	at org.springframework.web.servlet.mvc.method.AbstractHandlerMethodAdapter.handle(AbstractHandlerMethodAdapter.java:87) ~[spring-webmvc-6.0.6.jar!/:6.0.6]
	at org.springframework.web.servlet.DispatcherServlet.doDispatch(DispatcherServlet.java:1081) ~[spring-webmvc-6.0.6.jar!/:6.0.6]
	at org.springframework.web.servlet.DispatcherServlet.doService(DispatcherServlet.java:974) ~[spring-webmvc-6.0.6.jar!/:6.0.6]
	at org.springframework.web.servlet.FrameworkServlet.processRequest(FrameworkServlet.java:1011) ~[spring-webmvc-6.0.6.jar!/:6.0.6]
	at org.springframework.web.servlet.FrameworkServlet.doGet(FrameworkServlet.java:903) ~[spring-webmvc-6.0.6.jar!/:6.0.6]
	at jakarta.servlet.http.HttpServlet.service(HttpServlet.java:705) ~[tomcat-embed-core-10.1.5.jar!/:6.0.0]
	at org.springframework.web.servlet.FrameworkServlet.service(FrameworkServlet.java:885) ~[spring-webmvc-6.0.6.jar!/:6.0.6]
	at jakarta.servlet.http.HttpServlet.service(HttpServlet.java:814) ~[tomcat-embed-core-10.1.5.jar!/:6.0.0]
	at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:223) ~[tomcat-embed-core-10.1.5.jar!/:na]
	at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:158) ~[tomcat-embed-core-10.1.5.jar!/:na]
	at org.apache.tomcat.websocket.server.WsFilter.doFilter(WsFilter.java:53) ~[tomcat-embed-websocket-10.1.5.jar!/:na]
	at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:185) ~[tomcat-embed-core-10.1.5.jar!/:na]
	at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:158) ~[tomcat-embed-core-10.1.5.jar!/:na]
	at org.springframework.web.filter.RequestContextFilter.doFilterInternal(RequestContextFilter.java:100) ~[spring-web-6.0.6.jar!/:6.0.6]
	at org.springframework.web.filter.OncePerRequestFilter.doFilter(OncePerRequestFilter.java:116) ~[spring-web-6.0.6.jar!/:6.0.6]
	at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:185) ~[tomcat-embed-core-10.1.5.jar!/:na]
	at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:158) ~[tomcat-embed-core-10.1.5.jar!/:na]
	at org.springframework.web.filter.FormContentFilter.doFilterInternal(FormContentFilter.java:93) ~[spring-web-6.0.6.jar!/:6.0.6]
	at org.springframework.web.filter.OncePerRequestFilter.doFilter(OncePerRequestFilter.java:116) ~[spring-web-6.0.6.jar!/:6.0.6]
	at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:185) ~[tomcat-embed-core-10.1.5.jar!/:na]
	at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:158) ~[tomcat-embed-core-10.1.5.jar!/:na]
	at org.springframework.web.filter.CharacterEncodingFilter.doFilterInternal(CharacterEncodingFilter.java:201) ~[spring-web-6.0.6.jar!/:6.0.6]
	at org.springframework.web.filter.OncePerRequestFilter.doFilter(OncePerRequestFilter.java:116) ~[spring-web-6.0.6.jar!/:6.0.6]
	at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:185) ~[tomcat-embed-core-10.1.5.jar!/:na]
	at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:158) ~[tomcat-embed-core-10.1.5.jar!/:na]
	at org.apache.catalina.core.StandardWrapperValve.invoke(StandardWrapperValve.java:177) ~[tomcat-embed-core-10.1.5.jar!/:na]
	at org.apache.catalina.core.StandardContextValve.invoke(StandardContextValve.java:97) ~[tomcat-embed-core-10.1.5.jar!/:na]
	at org.apache.catalina.authenticator.AuthenticatorBase.invoke(AuthenticatorBase.java:542) ~[tomcat-embed-core-10.1.5.jar!/:na]
	at org.apache.catalina.core.StandardHostValve.invoke(StandardHostValve.java:119) ~[tomcat-embed-core-10.1.5.jar!/:na]
	at org.apache.catalina.valves.ErrorReportValve.invoke(ErrorReportValve.java:92) ~[tomcat-embed-core-10.1.5.jar!/:na]
	at org.apache.catalina.core.StandardEngineValve.invoke(StandardEngineValve.java:78) ~[tomcat-embed-core-10.1.5.jar!/:na]
	at org.apache.catalina.connector.CoyoteAdapter.service(CoyoteAdapter.java:357) ~[tomcat-embed-core-10.1.5.jar!/:na]
	at org.apache.coyote.http11.Http11Processor.service(Http11Processor.java:400) ~[tomcat-embed-core-10.1.5.jar!/:na]
	at org.apache.coyote.AbstractProcessorLight.process(AbstractProcessorLight.java:65) ~[tomcat-embed-core-10.1.5.jar!/:na]
	at org.apache.coyote.AbstractProtocol$ConnectionHandler.process(AbstractProtocol.java:859) ~[tomcat-embed-core-10.1.5.jar!/:na]
	at org.apache.tomcat.util.net.NioEndpoint$SocketProcessor.doRun(NioEndpoint.java:1734) ~[tomcat-embed-core-10.1.5.jar!/:na]
	at org.apache.tomcat.util.net.SocketProcessorBase.run(SocketProcessorBase.java:52) ~[tomcat-embed-core-10.1.5.jar!/:na]
	at org.apache.tomcat.util.threads.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1191) ~[tomcat-embed-core-10.1.5.jar!/:na]
	at org.apache.tomcat.util.threads.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:659) ~[tomcat-embed-core-10.1.5.jar!/:na]
	at org.apache.tomcat.util.threads.TaskThread$WrappingRunnable.run(TaskThread.java:61) ~[tomcat-embed-core-10.1.5.jar!/:na]
	at java.base/java.lang.Thread.run(Unknown Source) ~[na:na]

Code sample

https://github.com/structurizr/examples/blob/main/dsl/plantuml-and-mermaid/workspace.dsl

Configuration

No specific configuration

Severity

Major

Priority

Medium

Resolution

I have no budget, please fix this for free

More information

No response

Example documentation plugins are not applied for Container level pages

Description

Greetings kind people,

I was checking out example documentation plugins and realized that diagrams are not rendered on the Container level documentation and below.

Steps to reproduce

git clone [email protected]:sprymiker/structurizr-testing.git
cd structurizr-testing
docker compose up
  • Check out System Level -> diagrams are rendered, plugins work
  • Check out Container Level -> diagrams are NOT rendered, plugins DO NOT work

Screenshot

No response

Code sample

https://github.com/sprymiker/structurizr-testing

Configuration

Severity

Minor

Priority

Low

Resolution

I will try to provide PR

More information

No response

How do I document my automated tests using C4 model and StructurizR

Question

I use Web Application Factory for automated testing. It's essential to show that on the component level, there has to be a DAL layer that provides an extension point so that I can use two different data configurations:

  1. the real one
  2. an in-memory db or a docker-container instance for web-application-factory-based tests

Should I use two deployment diagrams to show this? I am not sure if the deployment diagram is appropriate because the test stage is executed before the deployment.

Another option would be something like

softwareSystem {
  db = container "Real DB"
  testDb = container "In-memory/Docker DB"
  api = container "API"
  api -> db "reads/writes data"
  api -> testDb "reads/writes data during tests"
}

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    ๐Ÿ–– Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. ๐Ÿ“Š๐Ÿ“ˆ๐ŸŽ‰

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google โค๏ธ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.