Hi Tom, > Allyson Lister wrote: >> Hi all, >> >> Just bumping up the bit of my previous email (below) that hasn't had a >> response yet. Does anyone have any ideas on this one? How can a results >> "table" (if you imagine it as such) with data rows and an arbitrary >> number of attribute columns be squished into a java List<String>, as the >> mart xsd is saying the response will be? > > Simple answer is that the XSD fragment is wrong. Should be sequence of > xsd:any. Of course, your SOAP stack won't be able to make sensible > auto-generated mappings from that! > > The comprimise would be to have a structure that used attribute rather > than element names to specify the result columns, so rather than > <resultsRow><someData>...</someData></resultsRow> you'd have > <resultsRow><item column="someData">...</item></resultsRow>. This would > be easy to express in the schema and would result in CXF generating (I > imagine) an Item class with a getColumn method.
Of course its doable and makes more sense. On BioMart side, we are happy to amend the reponse. Allyson, could you confirm if the problem lies exactly there. > > It's still not really clear to me what the benefit of this interface is > over the (much faster) http stream though? Sure, it's got tags, but when > you're returning a massive amount of data they're just extra bytes to > deal with and process. We certainly wouldn't want to use this with > Taverna, I very much hope the 'old' form will remain there as well. The old http stream based service would remain functional and maintained - not going anywhere :) Syed > > Tom > >> Thanks very much! :) >> >> Allyson >> >> 2009/1/26 Allyson Lister <[email protected] >> <mailto:[email protected]>> >> >> 1. The soap client I'm using is NOT one I've written - it is >> autogenerated, via Apache CXF (a freely-available, widely-used >> SOAP app). Therefore *anyone* who may wish to use the Biomart >> SOAP instance you have via Apache CXF's wsdl2java feature >> *will* run into exactly the same problem. I think the problem >> may stem from the following part of martxsd: >> <xs:element name="queryResponse"> >> <xs:complexType> >> <xs:sequence> >> <xs:element minOccurs="0" >> maxOccurs="unbounded" >> name="resultsRow" >> type="xs:string"/> >> </xs:sequence> >> </xs:complexType> >> </xs:element> >> This states that the query response will always be a sequence >> of xs:string, or in Java, a List<String>. This does not allow >> for the varied types of responses one can get based on the >> attributes of the query that they've written. Therefore I >> think that the java code is trying to fit in the response >> (such as the one Syed showed and which I copied a portion of >> into #1 above) into a sequence of xs:string, and this just >> isn't working. I can create an empty maven project that builds >> the Java code and runs the unit tests if it would help - then >> you could download that project, and just run it on your own >> system to see what the problem is and possible ways of >> resolving it. Perhaps there is some way to change the >> queryResponse? Because, as it stands, how does the >> queryResponse element above match the actual response given by >> the soap UI? >> >> Thanks very much! :) >> >> >> > ====================================== Syed Haider. EMBL-European Bioinformatics Institute Wellcome Trust Genome Campus, Hinxton, Cambridge CB10 1SD, UK. ======================================
