[mythtv] Web services wsdl fails after commits c3cf321 and ea8a83d

Peter Bennett pb.mythtv at gmail.com
Sat Dec 30 03:29:38 UTC 2017


David

Two commits have removed the Q_DECLARE_METATYPE and qRegisterMetaType 
for the web service types. The web service wsdl now does not work, It is 
missing the URLS for subtypes. The xsd urls also fail as a result of the 
same thing.

There are thousands of lines of changes here. I tried a git revert. It 
gave a bunch of conflicts - mainly they were duplicated public: 
declarations. After I fixed those I tried a compile but there were 
hundreds of errors about conflicting definitions and types.

Wsdl::IsCustomType( QString &sTypeName ) uses a call to QMetaType::type. 
This is returning zero for all of the custom types because they were not 
registered. It should return a value.

Xsd::GetXSD uses QMetaType::type and QMetaType::construct( id ) to 
create an object of a custom type. This is not working as the id is 
always coming out as 0 so all of the xsd URLs fail.

Can we get it all reverted back to the state where it has the 
Q_DECLARE_METATYPE and qRegisterMetaType ?

Examples of wsdl output -

http://localhost:6544/Dvr/wsdl

With MythTV 29 correct result is below - see there is an import 
schemalocation for many types.

<definitions name="DvrServices" targetNamespace="http://mythtv.org">
<types>
<xs:schema targetNamespace="http://MythTV.org/Imports">
<xs:import 
schemaLocation="http://localhost:6544/Dvr/xsd?type=ArrayOfString" 
namespace="http://mythtv.org"/>
<xs:import schemaLocation="http://localhost:6544/Dvr/xsd?type=CutList" 
namespace="http://mythtv.org"/>
<xs:import 
schemaLocation="http://localhost:6544/Dvr/xsd?type=EncoderList" 
namespace="http://mythtv.org"/>
<xs:import schemaLocation="http://localhost:6544/Dvr/xsd?type=InputList" 
namespace="http://mythtv.org"/>
<xs:import schemaLocation="http://localhost:6544/Dvr/xsd?type=Program" 
namespace="http://mythtv.org"/>
<xs:import 
schemaLocation="http://localhost:6544/Dvr/xsd?type=ProgramList" 
namespace="http://mythtv.org"/>
<xs:import schemaLocation="http://localhost:6544/Dvr/xsd?type=RecRule" 
namespace="http://mythtv.org"/>
<xs:import 
schemaLocation="http://localhost:6544/Dvr/xsd?type=RecRuleFilterList" 
namespace="http://mythtv.org"/>
<xs:import 
schemaLocation="http://localhost:6544/Dvr/xsd?type=RecRuleList" 
namespace="http://mythtv.org"/>
<xs:import 
schemaLocation="http://localhost:6544/Dvr/xsd?type=TitleInfoList" 
namespace="http://mythtv.org"/>
</xs:schema>
<xs:schema elementFormDefault="qualified" 
targetNamespace="http://mythtv.org">

With master the result is below - note there is only 1 import, for 
ArrayOfString.

<definitions targetNamespace="http://mythtv.org" name="DvrServices">
<types>
<xs:schema targetNamespace="http://MythTV.org/Imports">
<xs:import namespace="http://mythtv.org" 
schemaLocation="http://localhost:6544/Dvr/xsd?type=ArrayOfString"/>
</xs:schema>
<xs:schema elementFormDefault="qualified" 
targetNamespace="http://mythtv.org">

Other thing, if you use one of the URLS from the schemalocation values, 
it works successfully in Myth 29 but fails in Master.

End result is, trying to import wsdl into a test tool fails. Users 
trying to create or update applications by using the wsdl will fail. I 
am unable to test the new web service for Roger's enhancements.

Peter



More information about the mythtv-dev mailing list