forum.bitel.ru http://forum.bitel.ru/ |
|
Сериализованный TariffOption не работает в .NET http://forum.bitel.ru/viewtopic.php?f=19&t=8242 |
Страница 1 из 1 |
Автор: | Cromeshnic [ 08 июл 2013, 13:49 ] |
Заголовок сообщения: | Сериализованный TariffOption не работает в .NET |
v 5.2 Проблема следующая: Написал собственный веб-сервис для работы с тарифными опциями, в котором имеется такой метод, выдающий справочник всех опций стандартным менеджером опций: Код: /** * Возвращаем список всех возможных тарифных опций * @return список опций * @throws BGException */ @Override public List<TariffOption> tariffOptionList() throws BGException { TariffOptionDao tom = new TariffOptionDao(getConnection()); List<TariffOption> list = tom.list(null); tom.recycle(); return list; } Пытаемся воспользоваться - .NET ругается на ошибку в xml в 330 столбце: Код: <?xml version="1.0"?><S:Envelope xmlns:S="http://schemas.xmlsoap.org/soap/envelope/"><S:Body><ns5:tariffOptionListResponse xmlns:common="http://common.bitel.ru" xmlns:xs="http://www.w3.org/2001/XMLSchema" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:ns5="dsi"><return comment="" contractGroups="1125899906842624" depends="" enable="false" hideForContractGroups="0" hideForContractGroupsMode="0" hideForWeb="false" incompatible="" tariffIdSet="686 744 682 748 680 678 738 676 674 742 672 702 700 696 694 692 690 688 930 714 716 718 706 912 710 642 668 910 670 664 905 734 720 722" title="IP - детализация" id="29"><activateModeList /><description></description></return> ... Ему не нравится атрибут depends="". Смотрим xsd: Код: <xs:attribute name="depends"> <xs:simpleType> <xs:list itemType="xs:int"/> </xs:simpleType> </xs:attribute> Первая догадка - вероятно он не прожевал пустой списковый атрибут. В справочнике тарифных опций указываю в зависимостях один тариф, пробую ещё раз - действительно, теперь он ругается на атрибут incompatible="". Т.е. он не хочет воспринимать "" как null. Не знаю, косяк ли это .NET или по стандарту так делать нельзя, но лечится заменой Код: @XmlAttribute public Set<Integer> getDepends() { return this.depends; } в определении класса TariffOption на Код: @XmlList @XmlElement public Set<Integer> getDepends() { return this.depends; } Тогда .NET не ругается, а xsd выглядит так: Код: <xs:element name="depends" minOccurs="0"> <xs:simpleType> <xs:list itemType="xs:int"/> </xs:simpleType> </xs:element> Собственно вопрос к разработчикам: можете поменять для depends, incompatible и tariffIdSet в TariffOption аннотации с @XmlAttribute на @XmlList + @XmlElement ? |
Автор: | Cromeshnic [ 08 июл 2013, 13:50 ] |
Заголовок сообщения: | Re: Сериализованный TariffOption не работает в .NET |
Не хочется вместо 4 строчек писать собственные версии класов TariffOption и TariffOptionDao ![]() |
Автор: | stark [ 10 июл 2013, 10:50 ] |
Заголовок сообщения: | Re: Сериализованный TariffOption не работает в .NET |
Cromeshnic писал(а): v 5.2 Собственно вопрос к разработчикам: можете поменять для depends, incompatible и tariffIdSet в TariffOption аннотации с @XmlAttribute на @XmlList + @XmlElement ? Исправлено - в следующем обновлении будет |
Автор: | Cromeshnic [ 10 июл 2013, 10:53 ] |
Заголовок сообщения: | Re: Сериализованный TariffOption не работает в .NET |
Внезапно! Спасибо ![]() |
Страница 1 из 1 | Часовой пояс: UTC + 5 часов [ Летнее время ] |
Powered by phpBB® Forum Software © phpBB Group http://www.phpbb.com/ |