Loading...
Loading...
Loading...
Loading...
Loading...
Loading...
Loading...
Loading...
Loading...
Loading...
Loading...
Loading...
Loading...
Loading...
Loading...
Loading...
Loading...
Loading...
Loading...
Loading...
Loading...
Loading...
Loading...
Loading...
Loading...
Loading...
Loading...
Loading...
Loading...
Loading...
Loading...
Loading...
Loading...
Loading...
Loading...
Loading...
Loading...
Loading...
Loading...
Loading...
Loading...
Loading...
Loading...
Loading...
Loading...
Loading...
Loading...
Loading...
Loading...
Loading...
Loading...
Loading...
Loading...
Loading...
Loading...
Loading...
Loading...
Loading...
Loading...
Loading...
Loading...
Loading...
Loading...
Loading...
Loading...
Loading...
Loading...
Loading...
Loading...
Loading...
Loading...
Loading...
Loading...
Loading...
Loading...
Loading...
Loading...
Loading...
Loading...
Loading...
Loading...
Loading...
Loading...
Loading...
Loading...
Loading...
Loading...
Loading...
Loading...
Loading...
Loading...
Loading...
Loading...
May 1, 2023
Github actions for LTS Releases
LTS Updates
COLDBOX-1219 CFProvider ACF versions are Hard-Coded
WIREBOX-132 WireBox caches Singletons even if their autowired dependencies throw exceptions.
This release was a ColdBox minor bump with no tickets affecting Wirebox
WireBox is an enterprise ColdFusion Dependency Injection and Aspect Oriented Programing (AOP) framework
WireBox is an enterprise ColdFusion Dependency Injection and Aspect Oriented Programing (AOP) framework. WireBox's inspiration has been based on the idea of rapid workflows when building object oriented ColdFusion applications, programmatic configurations and simplicity. With that motivation we introduced dependency injection by annotations and conventions, which has been the core foundation of WireBox. We have definitely been influenced by great DI projects like Google Guice, Grails Framework, Spring and ColdSpring so we thank them for their contributions and inspiration
WireBox is standalone framework for ColdFusion (CFML) applications and it is also bundled with the ColdBox Platform.
WireBox is maintained under the Semantic Versioning guidelines as much as possible.Releases will be numbered with the following format:
And constructed with the following guidelines:
Breaking backward compatibility bumps the major (and resets the minor and patch)
New additions without breaking backward compatibility bumps the minor (and resets the patch)
Bug fixes and misc changes bumps the patch
The ColdBox Platform, WireBox is open source and licensed under the Apache 2 License.
Copyright by Ortus Solutions, Corp
ColdBox, CacheBox, Wirebox, LogBox are registered trademarks by Ortus Solutions, Corp
The WireBox help and discussion group can be found here: https://community.ortussolutions.com/
We all make mistakes from time to time :) So why not let us know about it and help us out. We also love pull requests, so please star us and fork us: https://github.com/coldbox/coldbox-platform
WireBox is a professional open source library supported by Ortus Solutions. If you are interested in support please consider our Ninja Subscription Support or if you need consulting please purchase on of our Consulting Plans. Here are some areas that we can assist you with:
Custom Development
Professional Support & Mentoring
Training
Server Tuning
Security Hardening
Code Reviews
Much More
Official Site: https://www.coldbox.org
CFCasts Video Training: http://ww.cfcasts.com
Source Code: https://github.com/coldbox/coldbox-platform
Bug Tracker: https://ortussolutions.atlassian.net/browse/WIREBOX
Twitter: @coldbox
Facebook: https://www.facebook.com/coldboxplatform
Vimeo Channel: https://vimeo.com/channels/coldbox
Because of His grace, this project exists. If you don't like this, then don't read it, its not for you.
"Therefore being justified by **faith**, we have peace with God through our Lord Jesus Christ: By whom also we have access by **faith** into this **grace** wherein we stand, and rejoice in hope of the glory of God." Romans 5:5
June 21, 2022
Here is a listing of all the major updates and improvements in this version.
This release brings in a complete re-architecture of the creation, inspection and wiring of objects in WireBox in order to increase performance. Every single line of code was optimized and analyzed in order to bring the creation, inspection and wiring of objects to its maximum speed. This will be noted more on the creation of transient (non-persisted) objects more than in singleton objects. So if you are asking WireBox for transient objects, you will see and feel the difference.
In some of our performance testing we had about 4000 object instantiations running between 500ms-1,100 ms depending on CPU load. While with simple createObject()
and no wiring, they click around 400-700 ms. Previously, we had the same instantiations clocking at 900-3,500 ms. So we can definitely see a major improvement in this area.
Bug
WIREBOX-126 Inherited Metadata Usage - Singleton attribute evaluated before Scopes
Improvement
WIREBOX-129 Massive refactor to improve object creation and injection wiring
WIREBOX-128 Injector now caches all object contains lookups to increase performance across hierarchy lookups
WIREBOX-127 Lazy load all constructs on the Injector to improve performance
WIREBOX-125 Remove the usage of identity hash codes, they are no longer relevant and can cause contention under load
Bug
CACHEBOX-66 Cachebox concurrent store meta index not thread safe during reaping
Improvement
CACHEBOX-82 Remove the usage of identity hash codes, they are no longer relevant and can cause contention under load
In this section you will find the release notes for each version we release under this major version. If you are looking for the release notes of previous major versions use the version switcher at the top left of this documentation book. Here is a breakdown of our major version releases.
Version 6.0 - August 2020
Version 3.0 - March 2011
Version 2.0 - April 2007
Version 1.0 - June 2006
Welcome to the world of hierarchical dependency injection. We had the ability before to add a parent injector to WireBox, but now you can not only add a parent, but also many children to the hierarchy.
Every injector has the capability to store an ordered collection (ordered struct
) of child injectors via the childInjectors
property. Child injectors are used internally in many instances to provide a hierarchical approach to DI where instances can be searched for locally, in the parent and in the children. Here are some of the new methods to assist with child injectors:
hasChildInjector( name )
- Verify if a child injector has been registered
registerChildInjector( name, child )
- Register a child injector by name
removeChildInjector( name )
- Remove a child injector by name
getChildInjector( name )
- Get a child injector by name
getChildInjectors()
- Get all the child injectors registered
getChildInjectorNames()
- Get an array of all the registered child injectors
getInstance()
The getInstance()
method now has an injector
argument so you can EXPLICITLY request an instance from a child injector by name getInstance( name : "service", injector : "childInjector" )
Apart from the explicit lookup it can also do implicit hierarchical lookups using the following order:
Locally
Parent
All Children (in order of registration)
containsInstance( name )
- This method now also searches in the child collection for the specific name
instance. The lookup searches in the following order:
Locally
Parent
Children
shutdown()
- The shutdown method has been enhanced to issue shutdown method calls to all child injectors registered.
The getInstance()
has been modified to have an injector
argument that you can use to specifically ask for an instance from that child injector. If the child injector has not been registered you will get a InvalidChildInjector
Exception.
The following is the DSL you can use to explicitly target a child injector for a dependency. You will prefix it with wirebox:child:{name}
and the name of the injector:
The coldbox.system.ioc.IInjector
interface's getInstance()
method has been modified to include support for child injector retrievals:
Killing IInjector
interface usages due to many issues across cfml engines, leaving them for docs only
Never override an existing variables key with virtual inheritance
DSLs process method now receives the caller targetID
alongside the targetObject
and the target
definition
New wirebox DSL to inject the target's metadata that's cached in the target's binder: wirebox:objectMetadata
New WireBoxDSL: wirebox:targetID
to give you back the target ID used when injecting the object
Missing coldbox:schedulerService
DSL
HDI - Ability for injectors to have a collection of child injectors to delegate lookups to, basically Hierarchical DI
Removal of usage of Injector dsl interface due to so many issues with multiple engines.
Fixed method return value + SQL compatibility on jdbc metadata indexer thanks to @homestar9
reap operation was not ignoring 0 values for last access timeouts
Typo in queryExecute Attribute "datasource" in the JDBCStore.cfc
Replace IIF and urlEncodedFormat on cache content reports
Lower logging verbosity of cache reaping from info to debug messages