1
0

classes.py 18 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318
  1. # File: classes.py
  2. # Library: DOPAL - DO Python Azureus Library
  3. #
  4. # This program is free software; you can redistribute it and/or modify
  5. # it under the terms of the GNU General Public License as published by
  6. # the Free Software Foundation; version 2 of the License.
  7. #
  8. # This program is distributed in the hope that it will be useful,
  9. # but WITHOUT ANY WARRANTY; without even the implied warranty of
  10. # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
  11. # GNU General Public License for more details ( see the COPYING file ).
  12. #
  13. # You should have received a copy of the GNU General Public License
  14. # along with this program; if not, write to the Free Software
  15. # Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
  16. '''
  17. Contains basic class definitions for objects - use this module when doing
  18. instance checking.
  19. This module contains a few utility functions in determining what classes are supported by DOPAL - it has an internal list of all classes that DOPAL is aware of.
  20. '''
  21. from dopal.aztypes import get_component_type as _get_component_type
  22. #
  23. # List of classes created by classes_make.py.
  24. #
  25. azureus_class_list = [
  26. ('org.gudy.azureus2.plugins', 'LaunchablePlugin'),
  27. ('org.gudy.azureus2.plugins', 'Plugin'),
  28. ('org.gudy.azureus2.plugins', 'PluginConfig'),
  29. ('org.gudy.azureus2.plugins', 'PluginConfigListener'),
  30. ('org.gudy.azureus2.plugins', 'PluginEvent'),
  31. ('org.gudy.azureus2.plugins', 'PluginEventListener'),
  32. ('org.gudy.azureus2.plugins', 'PluginInterface'),
  33. ('org.gudy.azureus2.plugins', 'PluginListener'),
  34. ('org.gudy.azureus2.plugins', 'PluginManager'),
  35. ('org.gudy.azureus2.plugins', 'PluginManagerArgumentHandler'),
  36. ('org.gudy.azureus2.plugins', 'PluginManagerDefaults'),
  37. ('org.gudy.azureus2.plugins', 'UnloadablePlugin'),
  38. ('org.gudy.azureus2.plugins.clientid', 'ClientIDGenerator'),
  39. ('org.gudy.azureus2.plugins.clientid', 'ClientIDManager'),
  40. ('org.gudy.azureus2.plugins.config', 'ConfigParameter'),
  41. ('org.gudy.azureus2.plugins.config', 'ConfigParameterListener'),
  42. ('org.gudy.azureus2.plugins.ddb', 'DistributedDatabase'),
  43. ('org.gudy.azureus2.plugins.ddb', 'DistributedDatabaseContact'),
  44. ('org.gudy.azureus2.plugins.ddb', 'DistributedDatabaseEvent'),
  45. ('org.gudy.azureus2.plugins.ddb', 'DistributedDatabaseKey'),
  46. ('org.gudy.azureus2.plugins.ddb', 'DistributedDatabaseListener'),
  47. ('org.gudy.azureus2.plugins.ddb', 'DistributedDatabaseProgressListener'),
  48. ('org.gudy.azureus2.plugins.ddb', 'DistributedDatabaseTransferHandler'),
  49. ('org.gudy.azureus2.plugins.ddb', 'DistributedDatabaseTransferType'),
  50. ('org.gudy.azureus2.plugins.ddb', 'DistributedDatabaseValue'),
  51. ('org.gudy.azureus2.plugins.disk', 'DiskManager'),
  52. ('org.gudy.azureus2.plugins.disk', 'DiskManagerChannel'),
  53. ('org.gudy.azureus2.plugins.disk', 'DiskManagerEvent'),
  54. ('org.gudy.azureus2.plugins.disk', 'DiskManagerFileInfo'),
  55. ('org.gudy.azureus2.plugins.disk', 'DiskManagerListener'),
  56. ('org.gudy.azureus2.plugins.disk', 'DiskManagerRequest'),
  57. ('org.gudy.azureus2.plugins.download', 'Download'),
  58. ('org.gudy.azureus2.plugins.download', 'DownloadAnnounceResult'),
  59. ('org.gudy.azureus2.plugins.download', 'DownloadAnnounceResultPeer'),
  60. ('org.gudy.azureus2.plugins.download', 'DownloadListener'),
  61. ('org.gudy.azureus2.plugins.download', 'DownloadManager'),
  62. ('org.gudy.azureus2.plugins.download', 'DownloadManagerListener'),
  63. ('org.gudy.azureus2.plugins.download', 'DownloadManagerStats'),
  64. ('org.gudy.azureus2.plugins.download', 'DownloadPeerListener'),
  65. ('org.gudy.azureus2.plugins.download', 'DownloadPropertyEvent'),
  66. ('org.gudy.azureus2.plugins.download', 'DownloadPropertyListener'),
  67. ('org.gudy.azureus2.plugins.download', 'DownloadScrapeResult'),
  68. ('org.gudy.azureus2.plugins.download', 'DownloadStats'),
  69. ('org.gudy.azureus2.plugins.download', 'DownloadTrackerListener'),
  70. ('org.gudy.azureus2.plugins.download', 'DownloadWillBeAddedListener'),
  71. ('org.gudy.azureus2.plugins.download', 'DownloadWillBeRemovedListener'),
  72. ('org.gudy.azureus2.plugins.download.session', 'SessionAuthenticator'),
  73. ('org.gudy.azureus2.plugins.installer', 'FilePluginInstaller'),
  74. ('org.gudy.azureus2.plugins.installer', 'InstallablePlugin'),
  75. ('org.gudy.azureus2.plugins.installer', 'PluginInstaller'),
  76. ('org.gudy.azureus2.plugins.installer', 'PluginInstallerListener'),
  77. ('org.gudy.azureus2.plugins.installer', 'StandardPlugin'),
  78. ('org.gudy.azureus2.plugins.ipc', 'IPCInterface'),
  79. ('org.gudy.azureus2.plugins.ipfilter', 'IPBlocked'),
  80. ('org.gudy.azureus2.plugins.ipfilter', 'IPFilter'),
  81. ('org.gudy.azureus2.plugins.ipfilter', 'IPRange'),
  82. ('org.gudy.azureus2.plugins.logging', 'Logger'),
  83. ('org.gudy.azureus2.plugins.logging', 'LoggerAlertListener'),
  84. ('org.gudy.azureus2.plugins.logging', 'LoggerChannel'),
  85. ('org.gudy.azureus2.plugins.logging', 'LoggerChannelListener'),
  86. ('org.gudy.azureus2.plugins.messaging', 'Message'),
  87. ('org.gudy.azureus2.plugins.messaging', 'MessageManager'),
  88. ('org.gudy.azureus2.plugins.messaging', 'MessageManagerListener'),
  89. ('org.gudy.azureus2.plugins.messaging', 'MessageStreamDecoder'),
  90. ('org.gudy.azureus2.plugins.messaging', 'MessageStreamEncoder'),
  91. ('org.gudy.azureus2.plugins.network', 'Connection'),
  92. ('org.gudy.azureus2.plugins.network', 'ConnectionListener'),
  93. ('org.gudy.azureus2.plugins.network', 'ConnectionManager'),
  94. ('org.gudy.azureus2.plugins.network', 'IncomingMessageQueue'),
  95. ('org.gudy.azureus2.plugins.network', 'IncomingMessageQueueListener'),
  96. ('org.gudy.azureus2.plugins.network', 'OutgoingMessageQueue'),
  97. ('org.gudy.azureus2.plugins.network', 'OutgoingMessageQueueListener'),
  98. ('org.gudy.azureus2.plugins.network', 'RawMessage'),
  99. ('org.gudy.azureus2.plugins.network', 'Transport'),
  100. ('org.gudy.azureus2.plugins.peers', 'Peer'),
  101. ('org.gudy.azureus2.plugins.peers', 'PeerEvent'),
  102. ('org.gudy.azureus2.plugins.peers', 'PeerListener'),
  103. ('org.gudy.azureus2.plugins.peers', 'PeerListener2'),
  104. ('org.gudy.azureus2.plugins.peers', 'PeerManager'),
  105. ('org.gudy.azureus2.plugins.peers', 'PeerManagerListener'),
  106. ('org.gudy.azureus2.plugins.peers', 'PeerManagerStats'),
  107. ('org.gudy.azureus2.plugins.peers', 'PeerReadRequest'),
  108. ('org.gudy.azureus2.plugins.peers', 'PeerStats'),
  109. ('org.gudy.azureus2.plugins.peers.protocol', 'PeerProtocolBT'),
  110. ('org.gudy.azureus2.plugins.peers.protocol', 'PeerProtocolExtensionHandler'),
  111. ('org.gudy.azureus2.plugins.peers.protocol', 'PeerProtocolManager'),
  112. ('org.gudy.azureus2.plugins.platform', 'PlatformManager'),
  113. ('org.gudy.azureus2.plugins.sharing', 'ShareItem'),
  114. ('org.gudy.azureus2.plugins.sharing', 'ShareManager'),
  115. ('org.gudy.azureus2.plugins.sharing', 'ShareManagerListener'),
  116. ('org.gudy.azureus2.plugins.sharing', 'ShareResource'),
  117. ('org.gudy.azureus2.plugins.sharing', 'ShareResourceDir'),
  118. ('org.gudy.azureus2.plugins.sharing', 'ShareResourceDirContents'),
  119. ('org.gudy.azureus2.plugins.sharing', 'ShareResourceEvent'),
  120. ('org.gudy.azureus2.plugins.sharing', 'ShareResourceFile'),
  121. ('org.gudy.azureus2.plugins.sharing', 'ShareResourceListener'),
  122. ('org.gudy.azureus2.plugins.sharing', 'ShareResourceWillBeDeletedListener'),
  123. ('org.gudy.azureus2.plugins.torrent', 'Torrent'),
  124. ('org.gudy.azureus2.plugins.torrent', 'TorrentAnnounceURLList'),
  125. ('org.gudy.azureus2.plugins.torrent', 'TorrentAnnounceURLListSet'),
  126. ('org.gudy.azureus2.plugins.torrent', 'TorrentAttribute'),
  127. ('org.gudy.azureus2.plugins.torrent', 'TorrentAttributeEvent'),
  128. ('org.gudy.azureus2.plugins.torrent', 'TorrentAttributeListener'),
  129. ('org.gudy.azureus2.plugins.torrent', 'TorrentDownloader'),
  130. ('org.gudy.azureus2.plugins.torrent', 'TorrentFile'),
  131. ('org.gudy.azureus2.plugins.torrent', 'TorrentManager'),
  132. ('org.gudy.azureus2.plugins.torrent', 'TorrentManagerEvent'),
  133. ('org.gudy.azureus2.plugins.torrent', 'TorrentManagerListener'),
  134. ('org.gudy.azureus2.plugins.tracker', 'Tracker'),
  135. ('org.gudy.azureus2.plugins.tracker', 'TrackerListener'),
  136. ('org.gudy.azureus2.plugins.tracker', 'TrackerPeer'),
  137. ('org.gudy.azureus2.plugins.tracker', 'TrackerPeerEvent'),
  138. ('org.gudy.azureus2.plugins.tracker', 'TrackerPeerListener'),
  139. ('org.gudy.azureus2.plugins.tracker', 'TrackerTorrent'),
  140. ('org.gudy.azureus2.plugins.tracker', 'TrackerTorrentListener'),
  141. ('org.gudy.azureus2.plugins.tracker', 'TrackerTorrentRequest'),
  142. ('org.gudy.azureus2.plugins.tracker', 'TrackerTorrentWillBeRemovedListener'),
  143. ('org.gudy.azureus2.plugins.tracker.web', 'TrackerAuthenticationListener'),
  144. ('org.gudy.azureus2.plugins.tracker.web', 'TrackerWebContext'),
  145. ('org.gudy.azureus2.plugins.tracker.web', 'TrackerWebPageGenerator'),
  146. ('org.gudy.azureus2.plugins.tracker.web', 'TrackerWebPageRequest'),
  147. ('org.gudy.azureus2.plugins.tracker.web', 'TrackerWebPageResponse'),
  148. ('org.gudy.azureus2.plugins.ui', 'Graphic'),
  149. ('org.gudy.azureus2.plugins.ui', 'UIInstance'),
  150. ('org.gudy.azureus2.plugins.ui', 'UIInstanceFactory'),
  151. ('org.gudy.azureus2.plugins.ui', 'UIManager'),
  152. ('org.gudy.azureus2.plugins.ui', 'UIManagerEvent'),
  153. ('org.gudy.azureus2.plugins.ui', 'UIManagerEventListener'),
  154. ('org.gudy.azureus2.plugins.ui', 'UIManagerListener'),
  155. ('org.gudy.azureus2.plugins.ui', 'UIPluginView'),
  156. ('org.gudy.azureus2.plugins.ui.components', 'UIComponent'),
  157. ('org.gudy.azureus2.plugins.ui.components', 'UIProgressBar'),
  158. ('org.gudy.azureus2.plugins.ui.components', 'UIPropertyChangeEvent'),
  159. ('org.gudy.azureus2.plugins.ui.components', 'UIPropertyChangeListener'),
  160. ('org.gudy.azureus2.plugins.ui.components', 'UITextArea'),
  161. ('org.gudy.azureus2.plugins.ui.components', 'UITextField'),
  162. ('org.gudy.azureus2.plugins.ui.config', 'ActionParameter'),
  163. ('org.gudy.azureus2.plugins.ui.config', 'BooleanParameter'),
  164. ('org.gudy.azureus2.plugins.ui.config', 'ConfigSection'),
  165. ('org.gudy.azureus2.plugins.ui.config', 'ConfigSectionSWT'),
  166. ('org.gudy.azureus2.plugins.ui.config', 'DirectoryParameter'),
  167. ('org.gudy.azureus2.plugins.ui.config', 'EnablerParameter'),
  168. ('org.gudy.azureus2.plugins.ui.config', 'IntParameter'),
  169. ('org.gudy.azureus2.plugins.ui.config', 'LabelParameter'),
  170. ('org.gudy.azureus2.plugins.ui.config', 'Parameter'),
  171. ('org.gudy.azureus2.plugins.ui.config', 'ParameterGroup'),
  172. ('org.gudy.azureus2.plugins.ui.config', 'ParameterListener'),
  173. ('org.gudy.azureus2.plugins.ui.config', 'PasswordParameter'),
  174. ('org.gudy.azureus2.plugins.ui.config', 'PluginConfigUIFactory'),
  175. ('org.gudy.azureus2.plugins.ui.config', 'StringListParameter'),
  176. ('org.gudy.azureus2.plugins.ui.config', 'StringParameter'),
  177. ('org.gudy.azureus2.plugins.ui.menus', 'MenuItem'),
  178. ('org.gudy.azureus2.plugins.ui.menus', 'MenuItemFillListener'),
  179. ('org.gudy.azureus2.plugins.ui.menus', 'MenuItemListener'),
  180. ('org.gudy.azureus2.plugins.ui.model', 'BasicPluginConfigModel'),
  181. ('org.gudy.azureus2.plugins.ui.model', 'BasicPluginViewModel'),
  182. ('org.gudy.azureus2.plugins.ui.model', 'PluginConfigModel'),
  183. ('org.gudy.azureus2.plugins.ui.model', 'PluginViewModel'),
  184. ('org.gudy.azureus2.plugins.ui.SWT', 'GraphicSWT'),
  185. ('org.gudy.azureus2.plugins.ui.SWT', 'SWTManager'),
  186. ('org.gudy.azureus2.plugins.ui.tables', 'TableCell'),
  187. ('org.gudy.azureus2.plugins.ui.tables', 'TableCellAddedListener'),
  188. ('org.gudy.azureus2.plugins.ui.tables', 'TableCellDisposeListener'),
  189. ('org.gudy.azureus2.plugins.ui.tables', 'TableCellMouseListener'),
  190. ('org.gudy.azureus2.plugins.ui.tables', 'TableCellRefreshListener'),
  191. ('org.gudy.azureus2.plugins.ui.tables', 'TableCellToolTipListener'),
  192. ('org.gudy.azureus2.plugins.ui.tables', 'TableColumn'),
  193. ('org.gudy.azureus2.plugins.ui.tables', 'TableContextMenuItem'),
  194. ('org.gudy.azureus2.plugins.ui.tables', 'TableManager'),
  195. ('org.gudy.azureus2.plugins.ui.tables', 'TableRow'),
  196. ('org.gudy.azureus2.plugins.ui.tables.mytorrents', 'MyTorrentsTableItem'),
  197. ('org.gudy.azureus2.plugins.ui.tables.mytorrents', 'PluginMyTorrentsItem'),
  198. ('org.gudy.azureus2.plugins.ui.tables.mytorrents', 'PluginMyTorrentsItemFactory'),
  199. ('org.gudy.azureus2.plugins.ui.tables.peers', 'PeerTableItem'),
  200. ('org.gudy.azureus2.plugins.ui.tables.peers', 'PluginPeerItem'),
  201. ('org.gudy.azureus2.plugins.ui.tables.peers', 'PluginPeerItemFactory'),
  202. ('org.gudy.azureus2.plugins.update', 'UpdatableComponent'),
  203. ('org.gudy.azureus2.plugins.update', 'Update'),
  204. ('org.gudy.azureus2.plugins.update', 'UpdateChecker'),
  205. ('org.gudy.azureus2.plugins.update', 'UpdateCheckerListener'),
  206. ('org.gudy.azureus2.plugins.update', 'UpdateCheckInstance'),
  207. ('org.gudy.azureus2.plugins.update', 'UpdateCheckInstanceListener'),
  208. ('org.gudy.azureus2.plugins.update', 'UpdateInstaller'),
  209. ('org.gudy.azureus2.plugins.update', 'UpdateListener'),
  210. ('org.gudy.azureus2.plugins.update', 'UpdateManager'),
  211. ('org.gudy.azureus2.plugins.update', 'UpdateManagerDecisionListener'),
  212. ('org.gudy.azureus2.plugins.update', 'UpdateManagerListener'),
  213. ('org.gudy.azureus2.plugins.update', 'UpdateProgressListener'),
  214. ('org.gudy.azureus2.plugins.utils', 'AggregatedDispatcher'),
  215. ('org.gudy.azureus2.plugins.utils', 'AggregatedList'),
  216. ('org.gudy.azureus2.plugins.utils', 'AggregatedListAcceptor'),
  217. ('org.gudy.azureus2.plugins.utils', 'ByteArrayWrapper'),
  218. ('org.gudy.azureus2.plugins.utils', 'Formatters'),
  219. ('org.gudy.azureus2.plugins.utils', 'LocaleDecoder'),
  220. ('org.gudy.azureus2.plugins.utils', 'LocaleListener'),
  221. ('org.gudy.azureus2.plugins.utils', 'LocaleUtilities'),
  222. ('org.gudy.azureus2.plugins.utils', 'Monitor'),
  223. ('org.gudy.azureus2.plugins.utils', 'PooledByteBuffer'),
  224. ('org.gudy.azureus2.plugins.utils', 'Semaphore'),
  225. ('org.gudy.azureus2.plugins.utils', 'ShortCuts'),
  226. ('org.gudy.azureus2.plugins.utils', 'Utilities'),
  227. ('org.gudy.azureus2.plugins.utils', 'UTTimer'),
  228. ('org.gudy.azureus2.plugins.utils', 'UTTimerEvent'),
  229. ('org.gudy.azureus2.plugins.utils', 'UTTimerEventPerformer'),
  230. ('org.gudy.azureus2.plugins.utils.resourcedownloader', 'ResourceDownloader'),
  231. ('org.gudy.azureus2.plugins.utils.resourcedownloader', 'ResourceDownloaderDelayedFactory'),
  232. ('org.gudy.azureus2.plugins.utils.resourcedownloader', 'ResourceDownloaderFactory'),
  233. ('org.gudy.azureus2.plugins.utils.resourcedownloader', 'ResourceDownloaderListener'),
  234. ('org.gudy.azureus2.plugins.utils.resourceuploader', 'ResourceUploader'),
  235. ('org.gudy.azureus2.plugins.utils.resourceuploader', 'ResourceUploaderFactory'),
  236. ('org.gudy.azureus2.plugins.utils.security', 'CertificateListener'),
  237. ('org.gudy.azureus2.plugins.utils.security', 'PasswordListener'),
  238. ('org.gudy.azureus2.plugins.utils.security', 'SESecurityManager'),
  239. ('org.gudy.azureus2.plugins.utils.xml.rss', 'RSSChannel'),
  240. ('org.gudy.azureus2.plugins.utils.xml.rss', 'RSSFeed'),
  241. ('org.gudy.azureus2.plugins.utils.xml.rss', 'RSSItem'),
  242. ('org.gudy.azureus2.plugins.utils.xml.simpleparser', 'SimpleXMLParserDocument'),
  243. ('org.gudy.azureus2.plugins.utils.xml.simpleparser', 'SimpleXMLParserDocumentAttribute'),
  244. ('org.gudy.azureus2.plugins.utils.xml.simpleparser', 'SimpleXMLParserDocumentFactory'),
  245. ('org.gudy.azureus2.plugins.utils.xml.simpleparser', 'SimpleXMLParserDocumentNode'),
  246. ]
  247. # Record the existance of the classes which are mentioned above.
  248. # (We need this for lookups.)
  249. _known_class_names = dict([(cls_tpl[1], None) for cls_tpl in azureus_class_list]).keys()
  250. import dopal
  251. if dopal.__dopal_mode__ == 1:
  252. # Check we don't get any nameclashes.
  253. if len(azureus_class_list) != len(_known_class_names):
  254. raise RuntimeError, 'difference in class sizes'
  255. # We do more to generate a nice docstring in epydoc mode.
  256. # Bugfix for tf-b4rt: don't try to use/change __doc__ if it's
  257. # empty, which is the case if Python was invoked with -OO
  258. # (except for early Python 2.5 releases where -OO is broken:
  259. # http://mail.python.org/pipermail/python-bugs-list/2007-June/038590.html).
  260. if __doc__ is not None and dopal.__dopal_mode__ == 2:
  261. grouped_classes = {}
  262. for package_name, class_name in azureus_class_list:
  263. grouped_classes.setdefault(package_name, []).append(class_name)
  264. ordered_grouped_packages = grouped_classes.keys()
  265. ordered_grouped_packages.sort()
  266. generated_lines = []
  267. base_url = 'http://azureus.sourceforge.net/plugins/docCVS/'
  268. package_tmpl = base_url + '%s/package-summary.html'
  269. class_tmpl = base_url + '%s/%s.html'
  270. for package_name in ordered_grouped_packages:
  271. package_path = package_name.replace('.', '/')
  272. full_package_url = package_tmpl % package_path
  273. generated_lines.append(
  274. '\n - Package C{U{%(package_name)s<%(full_package_url)s>}}' % vars()
  275. )
  276. for class_name in grouped_classes[package_name]:
  277. full_class_url = class_tmpl % (package_path, class_name)
  278. generated_lines.append(
  279. ' - Class C{U{%(class_name)s<%(full_class_url)s>}}' % vars()
  280. )
  281. __doc__ += "\n\nThe following classes are well-supported by DOPAL (the "
  282. __doc__ += 'links below link to the Azureus\'s own '
  283. __doc__ += 'U{Javadoc API documentation<%(base_url)s>}):\n' % vars()
  284. __doc__ += '\n'.join(generated_lines)
  285. del package_path, full_package_url, full_class_url
  286. del base_url, package_tmpl, class_tmpl
  287. del package_name, class_name, generated_lines
  288. del grouped_classes, ordered_grouped_packages
  289. del azureus_class_list
  290. def is_azureus_class(class_name):
  291. return class_name in _known_class_names
  292. is_azureus_argument_class = is_azureus_class
  293. def is_azureus_return_class(class_name):
  294. if is_azureus_class(class_name):
  295. return True
  296. class_component_type = _get_component_type(class_name)
  297. if class_component_type is not None:
  298. if is_azureus_class(class_name):
  299. return True
  300. return False