forum.bitel.ru
http://forum.bitel.ru/

[FYI] Нюансы DynamicTariffTreeNode (CRM)
http://forum.bitel.ru/viewtopic.php?f=19&t=11985
Страница 1 из 1

Автор:  Cromeshnic [ 06 окт 2016, 12:41 ]
Заголовок сообщения:  [FYI] Нюансы DynamicTariffTreeNode

Наткнулся на интересную штуку.

Повадились пилить собственные узлы тарифных деревьев для модуля Phone:
пакеты трафика, фильтры по карте зон для А-номера и т.п.
Решили, мол, зачем мы будем делать все в jar-ках. Давайте добавим в phone.xml узел "Обработчик" из Inet и будем писать все новые узлы через дин код.

Написали узел, проверяющий по карте зон, что A и B - номера находятся в одной зоне (позволит собрать один универсальный тариф на местную связь для разных городов).
Проверили - работает.
Потом решил заодно установить направление в этом же узле:

Код:
 if (zdrFrom.zoneId > 0 && zdrFrom.zoneId == zdrTo.zoneId) {
                //Добавляем установку направления, если заходим в узел
                if (zdrTo.destId > 0)
                {
                    req.dest = zdrTo.destId;
                }
                if(logger.isDebugEnabled()) {
                    logger.debug("Номера в одной зоне");
                }
                return 1;
            }


- процессы-обработчики молча умирают на строчке
Код:
req.dest = zdrTo.destId;


Происходит так, судя по всему, от того, что поле dest - protected.
И несмотря на то, что наш класс в динкоде находится в том же package, что и AbstractPhoneTariffRequest, он не считает их "соседними", т.к. они в JVM грузятся разными classloader-ами.

Вот и гугл выдал:
http://stackoverflow.com/questions/1046 ... ferent-jar
(там в названии написано про different jar, но в тексте говорится, что ещё и classloader-ы разные).

Такие пироги.

Полезно знать, что новым узлом "обработчик" можно писать только простые узлы-фильтры, не меняющие TariffRequest.
Либо, как мне тут подсказывают java-гуру, пользоваться рефлексией.

Автор:  Cromeshnic [ 06 окт 2016, 12:44 ]
Заголовок сообщения:  Re: [FYI] Нюансы DynamicTariffTreeNode

... либо просить разработчиков, чтобы меняли protected на public :)

Страница 1 из 1 Часовой пояс: UTC + 5 часов [ Летнее время ]
Powered by phpBB® Forum Software © phpBB Group
http://www.phpbb.com/