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 ?