1Revision history for Perl extension IOC. 2 30.29 Thurs. April 26, 2007 4 * IOC::Service::Parameterized 5 - added docs and tests for this 6 7 * IOC::Registry 8 - &locateService accepts additional args now 9 to support the parameterized containers 10 11 * IOC::Container 12 - &find and &get accepts additional args now 13 to support the parameterized containers 14 15 * IOC::Visitor::ServiceLocator 16 - supports additional args now for 17 the parameterized containers 18 190.28 Wed May 4 2005 20 * IOC::Proxy 21 * IOC::Proxy::Interfaces 22 - fixed a bug with newer perls and @_ 23 240.27 Wed Apr 13 2005 25 * IOC::Config::XML 26 - added some more documentation 27 28 * IOC::Config::SAX::Handler 29 - code refactor (no functional changes) 30 - added some more documentation 31 320.26 Thurs Mar 31 2005 33 ~ removed XML::Simple dependency 34 - added XML::SAX dependency 35 36 * IOC::Config::XML 37 - changed this to use the XML::SAX module 38 and the IOC::Config::XML::SAX::Handler 39 instead of XML::Simple 40 41 + Added IOC::Config::XML::SAX::Handler 42 - adapted tests from IOC::Config::XML 43 (not many changes actually most things 44 stayed the same) 45 460.25 Sat Feb 26 2005 47 - fixed an accidentatel dependency created in 48 the 060_IOC_Config_XML_test.t test file. It 49 was looking for DBI, and specificall DBD::Mock. 50 I removed this and created a dummy package in 51 the test file as a substitute. It should work 52 fine now. 53 540.24 Mon Feb 21 2004 55 * IOC::Service::ConstructorInjection 56 * IOC::Service::SetterInjection 57 - improved the handling for loading 58 classes automatically 59 60 + Added IOC::Config::XML 61 - added tests and documentation for this 62 - added XML::Simple as a dependency 63 64 * IOC::Exceptions 65 - added some expecptions for IOC::Config::XML 66 ~ IOC::ConfigurationError 67 680.23 Fri Jan 14 2005 69 * IOC::Registry 70 - added aliasService() method so that you 71 can alias one service path for another 72 - added tests for this 73 - added docs for this 74 750.22 Mon Dec 27 2004 76 * IOC::Service::ConstructorInjection 77 * IOC::Service::SetterInjection 78 - fixed class loading error in both, these 79 services will load your class if it is not 80 loaded already, and they were not doing 81 it correctly. 82 - added tests to confirm fixes 83 840.21 Sat Dec 25 2004 (Merry Christmas) 85 + Added IOC::Service::Literal 86 - this is an optimization to allow for literal 87 values to be held as services without them 88 needing to be wrapped in subroutines. 89 - added documentation for this 90 - added tests for this 91 92 * IOC::Container 93 - optmized this for IOC::Service::Literal objects 94 since they cannot have dependencies, and therefore 95 cannot have circular references there is no need to 96 fuss with them (lock, deferred, etc). 97 980.20 Thurs Dec 23 2004 99 * IOC::Service::ConstructorInjection 100 - added support for getting constructor args 101 which are outside of the current container 102 and can be located with find() 103 - added tests for this 104 - added to the docs for this 105 106 * IOC::Service::SetterInjection 107 - added support for getting setter args 108 which are outside of the current container 109 and can be located with find() 110 - added tests for this 111 - added to the docs for this 112 1130.19 Thurs Dec 23 2004 114 * IOC::Proxy 115 - fixed an issue with how overloaded 116 objects were handled. We no longer 117 copy the '()' method. This will help 118 to deal with overloaded object in 119 a more consistent manner. 120 1210.18 Fri Dec 17 2004 122 * IOC::Container 123 - improved some diagnostic messages 124 125 * IOC::Visitor::ServiceLocator 126 - improved some diagnostic messages 127 - added tests for these 128 129 * IOC::Exceptions 130 ~ added IOC::UnableToLocateService to help improve 131 the diagnostics in IOC::Visitor::ServiceLocator 132 1330.17 Wed Dec 15 2004 134 * IOC::Container 135 - added code to make sure that proxied instances 136 do not get re-proxied when they are retrieved 137 with get() again. 138 - added tests for this 139 1400.16 Fri Nov 26 2004 141 * IOC::Service 142 - added the deferred() method, which will 143 return an IOC::Service::Deferred wrapper 144 around the given service instance. 145 146 * IOC::Container 147 - removed the direct reference to the 148 IOC::Service::Deferred class, and it 149 now calls the deferred() method on 150 the IOC::Service instance itself. 151 1520.15 Sat Nov 20 2004 153 * IOC::Container 154 - adjusted how cyclical dependencies are 155 handled, so that they are now possible, 156 although still somewhat in their early 157 stages. 158 - added tests for this 159 160 * IOC::Service 161 - adjusted how cyclical dependencies are 162 handled, and created a sub-package called 163 IOC::Service::Deferred to facilitate this 164 - added tests for this 165 1660.14 Thurs Nov 18 2004 167 > now using Scalar::Util::blessed() instead of 168 the convoluted UNIVERSAL::isa() stuff. This 169 change affects a number of packages. 170 - added Scalar::Util as a dependency 171 1720.13 Wed Nov 17 2004 173 * IOC::Service::Prototype 174 - removed any reference to the prototypical 175 instance, so that complete lifecycle control 176 is given to the consumer of the service 177 ~ added tests and documentation for this 178 1790.12 Tues Nov 16 2004 180 + Added IOC::Proxy::Interfaces 181 - added tests and documentation for this 182 183 * IOC::Proxy 184 - broke out some more methods, so that subclasses 185 can really affect things on a granular level 186 1870.11 Thurs Nov 11 2004 188 * IOC 189 - added the IOC::Proxy module to the module 190 which get pre-loaded with this module 191 192 * IOC::Proxy 193 - broke the main methods down into small methods 194 (in Strategy pattern fashion) to allow for 195 variance of functionality in subclasses 196 197 * IOC::Container 198 - now detects a cyclical relationship and will 199 throw an IOC::IllegalOperation exception if it 200 is found. I am currently working on how to 201 allow for these types of relationships to exists 202 so this is really just a temporary solution. 203 2040.10 Tues Nov 9 2004 205 * IOC::Proxy 206 ~ fixed a warning about subroutine redefinition 207 when we add the auto-stringification 208 functionality to an object 209 2100.09 Mon Nov 8 2004 211 + added IOC::Proxy 212 - added tests and documentation for this 213 214 * IOC::Exceptions 215 - added the IOC::OperationFailed exception 216 217 * IOC::Container 218 - added the proxy related functions and all 219 the code to handle it 220 ~ added tests and documentation 221 for this functionality 222 2230.08 Fri Nov 5 2004 224 * IOC::Container 225 - added the 'unregister' method to remove 226 allow a IOC::Service to be removed 227 ~ added tests and documentation 228 229 * IOC::Service 230 - added the 'removeContainer' method to 231 facilitate the IOC::Container->unregister 232 method 233 ~ added tests and documentation 234 2350.07 Thurs Oct 21 2004 236 > Improved documentation for all classes, however 237 I still have more to write 238 239 + added IOC::Service::Prototype 240 + added IOC::Service::Prototype::ConstructorInjection 241 + added IOC::Service::Prototype::SetterInjection 242 - this allows services to dispense prototypes 243 rather then just singleton instances 244 ~ added tests for these new classes 245 246 * IOC::Exceptions 247 ~ added IOC::NotFound exception to handle 248 general cases 249 250 * IOC::Container 251 ~ added findRootContainer method 252 253 * IOC::Container::MethodResolution 254 - now handles auto-finding of sub-containers 255 as well, and introduces a new pseduo-method 256 'root' which will allow you to go back to the 257 root of the container hierarchy. 258 259 * IOC::Service::ConstructorInjection 260 - fixed parameter handling so it works 261 with the Prototype:: classes 262 263 * IOC::Visitor::ServiceLocator 264 - now uses findRootContainer method 265 266 * IOC::Visitor::SearchForContainer 267 - removed redundant code (thanks Devel::Cover :) 268 2690.06 Tues Oct 19 2004 270 << NOTE: Some API Changes >> 271 272 * IOC::Registry 273 - changed names of methods, anything with 274 the word 'Root' in it has now been changed 275 to 'Registered'. 276 - added unregisterContainer method 277 - added locateService method 278 - added locateContainer method 279 - added getRegisteredContainerList method 280 - added hasRegisteredContainer method 281 - added DESTORY method 282 ~ added tests and documentation for all new methods 283 284 * IOC::Service 285 ~ removed optional $container argument to constructor 286 287 * IOC::Service::ConstructorInjection 288 ~ removed optional $container argument to constructor 289 290 * IOC::Service::SetterInjection 291 ~ removed optional $container argument to constructor 292 2930.05 Tues Oct 19 2004 294 + added IOC::Registry 295 ~ created dependency with Class::StrongSingleton 296 ~ added tests for this 297 + added IOC::VisitorSearchForService 298 ~ added tests for this 299 + added IOC::VisitorSearchForContainer 300 ~ added tests for this 301 302 * IOC::Container 303 > added hasSubContainer method 304 > added hasService method 305 3060.04 Tues Oct 19 2004 307 < No CODE changes> 308 - forgot to add Class::Interfaces to the dependency list 309 - forgot to include this changelog 310 3110.03 Mon Oct 18 2004 312 + added IOC::Interfaces 313 ~ created dependency with Class::Interfaces 314 + added IOC::Visitor::ServiceLocator 315 ~ added tests for this 316 317 * IOC::Exceptions 318 > changed few names again, but I got it right now 319 320 * IOC::Container 321 > added visitor support 322 - made IOC::Container inherit from the 323 IOC::Visitable interface (see IOC::Interfaces) 324 ~ added tests for this 325 ~ added documentation for this 326 > added support for sub-containers 327 - added example of this to SYNOPSIS 328 - added a number of methods to deal with 329 sub-containers and parent containers 330 ~ added tests for all these 331 ~ added documentation for all these 332 > added 'find' method which utilizes a Visitor 333 to locate a given service through a path-like syntax 334 (see the IOC::Visitor::ServiceLocator for more) 335 > changed names of exceptions 336 ~ IOC::DuplicateServiceException to IOC::ServiceAlreadyExists 337 338 3390.02 Fri Oct 15 2004 340 + added IOC::Container::MethodResultion 341 ~ added tests for this 342 + added IOC::Service::ConstructorInjection 343 ~ added tests for this 344 + added IOC::Service::SetterInjection 345 ~ added tests for this 346 347 * IOC::Exceptions 348 > added a few more exceptions to IOC::Exceptions 349 and changed the names of a few as well 350 351 * IOC::Container 352 > changed names of exceptions 353 ~ IOC::MissingService to IOC::ServiceNotFound 354 355 * IOC::Service 356 > when a container is passed to the IOC::Service 357 constructor, it will now cause the service to 358 be officially registered with the container 359 360 3610.01 Thu Oct 14 20:03:20 2004 362 - module created 363 364