Oleg Atamanenko

thoughts about programming

Category: java

Using Unitils ReflectionAssert

Often it is needed to compare two different instances of the class inside test. I.e. we save object into database, then fetch it back from db and we want to be sure if nothing was lost during saving/reading.

Continue Reading…

Using AssertJ

AssertJ is a library which provides fluent strongly-typed assertions to use in unit tests. Example of assertions written with AssertJ: import io.github.uthark.blog.assertj.Assertions.assertThat; // ... within @Test User result = userDao.findByLogin("username"); assertThat(result).

Continue Reading…

Initializing Mockito @Mocks with JUnit @Rule

In this post I will show how one can implement custom JUnit @Rule. As an example let’s take Mockito and implement custom rule which will initialize Mocks in test class.

Continue Reading…

Automatic query modification with Spring Data Mongo

Introduction Today I want to show how one can automatically apply additional restrictions on MongoDB Queries with MongoTemplate or Spring Data Mongo. Implementation First, let’s introduce interface QueryModifier. import org.springframework.data.mongodb.core.query.Query; public interface QueryModifier { /** * Modifies source query according to the rules.

Continue Reading…

Собственная реализация методов в Spring Data JPA

Очевидно, что мы не всегда можем воспользоваться автоматической генерацией кода, предоставляемой Spring Data JPA. Например, у нас слишком сложный запрос, или нам необходимо вызвать процедуру в базе данных, либо у нас сложная бизнес-логика.

Continue Reading…

Использование BeanPostProcessor на примере журналирования

Сегодня я хочу рассказать, как можно сделать инициализацию логгера в классе с использованием аннотаций и BeanPostProcessor Очень часто мы инициализируем логгер следующим образом: public class MyClass { private static final Logger LOG = LoggerFactory.

Continue Reading…

Преобразуем строку в дату

Казалось бы, есть простейшая задача - преобразовать строковое представление даты в объект класса java.util.Date. Как оказалось, иногда использование DateFormat не помогает. В случае, если строка - это заголовок Date из письма, то нам нужно использовать javax.

Continue Reading…

Немного о виртуальных методах в Java

Сегодня я хочу рассмотреть некоторые особенности переопределения методов в Java. В java нельзя переопределить: поля класса конструкторы, инициализаторы класса статические методы статические поля Подробнее об этом можно прочитать в Java Language Specification, §8.

Continue Reading…

Удаление различных диакритических символов из строки

Возникла проблема - каким образом заменить в строке символы из национальных кодировок на соответствующие им из латиницы. Например, из строки explicación получить explicacion. package com.blogspot.atamanenko; import java.text.Normalizer; import java.text.Normalizer.Form; public class StringNormalizer { public static String normalize(String string) { return Normalizer.

Continue Reading…

Список для проверки при оптимизации Grails приложений

Выкладываю ниже список задач, которые нужно/можно выполнить для оптимизации приложения, написанного на Grails, может кому пригодится. Тестирование проведённых оптимизаций Первым делом необходимо разработать критерии проверки, которые позволят оценить эффективность проведённых оптимизаций.

Continue Reading…

Spring Roo (часть 2)

Архитектура сгенерированного приложения Spring Roo активно использует аспекты. В качестве реализации аспектов была взята библиотека aspectj. Большая часть сгенерированного кода попадает в отдельные файлы-аспекты. Создадим простой класс: ```bash new persistent class jpa -name ~.

Continue Reading…

Apache Ant и Metro

Столкнулся с такой проблемой - в некоторых случаях приложение, собранное антом не работает. Конкретно - не работает десереализация запросов на веб-сервис. Получаемый запрос содержит null в значениях полей. Опытным путём было выяснено, что на это влияет используемая версия Java.

Continue Reading…