barbitoff programmer`s blog

Здесь я публикую заметки из программерской жизни: грабли, на которые мне случилось наступить, проблемы, для которых было найдено элегантное (или не очень) решение, а также все, с чем мне пришлось столкнуться и чем хотелось бы поделиться =)
PS Если хотите меня поблагодарить - на странице есть 3 места, чтобы это сделать =)

пятница, 6 декабря 2019 г.

SpringFox и Spring Boot 2.2.1

SpringFox версии 2.9.2 (самый актуальный релиз на 06.12.2019) несовместима со Spring Boot 2.2.0 и выше из-за изменения API Spring, используемого SpringFox. На это заведен тикет https://github.com/springfox/springfox/issues/2932, однако, на текущий момент SpringFox 3.0.0-SNAPSHOT из основной ветки разработки так и не переведен на актуальный Spring Boot.
Поэтому пришлось форкнуться и внести необходимые корректировки самостоятельно: https://github.com/barbitoff/springfox/tree/2.9.2-boot-2.2.1. На первый взгляд - работает, но тесты из swagger-contract-tests пришлось проигнорировать, т.к. они падали. Однако, падали они и в оригинальной 2.9.2.

пятница, 22 ноября 2019 г.

Oracle ATG: <print-item> в dynadmin

Если попытаться получить все item'ы по определенному item-descriptor в dynadmin с помощью:
<print-item item-descriptor="xxx"/>
то будет выведено только 100 item-ов. Для получения абсолютно всех item'ов необходимо воспользоваться:
<query-items item-descriptor="xxx">all</query-items>
Правда, если item'ов очень много, они все равно могут все не напечататься, вывод обрезается в произвольном месте. Workaround - запрашивать частями с использованием RANGE:
<query-items item-descriptor="xxx">
all RANGE +30000
</query-items>
затем
<query-items item-descriptor="xxx">
all RANGE 30000+30000
</query-items>
и т.п. 

среда, 20 ноября 2019 г.

grep: поиск по всем файлам в папке по наличию некой подстроки внутри CDATA-секции

Задача

Есть папка с xml-файлами, причем папка может содержать подпапки любой глубины вложенности. Нужно найти xml-файлы, содержащие некую подстроку внутри CDATA-секции.

Решение

grep -REil ".*<!\[CDATA\[([^\]]|(\][^\]])|(\]\][^>]))*ИСКОМАЯПОДСТРОКА.*" C:/sf_phoenix --include=*.xml
где ИСКОМАЯПОДСТРОКА - собственно та подстрока, которую ищем.

среда, 13 ноября 2019 г.

пятница, 25 октября 2019 г.

soapUI: "Trying XBeans path engine... Trying XQRL... Trying delegated path engine... FAILED on declare namespace..."

Проблема

В groovy-скрипте, использующем com.eviware.soapui.support.XmlHolder, при попытке выполнить xpath-поиск по XML
def requestXml = new XmlHolder(requestText);
def result = requestXml["//*[local-name() = 'xxx']"]
возникает ошибка:
Trying XBeans path engine... Trying XQRL... Trying delegated path engine... FAILED on declare namespace...
Решение

Добавить в classpath библиотеки saxon-x.x.x.jar и saxon-dom-x.x.x.jar из инсталляции soapUI.

пятница, 18 октября 2019 г.

Mockito: проверка, что метод был вызван несколько раз с определенными аргументами

Задача

Есть некий мок-объект, нужно проверить, что некоторый его метод был вызван дважды, причем с определенными значениями аргументов.

Решение

Тут поможет argument capturing:
ArgumentCaptor<String> argsCaptor = ArgumentCaptor.forClass(String.class);
verify(myMockObj, atLeastOnce()).someMethod(argsCaptor .capture());
List<String> args= argsCaptor.getAllValues();
assertEquals(2, argsCaptor.size());       
assertTrue(argsCaptor.contains("arg1));
assertTrue(argsCaptor.contains("arg2));

пятница, 26 июля 2019 г.

Microsoft Edge: не открываются страницы с 127.0.0.1

Проблема 

В Microsoft Edge не открываются сайты, размещенные локально на моей машине и доступные по IP 127.0.0.1 или хостнэймам, которые в hosts маппятся на 127.0.0.1. При этом эти же сайты открываются без проблема в других браузерах, даже в Internet Explorer.

Решение

Разрешаем для Edge использование локальной петли командой:
CheckNetIsolation LoopbackExempt -a -n="Microsoft.MicrosoftEdge_8wekyb3d8bbwe"