- обновил версии: Spring 5.x, Spring Data 2.x, Ehcache 3.x, datatables, datetimepicker
- добавил видео решений HW0 с одним проходом
- поправил видео Обзор Spring Framework. Spring Context. Дописал про Constructor injection.
- заменил видео про тетсирование сервисов. Вместо самодельных матчеров стали использовать AssertJ. Видео Тестирование UserService через AssertJ, время 1:53
- сделал видео с jQuery конвертерами и дефолтными группами валидации при сохранении в базу
- сделал видео с новым
DelegatingPasswordEncoder
и Json READ/WRITE access - убрал
AccessType.PROPERTY
дляAbstractBaseEntity.id
(см. fixed HHH-3718) - удалил
PasswordUtil
, возвращаю статусNO_CONTENT
для REST delete, убрал группы валидации вUserTo
- заменил в jQuery success на done
- вместо
lang.jsp
сделал общийbodyHeader.jsp
-
добавил
- доп. решение HW1 через одним return и O(N)
- раскрасил лог (Logback layouts coloring)
-
рефакторинг
- починил коммит формы по 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.
- починил коммит формы по cancel (
-
правки
- переименовал
ModelMatcher
вBeanMatcher
и починил: можно сравнивать только упорядоченные коллекции (List) - поменял зависимость
org.hibernate:hibernate-validator
наorg.hibernate.validator:hibernate-validator
(warning при сборке)
- переименовал
- добавил
- доступ к AuthorizedUser через
@AuthenticationPrincipal
и authentication Tag - Обработку 404 NotFound
- локализацию ошибок валидации
- проверки json в тестах через JSONassert и через jsonPath
- логирование от Postgres Driver
- в
.travis.yml
сборку только ветки master - защиту от кэширование ajax запросов в IE
- обработку запрета модификации системный юзеров через универсальный
ApplicationException
- доступ к AuthorizedUser через
- рефакторинг
- сделал
@EntityGraph
черезattributePaths
- реализаовал обработку дублирования
user.email
иmeal.dateTime
через Controller Based Exception Handling - поменял отключение транзакционности в тестах через
@Transactional(propagation = Propagation.NEVER)
- сделал выбор в сервлете через switch
- все логгирование сделал через {} форматирование и поправил его в контроллерах (поле проверки id)
- перешел на конструктор DI
- в
ModelMatcher
переименовалComparator
->Equality
- заинлайнил все лямбды (компараторы, ModelMatcher.equality)
- поменялась реализация
JdbcUserRepositoryImpl.getAll()
- на UI кнопки в таблице заменились на линки, поправил сообщения локализации
- сделал кастомизацию JSON (@JsonView) и валидацию (groups) для данных еды, отдаваемых на UI
- в
JdbcUserRepositoryImpl
поменялMapSqlParameterSource
наBeanPropertySqlParameterSource
- сделал
- удалил
- зависимость
javax.transaction.jta
(уже не нужна) ${spring.version}
вpom.xml
зависимостях (уже есть вspring-framework-bom
)- distinct из запроса Hibernate на пользователей с ролями. Оптимизация запроса distinct: 15.16.2
- лишние
<div>
тэги (shadow
иview-box
)
- зависимость
- добавил
- выбор профиля базы через
ActiveProfilesResolver
/AllActiveProfileResolver
на основе драйвера базы в classpath - видео Cascade. Auto generate DDL.
- проверку на правильность id в Ajax/Rest контроллерах (treat IDs in REST body)
- тесты на валидацию входных значений контроллеров и зависимость на имплементацию
- Bootstrap Glyphicons
- выбор профиля базы через
- рефакторинг
- переименовал
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
- переименовал
- добавил:
- защиту от XSS (Cross-Site Scripting)
- интеграцию с Dependency Ci и Travis Ci
- локализацию календаря
- сводку по результатам тестов
- примеры запросов curl в
config/curl.md
- DataTables/Bootstrap 3 integration
- тесты на профиль деплоя Heroku (общее количество JUnit тестов стало 102)
- удалил зависимость
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
)
- переименовал все классы
- добавил:
- JPA 2.1 EntityGraph
- Jackson @JsonView
- валидацию объектов REST
- i18n в JavaScript
- проверку предусловий и видео Методы улучшения качества кода
- интеграцию с проверкой кода в Codacy
- сравнение вермени исполнения запросов при различных meals индексах
- tomcat7-maven-plugin плагин перключили на Tomcat 8 (cargo-maven2-plugin)
- рефакторинг
- обработка ошибок сделал с array
- матчеров тестирования (сделал автоматические обертки и сравнение на основе передаваемого компаратора)
- вынес форматирование даты в
functions.tld
- добавил
- выпускной проект
- в таблицу 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'
- убрал
LoggerWrapper
- Dandelion обертку к datatables
- обновил
- Hibernate до 5.x и Hibernate Validator, добавились новые зависимости и
jackson-datatype-hibernate5
- datatables API (1.10)
- Postgres драйвер. Новый драйвер поддерживает Java 8 Time API, разделил реализацию JdbcMealRepositoryImpl на Java8 (Postgresql) и Timestamp (HSQL)
- Hibernate до 5.x и Hibernate Validator, добавились новые зависимости и