Hi!
I am developing my API extension. It's enumerating revisions, but in a 
different way (not like in ApiQueryRevisions class). Also, it can 
optionally create xml dumps via WikiExporter, like API 
action=query&export&exportnowrap (so I need to change output printer to 
raw mode sometimes). Because it's enumerating the lists (however not 
titles) I've choosed "list in non-generator mode" (derived from 
ApiQueryBase). However, after initial development I've figured out that 
I cannot change default printer in such case, because it's not being 
called at all. The reason is explained in following message by Roan 
Kattouw:

https://bugzilla.wikimedia.org/show_bug.cgi?id=25232
> Query submodules can be called in conjunction with other query 
submodules
> In this case, if your module would switch to a custom printer, the 
others would quite likely freak out.

But, I don't need to query in conjunction. Ok, I've derived from ApiBase 
class (my own API action). Then, it starts to fail on huge amount of 
generally useful methods, like SQL query building methods (addJoinConds, 
addWhereRange) and list continuation methods (setContinueEnumParameter), 
because these are not defined in ApiBase.

I understand that not every ApiBase derived class needs these, but many 
could have. Why not make inheritance chain like this:
ApiBase -> ApiListBase -> ApiQueryBase
where ApiListBase would have at least these nice SQL query buliding 
methods but also the possibility to override the default printer? Why 
these methods are limited to action=query lists and generators only?

Dmitriy

_______________________________________________
Wikitech-l mailing list
[email protected]
https://lists.wikimedia.org/mailman/listinfo/wikitech-l

Reply via email to