Changes between Version 9 and Version 10 of TracDev/ComponentArchitecture
- Timestamp:
- Jul 4, 2007, 4:31:40 PM (17 years ago)
Legend:
- Unmodified
- Added
- Removed
- Modified
-
TracDev/ComponentArchitecture
v9 v10 175 175 }}} 176 176 177 Note that it has a list of extension points implementing {{{IPermissionRequestor}}} ([browser:trunk/trac/perm.py:r5790#L40 in context]): 177 Note that this `Component`: 178 1. implements the `IPermissionRequestor` interface 179 1. has an extension point for registering all the Components implementing {{{IPermissionRequestor}}} ([browser:trunk/trac/perm.py:r5790#L40 in context]): 178 180 {{{ 179 181 #!python … … 188 190 189 191 When we use {{{PermissionSystem}}}, the plugin system will have automatically gathered up all implementations of {{{IPermissionRequestor}}} and placed them in {{{PermissionSystem}}}'s list of {{{requestors}}}. 190 191 '''Notes that I hope a Trac dev will check:''' 192 * ''As far as I understand,the line in {{{PermissionSystem}}} that declares it to implement {{{IPermissionRequestor}}} is completely superfluous except for documentation purposes, because it will always be used directly'' 193 * ''Does something avoid putting {{{PermissionSystem}}} in its own list?'' [[br]]—dave 192 In this specific case `PermissionSystem` will be part of that list as well, because it implements that interface as well. In no way a Component is bound to implement the interfaces it declares an extension point for, the two operations being entirely independent. But when that make sense, it's entirely possible to do so. 194 193 195 194 Next in {{{PermissionSystem}}} there is a declaration of an {{{ExtensionOption}}} called {{{store}}}: