Skip to content

Latest commit

 

History

History
179 lines (169 loc) · 18.2 KB

ReleaseNotes.md

File metadata and controls

179 lines (169 loc) · 18.2 KB

TopJava Release Notes

Topjava 15

  • Миграция на Servlet API 4.0 / Tomcat 9.x
  • Миграция на JDK11
  • JUnit5 fix: junit-platform-surefire-provider не нужен
  • Рефакторинг тестов:
    • в RootControllerTest.testUsers для проверки используем AssertionMatcher адаптер
    • вместо content().json() от jsonassert десериализуем json и используем сравнения через AssertJ
  • В javascript место глабальных переменных и одинаковой функции обновления таблицы задаю их в объекте контекст, который передаю в makeEditable() как параметр
  • Починил back в браузере после логина. Кнопки входа и регистрации отображаю только для isAnonymous()

Topjava 14

  • Миграция на JUnit 5
  • Для измерения времени в тестах использую Spring StopWatch
  • SimpleJdbcInsert и NamedParameterJdbcTemplate конструируются (и берут настройки) из jdbcTemplate
  • AuthorizedUser зарефакторился в SecurityUtil
  • В javascript заменил var на let/const. Поддержка 95% браузеров
  • Подправил UI фильтрации и заголовка страниц, добавилась кнопка Cancel в профиль
  • Починил баг в FireFox: пустой ответ по ajax
  • Сделал вход в приложение при нажании кнопок Зайти как ...
  • Добавил регистрацию пользователя по REST
  • Преименовал js файлы согласно javascript filename naming convention
  • Сделал проверку startTime/endTime на фильтре времени (после обновления datetimepicker до 2.5.20)

Topjava 13

Topjava 12

Topjava 11

  • добавил

  • рефакторинг

    • починил коммит формы по cancel (history.back()) в FireFox
    • заменил неработающий DependencyCi на VersionEye c проверкой зависимостей на uptodate
    • починил CrudUserRepository.getWithMeals() через @EntityGraph. С неколькими ролями (у админа) еда дублируется
    • починил тесты контроллеров с профилем JDBC (JpaUtil отсутствует в контексте JDBC)
    • переименовал meal.jsp/user.jsp в mealForm.jsp/userForm.jsp
    • в InMemoryMealRepositoryImpl.save() сделал update атомарным
    • переименовал методы сервисов save в create
    • переименовал и cделал классы BaseEntity и NamedEntity абстрактными
    • обновил Noty и API с ним до 3.1.0. Добавил glyphicon в сообщения Noty
    • заменил MATCHER_WITH_EXCEED на валидацию через JSONassert.
    • поменял Deprecated валидаторы org.hibernate.validator.constraints на javax.validation.constraints
    • убрал пароль из результатов REST через @JsonProperty READ_ONLY / WRITE_ONLY. Тесты на REST пришлось починить добавлением добавлением в JSON пароля как дополнительного параметра (JsonUtil.writeWithExtraProps)
    • убрал JSON View и сделал преобразование времени на UI с помощью jQuery converters
    • поменял группу валидации по умолчанию при сохранении через JPA. Теперь все валидаторы в модели работаю по умолчанию (groups не требуется).
    • Добавил в ErrorInfo тип ошибки ErrorType + i18n.
  • правки

    • переименовал ModelMatcher в BeanMatcher и починил: можно сравнивать только упорядоченные коллекции (List)
    • поменял зависимость org.hibernate:hibernate-validator на org.hibernate.validator:hibernate-validator (warning при сборке)

Topjava 10

Topjava 9

  • добавил
  • рефакторинг
    • переименовал TimeUtil в DateTimeUtil
    • переименовал ExceptionUtil в ValidationUtil
    • заменил валидацию @NotEmpty на @NotBlank
    • заменил CascadeType.REMOVE на @OnDelete
    • изменил JdbcUserRepositoryImpl.getAll()
    • обновил jQuery до 3.x, исключил из зависимостей webjars ненужные jQuery
    • cделал загрузку скриптов асинхронной
    • фильтр еды сделал в Bootstrap Panels
    • вместо Persistable ввел интерфейс HasId и наследую от него как Entity, так и TO
    • сделал универсальную обработку исключений дублирования email и dateTime

Topjava 8

  • добавил:
  • удалил зависимость jul-to-slf4j
  • рефакторинг
    • переименовал все классы UserMeal** в Meal**, JSP
    • переименовал LoggedUser в AuthorizedUser
    • починил работа с PK Hibernate в случае ленивой загрузки (баг HHH-3718)
    • поменял в BaseEntity equals/hashCode/implements Persistable
    • в InMemoryMealRepositoryImpl выделил метод getAllStream
    • перенес проверки пердусловий Assert из InMemory репозиториев в сервисы
    • переименовал классы Proxy* на более адекватные Crud*
    • поменял реализацию JpaMealRepositoryImpl.get, добавил в JPA модель @BatchSize
    • вместо @RequestMapping ввел Spring 4.3 аннотации @Get/Post/...Mapping
    • поменял авторизацию в тестах не-REST контроллеров
    • перенес вызовы UserUtil.prepareToSave из AbstractUserController в UserServiceImpl
    • зарефакторил обработку ошибок (ExceptionInfoHandler)

Topjava 7

Topjava 3-6

  • добавил
    • выпускной проект
    • в таблицу meals составной индекс
    • константы Profiles.ACTIVE_DB, Profiles.DB_IMPLEMENTATION
    • проверки и тесты на NotFound для UserMealService.getWithUser и UserService.getWithMeals
    • в MockMvc фильтр CharacterEncodingFilter
    • защиту от межсайтовой подделки запроса, видео Межсайтовая подделка запроса (CSRF)
    • ограничение на диапазон дат для фильтра еды
  • рефакторинг
    • UserMealsUtil, ProfileRestController, компараторов в репозитоии
    • LoggedUser отнаследовал от org.springframework.security.core.userdetails.User
    • переименовал DbTest в AbstractServiceTest и перенес сюда @ActiveProfiles
    • сделал выполнение скриптов в тестах через аннотацию @Sql
    • вместо использования id и селектора сделал обработчик onclick
    • изменил формат ввода даты в форме без 'T'
  • убрал
  • обновил
    • Hibernate до 5.x и Hibernate Validator, добавились новые зависимости и jackson-datatype-hibernate5
    • datatables API (1.10)
    • Postgres драйвер. Новый драйвер поддерживает Java 8 Time API, разделил реализацию JdbcMealRepositoryImpl на Java8 (Postgresql) и Timestamp (HSQL)