В рамках лекции мы реализовали практически полноценный In-Memory CRUD-сервер (Create Read Update Delete) на базе сервлетов. Этому серверу не хватает двух вещей:
- Привести код в должный вид: вынести методы в константы, убрать дублирующийся код.
- Реализовать репозиторий — пока вместо репозитория установлена заглушка.
- Осуществите рефакторинг кода.
- Реализуйте репозиторий с учётом того, что методы репозитория могут вызываться конкурентно, т. е. в разных потоках.
Как должен работать save
:
- Если от клиента приходит пост с id=0, значит, это создание нового поста. Вы сохраняете его в списке и присваиваете ему новый id. Достаточно хранить счётчик с целым числом и увеличивать на 1 при создании каждого нового поста.
- Если от клиента приходит пост с id !=0, значит, это сохранение (обновление) существующего поста. Вы ищете его в списке по id и обновляете. Продумайте самостоятельно, что вы будете делать, если поста с таким id не оказалось: здесь могут быть разные стратегии.
В качестве решения пришлите ссылку на ваш GitHub-репозиторий в личном кабинете студента на сайте netology.ru.
Это необязательная задача, её выполнение не влияет на получение зачёта.
Не всегда удобно «таскать» за собой полноценный Tomcat: скачивать его, распаковывать и т. д. Достаточно часто используют библиотеку WebApp Runner, ранее (com.github.jsimone webapp-runner).
Встраивание WebApp Runner в ваш проект позволяет запускать его таким образом: java -jar target/dependency/webapp-runner.jar target/<appname>.war
. Это достаточно удобно для размещения на облачных платформах.
Добавьте в свою сборку скачивание webapp-runner
согласно инструкции.
Убедитесь, что сборка проходит, и ваш war-файл действительно запускается указанной выше командой.
Реализуйте новую функциональность в ветке feature/webapp-runner
вашего репозитория из предыдущего домашнего задания и откройте Pull Request.
В качестве результата пришлите ссылку на ваш Pull Request на GitHub в личном кабинете студента на сайте netology.ru.
После того, как домашнее задание будет принято, сделайте merge
для Pull Request.