From 8f0997ff0d3d5865aa862ceaedc151cec6a87385 Mon Sep 17 00:00:00 2001 From: stvort Date: Fri, 21 Jul 2023 01:25:40 +0400 Subject: [PATCH] 2023-03 renamed folders and spring-29-integrations-channels added --- .../new-style/pom.xml | 0 .../src/main/java/ru/otus/spring/Main.java | 0 .../ru/otus/spring/rest/PagesController.java | 0 .../security/SecurityConfiguration.java | 0 .../src/main/resources/application.yml | 0 .../resources/templates/authenticated.html | 0 .../src/main/resources/templates/index.html | 0 .../src/main/resources/templates/public.html | 0 .../src/main/resources/templates/success.html | 0 .../old-style/pom.xml | 0 .../src/main/java/ru/otus/spring/Main.java | 0 .../ru/otus/spring/rest/PagesController.java | 0 .../security/SecurityConfiguration.java | 0 .../src/main/resources/application.yml | 0 .../resources/templates/authenticated.html | 0 .../src/main/resources/templates/index.html | 0 .../src/main/resources/templates/public.html | 0 .../src/main/resources/templates/success.html | 0 .../classwork/pom.xml | 0 .../src/main/java/ru/otus/spring/Main.java | 0 .../spring/controller/PagesController.java | 0 .../ru/otus/spring/security/AnonimusUD.java | 0 .../security/SecurityConfiguration.java | 0 .../spring/security/filter/MyOwnFilter.java | 0 .../src/main/resources/application.yml | 0 .../resources/templates/authenticated.html | 0 .../src/main/resources/templates/error.html | 0 .../src/main/resources/templates/index.html | 0 .../src/main/resources/templates/public.html | 0 .../src/main/resources/templates/success.html | 0 .../controller/PagesControllerTest.java | 0 .../solution4/pom.xml | 0 .../src/main/java/ru/otus/spring/Main.java | 0 .../spring/controller/PagesController.java | 0 .../ru/otus/spring/security/AnonimusUD.java | 0 .../security/SecurityConfiguration.java | 0 .../src/main/resources/application.yml | 0 .../resources/templates/authenticated.html | 0 .../src/main/resources/templates/error.html | 0 .../src/main/resources/templates/index.html | 0 .../src/main/resources/templates/public.html | 0 .../src/main/resources/templates/success.html | 0 .../{spring-26 => spring-25}/WebFlux/pom.xml | 0 .../java/ru/otus/spring/WebFluxStarter.java | 0 .../main/java/ru/otus/spring/data/Person.java | 0 .../ru/otus/spring/data/PersonRepository.java | 0 .../ru/otus/spring/rest/PersonController.java | 0 .../security/SecurityConfiguration.java | 0 .../src/main/resources/application.yml | 0 .../main/resources/static/authenticated.html | 0 .../src/main/resources/static/index.html | 0 .../src/main/resources/static/public.html | 0 .../classwork/pom.xml | 0 .../spring/SpringSecurityAuthorization.java | 0 .../spring/controller/PagesController.java | 0 .../controller/SecurityControllerAdvice.java | 0 .../security/MethodSecurityConfiguration.java | 0 .../security/SecurityConfiguration.java | 0 .../ru/otus/spring/service/MyService.java | 0 .../src/main/resources/templates/admin.html | 0 .../resources/templates/authenticated.html | 0 .../src/main/resources/templates/error.html | 0 .../src/main/resources/templates/index.html | 0 .../src/main/resources/templates/manager.html | 0 .../src/main/resources/templates/public.html | 0 .../src/main/resources/templates/success.html | 0 .../src/main/resources/templates/user.html | 0 .../{spring-26 => spring-25}/oauth/pom.xml | 0 .../ru/otus/spring/sso/GithubApplication.java | 0 .../sso/controller/IndexController.java | 0 .../spring/sso/controller/UserController.java | 0 .../spring/sso/security/SecurityConfig.java | 0 .../oauth/src/main/resources/application.yml | 0 .../src/main/resources/templates/index.html | 0 .../solution2/pom.xml | 0 .../spring/SpringSecurityAuthorization.java | 0 .../spring/controller/PagesController.java | 0 .../security/MethodSecurityConfiguration.java | 0 .../security/SecurityConfiguration.java | 0 .../ru/otus/spring/service/MyService.java | 0 .../src/main/resources/templates/admin.html | 0 .../resources/templates/authenticated.html | 0 .../src/main/resources/templates/error.html | 0 .../src/main/resources/templates/index.html | 0 .../src/main/resources/templates/manager.html | 0 .../src/main/resources/templates/public.html | 0 .../src/main/resources/templates/success.html | 0 .../src/main/resources/templates/user.html | 0 2023-03/{spring-27 => spring-26}/ACL/pom.xml | 0 .../src/main/java/ru/otus/spring/Main.java | 0 .../ru/otus/spring/model/NoticeMessage.java | 0 .../main/java/ru/otus/spring/model/Pack.java | 0 .../repository/NoticeMessageRepository.java | 0 .../spring/rest/NoticeMessageController.java | 0 .../ru/otus/spring/security/AclConfig.java | 0 .../AclMethodSecurityConfiguration.java | 0 .../security/SecurityConfiguration.java | 0 .../ru/otus/spring/service/NoticeService.java | 0 .../ACL/src/main/resources/application.yml | 0 .../ACL/src/main/resources/data.sql | 0 .../ACL/src/main/resources/schema.sql | 0 .../src/main/resources/templates/error.html | 0 .../src/main/resources/templates/index.html | 0 2023-03/{spring-27 => spring-26}/jwt/pom.xml | 0 .../java/ru/otus/security/jwt/JwtStarter.java | 0 .../security/jwt/config/SecurityConfig.java | 0 .../jwt/controller/HelloController.java | 0 .../jwt/controller/TokenController.java | 0 .../jwt/src/main/resources/app.key | 0 .../jwt/src/main/resources/app.pub | 0 .../jwt/src/main/resources/application.yml | 0 .../src/main/resources/templates/index.html | 0 .../.gitignore | 0 .../entries.csv | 0 .../pom.xml | 0 .../ru/otus/example/springbatch/Main.java | 0 .../chandgelogs/InitMongoDBDataChangeLog.java | 0 .../example/springbatch/config/AppProps.java | 0 .../springbatch/config/BatchConfig.java | 0 .../example/springbatch/config/JobConfig.java | 0 .../example/springbatch/model/Person.java | 0 .../springbatch/service/CleanUpService.java | 0 .../service/HappyBirthdayService.java | 0 .../springbatch/shell/BatchCommands.java | 0 .../src/main/resources/application.yml | 0 .../springbatch/config/ImportUserJobTest.java | 0 .../src/test/resources/application.yml | 0 .../test/resources/expected-test-output.dat | 0 .../src/test/resources/test-entries.csv | 0 .../.gitignore | 33 ++++++ .../integrations-channels-exercise/pom.xml | 51 +++++++++ .../java/ru/otus/spring/integration/App.java | 59 ++++++++++ .../src/main/resources/application.yml | 5 + .../otus/spring/integration/MessagesTest.java | 98 +++++++++++++++++ .../java/ru/otus/spring/integration/User.java | 36 +++++++ .../integrations-channels-solution/pom.xml | 51 +++++++++ .../java/ru/otus/spring/integration/App.java | 59 ++++++++++ .../otus/spring/integration/MessagesTest.java | 101 ++++++++++++++++++ .../java/ru/otus/spring/integration/User.java | 36 +++++++ .../spring-29-integrations-channels/pom.xml | 17 +++ 140 files changed, 546 insertions(+) rename 2023-03/{spring-24-ss-start => spring-23-ss-start}/new-style/pom.xml (100%) rename 2023-03/{spring-24-ss-start => spring-23-ss-start}/new-style/src/main/java/ru/otus/spring/Main.java (100%) rename 2023-03/{spring-24-ss-start => spring-23-ss-start}/new-style/src/main/java/ru/otus/spring/rest/PagesController.java (100%) rename 2023-03/{spring-24-ss-start => spring-23-ss-start}/new-style/src/main/java/ru/otus/spring/security/SecurityConfiguration.java (100%) rename 2023-03/{spring-24-ss-start => spring-23-ss-start}/new-style/src/main/resources/application.yml (100%) rename 2023-03/{spring-24-ss-start => spring-23-ss-start}/new-style/src/main/resources/templates/authenticated.html (100%) rename 2023-03/{spring-24-ss-start => spring-23-ss-start}/new-style/src/main/resources/templates/index.html (100%) rename 2023-03/{spring-24-ss-start => spring-23-ss-start}/new-style/src/main/resources/templates/public.html (100%) rename 2023-03/{spring-24-ss-start => spring-23-ss-start}/new-style/src/main/resources/templates/success.html (100%) rename 2023-03/{spring-24-ss-start => spring-23-ss-start}/old-style/pom.xml (100%) rename 2023-03/{spring-24-ss-start => spring-23-ss-start}/old-style/src/main/java/ru/otus/spring/Main.java (100%) rename 2023-03/{spring-24-ss-start => spring-23-ss-start}/old-style/src/main/java/ru/otus/spring/rest/PagesController.java (100%) rename 2023-03/{spring-24-ss-start => spring-23-ss-start}/old-style/src/main/java/ru/otus/spring/security/SecurityConfiguration.java (100%) rename 2023-03/{spring-24-ss-start => spring-23-ss-start}/old-style/src/main/resources/application.yml (100%) rename 2023-03/{spring-24-ss-start => spring-23-ss-start}/old-style/src/main/resources/templates/authenticated.html (100%) rename 2023-03/{spring-24-ss-start => spring-23-ss-start}/old-style/src/main/resources/templates/index.html (100%) rename 2023-03/{spring-24-ss-start => spring-23-ss-start}/old-style/src/main/resources/templates/public.html (100%) rename 2023-03/{spring-24-ss-start => spring-23-ss-start}/old-style/src/main/resources/templates/success.html (100%) rename 2023-03/{spring-25-SS-auth => spring-24-SS-auth}/classwork/pom.xml (100%) rename 2023-03/{spring-25-SS-auth => spring-24-SS-auth}/classwork/src/main/java/ru/otus/spring/Main.java (100%) rename 2023-03/{spring-25-SS-auth => spring-24-SS-auth}/classwork/src/main/java/ru/otus/spring/controller/PagesController.java (100%) rename 2023-03/{spring-25-SS-auth => spring-24-SS-auth}/classwork/src/main/java/ru/otus/spring/security/AnonimusUD.java (100%) rename 2023-03/{spring-25-SS-auth => spring-24-SS-auth}/classwork/src/main/java/ru/otus/spring/security/SecurityConfiguration.java (100%) rename 2023-03/{spring-25-SS-auth => spring-24-SS-auth}/classwork/src/main/java/ru/otus/spring/security/filter/MyOwnFilter.java (100%) rename 2023-03/{spring-25-SS-auth => spring-24-SS-auth}/classwork/src/main/resources/application.yml (100%) rename 2023-03/{spring-25-SS-auth => spring-24-SS-auth}/classwork/src/main/resources/templates/authenticated.html (100%) rename 2023-03/{spring-25-SS-auth => spring-24-SS-auth}/classwork/src/main/resources/templates/error.html (100%) rename 2023-03/{spring-25-SS-auth => spring-24-SS-auth}/classwork/src/main/resources/templates/index.html (100%) rename 2023-03/{spring-25-SS-auth => spring-24-SS-auth}/classwork/src/main/resources/templates/public.html (100%) rename 2023-03/{spring-25-SS-auth => spring-24-SS-auth}/classwork/src/main/resources/templates/success.html (100%) rename 2023-03/{spring-25-SS-auth => spring-24-SS-auth}/classwork/src/test/java/ru/otus/spring/controller/PagesControllerTest.java (100%) rename 2023-03/{spring-25-SS-auth => spring-24-SS-auth}/solution4/pom.xml (100%) rename 2023-03/{spring-25-SS-auth => spring-24-SS-auth}/solution4/src/main/java/ru/otus/spring/Main.java (100%) rename 2023-03/{spring-25-SS-auth => spring-24-SS-auth}/solution4/src/main/java/ru/otus/spring/controller/PagesController.java (100%) rename 2023-03/{spring-25-SS-auth => spring-24-SS-auth}/solution4/src/main/java/ru/otus/spring/security/AnonimusUD.java (100%) rename 2023-03/{spring-25-SS-auth => spring-24-SS-auth}/solution4/src/main/java/ru/otus/spring/security/SecurityConfiguration.java (100%) rename 2023-03/{spring-25-SS-auth => spring-24-SS-auth}/solution4/src/main/resources/application.yml (100%) rename 2023-03/{spring-25-SS-auth => spring-24-SS-auth}/solution4/src/main/resources/templates/authenticated.html (100%) rename 2023-03/{spring-25-SS-auth => spring-24-SS-auth}/solution4/src/main/resources/templates/error.html (100%) rename 2023-03/{spring-25-SS-auth => spring-24-SS-auth}/solution4/src/main/resources/templates/index.html (100%) rename 2023-03/{spring-25-SS-auth => spring-24-SS-auth}/solution4/src/main/resources/templates/public.html (100%) rename 2023-03/{spring-25-SS-auth => spring-24-SS-auth}/solution4/src/main/resources/templates/success.html (100%) rename 2023-03/{spring-26 => spring-25}/WebFlux/pom.xml (100%) rename 2023-03/{spring-26 => spring-25}/WebFlux/src/main/java/ru/otus/spring/WebFluxStarter.java (100%) rename 2023-03/{spring-26 => spring-25}/WebFlux/src/main/java/ru/otus/spring/data/Person.java (100%) rename 2023-03/{spring-26 => spring-25}/WebFlux/src/main/java/ru/otus/spring/data/PersonRepository.java (100%) rename 2023-03/{spring-26 => spring-25}/WebFlux/src/main/java/ru/otus/spring/rest/PersonController.java (100%) rename 2023-03/{spring-26 => spring-25}/WebFlux/src/main/java/ru/otus/spring/security/SecurityConfiguration.java (100%) rename 2023-03/{spring-26 => spring-25}/WebFlux/src/main/resources/application.yml (100%) rename 2023-03/{spring-26 => spring-25}/WebFlux/src/main/resources/static/authenticated.html (100%) rename 2023-03/{spring-26 => spring-25}/WebFlux/src/main/resources/static/index.html (100%) rename 2023-03/{spring-26 => spring-25}/WebFlux/src/main/resources/static/public.html (100%) rename 2023-03/{spring-26 => spring-25}/classwork/pom.xml (100%) rename 2023-03/{spring-26 => spring-25}/classwork/src/main/java/ru/otus/spring/SpringSecurityAuthorization.java (100%) rename 2023-03/{spring-26 => spring-25}/classwork/src/main/java/ru/otus/spring/controller/PagesController.java (100%) rename 2023-03/{spring-26 => spring-25}/classwork/src/main/java/ru/otus/spring/controller/SecurityControllerAdvice.java (100%) rename 2023-03/{spring-26 => spring-25}/classwork/src/main/java/ru/otus/spring/security/MethodSecurityConfiguration.java (100%) rename 2023-03/{spring-26 => spring-25}/classwork/src/main/java/ru/otus/spring/security/SecurityConfiguration.java (100%) rename 2023-03/{spring-26 => spring-25}/classwork/src/main/java/ru/otus/spring/service/MyService.java (100%) rename 2023-03/{spring-26 => spring-25}/classwork/src/main/resources/templates/admin.html (100%) rename 2023-03/{spring-26 => spring-25}/classwork/src/main/resources/templates/authenticated.html (100%) rename 2023-03/{spring-26 => spring-25}/classwork/src/main/resources/templates/error.html (100%) rename 2023-03/{spring-26 => spring-25}/classwork/src/main/resources/templates/index.html (100%) rename 2023-03/{spring-26 => spring-25}/classwork/src/main/resources/templates/manager.html (100%) rename 2023-03/{spring-26 => spring-25}/classwork/src/main/resources/templates/public.html (100%) rename 2023-03/{spring-26 => spring-25}/classwork/src/main/resources/templates/success.html (100%) rename 2023-03/{spring-26 => spring-25}/classwork/src/main/resources/templates/user.html (100%) rename 2023-03/{spring-26 => spring-25}/oauth/pom.xml (100%) rename 2023-03/{spring-26 => spring-25}/oauth/src/main/java/ru/otus/spring/sso/GithubApplication.java (100%) rename 2023-03/{spring-26 => spring-25}/oauth/src/main/java/ru/otus/spring/sso/controller/IndexController.java (100%) rename 2023-03/{spring-26 => spring-25}/oauth/src/main/java/ru/otus/spring/sso/controller/UserController.java (100%) rename 2023-03/{spring-26 => spring-25}/oauth/src/main/java/ru/otus/spring/sso/security/SecurityConfig.java (100%) rename 2023-03/{spring-26 => spring-25}/oauth/src/main/resources/application.yml (100%) rename 2023-03/{spring-26 => spring-25}/oauth/src/main/resources/templates/index.html (100%) rename 2023-03/{spring-26 => spring-25}/solution2/pom.xml (100%) rename 2023-03/{spring-26 => spring-25}/solution2/src/main/java/ru/otus/spring/SpringSecurityAuthorization.java (100%) rename 2023-03/{spring-26 => spring-25}/solution2/src/main/java/ru/otus/spring/controller/PagesController.java (100%) rename 2023-03/{spring-26 => spring-25}/solution2/src/main/java/ru/otus/spring/security/MethodSecurityConfiguration.java (100%) rename 2023-03/{spring-26 => spring-25}/solution2/src/main/java/ru/otus/spring/security/SecurityConfiguration.java (100%) rename 2023-03/{spring-26 => spring-25}/solution2/src/main/java/ru/otus/spring/service/MyService.java (100%) rename 2023-03/{spring-26 => spring-25}/solution2/src/main/resources/templates/admin.html (100%) rename 2023-03/{spring-26 => spring-25}/solution2/src/main/resources/templates/authenticated.html (100%) rename 2023-03/{spring-26 => spring-25}/solution2/src/main/resources/templates/error.html (100%) rename 2023-03/{spring-26 => spring-25}/solution2/src/main/resources/templates/index.html (100%) rename 2023-03/{spring-26 => spring-25}/solution2/src/main/resources/templates/manager.html (100%) rename 2023-03/{spring-26 => spring-25}/solution2/src/main/resources/templates/public.html (100%) rename 2023-03/{spring-26 => spring-25}/solution2/src/main/resources/templates/success.html (100%) rename 2023-03/{spring-26 => spring-25}/solution2/src/main/resources/templates/user.html (100%) rename 2023-03/{spring-27 => spring-26}/ACL/pom.xml (100%) rename 2023-03/{spring-27 => spring-26}/ACL/src/main/java/ru/otus/spring/Main.java (100%) rename 2023-03/{spring-27 => spring-26}/ACL/src/main/java/ru/otus/spring/model/NoticeMessage.java (100%) rename 2023-03/{spring-27 => spring-26}/ACL/src/main/java/ru/otus/spring/model/Pack.java (100%) rename 2023-03/{spring-27 => spring-26}/ACL/src/main/java/ru/otus/spring/repository/NoticeMessageRepository.java (100%) rename 2023-03/{spring-27 => spring-26}/ACL/src/main/java/ru/otus/spring/rest/NoticeMessageController.java (100%) rename 2023-03/{spring-27 => spring-26}/ACL/src/main/java/ru/otus/spring/security/AclConfig.java (100%) rename 2023-03/{spring-27 => spring-26}/ACL/src/main/java/ru/otus/spring/security/AclMethodSecurityConfiguration.java (100%) rename 2023-03/{spring-27 => spring-26}/ACL/src/main/java/ru/otus/spring/security/SecurityConfiguration.java (100%) rename 2023-03/{spring-27 => spring-26}/ACL/src/main/java/ru/otus/spring/service/NoticeService.java (100%) rename 2023-03/{spring-27 => spring-26}/ACL/src/main/resources/application.yml (100%) rename 2023-03/{spring-27 => spring-26}/ACL/src/main/resources/data.sql (100%) rename 2023-03/{spring-27 => spring-26}/ACL/src/main/resources/schema.sql (100%) rename 2023-03/{spring-27 => spring-26}/ACL/src/main/resources/templates/error.html (100%) rename 2023-03/{spring-27 => spring-26}/ACL/src/main/resources/templates/index.html (100%) rename 2023-03/{spring-27 => spring-26}/jwt/pom.xml (100%) rename 2023-03/{spring-27 => spring-26}/jwt/src/main/java/ru/otus/security/jwt/JwtStarter.java (100%) rename 2023-03/{spring-27 => spring-26}/jwt/src/main/java/ru/otus/security/jwt/config/SecurityConfig.java (100%) rename 2023-03/{spring-27 => spring-26}/jwt/src/main/java/ru/otus/security/jwt/controller/HelloController.java (100%) rename 2023-03/{spring-27 => spring-26}/jwt/src/main/java/ru/otus/security/jwt/controller/TokenController.java (100%) rename 2023-03/{spring-27 => spring-26}/jwt/src/main/resources/app.key (100%) rename 2023-03/{spring-27 => spring-26}/jwt/src/main/resources/app.pub (100%) rename 2023-03/{spring-27 => spring-26}/jwt/src/main/resources/application.yml (100%) rename 2023-03/{spring-27 => spring-26}/jwt/src/main/resources/templates/index.html (100%) rename 2023-03/{spring-28-spring-batch => spring-27-spring-batch}/.gitignore (100%) rename 2023-03/{spring-28-spring-batch => spring-27-spring-batch}/entries.csv (100%) rename 2023-03/{spring-28-spring-batch => spring-27-spring-batch}/pom.xml (100%) rename 2023-03/{spring-28-spring-batch => spring-27-spring-batch}/src/main/java/ru/otus/example/springbatch/Main.java (100%) rename 2023-03/{spring-28-spring-batch => spring-27-spring-batch}/src/main/java/ru/otus/example/springbatch/chandgelogs/InitMongoDBDataChangeLog.java (100%) rename 2023-03/{spring-28-spring-batch => spring-27-spring-batch}/src/main/java/ru/otus/example/springbatch/config/AppProps.java (100%) rename 2023-03/{spring-28-spring-batch => spring-27-spring-batch}/src/main/java/ru/otus/example/springbatch/config/BatchConfig.java (100%) rename 2023-03/{spring-28-spring-batch => spring-27-spring-batch}/src/main/java/ru/otus/example/springbatch/config/JobConfig.java (100%) rename 2023-03/{spring-28-spring-batch => spring-27-spring-batch}/src/main/java/ru/otus/example/springbatch/model/Person.java (100%) rename 2023-03/{spring-28-spring-batch => spring-27-spring-batch}/src/main/java/ru/otus/example/springbatch/service/CleanUpService.java (100%) rename 2023-03/{spring-28-spring-batch => spring-27-spring-batch}/src/main/java/ru/otus/example/springbatch/service/HappyBirthdayService.java (100%) rename 2023-03/{spring-28-spring-batch => spring-27-spring-batch}/src/main/java/ru/otus/example/springbatch/shell/BatchCommands.java (100%) rename 2023-03/{spring-28-spring-batch => spring-27-spring-batch}/src/main/resources/application.yml (100%) rename 2023-03/{spring-28-spring-batch => spring-27-spring-batch}/src/test/java/ru/otus/example/springbatch/config/ImportUserJobTest.java (100%) rename 2023-03/{spring-28-spring-batch => spring-27-spring-batch}/src/test/resources/application.yml (100%) rename 2023-03/{spring-28-spring-batch => spring-27-spring-batch}/src/test/resources/expected-test-output.dat (100%) rename 2023-03/{spring-28-spring-batch => spring-27-spring-batch}/src/test/resources/test-entries.csv (100%) create mode 100644 2023-03/spring-29-integrations-channels/.gitignore create mode 100644 2023-03/spring-29-integrations-channels/integrations-channels-exercise/pom.xml create mode 100644 2023-03/spring-29-integrations-channels/integrations-channels-exercise/src/main/java/ru/otus/spring/integration/App.java create mode 100644 2023-03/spring-29-integrations-channels/integrations-channels-exercise/src/main/resources/application.yml create mode 100644 2023-03/spring-29-integrations-channels/integrations-channels-exercise/src/test/java/ru/otus/spring/integration/MessagesTest.java create mode 100644 2023-03/spring-29-integrations-channels/integrations-channels-exercise/src/test/java/ru/otus/spring/integration/User.java create mode 100644 2023-03/spring-29-integrations-channels/integrations-channels-solution/pom.xml create mode 100644 2023-03/spring-29-integrations-channels/integrations-channels-solution/src/main/java/ru/otus/spring/integration/App.java create mode 100644 2023-03/spring-29-integrations-channels/integrations-channels-solution/src/test/java/ru/otus/spring/integration/MessagesTest.java create mode 100644 2023-03/spring-29-integrations-channels/integrations-channels-solution/src/test/java/ru/otus/spring/integration/User.java create mode 100644 2023-03/spring-29-integrations-channels/pom.xml diff --git a/2023-03/spring-24-ss-start/new-style/pom.xml b/2023-03/spring-23-ss-start/new-style/pom.xml similarity index 100% rename from 2023-03/spring-24-ss-start/new-style/pom.xml rename to 2023-03/spring-23-ss-start/new-style/pom.xml diff --git a/2023-03/spring-24-ss-start/new-style/src/main/java/ru/otus/spring/Main.java b/2023-03/spring-23-ss-start/new-style/src/main/java/ru/otus/spring/Main.java similarity index 100% rename from 2023-03/spring-24-ss-start/new-style/src/main/java/ru/otus/spring/Main.java rename to 2023-03/spring-23-ss-start/new-style/src/main/java/ru/otus/spring/Main.java diff --git a/2023-03/spring-24-ss-start/new-style/src/main/java/ru/otus/spring/rest/PagesController.java b/2023-03/spring-23-ss-start/new-style/src/main/java/ru/otus/spring/rest/PagesController.java similarity index 100% rename from 2023-03/spring-24-ss-start/new-style/src/main/java/ru/otus/spring/rest/PagesController.java rename to 2023-03/spring-23-ss-start/new-style/src/main/java/ru/otus/spring/rest/PagesController.java diff --git a/2023-03/spring-24-ss-start/new-style/src/main/java/ru/otus/spring/security/SecurityConfiguration.java b/2023-03/spring-23-ss-start/new-style/src/main/java/ru/otus/spring/security/SecurityConfiguration.java similarity index 100% rename from 2023-03/spring-24-ss-start/new-style/src/main/java/ru/otus/spring/security/SecurityConfiguration.java rename to 2023-03/spring-23-ss-start/new-style/src/main/java/ru/otus/spring/security/SecurityConfiguration.java diff --git a/2023-03/spring-24-ss-start/new-style/src/main/resources/application.yml b/2023-03/spring-23-ss-start/new-style/src/main/resources/application.yml similarity index 100% rename from 2023-03/spring-24-ss-start/new-style/src/main/resources/application.yml rename to 2023-03/spring-23-ss-start/new-style/src/main/resources/application.yml diff --git a/2023-03/spring-24-ss-start/new-style/src/main/resources/templates/authenticated.html b/2023-03/spring-23-ss-start/new-style/src/main/resources/templates/authenticated.html similarity index 100% rename from 2023-03/spring-24-ss-start/new-style/src/main/resources/templates/authenticated.html rename to 2023-03/spring-23-ss-start/new-style/src/main/resources/templates/authenticated.html diff --git a/2023-03/spring-24-ss-start/new-style/src/main/resources/templates/index.html b/2023-03/spring-23-ss-start/new-style/src/main/resources/templates/index.html similarity index 100% rename from 2023-03/spring-24-ss-start/new-style/src/main/resources/templates/index.html rename to 2023-03/spring-23-ss-start/new-style/src/main/resources/templates/index.html diff --git a/2023-03/spring-24-ss-start/new-style/src/main/resources/templates/public.html b/2023-03/spring-23-ss-start/new-style/src/main/resources/templates/public.html similarity index 100% rename from 2023-03/spring-24-ss-start/new-style/src/main/resources/templates/public.html rename to 2023-03/spring-23-ss-start/new-style/src/main/resources/templates/public.html diff --git a/2023-03/spring-24-ss-start/new-style/src/main/resources/templates/success.html b/2023-03/spring-23-ss-start/new-style/src/main/resources/templates/success.html similarity index 100% rename from 2023-03/spring-24-ss-start/new-style/src/main/resources/templates/success.html rename to 2023-03/spring-23-ss-start/new-style/src/main/resources/templates/success.html diff --git a/2023-03/spring-24-ss-start/old-style/pom.xml b/2023-03/spring-23-ss-start/old-style/pom.xml similarity index 100% rename from 2023-03/spring-24-ss-start/old-style/pom.xml rename to 2023-03/spring-23-ss-start/old-style/pom.xml diff --git a/2023-03/spring-24-ss-start/old-style/src/main/java/ru/otus/spring/Main.java b/2023-03/spring-23-ss-start/old-style/src/main/java/ru/otus/spring/Main.java similarity index 100% rename from 2023-03/spring-24-ss-start/old-style/src/main/java/ru/otus/spring/Main.java rename to 2023-03/spring-23-ss-start/old-style/src/main/java/ru/otus/spring/Main.java diff --git a/2023-03/spring-24-ss-start/old-style/src/main/java/ru/otus/spring/rest/PagesController.java b/2023-03/spring-23-ss-start/old-style/src/main/java/ru/otus/spring/rest/PagesController.java similarity index 100% rename from 2023-03/spring-24-ss-start/old-style/src/main/java/ru/otus/spring/rest/PagesController.java rename to 2023-03/spring-23-ss-start/old-style/src/main/java/ru/otus/spring/rest/PagesController.java diff --git a/2023-03/spring-24-ss-start/old-style/src/main/java/ru/otus/spring/security/SecurityConfiguration.java b/2023-03/spring-23-ss-start/old-style/src/main/java/ru/otus/spring/security/SecurityConfiguration.java similarity index 100% rename from 2023-03/spring-24-ss-start/old-style/src/main/java/ru/otus/spring/security/SecurityConfiguration.java rename to 2023-03/spring-23-ss-start/old-style/src/main/java/ru/otus/spring/security/SecurityConfiguration.java diff --git a/2023-03/spring-24-ss-start/old-style/src/main/resources/application.yml b/2023-03/spring-23-ss-start/old-style/src/main/resources/application.yml similarity index 100% rename from 2023-03/spring-24-ss-start/old-style/src/main/resources/application.yml rename to 2023-03/spring-23-ss-start/old-style/src/main/resources/application.yml diff --git a/2023-03/spring-24-ss-start/old-style/src/main/resources/templates/authenticated.html b/2023-03/spring-23-ss-start/old-style/src/main/resources/templates/authenticated.html similarity index 100% rename from 2023-03/spring-24-ss-start/old-style/src/main/resources/templates/authenticated.html rename to 2023-03/spring-23-ss-start/old-style/src/main/resources/templates/authenticated.html diff --git a/2023-03/spring-24-ss-start/old-style/src/main/resources/templates/index.html b/2023-03/spring-23-ss-start/old-style/src/main/resources/templates/index.html similarity index 100% rename from 2023-03/spring-24-ss-start/old-style/src/main/resources/templates/index.html rename to 2023-03/spring-23-ss-start/old-style/src/main/resources/templates/index.html diff --git a/2023-03/spring-24-ss-start/old-style/src/main/resources/templates/public.html b/2023-03/spring-23-ss-start/old-style/src/main/resources/templates/public.html similarity index 100% rename from 2023-03/spring-24-ss-start/old-style/src/main/resources/templates/public.html rename to 2023-03/spring-23-ss-start/old-style/src/main/resources/templates/public.html diff --git a/2023-03/spring-24-ss-start/old-style/src/main/resources/templates/success.html b/2023-03/spring-23-ss-start/old-style/src/main/resources/templates/success.html similarity index 100% rename from 2023-03/spring-24-ss-start/old-style/src/main/resources/templates/success.html rename to 2023-03/spring-23-ss-start/old-style/src/main/resources/templates/success.html diff --git a/2023-03/spring-25-SS-auth/classwork/pom.xml b/2023-03/spring-24-SS-auth/classwork/pom.xml similarity index 100% rename from 2023-03/spring-25-SS-auth/classwork/pom.xml rename to 2023-03/spring-24-SS-auth/classwork/pom.xml diff --git a/2023-03/spring-25-SS-auth/classwork/src/main/java/ru/otus/spring/Main.java b/2023-03/spring-24-SS-auth/classwork/src/main/java/ru/otus/spring/Main.java similarity index 100% rename from 2023-03/spring-25-SS-auth/classwork/src/main/java/ru/otus/spring/Main.java rename to 2023-03/spring-24-SS-auth/classwork/src/main/java/ru/otus/spring/Main.java diff --git a/2023-03/spring-25-SS-auth/classwork/src/main/java/ru/otus/spring/controller/PagesController.java b/2023-03/spring-24-SS-auth/classwork/src/main/java/ru/otus/spring/controller/PagesController.java similarity index 100% rename from 2023-03/spring-25-SS-auth/classwork/src/main/java/ru/otus/spring/controller/PagesController.java rename to 2023-03/spring-24-SS-auth/classwork/src/main/java/ru/otus/spring/controller/PagesController.java diff --git a/2023-03/spring-25-SS-auth/classwork/src/main/java/ru/otus/spring/security/AnonimusUD.java b/2023-03/spring-24-SS-auth/classwork/src/main/java/ru/otus/spring/security/AnonimusUD.java similarity index 100% rename from 2023-03/spring-25-SS-auth/classwork/src/main/java/ru/otus/spring/security/AnonimusUD.java rename to 2023-03/spring-24-SS-auth/classwork/src/main/java/ru/otus/spring/security/AnonimusUD.java diff --git a/2023-03/spring-25-SS-auth/classwork/src/main/java/ru/otus/spring/security/SecurityConfiguration.java b/2023-03/spring-24-SS-auth/classwork/src/main/java/ru/otus/spring/security/SecurityConfiguration.java similarity index 100% rename from 2023-03/spring-25-SS-auth/classwork/src/main/java/ru/otus/spring/security/SecurityConfiguration.java rename to 2023-03/spring-24-SS-auth/classwork/src/main/java/ru/otus/spring/security/SecurityConfiguration.java diff --git a/2023-03/spring-25-SS-auth/classwork/src/main/java/ru/otus/spring/security/filter/MyOwnFilter.java b/2023-03/spring-24-SS-auth/classwork/src/main/java/ru/otus/spring/security/filter/MyOwnFilter.java similarity index 100% rename from 2023-03/spring-25-SS-auth/classwork/src/main/java/ru/otus/spring/security/filter/MyOwnFilter.java rename to 2023-03/spring-24-SS-auth/classwork/src/main/java/ru/otus/spring/security/filter/MyOwnFilter.java diff --git a/2023-03/spring-25-SS-auth/classwork/src/main/resources/application.yml b/2023-03/spring-24-SS-auth/classwork/src/main/resources/application.yml similarity index 100% rename from 2023-03/spring-25-SS-auth/classwork/src/main/resources/application.yml rename to 2023-03/spring-24-SS-auth/classwork/src/main/resources/application.yml diff --git a/2023-03/spring-25-SS-auth/classwork/src/main/resources/templates/authenticated.html b/2023-03/spring-24-SS-auth/classwork/src/main/resources/templates/authenticated.html similarity index 100% rename from 2023-03/spring-25-SS-auth/classwork/src/main/resources/templates/authenticated.html rename to 2023-03/spring-24-SS-auth/classwork/src/main/resources/templates/authenticated.html diff --git a/2023-03/spring-25-SS-auth/classwork/src/main/resources/templates/error.html b/2023-03/spring-24-SS-auth/classwork/src/main/resources/templates/error.html similarity index 100% rename from 2023-03/spring-25-SS-auth/classwork/src/main/resources/templates/error.html rename to 2023-03/spring-24-SS-auth/classwork/src/main/resources/templates/error.html diff --git a/2023-03/spring-25-SS-auth/classwork/src/main/resources/templates/index.html b/2023-03/spring-24-SS-auth/classwork/src/main/resources/templates/index.html similarity index 100% rename from 2023-03/spring-25-SS-auth/classwork/src/main/resources/templates/index.html rename to 2023-03/spring-24-SS-auth/classwork/src/main/resources/templates/index.html diff --git a/2023-03/spring-25-SS-auth/classwork/src/main/resources/templates/public.html b/2023-03/spring-24-SS-auth/classwork/src/main/resources/templates/public.html similarity index 100% rename from 2023-03/spring-25-SS-auth/classwork/src/main/resources/templates/public.html rename to 2023-03/spring-24-SS-auth/classwork/src/main/resources/templates/public.html diff --git a/2023-03/spring-25-SS-auth/classwork/src/main/resources/templates/success.html b/2023-03/spring-24-SS-auth/classwork/src/main/resources/templates/success.html similarity index 100% rename from 2023-03/spring-25-SS-auth/classwork/src/main/resources/templates/success.html rename to 2023-03/spring-24-SS-auth/classwork/src/main/resources/templates/success.html diff --git a/2023-03/spring-25-SS-auth/classwork/src/test/java/ru/otus/spring/controller/PagesControllerTest.java b/2023-03/spring-24-SS-auth/classwork/src/test/java/ru/otus/spring/controller/PagesControllerTest.java similarity index 100% rename from 2023-03/spring-25-SS-auth/classwork/src/test/java/ru/otus/spring/controller/PagesControllerTest.java rename to 2023-03/spring-24-SS-auth/classwork/src/test/java/ru/otus/spring/controller/PagesControllerTest.java diff --git a/2023-03/spring-25-SS-auth/solution4/pom.xml b/2023-03/spring-24-SS-auth/solution4/pom.xml similarity index 100% rename from 2023-03/spring-25-SS-auth/solution4/pom.xml rename to 2023-03/spring-24-SS-auth/solution4/pom.xml diff --git a/2023-03/spring-25-SS-auth/solution4/src/main/java/ru/otus/spring/Main.java b/2023-03/spring-24-SS-auth/solution4/src/main/java/ru/otus/spring/Main.java similarity index 100% rename from 2023-03/spring-25-SS-auth/solution4/src/main/java/ru/otus/spring/Main.java rename to 2023-03/spring-24-SS-auth/solution4/src/main/java/ru/otus/spring/Main.java diff --git a/2023-03/spring-25-SS-auth/solution4/src/main/java/ru/otus/spring/controller/PagesController.java b/2023-03/spring-24-SS-auth/solution4/src/main/java/ru/otus/spring/controller/PagesController.java similarity index 100% rename from 2023-03/spring-25-SS-auth/solution4/src/main/java/ru/otus/spring/controller/PagesController.java rename to 2023-03/spring-24-SS-auth/solution4/src/main/java/ru/otus/spring/controller/PagesController.java diff --git a/2023-03/spring-25-SS-auth/solution4/src/main/java/ru/otus/spring/security/AnonimusUD.java b/2023-03/spring-24-SS-auth/solution4/src/main/java/ru/otus/spring/security/AnonimusUD.java similarity index 100% rename from 2023-03/spring-25-SS-auth/solution4/src/main/java/ru/otus/spring/security/AnonimusUD.java rename to 2023-03/spring-24-SS-auth/solution4/src/main/java/ru/otus/spring/security/AnonimusUD.java diff --git a/2023-03/spring-25-SS-auth/solution4/src/main/java/ru/otus/spring/security/SecurityConfiguration.java b/2023-03/spring-24-SS-auth/solution4/src/main/java/ru/otus/spring/security/SecurityConfiguration.java similarity index 100% rename from 2023-03/spring-25-SS-auth/solution4/src/main/java/ru/otus/spring/security/SecurityConfiguration.java rename to 2023-03/spring-24-SS-auth/solution4/src/main/java/ru/otus/spring/security/SecurityConfiguration.java diff --git a/2023-03/spring-25-SS-auth/solution4/src/main/resources/application.yml b/2023-03/spring-24-SS-auth/solution4/src/main/resources/application.yml similarity index 100% rename from 2023-03/spring-25-SS-auth/solution4/src/main/resources/application.yml rename to 2023-03/spring-24-SS-auth/solution4/src/main/resources/application.yml diff --git a/2023-03/spring-25-SS-auth/solution4/src/main/resources/templates/authenticated.html b/2023-03/spring-24-SS-auth/solution4/src/main/resources/templates/authenticated.html similarity index 100% rename from 2023-03/spring-25-SS-auth/solution4/src/main/resources/templates/authenticated.html rename to 2023-03/spring-24-SS-auth/solution4/src/main/resources/templates/authenticated.html diff --git a/2023-03/spring-25-SS-auth/solution4/src/main/resources/templates/error.html b/2023-03/spring-24-SS-auth/solution4/src/main/resources/templates/error.html similarity index 100% rename from 2023-03/spring-25-SS-auth/solution4/src/main/resources/templates/error.html rename to 2023-03/spring-24-SS-auth/solution4/src/main/resources/templates/error.html diff --git a/2023-03/spring-25-SS-auth/solution4/src/main/resources/templates/index.html b/2023-03/spring-24-SS-auth/solution4/src/main/resources/templates/index.html similarity index 100% rename from 2023-03/spring-25-SS-auth/solution4/src/main/resources/templates/index.html rename to 2023-03/spring-24-SS-auth/solution4/src/main/resources/templates/index.html diff --git a/2023-03/spring-25-SS-auth/solution4/src/main/resources/templates/public.html b/2023-03/spring-24-SS-auth/solution4/src/main/resources/templates/public.html similarity index 100% rename from 2023-03/spring-25-SS-auth/solution4/src/main/resources/templates/public.html rename to 2023-03/spring-24-SS-auth/solution4/src/main/resources/templates/public.html diff --git a/2023-03/spring-25-SS-auth/solution4/src/main/resources/templates/success.html b/2023-03/spring-24-SS-auth/solution4/src/main/resources/templates/success.html similarity index 100% rename from 2023-03/spring-25-SS-auth/solution4/src/main/resources/templates/success.html rename to 2023-03/spring-24-SS-auth/solution4/src/main/resources/templates/success.html diff --git a/2023-03/spring-26/WebFlux/pom.xml b/2023-03/spring-25/WebFlux/pom.xml similarity index 100% rename from 2023-03/spring-26/WebFlux/pom.xml rename to 2023-03/spring-25/WebFlux/pom.xml diff --git a/2023-03/spring-26/WebFlux/src/main/java/ru/otus/spring/WebFluxStarter.java b/2023-03/spring-25/WebFlux/src/main/java/ru/otus/spring/WebFluxStarter.java similarity index 100% rename from 2023-03/spring-26/WebFlux/src/main/java/ru/otus/spring/WebFluxStarter.java rename to 2023-03/spring-25/WebFlux/src/main/java/ru/otus/spring/WebFluxStarter.java diff --git a/2023-03/spring-26/WebFlux/src/main/java/ru/otus/spring/data/Person.java b/2023-03/spring-25/WebFlux/src/main/java/ru/otus/spring/data/Person.java similarity index 100% rename from 2023-03/spring-26/WebFlux/src/main/java/ru/otus/spring/data/Person.java rename to 2023-03/spring-25/WebFlux/src/main/java/ru/otus/spring/data/Person.java diff --git a/2023-03/spring-26/WebFlux/src/main/java/ru/otus/spring/data/PersonRepository.java b/2023-03/spring-25/WebFlux/src/main/java/ru/otus/spring/data/PersonRepository.java similarity index 100% rename from 2023-03/spring-26/WebFlux/src/main/java/ru/otus/spring/data/PersonRepository.java rename to 2023-03/spring-25/WebFlux/src/main/java/ru/otus/spring/data/PersonRepository.java diff --git a/2023-03/spring-26/WebFlux/src/main/java/ru/otus/spring/rest/PersonController.java b/2023-03/spring-25/WebFlux/src/main/java/ru/otus/spring/rest/PersonController.java similarity index 100% rename from 2023-03/spring-26/WebFlux/src/main/java/ru/otus/spring/rest/PersonController.java rename to 2023-03/spring-25/WebFlux/src/main/java/ru/otus/spring/rest/PersonController.java diff --git a/2023-03/spring-26/WebFlux/src/main/java/ru/otus/spring/security/SecurityConfiguration.java b/2023-03/spring-25/WebFlux/src/main/java/ru/otus/spring/security/SecurityConfiguration.java similarity index 100% rename from 2023-03/spring-26/WebFlux/src/main/java/ru/otus/spring/security/SecurityConfiguration.java rename to 2023-03/spring-25/WebFlux/src/main/java/ru/otus/spring/security/SecurityConfiguration.java diff --git a/2023-03/spring-26/WebFlux/src/main/resources/application.yml b/2023-03/spring-25/WebFlux/src/main/resources/application.yml similarity index 100% rename from 2023-03/spring-26/WebFlux/src/main/resources/application.yml rename to 2023-03/spring-25/WebFlux/src/main/resources/application.yml diff --git a/2023-03/spring-26/WebFlux/src/main/resources/static/authenticated.html b/2023-03/spring-25/WebFlux/src/main/resources/static/authenticated.html similarity index 100% rename from 2023-03/spring-26/WebFlux/src/main/resources/static/authenticated.html rename to 2023-03/spring-25/WebFlux/src/main/resources/static/authenticated.html diff --git a/2023-03/spring-26/WebFlux/src/main/resources/static/index.html b/2023-03/spring-25/WebFlux/src/main/resources/static/index.html similarity index 100% rename from 2023-03/spring-26/WebFlux/src/main/resources/static/index.html rename to 2023-03/spring-25/WebFlux/src/main/resources/static/index.html diff --git a/2023-03/spring-26/WebFlux/src/main/resources/static/public.html b/2023-03/spring-25/WebFlux/src/main/resources/static/public.html similarity index 100% rename from 2023-03/spring-26/WebFlux/src/main/resources/static/public.html rename to 2023-03/spring-25/WebFlux/src/main/resources/static/public.html diff --git a/2023-03/spring-26/classwork/pom.xml b/2023-03/spring-25/classwork/pom.xml similarity index 100% rename from 2023-03/spring-26/classwork/pom.xml rename to 2023-03/spring-25/classwork/pom.xml diff --git a/2023-03/spring-26/classwork/src/main/java/ru/otus/spring/SpringSecurityAuthorization.java b/2023-03/spring-25/classwork/src/main/java/ru/otus/spring/SpringSecurityAuthorization.java similarity index 100% rename from 2023-03/spring-26/classwork/src/main/java/ru/otus/spring/SpringSecurityAuthorization.java rename to 2023-03/spring-25/classwork/src/main/java/ru/otus/spring/SpringSecurityAuthorization.java diff --git a/2023-03/spring-26/classwork/src/main/java/ru/otus/spring/controller/PagesController.java b/2023-03/spring-25/classwork/src/main/java/ru/otus/spring/controller/PagesController.java similarity index 100% rename from 2023-03/spring-26/classwork/src/main/java/ru/otus/spring/controller/PagesController.java rename to 2023-03/spring-25/classwork/src/main/java/ru/otus/spring/controller/PagesController.java diff --git a/2023-03/spring-26/classwork/src/main/java/ru/otus/spring/controller/SecurityControllerAdvice.java b/2023-03/spring-25/classwork/src/main/java/ru/otus/spring/controller/SecurityControllerAdvice.java similarity index 100% rename from 2023-03/spring-26/classwork/src/main/java/ru/otus/spring/controller/SecurityControllerAdvice.java rename to 2023-03/spring-25/classwork/src/main/java/ru/otus/spring/controller/SecurityControllerAdvice.java diff --git a/2023-03/spring-26/classwork/src/main/java/ru/otus/spring/security/MethodSecurityConfiguration.java b/2023-03/spring-25/classwork/src/main/java/ru/otus/spring/security/MethodSecurityConfiguration.java similarity index 100% rename from 2023-03/spring-26/classwork/src/main/java/ru/otus/spring/security/MethodSecurityConfiguration.java rename to 2023-03/spring-25/classwork/src/main/java/ru/otus/spring/security/MethodSecurityConfiguration.java diff --git a/2023-03/spring-26/classwork/src/main/java/ru/otus/spring/security/SecurityConfiguration.java b/2023-03/spring-25/classwork/src/main/java/ru/otus/spring/security/SecurityConfiguration.java similarity index 100% rename from 2023-03/spring-26/classwork/src/main/java/ru/otus/spring/security/SecurityConfiguration.java rename to 2023-03/spring-25/classwork/src/main/java/ru/otus/spring/security/SecurityConfiguration.java diff --git a/2023-03/spring-26/classwork/src/main/java/ru/otus/spring/service/MyService.java b/2023-03/spring-25/classwork/src/main/java/ru/otus/spring/service/MyService.java similarity index 100% rename from 2023-03/spring-26/classwork/src/main/java/ru/otus/spring/service/MyService.java rename to 2023-03/spring-25/classwork/src/main/java/ru/otus/spring/service/MyService.java diff --git a/2023-03/spring-26/classwork/src/main/resources/templates/admin.html b/2023-03/spring-25/classwork/src/main/resources/templates/admin.html similarity index 100% rename from 2023-03/spring-26/classwork/src/main/resources/templates/admin.html rename to 2023-03/spring-25/classwork/src/main/resources/templates/admin.html diff --git a/2023-03/spring-26/classwork/src/main/resources/templates/authenticated.html b/2023-03/spring-25/classwork/src/main/resources/templates/authenticated.html similarity index 100% rename from 2023-03/spring-26/classwork/src/main/resources/templates/authenticated.html rename to 2023-03/spring-25/classwork/src/main/resources/templates/authenticated.html diff --git a/2023-03/spring-26/classwork/src/main/resources/templates/error.html b/2023-03/spring-25/classwork/src/main/resources/templates/error.html similarity index 100% rename from 2023-03/spring-26/classwork/src/main/resources/templates/error.html rename to 2023-03/spring-25/classwork/src/main/resources/templates/error.html diff --git a/2023-03/spring-26/classwork/src/main/resources/templates/index.html b/2023-03/spring-25/classwork/src/main/resources/templates/index.html similarity index 100% rename from 2023-03/spring-26/classwork/src/main/resources/templates/index.html rename to 2023-03/spring-25/classwork/src/main/resources/templates/index.html diff --git a/2023-03/spring-26/classwork/src/main/resources/templates/manager.html b/2023-03/spring-25/classwork/src/main/resources/templates/manager.html similarity index 100% rename from 2023-03/spring-26/classwork/src/main/resources/templates/manager.html rename to 2023-03/spring-25/classwork/src/main/resources/templates/manager.html diff --git a/2023-03/spring-26/classwork/src/main/resources/templates/public.html b/2023-03/spring-25/classwork/src/main/resources/templates/public.html similarity index 100% rename from 2023-03/spring-26/classwork/src/main/resources/templates/public.html rename to 2023-03/spring-25/classwork/src/main/resources/templates/public.html diff --git a/2023-03/spring-26/classwork/src/main/resources/templates/success.html b/2023-03/spring-25/classwork/src/main/resources/templates/success.html similarity index 100% rename from 2023-03/spring-26/classwork/src/main/resources/templates/success.html rename to 2023-03/spring-25/classwork/src/main/resources/templates/success.html diff --git a/2023-03/spring-26/classwork/src/main/resources/templates/user.html b/2023-03/spring-25/classwork/src/main/resources/templates/user.html similarity index 100% rename from 2023-03/spring-26/classwork/src/main/resources/templates/user.html rename to 2023-03/spring-25/classwork/src/main/resources/templates/user.html diff --git a/2023-03/spring-26/oauth/pom.xml b/2023-03/spring-25/oauth/pom.xml similarity index 100% rename from 2023-03/spring-26/oauth/pom.xml rename to 2023-03/spring-25/oauth/pom.xml diff --git a/2023-03/spring-26/oauth/src/main/java/ru/otus/spring/sso/GithubApplication.java b/2023-03/spring-25/oauth/src/main/java/ru/otus/spring/sso/GithubApplication.java similarity index 100% rename from 2023-03/spring-26/oauth/src/main/java/ru/otus/spring/sso/GithubApplication.java rename to 2023-03/spring-25/oauth/src/main/java/ru/otus/spring/sso/GithubApplication.java diff --git a/2023-03/spring-26/oauth/src/main/java/ru/otus/spring/sso/controller/IndexController.java b/2023-03/spring-25/oauth/src/main/java/ru/otus/spring/sso/controller/IndexController.java similarity index 100% rename from 2023-03/spring-26/oauth/src/main/java/ru/otus/spring/sso/controller/IndexController.java rename to 2023-03/spring-25/oauth/src/main/java/ru/otus/spring/sso/controller/IndexController.java diff --git a/2023-03/spring-26/oauth/src/main/java/ru/otus/spring/sso/controller/UserController.java b/2023-03/spring-25/oauth/src/main/java/ru/otus/spring/sso/controller/UserController.java similarity index 100% rename from 2023-03/spring-26/oauth/src/main/java/ru/otus/spring/sso/controller/UserController.java rename to 2023-03/spring-25/oauth/src/main/java/ru/otus/spring/sso/controller/UserController.java diff --git a/2023-03/spring-26/oauth/src/main/java/ru/otus/spring/sso/security/SecurityConfig.java b/2023-03/spring-25/oauth/src/main/java/ru/otus/spring/sso/security/SecurityConfig.java similarity index 100% rename from 2023-03/spring-26/oauth/src/main/java/ru/otus/spring/sso/security/SecurityConfig.java rename to 2023-03/spring-25/oauth/src/main/java/ru/otus/spring/sso/security/SecurityConfig.java diff --git a/2023-03/spring-26/oauth/src/main/resources/application.yml b/2023-03/spring-25/oauth/src/main/resources/application.yml similarity index 100% rename from 2023-03/spring-26/oauth/src/main/resources/application.yml rename to 2023-03/spring-25/oauth/src/main/resources/application.yml diff --git a/2023-03/spring-26/oauth/src/main/resources/templates/index.html b/2023-03/spring-25/oauth/src/main/resources/templates/index.html similarity index 100% rename from 2023-03/spring-26/oauth/src/main/resources/templates/index.html rename to 2023-03/spring-25/oauth/src/main/resources/templates/index.html diff --git a/2023-03/spring-26/solution2/pom.xml b/2023-03/spring-25/solution2/pom.xml similarity index 100% rename from 2023-03/spring-26/solution2/pom.xml rename to 2023-03/spring-25/solution2/pom.xml diff --git a/2023-03/spring-26/solution2/src/main/java/ru/otus/spring/SpringSecurityAuthorization.java b/2023-03/spring-25/solution2/src/main/java/ru/otus/spring/SpringSecurityAuthorization.java similarity index 100% rename from 2023-03/spring-26/solution2/src/main/java/ru/otus/spring/SpringSecurityAuthorization.java rename to 2023-03/spring-25/solution2/src/main/java/ru/otus/spring/SpringSecurityAuthorization.java diff --git a/2023-03/spring-26/solution2/src/main/java/ru/otus/spring/controller/PagesController.java b/2023-03/spring-25/solution2/src/main/java/ru/otus/spring/controller/PagesController.java similarity index 100% rename from 2023-03/spring-26/solution2/src/main/java/ru/otus/spring/controller/PagesController.java rename to 2023-03/spring-25/solution2/src/main/java/ru/otus/spring/controller/PagesController.java diff --git a/2023-03/spring-26/solution2/src/main/java/ru/otus/spring/security/MethodSecurityConfiguration.java b/2023-03/spring-25/solution2/src/main/java/ru/otus/spring/security/MethodSecurityConfiguration.java similarity index 100% rename from 2023-03/spring-26/solution2/src/main/java/ru/otus/spring/security/MethodSecurityConfiguration.java rename to 2023-03/spring-25/solution2/src/main/java/ru/otus/spring/security/MethodSecurityConfiguration.java diff --git a/2023-03/spring-26/solution2/src/main/java/ru/otus/spring/security/SecurityConfiguration.java b/2023-03/spring-25/solution2/src/main/java/ru/otus/spring/security/SecurityConfiguration.java similarity index 100% rename from 2023-03/spring-26/solution2/src/main/java/ru/otus/spring/security/SecurityConfiguration.java rename to 2023-03/spring-25/solution2/src/main/java/ru/otus/spring/security/SecurityConfiguration.java diff --git a/2023-03/spring-26/solution2/src/main/java/ru/otus/spring/service/MyService.java b/2023-03/spring-25/solution2/src/main/java/ru/otus/spring/service/MyService.java similarity index 100% rename from 2023-03/spring-26/solution2/src/main/java/ru/otus/spring/service/MyService.java rename to 2023-03/spring-25/solution2/src/main/java/ru/otus/spring/service/MyService.java diff --git a/2023-03/spring-26/solution2/src/main/resources/templates/admin.html b/2023-03/spring-25/solution2/src/main/resources/templates/admin.html similarity index 100% rename from 2023-03/spring-26/solution2/src/main/resources/templates/admin.html rename to 2023-03/spring-25/solution2/src/main/resources/templates/admin.html diff --git a/2023-03/spring-26/solution2/src/main/resources/templates/authenticated.html b/2023-03/spring-25/solution2/src/main/resources/templates/authenticated.html similarity index 100% rename from 2023-03/spring-26/solution2/src/main/resources/templates/authenticated.html rename to 2023-03/spring-25/solution2/src/main/resources/templates/authenticated.html diff --git a/2023-03/spring-26/solution2/src/main/resources/templates/error.html b/2023-03/spring-25/solution2/src/main/resources/templates/error.html similarity index 100% rename from 2023-03/spring-26/solution2/src/main/resources/templates/error.html rename to 2023-03/spring-25/solution2/src/main/resources/templates/error.html diff --git a/2023-03/spring-26/solution2/src/main/resources/templates/index.html b/2023-03/spring-25/solution2/src/main/resources/templates/index.html similarity index 100% rename from 2023-03/spring-26/solution2/src/main/resources/templates/index.html rename to 2023-03/spring-25/solution2/src/main/resources/templates/index.html diff --git a/2023-03/spring-26/solution2/src/main/resources/templates/manager.html b/2023-03/spring-25/solution2/src/main/resources/templates/manager.html similarity index 100% rename from 2023-03/spring-26/solution2/src/main/resources/templates/manager.html rename to 2023-03/spring-25/solution2/src/main/resources/templates/manager.html diff --git a/2023-03/spring-26/solution2/src/main/resources/templates/public.html b/2023-03/spring-25/solution2/src/main/resources/templates/public.html similarity index 100% rename from 2023-03/spring-26/solution2/src/main/resources/templates/public.html rename to 2023-03/spring-25/solution2/src/main/resources/templates/public.html diff --git a/2023-03/spring-26/solution2/src/main/resources/templates/success.html b/2023-03/spring-25/solution2/src/main/resources/templates/success.html similarity index 100% rename from 2023-03/spring-26/solution2/src/main/resources/templates/success.html rename to 2023-03/spring-25/solution2/src/main/resources/templates/success.html diff --git a/2023-03/spring-26/solution2/src/main/resources/templates/user.html b/2023-03/spring-25/solution2/src/main/resources/templates/user.html similarity index 100% rename from 2023-03/spring-26/solution2/src/main/resources/templates/user.html rename to 2023-03/spring-25/solution2/src/main/resources/templates/user.html diff --git a/2023-03/spring-27/ACL/pom.xml b/2023-03/spring-26/ACL/pom.xml similarity index 100% rename from 2023-03/spring-27/ACL/pom.xml rename to 2023-03/spring-26/ACL/pom.xml diff --git a/2023-03/spring-27/ACL/src/main/java/ru/otus/spring/Main.java b/2023-03/spring-26/ACL/src/main/java/ru/otus/spring/Main.java similarity index 100% rename from 2023-03/spring-27/ACL/src/main/java/ru/otus/spring/Main.java rename to 2023-03/spring-26/ACL/src/main/java/ru/otus/spring/Main.java diff --git a/2023-03/spring-27/ACL/src/main/java/ru/otus/spring/model/NoticeMessage.java b/2023-03/spring-26/ACL/src/main/java/ru/otus/spring/model/NoticeMessage.java similarity index 100% rename from 2023-03/spring-27/ACL/src/main/java/ru/otus/spring/model/NoticeMessage.java rename to 2023-03/spring-26/ACL/src/main/java/ru/otus/spring/model/NoticeMessage.java diff --git a/2023-03/spring-27/ACL/src/main/java/ru/otus/spring/model/Pack.java b/2023-03/spring-26/ACL/src/main/java/ru/otus/spring/model/Pack.java similarity index 100% rename from 2023-03/spring-27/ACL/src/main/java/ru/otus/spring/model/Pack.java rename to 2023-03/spring-26/ACL/src/main/java/ru/otus/spring/model/Pack.java diff --git a/2023-03/spring-27/ACL/src/main/java/ru/otus/spring/repository/NoticeMessageRepository.java b/2023-03/spring-26/ACL/src/main/java/ru/otus/spring/repository/NoticeMessageRepository.java similarity index 100% rename from 2023-03/spring-27/ACL/src/main/java/ru/otus/spring/repository/NoticeMessageRepository.java rename to 2023-03/spring-26/ACL/src/main/java/ru/otus/spring/repository/NoticeMessageRepository.java diff --git a/2023-03/spring-27/ACL/src/main/java/ru/otus/spring/rest/NoticeMessageController.java b/2023-03/spring-26/ACL/src/main/java/ru/otus/spring/rest/NoticeMessageController.java similarity index 100% rename from 2023-03/spring-27/ACL/src/main/java/ru/otus/spring/rest/NoticeMessageController.java rename to 2023-03/spring-26/ACL/src/main/java/ru/otus/spring/rest/NoticeMessageController.java diff --git a/2023-03/spring-27/ACL/src/main/java/ru/otus/spring/security/AclConfig.java b/2023-03/spring-26/ACL/src/main/java/ru/otus/spring/security/AclConfig.java similarity index 100% rename from 2023-03/spring-27/ACL/src/main/java/ru/otus/spring/security/AclConfig.java rename to 2023-03/spring-26/ACL/src/main/java/ru/otus/spring/security/AclConfig.java diff --git a/2023-03/spring-27/ACL/src/main/java/ru/otus/spring/security/AclMethodSecurityConfiguration.java b/2023-03/spring-26/ACL/src/main/java/ru/otus/spring/security/AclMethodSecurityConfiguration.java similarity index 100% rename from 2023-03/spring-27/ACL/src/main/java/ru/otus/spring/security/AclMethodSecurityConfiguration.java rename to 2023-03/spring-26/ACL/src/main/java/ru/otus/spring/security/AclMethodSecurityConfiguration.java diff --git a/2023-03/spring-27/ACL/src/main/java/ru/otus/spring/security/SecurityConfiguration.java b/2023-03/spring-26/ACL/src/main/java/ru/otus/spring/security/SecurityConfiguration.java similarity index 100% rename from 2023-03/spring-27/ACL/src/main/java/ru/otus/spring/security/SecurityConfiguration.java rename to 2023-03/spring-26/ACL/src/main/java/ru/otus/spring/security/SecurityConfiguration.java diff --git a/2023-03/spring-27/ACL/src/main/java/ru/otus/spring/service/NoticeService.java b/2023-03/spring-26/ACL/src/main/java/ru/otus/spring/service/NoticeService.java similarity index 100% rename from 2023-03/spring-27/ACL/src/main/java/ru/otus/spring/service/NoticeService.java rename to 2023-03/spring-26/ACL/src/main/java/ru/otus/spring/service/NoticeService.java diff --git a/2023-03/spring-27/ACL/src/main/resources/application.yml b/2023-03/spring-26/ACL/src/main/resources/application.yml similarity index 100% rename from 2023-03/spring-27/ACL/src/main/resources/application.yml rename to 2023-03/spring-26/ACL/src/main/resources/application.yml diff --git a/2023-03/spring-27/ACL/src/main/resources/data.sql b/2023-03/spring-26/ACL/src/main/resources/data.sql similarity index 100% rename from 2023-03/spring-27/ACL/src/main/resources/data.sql rename to 2023-03/spring-26/ACL/src/main/resources/data.sql diff --git a/2023-03/spring-27/ACL/src/main/resources/schema.sql b/2023-03/spring-26/ACL/src/main/resources/schema.sql similarity index 100% rename from 2023-03/spring-27/ACL/src/main/resources/schema.sql rename to 2023-03/spring-26/ACL/src/main/resources/schema.sql diff --git a/2023-03/spring-27/ACL/src/main/resources/templates/error.html b/2023-03/spring-26/ACL/src/main/resources/templates/error.html similarity index 100% rename from 2023-03/spring-27/ACL/src/main/resources/templates/error.html rename to 2023-03/spring-26/ACL/src/main/resources/templates/error.html diff --git a/2023-03/spring-27/ACL/src/main/resources/templates/index.html b/2023-03/spring-26/ACL/src/main/resources/templates/index.html similarity index 100% rename from 2023-03/spring-27/ACL/src/main/resources/templates/index.html rename to 2023-03/spring-26/ACL/src/main/resources/templates/index.html diff --git a/2023-03/spring-27/jwt/pom.xml b/2023-03/spring-26/jwt/pom.xml similarity index 100% rename from 2023-03/spring-27/jwt/pom.xml rename to 2023-03/spring-26/jwt/pom.xml diff --git a/2023-03/spring-27/jwt/src/main/java/ru/otus/security/jwt/JwtStarter.java b/2023-03/spring-26/jwt/src/main/java/ru/otus/security/jwt/JwtStarter.java similarity index 100% rename from 2023-03/spring-27/jwt/src/main/java/ru/otus/security/jwt/JwtStarter.java rename to 2023-03/spring-26/jwt/src/main/java/ru/otus/security/jwt/JwtStarter.java diff --git a/2023-03/spring-27/jwt/src/main/java/ru/otus/security/jwt/config/SecurityConfig.java b/2023-03/spring-26/jwt/src/main/java/ru/otus/security/jwt/config/SecurityConfig.java similarity index 100% rename from 2023-03/spring-27/jwt/src/main/java/ru/otus/security/jwt/config/SecurityConfig.java rename to 2023-03/spring-26/jwt/src/main/java/ru/otus/security/jwt/config/SecurityConfig.java diff --git a/2023-03/spring-27/jwt/src/main/java/ru/otus/security/jwt/controller/HelloController.java b/2023-03/spring-26/jwt/src/main/java/ru/otus/security/jwt/controller/HelloController.java similarity index 100% rename from 2023-03/spring-27/jwt/src/main/java/ru/otus/security/jwt/controller/HelloController.java rename to 2023-03/spring-26/jwt/src/main/java/ru/otus/security/jwt/controller/HelloController.java diff --git a/2023-03/spring-27/jwt/src/main/java/ru/otus/security/jwt/controller/TokenController.java b/2023-03/spring-26/jwt/src/main/java/ru/otus/security/jwt/controller/TokenController.java similarity index 100% rename from 2023-03/spring-27/jwt/src/main/java/ru/otus/security/jwt/controller/TokenController.java rename to 2023-03/spring-26/jwt/src/main/java/ru/otus/security/jwt/controller/TokenController.java diff --git a/2023-03/spring-27/jwt/src/main/resources/app.key b/2023-03/spring-26/jwt/src/main/resources/app.key similarity index 100% rename from 2023-03/spring-27/jwt/src/main/resources/app.key rename to 2023-03/spring-26/jwt/src/main/resources/app.key diff --git a/2023-03/spring-27/jwt/src/main/resources/app.pub b/2023-03/spring-26/jwt/src/main/resources/app.pub similarity index 100% rename from 2023-03/spring-27/jwt/src/main/resources/app.pub rename to 2023-03/spring-26/jwt/src/main/resources/app.pub diff --git a/2023-03/spring-27/jwt/src/main/resources/application.yml b/2023-03/spring-26/jwt/src/main/resources/application.yml similarity index 100% rename from 2023-03/spring-27/jwt/src/main/resources/application.yml rename to 2023-03/spring-26/jwt/src/main/resources/application.yml diff --git a/2023-03/spring-27/jwt/src/main/resources/templates/index.html b/2023-03/spring-26/jwt/src/main/resources/templates/index.html similarity index 100% rename from 2023-03/spring-27/jwt/src/main/resources/templates/index.html rename to 2023-03/spring-26/jwt/src/main/resources/templates/index.html diff --git a/2023-03/spring-28-spring-batch/.gitignore b/2023-03/spring-27-spring-batch/.gitignore similarity index 100% rename from 2023-03/spring-28-spring-batch/.gitignore rename to 2023-03/spring-27-spring-batch/.gitignore diff --git a/2023-03/spring-28-spring-batch/entries.csv b/2023-03/spring-27-spring-batch/entries.csv similarity index 100% rename from 2023-03/spring-28-spring-batch/entries.csv rename to 2023-03/spring-27-spring-batch/entries.csv diff --git a/2023-03/spring-28-spring-batch/pom.xml b/2023-03/spring-27-spring-batch/pom.xml similarity index 100% rename from 2023-03/spring-28-spring-batch/pom.xml rename to 2023-03/spring-27-spring-batch/pom.xml diff --git a/2023-03/spring-28-spring-batch/src/main/java/ru/otus/example/springbatch/Main.java b/2023-03/spring-27-spring-batch/src/main/java/ru/otus/example/springbatch/Main.java similarity index 100% rename from 2023-03/spring-28-spring-batch/src/main/java/ru/otus/example/springbatch/Main.java rename to 2023-03/spring-27-spring-batch/src/main/java/ru/otus/example/springbatch/Main.java diff --git a/2023-03/spring-28-spring-batch/src/main/java/ru/otus/example/springbatch/chandgelogs/InitMongoDBDataChangeLog.java b/2023-03/spring-27-spring-batch/src/main/java/ru/otus/example/springbatch/chandgelogs/InitMongoDBDataChangeLog.java similarity index 100% rename from 2023-03/spring-28-spring-batch/src/main/java/ru/otus/example/springbatch/chandgelogs/InitMongoDBDataChangeLog.java rename to 2023-03/spring-27-spring-batch/src/main/java/ru/otus/example/springbatch/chandgelogs/InitMongoDBDataChangeLog.java diff --git a/2023-03/spring-28-spring-batch/src/main/java/ru/otus/example/springbatch/config/AppProps.java b/2023-03/spring-27-spring-batch/src/main/java/ru/otus/example/springbatch/config/AppProps.java similarity index 100% rename from 2023-03/spring-28-spring-batch/src/main/java/ru/otus/example/springbatch/config/AppProps.java rename to 2023-03/spring-27-spring-batch/src/main/java/ru/otus/example/springbatch/config/AppProps.java diff --git a/2023-03/spring-28-spring-batch/src/main/java/ru/otus/example/springbatch/config/BatchConfig.java b/2023-03/spring-27-spring-batch/src/main/java/ru/otus/example/springbatch/config/BatchConfig.java similarity index 100% rename from 2023-03/spring-28-spring-batch/src/main/java/ru/otus/example/springbatch/config/BatchConfig.java rename to 2023-03/spring-27-spring-batch/src/main/java/ru/otus/example/springbatch/config/BatchConfig.java diff --git a/2023-03/spring-28-spring-batch/src/main/java/ru/otus/example/springbatch/config/JobConfig.java b/2023-03/spring-27-spring-batch/src/main/java/ru/otus/example/springbatch/config/JobConfig.java similarity index 100% rename from 2023-03/spring-28-spring-batch/src/main/java/ru/otus/example/springbatch/config/JobConfig.java rename to 2023-03/spring-27-spring-batch/src/main/java/ru/otus/example/springbatch/config/JobConfig.java diff --git a/2023-03/spring-28-spring-batch/src/main/java/ru/otus/example/springbatch/model/Person.java b/2023-03/spring-27-spring-batch/src/main/java/ru/otus/example/springbatch/model/Person.java similarity index 100% rename from 2023-03/spring-28-spring-batch/src/main/java/ru/otus/example/springbatch/model/Person.java rename to 2023-03/spring-27-spring-batch/src/main/java/ru/otus/example/springbatch/model/Person.java diff --git a/2023-03/spring-28-spring-batch/src/main/java/ru/otus/example/springbatch/service/CleanUpService.java b/2023-03/spring-27-spring-batch/src/main/java/ru/otus/example/springbatch/service/CleanUpService.java similarity index 100% rename from 2023-03/spring-28-spring-batch/src/main/java/ru/otus/example/springbatch/service/CleanUpService.java rename to 2023-03/spring-27-spring-batch/src/main/java/ru/otus/example/springbatch/service/CleanUpService.java diff --git a/2023-03/spring-28-spring-batch/src/main/java/ru/otus/example/springbatch/service/HappyBirthdayService.java b/2023-03/spring-27-spring-batch/src/main/java/ru/otus/example/springbatch/service/HappyBirthdayService.java similarity index 100% rename from 2023-03/spring-28-spring-batch/src/main/java/ru/otus/example/springbatch/service/HappyBirthdayService.java rename to 2023-03/spring-27-spring-batch/src/main/java/ru/otus/example/springbatch/service/HappyBirthdayService.java diff --git a/2023-03/spring-28-spring-batch/src/main/java/ru/otus/example/springbatch/shell/BatchCommands.java b/2023-03/spring-27-spring-batch/src/main/java/ru/otus/example/springbatch/shell/BatchCommands.java similarity index 100% rename from 2023-03/spring-28-spring-batch/src/main/java/ru/otus/example/springbatch/shell/BatchCommands.java rename to 2023-03/spring-27-spring-batch/src/main/java/ru/otus/example/springbatch/shell/BatchCommands.java diff --git a/2023-03/spring-28-spring-batch/src/main/resources/application.yml b/2023-03/spring-27-spring-batch/src/main/resources/application.yml similarity index 100% rename from 2023-03/spring-28-spring-batch/src/main/resources/application.yml rename to 2023-03/spring-27-spring-batch/src/main/resources/application.yml diff --git a/2023-03/spring-28-spring-batch/src/test/java/ru/otus/example/springbatch/config/ImportUserJobTest.java b/2023-03/spring-27-spring-batch/src/test/java/ru/otus/example/springbatch/config/ImportUserJobTest.java similarity index 100% rename from 2023-03/spring-28-spring-batch/src/test/java/ru/otus/example/springbatch/config/ImportUserJobTest.java rename to 2023-03/spring-27-spring-batch/src/test/java/ru/otus/example/springbatch/config/ImportUserJobTest.java diff --git a/2023-03/spring-28-spring-batch/src/test/resources/application.yml b/2023-03/spring-27-spring-batch/src/test/resources/application.yml similarity index 100% rename from 2023-03/spring-28-spring-batch/src/test/resources/application.yml rename to 2023-03/spring-27-spring-batch/src/test/resources/application.yml diff --git a/2023-03/spring-28-spring-batch/src/test/resources/expected-test-output.dat b/2023-03/spring-27-spring-batch/src/test/resources/expected-test-output.dat similarity index 100% rename from 2023-03/spring-28-spring-batch/src/test/resources/expected-test-output.dat rename to 2023-03/spring-27-spring-batch/src/test/resources/expected-test-output.dat diff --git a/2023-03/spring-28-spring-batch/src/test/resources/test-entries.csv b/2023-03/spring-27-spring-batch/src/test/resources/test-entries.csv similarity index 100% rename from 2023-03/spring-28-spring-batch/src/test/resources/test-entries.csv rename to 2023-03/spring-27-spring-batch/src/test/resources/test-entries.csv diff --git a/2023-03/spring-29-integrations-channels/.gitignore b/2023-03/spring-29-integrations-channels/.gitignore new file mode 100644 index 00000000..549e00a2 --- /dev/null +++ b/2023-03/spring-29-integrations-channels/.gitignore @@ -0,0 +1,33 @@ +HELP.md +target/ +!.mvn/wrapper/maven-wrapper.jar +!**/src/main/**/target/ +!**/src/test/**/target/ + +### STS ### +.apt_generated +.classpath +.factorypath +.project +.settings +.springBeans +.sts4-cache + +### IntelliJ IDEA ### +.idea +*.iws +*.iml +*.ipr + +### NetBeans ### +/nbproject/private/ +/nbbuild/ +/dist/ +/nbdist/ +/.nb-gradle/ +build/ +!**/src/main/**/build/ +!**/src/test/**/build/ + +### VS Code ### +.vscode/ diff --git a/2023-03/spring-29-integrations-channels/integrations-channels-exercise/pom.xml b/2023-03/spring-29-integrations-channels/integrations-channels-exercise/pom.xml new file mode 100644 index 00000000..ac7dcb22 --- /dev/null +++ b/2023-03/spring-29-integrations-channels/integrations-channels-exercise/pom.xml @@ -0,0 +1,51 @@ + + + 4.0.0 + + ru.otus + integrations-channels-exercise + 1.0-SNAPSHOT + + + org.springframework.boot + spring-boot-starter-parent + 3.1.1 + + + + + 17 + 17 + UTF-8 + 2.0 + + + + + org.springframework.boot + spring-boot-starter-integration + + + + org.yaml + snakeyaml + ${snakeyaml.version} + + + + org.springframework.boot + spring-boot-starter-test + + + + + + + org.springframework.boot + spring-boot-maven-plugin + + + + diff --git a/2023-03/spring-29-integrations-channels/integrations-channels-exercise/src/main/java/ru/otus/spring/integration/App.java b/2023-03/spring-29-integrations-channels/integrations-channels-exercise/src/main/java/ru/otus/spring/integration/App.java new file mode 100644 index 00000000..c3ce524d --- /dev/null +++ b/2023-03/spring-29-integrations-channels/integrations-channels-exercise/src/main/java/ru/otus/spring/integration/App.java @@ -0,0 +1,59 @@ +package ru.otus.spring.integration; + +import org.springframework.boot.SpringApplication; +import org.springframework.boot.autoconfigure.SpringBootApplication; +import org.springframework.context.ConfigurableApplicationContext; +import org.springframework.context.annotation.Bean; +import org.springframework.integration.annotation.IntegrationComponentScan; +import org.springframework.integration.channel.QueueChannel; +import org.springframework.integration.dsl.DirectChannelSpec; +import org.springframework.integration.dsl.MessageChannels; +import org.springframework.messaging.PollableChannel; +import org.springframework.messaging.SubscribableChannel; +import org.springframework.messaging.support.MessageBuilder; + +import java.util.concurrent.Executors; +import java.util.concurrent.ScheduledExecutorService; +import java.util.concurrent.TimeUnit; + +import static java.util.Objects.requireNonNull; + +@SpringBootApplication +@IntegrationComponentScan +public class App { + + public static void main(String[] args) throws InterruptedException { + ConfigurableApplicationContext ctx = SpringApplication.run(App.class, args); + + PollableChannel queueChannel = ctx.getBean("queueChannel", PollableChannel.class); + SubscribableChannel subscribableDirectChannel = ctx.getBean("subscribableDirectChannel", SubscribableChannel.class); + + subscribableDirectChannel.subscribe(System.out::println); + + ScheduledExecutorService executor = Executors.newSingleThreadScheduledExecutor(); + executor.scheduleWithFixedDelay(() -> { + System.out.println("I am here!!!"); + subscribableDirectChannel.send(requireNonNull(queueChannel.receive(5000))); + }, 100, 300, TimeUnit.MILLISECONDS); + + queueChannel.send(MessageBuilder.withPayload("Hello").build()); + queueChannel.send(MessageBuilder.withPayload("Hello2").build()); + + Thread.sleep(2_000); + + queueChannel.send(MessageBuilder.withPayload("Hello3").build()); + + Thread.sleep(3_000); + executor.shutdown(); + } + + @Bean + public PollableChannel queueChannel() { + return new QueueChannel(100); + } + + @Bean + public DirectChannelSpec subscribableDirectChannel() { + return MessageChannels.direct("subscribableDirectChannel"); + } +} diff --git a/2023-03/spring-29-integrations-channels/integrations-channels-exercise/src/main/resources/application.yml b/2023-03/spring-29-integrations-channels/integrations-channels-exercise/src/main/resources/application.yml new file mode 100644 index 00000000..efa5596f --- /dev/null +++ b/2023-03/spring-29-integrations-channels/integrations-channels-exercise/src/main/resources/application.yml @@ -0,0 +1,5 @@ +logging: + level: + root: debug + sun: error + javax: error \ No newline at end of file diff --git a/2023-03/spring-29-integrations-channels/integrations-channels-exercise/src/test/java/ru/otus/spring/integration/MessagesTest.java b/2023-03/spring-29-integrations-channels/integrations-channels-exercise/src/test/java/ru/otus/spring/integration/MessagesTest.java new file mode 100644 index 00000000..491cdcef --- /dev/null +++ b/2023-03/spring-29-integrations-channels/integrations-channels-exercise/src/test/java/ru/otus/spring/integration/MessagesTest.java @@ -0,0 +1,98 @@ +package ru.otus.spring.integration; + + +import org.junit.jupiter.api.Test; +import org.springframework.messaging.Message; +import org.springframework.messaging.MessageHeaders; +import org.springframework.messaging.support.ErrorMessage; +import org.springframework.messaging.support.GenericMessage; +import org.springframework.messaging.support.MessageBuilder; + +import java.util.Map; + +import static org.junit.jupiter.api.Assertions.assertEquals; +import static org.junit.jupiter.api.Assertions.assertNotNull; + + +@SuppressWarnings("all") +public class MessagesTest { + + @Test + public void testCreateSimpleGenericMessage() { + // TODO: Создайте сообщение с payload-ом "Hello" с помощью конструктора + Message message = null; + + assertNotNull( message ); + assertEquals( GenericMessage.class, message.getClass() ); + assertNotNull( message.getPayload() ); + assertEquals( "Hello", message.getPayload() ); + } + + @Test + public void testCreateGenericMessage() { + // TODO: Создайте сообщение с пользователем с помощью конструктора + Message message = null; + + assertNotNull( message ); + assertEquals( GenericMessage.class, message.getClass() ); + assertNotNull( message.getPayload() ); + assertEquals( new User( "John", 23 ), message.getPayload() ); + } + + @Test + public void testGenericMessageWithHeaders() { + // TODO: Создайте сообщение с payload-ом "Hello" и header-ом "to":"World" + Map headers = null; + Message message = null; + + assertNotNull( message ); + assertEquals( "Hello", message.getPayload() ); + assertEquals( "World", message.getHeaders().get( "to", String.class ) ); + } + + @Test + public void testGenericMessageWithMessageHeaders() { + // TODO: Создайте сообщение с payload-ом "Hello" и header-ом "to":"World" + MessageHeaders headers = null; + Message message = null; + + assertNotNull( message ); + assertEquals( "Hello", message.getPayload() ); + assertEquals( "World", message.getHeaders().get( "to", String.class ) ); + } + + @Test + public void testErrorMessage() { + // TODO: Создайте сообщение об ошибки с объектом NullPointerException внутри + Message errorMessage = null; + + assertNotNull( errorMessage ); + assertEquals( ErrorMessage.class, errorMessage.getClass() ); + assertEquals( NullPointerException.class, errorMessage.getPayload().getClass() ); + } + + @Test + public void testMessageBuilder() { + // TODO: Создайте сообщение с payload-ом "Hello" и header-ом "to":"World" с помощью MessageBuilder + Message message = null; + + assertNotNull( message ); + assertEquals( "Hello", message.getPayload() ); + assertEquals( "World", message.getHeaders().get( "to", String.class ) ); + } + + @Test + public void testBuildFromMessage() { + Message original = MessageBuilder + .withPayload( new User( "Kate", 30 ) ) + .setHeader( "processor", "userService" ) + .build(); + + // TODO: Создайте новое сообщение с теми же payload и header-ами c помощью MessageBuilder + Message newMessage = null; + + assertNotNull( newMessage ); + assertEquals( original.getPayload(), newMessage.getPayload() ); + assertEquals( original.getHeaders().get( "processor" ), newMessage.getHeaders().get( "processor" ) ); + } +} diff --git a/2023-03/spring-29-integrations-channels/integrations-channels-exercise/src/test/java/ru/otus/spring/integration/User.java b/2023-03/spring-29-integrations-channels/integrations-channels-exercise/src/test/java/ru/otus/spring/integration/User.java new file mode 100644 index 00000000..e0ebbfa4 --- /dev/null +++ b/2023-03/spring-29-integrations-channels/integrations-channels-exercise/src/test/java/ru/otus/spring/integration/User.java @@ -0,0 +1,36 @@ +package ru.otus.spring.integration; + +import java.util.Objects; + +public class User { + + private final String name; + private final int age; + + public User(String name, int age) { + this.name = name; + this.age = age; + } + + public String getName() { + return name; + } + + public int getAge() { + return age; + } + + @Override + public boolean equals(Object o) { + if (this == o) return true; + if (!(o instanceof User)) return false; + User user = (User) o; + return age == user.age && + Objects.equals(name, user.name); + } + + @Override + public int hashCode() { + return Objects.hash(name, age); + } +} diff --git a/2023-03/spring-29-integrations-channels/integrations-channels-solution/pom.xml b/2023-03/spring-29-integrations-channels/integrations-channels-solution/pom.xml new file mode 100644 index 00000000..270046a6 --- /dev/null +++ b/2023-03/spring-29-integrations-channels/integrations-channels-solution/pom.xml @@ -0,0 +1,51 @@ + + + 4.0.0 + + ru.otus + integrations-channels-solution + 1.0-SNAPSHOT + + + org.springframework.boot + spring-boot-starter-parent + 3.1.1 + + + + + 17 + 17 + UTF-8 + 2.0 + + + + + org.springframework.boot + spring-boot-starter-integration + + + + org.yaml + snakeyaml + ${snakeyaml.version} + + + + org.springframework.boot + spring-boot-starter-test + + + + + + + org.springframework.boot + spring-boot-maven-plugin + + + + diff --git a/2023-03/spring-29-integrations-channels/integrations-channels-solution/src/main/java/ru/otus/spring/integration/App.java b/2023-03/spring-29-integrations-channels/integrations-channels-solution/src/main/java/ru/otus/spring/integration/App.java new file mode 100644 index 00000000..c3ce524d --- /dev/null +++ b/2023-03/spring-29-integrations-channels/integrations-channels-solution/src/main/java/ru/otus/spring/integration/App.java @@ -0,0 +1,59 @@ +package ru.otus.spring.integration; + +import org.springframework.boot.SpringApplication; +import org.springframework.boot.autoconfigure.SpringBootApplication; +import org.springframework.context.ConfigurableApplicationContext; +import org.springframework.context.annotation.Bean; +import org.springframework.integration.annotation.IntegrationComponentScan; +import org.springframework.integration.channel.QueueChannel; +import org.springframework.integration.dsl.DirectChannelSpec; +import org.springframework.integration.dsl.MessageChannels; +import org.springframework.messaging.PollableChannel; +import org.springframework.messaging.SubscribableChannel; +import org.springframework.messaging.support.MessageBuilder; + +import java.util.concurrent.Executors; +import java.util.concurrent.ScheduledExecutorService; +import java.util.concurrent.TimeUnit; + +import static java.util.Objects.requireNonNull; + +@SpringBootApplication +@IntegrationComponentScan +public class App { + + public static void main(String[] args) throws InterruptedException { + ConfigurableApplicationContext ctx = SpringApplication.run(App.class, args); + + PollableChannel queueChannel = ctx.getBean("queueChannel", PollableChannel.class); + SubscribableChannel subscribableDirectChannel = ctx.getBean("subscribableDirectChannel", SubscribableChannel.class); + + subscribableDirectChannel.subscribe(System.out::println); + + ScheduledExecutorService executor = Executors.newSingleThreadScheduledExecutor(); + executor.scheduleWithFixedDelay(() -> { + System.out.println("I am here!!!"); + subscribableDirectChannel.send(requireNonNull(queueChannel.receive(5000))); + }, 100, 300, TimeUnit.MILLISECONDS); + + queueChannel.send(MessageBuilder.withPayload("Hello").build()); + queueChannel.send(MessageBuilder.withPayload("Hello2").build()); + + Thread.sleep(2_000); + + queueChannel.send(MessageBuilder.withPayload("Hello3").build()); + + Thread.sleep(3_000); + executor.shutdown(); + } + + @Bean + public PollableChannel queueChannel() { + return new QueueChannel(100); + } + + @Bean + public DirectChannelSpec subscribableDirectChannel() { + return MessageChannels.direct("subscribableDirectChannel"); + } +} diff --git a/2023-03/spring-29-integrations-channels/integrations-channels-solution/src/test/java/ru/otus/spring/integration/MessagesTest.java b/2023-03/spring-29-integrations-channels/integrations-channels-solution/src/test/java/ru/otus/spring/integration/MessagesTest.java new file mode 100644 index 00000000..3adb95b6 --- /dev/null +++ b/2023-03/spring-29-integrations-channels/integrations-channels-solution/src/test/java/ru/otus/spring/integration/MessagesTest.java @@ -0,0 +1,101 @@ +package ru.otus.spring.integration; + + +import org.junit.jupiter.api.Test; +import org.springframework.messaging.Message; +import org.springframework.messaging.MessageHeaders; +import org.springframework.messaging.support.ErrorMessage; +import org.springframework.messaging.support.GenericMessage; +import org.springframework.messaging.support.MessageBuilder; + +import java.util.Collections; +import java.util.Map; + +import static org.junit.jupiter.api.Assertions.assertEquals; +import static org.junit.jupiter.api.Assertions.assertNotNull; + + +@SuppressWarnings("all") +public class MessagesTest { + + @Test + public void testCreateSimpleGenericMessage() { + // TODO: Создайте сообщение с payload-ом "Hello" с помощью конструктора + Message message = new GenericMessage<>( "Hello" ); + + assertNotNull( message ); + assertEquals( GenericMessage.class, message.getClass() ); + assertNotNull( message.getPayload() ); + assertEquals( "Hello", message.getPayload() ); + } + + @Test + public void testCreateGenericMessage() { + // TODO: Создайте сообщение с пользователем с помощью конструктора + Message message = new GenericMessage<>( new User( "John", 23 ) ); + + assertNotNull( message ); + assertEquals( GenericMessage.class, message.getClass() ); + assertNotNull( message.getPayload() ); + assertEquals( new User( "John", 23 ), message.getPayload() ); + } + + @Test + public void testGenericMessageWithHeaders() { + // TODO: Создайте сообщение с payload-ом "Hello" и header-ом "to":"World" + Map headers = Collections.singletonMap( "to", "World" ); + Message message = new GenericMessage<>( "Hello", headers ); + + assertNotNull( message ); + assertEquals( "Hello", message.getPayload() ); + assertEquals( "World", message.getHeaders().get( "to", String.class ) ); + } + + @Test + public void testGenericMessageWithMessageHeaders() { + // TODO: Создайте сообщение с payload-ом "Hello" и header-ом "to":"World" + MessageHeaders headers = new MessageHeaders( Collections.singletonMap( "to", "World" ) ); + Message message = new GenericMessage<>( "Hello", headers ); + + assertNotNull( message ); + assertEquals( "Hello", message.getPayload() ); + assertEquals( "World", message.getHeaders().get( "to", String.class ) ); + } + + @Test + public void testErrorMessage() { + // TODO: Создайте сообщение об ошибки с объектом NullPointerException внутри + Message errorMessage = new ErrorMessage( new NullPointerException() ); + + assertNotNull( errorMessage ); + assertEquals( ErrorMessage.class, errorMessage.getClass() ); + assertEquals( NullPointerException.class, errorMessage.getPayload().getClass() ); + } + + @Test + public void testMessageBuilder() { + // TODO: Создайте сообщение с payload-ом "Hello" и header-ом "to":"World" с помощью MessageBuilder + Message message = MessageBuilder.withPayload( "Hello" ) + .setHeader( "to", "World" ) + .build(); + + assertNotNull( message ); + assertEquals( "Hello", message.getPayload() ); + assertEquals( "World", message.getHeaders().get( "to", String.class ) ); + } + + @Test + public void testBuildFromMessage() { + Message original = MessageBuilder + .withPayload( new User( "Kate", 30 ) ) + .setHeader( "processor", "userService" ) + .build(); + + // TODO: Создайте новое сообщение с теми же payload и header-ами c помощью MessageBuilder + Message newMessage = MessageBuilder.fromMessage( original ).build(); + + assertNotNull( newMessage ); + assertEquals( original.getPayload(), newMessage.getPayload() ); + assertEquals( original.getHeaders().get( "processor" ), newMessage.getHeaders().get( "processor" ) ); + } +} diff --git a/2023-03/spring-29-integrations-channels/integrations-channels-solution/src/test/java/ru/otus/spring/integration/User.java b/2023-03/spring-29-integrations-channels/integrations-channels-solution/src/test/java/ru/otus/spring/integration/User.java new file mode 100644 index 00000000..e0ebbfa4 --- /dev/null +++ b/2023-03/spring-29-integrations-channels/integrations-channels-solution/src/test/java/ru/otus/spring/integration/User.java @@ -0,0 +1,36 @@ +package ru.otus.spring.integration; + +import java.util.Objects; + +public class User { + + private final String name; + private final int age; + + public User(String name, int age) { + this.name = name; + this.age = age; + } + + public String getName() { + return name; + } + + public int getAge() { + return age; + } + + @Override + public boolean equals(Object o) { + if (this == o) return true; + if (!(o instanceof User)) return false; + User user = (User) o; + return age == user.age && + Objects.equals(name, user.name); + } + + @Override + public int hashCode() { + return Objects.hash(name, age); + } +} diff --git a/2023-03/spring-29-integrations-channels/pom.xml b/2023-03/spring-29-integrations-channels/pom.xml new file mode 100644 index 00000000..03842063 --- /dev/null +++ b/2023-03/spring-29-integrations-channels/pom.xml @@ -0,0 +1,17 @@ + + + 4.0.0 + + ru.otus + integrations-channels + 1.0 + + pom + + + integrations-channels-exercise + integrations-channels-solution + +