From 2807f1f97642082c5458df680b1844f75546a93c Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Ilkka=20Sepp=C3=A4l=C3=A4?= Date: Fri, 12 Apr 2024 19:54:20 +0300 Subject: [PATCH] fix: fix missing server session class diagram --- server-session/README.md | 2 +- server-session/etc/server-session.urm.png | Bin 0 -> 50490 bytes server-session/pom.xml | 26 ++++++++++++++++++ .../java/com/iluwatar/sessionserver/App.java | 24 ++++++++++++++++ .../iluwatar/sessionserver/LoginHandler.java | 24 ++++++++++++++++ .../iluwatar/sessionserver/LogoutHandler.java | 24 ++++++++++++++++ .../LoginHandlerTest.java | 24 ++++++++++++++++ .../LogoutHandlerTest.java | 24 ++++++++++++++++ 8 files changed, 147 insertions(+), 1 deletion(-) create mode 100644 server-session/etc/server-session.urm.png diff --git a/server-session/README.md b/server-session/README.md index e0d501738..094bb4372 100644 --- a/server-session/README.md +++ b/server-session/README.md @@ -179,7 +179,7 @@ Sessions are often given a maximum time in which they will be maintained. The se ## Class diagram -![Server Session class diagram](./etc/server-session.urm.puml "Server Session class diagram") +![Server Session class diagram](./etc/server-session.urm.png "Server Session class diagram") ## Applicability diff --git a/server-session/etc/server-session.urm.png b/server-session/etc/server-session.urm.png new file mode 100644 index 0000000000000000000000000000000000000000..2de3694cdb09684c1d5727fc9e4384940d94bc52 GIT binary patch literal 50490 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 literal 0 HcmV?d00001 diff --git a/server-session/pom.xml b/server-session/pom.xml index 27dfe0be7..e7cdcf82c 100644 --- a/server-session/pom.xml +++ b/server-session/pom.xml @@ -1,4 +1,30 @@ + diff --git a/server-session/src/main/java/com/iluwatar/sessionserver/App.java b/server-session/src/main/java/com/iluwatar/sessionserver/App.java index 4c693e51b..a3c66d3ff 100644 --- a/server-session/src/main/java/com/iluwatar/sessionserver/App.java +++ b/server-session/src/main/java/com/iluwatar/sessionserver/App.java @@ -1,3 +1,27 @@ +/* + * This project is licensed under the MIT license. Module model-view-viewmodel is using ZK framework licensed under LGPL (see lgpl-3.0.txt). + * + * The MIT License + * Copyright © 2014-2022 Ilkka Seppälä + * + * Permission is hereby granted, free of charge, to any person obtaining a copy + * of this software and associated documentation files (the "Software"), to deal + * in the Software without restriction, including without limitation the rights + * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell + * copies of the Software, and to permit persons to whom the Software is + * furnished to do so, subject to the following conditions: + * + * The above copyright notice and this permission notice shall be included in + * all copies or substantial portions of the Software. + * + * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR + * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, + * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE + * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER + * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, + * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN + * THE SOFTWARE. + */ package com.iluwatar.sessionserver; import com.sun.net.httpserver.HttpServer; diff --git a/server-session/src/main/java/com/iluwatar/sessionserver/LoginHandler.java b/server-session/src/main/java/com/iluwatar/sessionserver/LoginHandler.java index d327e7410..1e36ac052 100644 --- a/server-session/src/main/java/com/iluwatar/sessionserver/LoginHandler.java +++ b/server-session/src/main/java/com/iluwatar/sessionserver/LoginHandler.java @@ -1,3 +1,27 @@ +/* + * This project is licensed under the MIT license. Module model-view-viewmodel is using ZK framework licensed under LGPL (see lgpl-3.0.txt). + * + * The MIT License + * Copyright © 2014-2022 Ilkka Seppälä + * + * Permission is hereby granted, free of charge, to any person obtaining a copy + * of this software and associated documentation files (the "Software"), to deal + * in the Software without restriction, including without limitation the rights + * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell + * copies of the Software, and to permit persons to whom the Software is + * furnished to do so, subject to the following conditions: + * + * The above copyright notice and this permission notice shall be included in + * all copies or substantial portions of the Software. + * + * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR + * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, + * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE + * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER + * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, + * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN + * THE SOFTWARE. + */ package com.iluwatar.sessionserver; import com.sun.net.httpserver.HttpExchange; diff --git a/server-session/src/main/java/com/iluwatar/sessionserver/LogoutHandler.java b/server-session/src/main/java/com/iluwatar/sessionserver/LogoutHandler.java index 2dee93e27..5bea06f2f 100644 --- a/server-session/src/main/java/com/iluwatar/sessionserver/LogoutHandler.java +++ b/server-session/src/main/java/com/iluwatar/sessionserver/LogoutHandler.java @@ -1,3 +1,27 @@ +/* + * This project is licensed under the MIT license. Module model-view-viewmodel is using ZK framework licensed under LGPL (see lgpl-3.0.txt). + * + * The MIT License + * Copyright © 2014-2022 Ilkka Seppälä + * + * Permission is hereby granted, free of charge, to any person obtaining a copy + * of this software and associated documentation files (the "Software"), to deal + * in the Software without restriction, including without limitation the rights + * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell + * copies of the Software, and to permit persons to whom the Software is + * furnished to do so, subject to the following conditions: + * + * The above copyright notice and this permission notice shall be included in + * all copies or substantial portions of the Software. + * + * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR + * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, + * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE + * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER + * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, + * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN + * THE SOFTWARE. + */ package com.iluwatar.sessionserver; import com.sun.net.httpserver.HttpExchange; diff --git a/server-session/src/test/java/com.iluwatar.sessionserver/LoginHandlerTest.java b/server-session/src/test/java/com.iluwatar.sessionserver/LoginHandlerTest.java index 4c07ef130..e7e4db42f 100644 --- a/server-session/src/test/java/com.iluwatar.sessionserver/LoginHandlerTest.java +++ b/server-session/src/test/java/com.iluwatar.sessionserver/LoginHandlerTest.java @@ -1,3 +1,27 @@ +/* + * This project is licensed under the MIT license. Module model-view-viewmodel is using ZK framework licensed under LGPL (see lgpl-3.0.txt). + * + * The MIT License + * Copyright © 2014-2022 Ilkka Seppälä + * + * Permission is hereby granted, free of charge, to any person obtaining a copy + * of this software and associated documentation files (the "Software"), to deal + * in the Software without restriction, including without limitation the rights + * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell + * copies of the Software, and to permit persons to whom the Software is + * furnished to do so, subject to the following conditions: + * + * The above copyright notice and this permission notice shall be included in + * all copies or substantial portions of the Software. + * + * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR + * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, + * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE + * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER + * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, + * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN + * THE SOFTWARE. + */ package com.iluwatar.sessionserver; import static org.junit.jupiter.api.Assertions.assertEquals; diff --git a/server-session/src/test/java/com.iluwatar.sessionserver/LogoutHandlerTest.java b/server-session/src/test/java/com.iluwatar.sessionserver/LogoutHandlerTest.java index 60ab493b4..5d7202e9f 100644 --- a/server-session/src/test/java/com.iluwatar.sessionserver/LogoutHandlerTest.java +++ b/server-session/src/test/java/com.iluwatar.sessionserver/LogoutHandlerTest.java @@ -1,3 +1,27 @@ +/* + * This project is licensed under the MIT license. Module model-view-viewmodel is using ZK framework licensed under LGPL (see lgpl-3.0.txt). + * + * The MIT License + * Copyright © 2014-2022 Ilkka Seppälä + * + * Permission is hereby granted, free of charge, to any person obtaining a copy + * of this software and associated documentation files (the "Software"), to deal + * in the Software without restriction, including without limitation the rights + * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell + * copies of the Software, and to permit persons to whom the Software is + * furnished to do so, subject to the following conditions: + * + * The above copyright notice and this permission notice shall be included in + * all copies or substantial portions of the Software. + * + * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR + * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, + * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE + * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER + * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, + * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN + * THE SOFTWARE. + */ package com.iluwatar.sessionserver; import static org.mockito.Mockito.when;