суббота, июля 5

AspectJ и Java8

Блин, стоило добавить в код Stream-синтаксис из Java8 и чуточку Lambda-кода, как AspectJ свалился в SOE при компиляции :(


---- AspectJ Properties ---
AspectJ Compiler 1.8.0 built on Thursday Apr 17, 2014 at 20:04:16 GMT
---- Dump Properties ---
Dump file: ajcore.20140705.182145.679.txt
Dump reason: java.lang.StackOverflowError
Dump on exception: true
Dump at exit condition: abort
---- Exception Information ---
java.lang.StackOverflowError
at org.aspectj.org.eclipse.jdt.internal.compiler.lookup.ParameterizedTypeBinding.substituteInferenceVariable(ParameterizedTypeBinding.java:851)
at org.aspectj.org.eclipse.jdt.internal.compiler.lookup.ParameterizedTypeBinding.substituteInferenceVariable(ParameterizedTypeBinding.java:856)
... ещё несколько десятков строчек подобной выше

вторник, июля 1

"Лишние" зависимости SLF4J

При запуске тестов в лог выходит нечто подобное:

Configuring TestNG with: TestNG652Configurator
SLF4J: Class path contains multiple SLF4J bindings.
SLF4J: Found binding in [jar:file:/.../.m2/repository/org/slf4j/slf4j-log4j12/1.7.7/slf4j-log4j12-1.7.7.jar!/org/slf4j/impl/StaticLoggerBinder.class]
SLF4J: Found binding in [jar:file:/.../.m2/repository/org/slf4j/slf4j-jdk14/1.7.5/slf4j-jdk14-1.7.5.jar!/org/slf4j/impl/StaticLoggerBinder.class]
SLF4J: Found binding in [jar:file:/.../.m2/repository/ch/qos/logback/logback-classic/0.9.9/logback-classic-0.9.9.jar!/org/slf4j/impl/StaticLoggerBinder.class]
SLF4J: See [url]http://www.slf4j.org/codes.html#multiple_bindings[/url] for an explanation.
SLF4J: Actual binding is of type [org.slf4j.impl.Log4jLoggerFactory]


В этом случае, согласно документации, нужно просто найти и исключить "лишние" зависимости.

У меня ими оказались org.slf4j:slf4j-jdk14 и ch.qos.logback:logback-classic - у обеих библиотек была зависимость уровня runtime.
Удалил так: http://pastebin.com/uDeUnp7m

четверг, декабря 12

Пишем плагин для Maven

статья на хабре

Spring и обработка событий в Hibernate

Полная статья доступна на habrahabr.ru
Как-то обделена на хабре такая тема, как обработка событий при работе с сущностями с использованием Hibernate - я смог найти только один пост уже почти мохнатого года. Но то аудит, а нам нужна возможность автоматизировать работу с некоторыми атрибутами сущностей и при этом упростить процедуру работы с ними.

понедельник, июля 8

PowerMock(+Mockito) +TestNG и мокинг статических классов/методов

На хабре уже была статья с примерами использования PowerMock, но в ней не хватает такого описания, как мокирование статических методов как самостоятельных "единиц" в классе, так и в гибридном использовании, когда часть статических методов у класса мокируются, а часть вызываются реально. Попробую исправить эту нишу.

полная статья на хабре

четверг, марта 7

"местная" альтернатива killnotes.exe

С давним пор привык для "прибития" Lotus Notes использовать утилитку killnotes.exe

Но как-то наткнулся на прекрасную альтернативу внутри самого клиента - утилита NSD, которая служит для диагностики сбоев клиента.

просто запускаем её как "nsd.exe -kill" и готово - клиент прибит, библиотеки выгружены, в общем всё согласно документации:
"Runs NSD in a special mode that kills all Notes/Domino processes in the current "partition" (i.e. all processes that are accessing Notes shared memory and that are running from the same location as NSD). Output is limited to process lists (OS Process Table, and Notes Process Summary) and to status messages about the processes NSD forcefully terminated. The output log file follows the naming convention of kill_os_hostname_yyyy_mm_dd@hh_mm_ss.log and is saved to the data\IBM_TECHNICAL_SUPPORT directory."

ЗЫ: Если на рабочей станции запущен не только клиент Lotus Notes, но и сервер Lotus Domino, то сервер остаётся нетронутым.
ЗЫЫ: документация по NSD получается через "nsd.exe -help" :)