Loading...
Loading...
Loading...
Loading...
Loading...
Loading...
Loading...
Loading...
Loading...
This minor release brings in some major performance enhancements for the way WireBox maps and creates objects. We highly encourage upgrading to it.
If you are using annotations for component aliases you will have to tell WireBox explicitly to process those mappings. As by default, we no longer process mappings on startup.
[WIREBOX-84] - Remove auto processing of all mappings defer to lazy loading
[WIREBOX-85] - MapDirectory
new boolean argument process
which defers to false, if true, the mappings will be auto processed
[WIREBOX-86] - New binder method: process()
if chained from a mapping, it will process the mapping's metadata automatically.
[WIREBOX-87] - AOP debug logging as serialized CFCs which clogs log files
[WIREBOX-82] - builder.toVirtualInheritance(): scoping issues
[WIREBOX-83] - When using sandbox security, and using a provider DSL the file existence checks blow up
This release is part of the ColdBox 5.0.0 upgrade and it is a major release. Below you will find the major areas of improvement for WireBox and the full release notes.
We have done greats strides in consistency of error reporting during the creation of objects and their wiring. We have also added countermeasures for rogue mappings that could bring entire applications down. You will now get more consistency and better error reporting overall.
AOP now performs in over 70% faster than previous implementations. In previous versions, we would create intermediate class files that would then be loaded and injected as part of the AOP proxies. This took time and not only that, it would create 1 stub per call to a method implementation. Our strategy worked but lacked performance. In 5.0.0 we completely re-architected the way we did method injection and stub creation. We now take md5 hashes of the source code to be injected and only created the stubs 1 per-lifetime. The improvements are drastic and amazing. Enjoy AOP and don't hold back!
We have moved from an instance
scope approach to a variables
scope approach with accessors and mutators in 5.0.0 and yet again we benefit from CFML engine speed improvements. Again, thanks to the community for many pull requests.
We have completely re-engineered virtual inheritance in 5.0.0 and it behaves eerily similar to traditional inheritance at the dynamic level. Not only do we cover public methods like we used to, but also private methods and object state. You can also leverage AOP with virtual inheritance now which was a limitation in the previous version.
We have also added the capability to inherit implicit getters and setters from parent classes.
You now can register listeners on-demand with WireBox via the registerListener( listener )
method in the Injector.
onLoad(), onShutdown()
Binder CallbacksAny WireBox binder can now have two new callback methods onLoad(), onShutdown()
. The onLoad()
is called once WireBox has loaded with logging, caching, and the configure()
on the binder has been called. You can use this for leveraging mapDirectory()
calls which require the entire event system to be online or any other type of execution that leverages the entire machinery to be online.
The onShutdown()
callback is a nice way to shutdown services as you see fit.
The new WireBox Binder object is also an interceptor now. So you can create functions that listen to the entire DI/AOP process. Please see the events sections.
[WIREBOX-29] - Virtual inheritance breaks AOP on on base class methods.
[WIREBOX-52] - Virtual Inheritance doesn't inherit variables-scoped properties
[WIREBOX-63] - CFC's with same name don't get aliases picked up with mapDirectory()
[WIREBOX-64] - Illusive double id exception when race conditions
[WIREBOX-58] - Allow new listeners added to the Binder to also be registered right away, especially from modules
[WIREBOX-62] - New request context dsl injection -> coldbox:requestContext
[WIREBOX-67] - New coldbox dsl element => coldbox:router to retrieve the application's router object.
[WIREBOX-68] - Virtual Inheritance now copies over properties and private functions with generic accessors
[WIREBOX-69] - Module Injection Shortcut when the inject annotation is @moduleAdress
[WIREBOX-70] - Add a new onLoad()
method interceptor for WireBox configuration binder
[WIREBOX-72] - Make the Binder also an interceptor
[WIREBOX-73] - Add a new onShutdown()
method interceptor for WireBox configuration binder
[WIREBOX-28] - Improve errors while building depenencies
[WIREBOX-34] - Improve AOP binding by caching temp files
[WIREBOX-59] - Throw error on non-existent coldbox DSL
[WIREBOX-65] - Increase Wirebox performance by scoping variables
[WIREBOX-66] - Complete refactoring of wirebox scopes/DSL to script and direct scope usage
[WIREBOX-71] - Ability to cache metadata in CacheBox
This release is part of the ColdBox 4.2.0 update and contains the following updates:
[WIREBOX-49] - Closure-based providers don't work as documented
[WIREBOX-44] - Add a force
argument to the mapDirectory()
binder method
[WIREBOX-47] - Influence instance build via closure in the binder
[WIREBOX-3] - Add better checks for file system write permissions
[WIREBOX-45] - Update the documentation URL in box.json
[WIREBOX-50] - Pass injector
to closure-based providers
[WIREBOX-79] - Account for leading slashes in mapDirectory()
[WIREBOX-80] - Throw a nicer DSL error if ColdBox is not linked
[WIREBOX-81] - Some improvements for the construction of transients
WireBox 2.0.0 is a major release of our Dependency Injection and AOP library with some major fixes and some cool new updates.
You can find the release version information here: https://ortussolutions.atlassian.net/browse/WIREBOX/fixforversion/12300
Bugs
[WIREBOX-31] -Builder.buildDSLDependency does not use the custom DSL correctly as the default namespace kicks in
Improvements
[WIREBOX-32] -binder.mapDirectory now skips hidden dirs
[WIREBOX-35] -Remove coldbox:cacheManager DSL reference, it is no longer valid
New Features
[WIREBOX-2] -allow mapDSL to be altered at runtime by modules via new wirebox method: registerDSL()
[WIREBOX-30] -Support wiring new injection DSL = byType, which leverages the type to match to an implementation
[WIREBOX-33] -Add a force argument to the map functions so you can override if a mapping already exists
[WIREBOX-36] -New coldbox dsl to get a renderer reference: coldbox:renderer
The ColdBox injection DSL has had major updates to get to the ColdBox 4 standards.
All ocm injections have been removed in preference to
cachebox injection DSL
The coldbox:cachemanager DSL has been removed in preference to
cachebox injection DSL
All plugin injections have been deprecated in preference to
model/object injections
New coldbox:renderer dsl to inject the new ColdBox system
renderer
The map() function on the Configuration Binder now has a force argument which allows you to map no matter if the mapping exists or not already.
Injectors allow you to register custom DSLs at runtime by using the registerDSL() method on any injector. This feature was mostly done for modules, so they could enhance WireBox in a ColdBox context. However, this also allows you to leverage this in any non-ColdBox applications.
We have expanded our custom DSL and injectors to allow you to do injection by ColdFusion types. This feature is more in-line with features from Java or static languages were you can tell injectors to inject by argument or property type. Let's say you have a package of interfaces with subpackages of implementations:
You then want to rely on the interface type field of properties in my dependent CFCs and leveraging the byType injection DSL. You would first map the right implementation using the alias as the name of the Interface.
WireBox is an enterprise ColdFusion Dependency Injection and Aspect Oriented Programing (AOP) framework. This project has been part of ColdBox since its early version 2.0 releases but it is also a standalone library that can be used in ANY ColdFusion application or 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 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 is a registered trademark by Ortus Solutions, Corp
Info: The ColdBox Websites, Documentation, logo and content have a separate license and they are a separate entity.
The WireBox help and discussion group can be found here: https://groups.google.com/forum/#!forum/coldbox
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
By Email: bugs@coldbox.org
ColdBox is a professional open source software backed by Ortus Solutions, Corp offering services like:
Custom Development
Professional Support & Mentoring
Training
Server Tuning
Security Hardening
Code Reviews
Much More
Official Site: https://www.coldbox.org
Source Code: https://github.com/coldbox/coldbox-platform
Bug Tracker: https://ortussolutions.atlassian.net/browse/WIREBOX
Twitter: @coldbox
Facebook: https://www.facebook.com/coldboxplatform
Google+: https://www.google.com/+ColdboxOrg
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
The source code for this book is hosted in GitHub: https://github.com/ortus-docs/wirebox-docs. You can freely contribute to it and submit pull requests. The contents of this book is copyright by Ortus Solutions, Corp and cannot be altered or reproduced without author's consent. All content is provided "As-Is" and can be freely distributed.
The majority of code examples in this book are done in cfscript
.
The majority of code generation and running of examples are done via CommandBox: The ColdFusion (CFML) CLI, Package Manager, REPL - https://www.ortussolutions.com/products/commandbox
Flash, Flex, ColdFusion, and Adobe are registered trademarks and copyrights of Adobe Systems, Inc. Railo is a trademark and copyright of Railo Technologies, GmbH.
The information in this book is distributed “as is”, without warranty. The author and Ortus Solutions, Corp shall not have any liability to any person or entity with respect to loss or damage caused or alleged to be caused directly or indirectly by the content of this training book, software and resources described in it.
We highly encourage contribution to this book and our open source software. The source code for this book can be found in our GitHub repository where you can submit pull requests.
15% of the proceeds of this book will go to charity to support orphaned kids in El Salvador - https://www.harvesting.org/. So please donate and purchase the printed version of this book, every book sold can help a child for almost 2 months.
Shalom Children’s Home (https://www.harvesting.org/) is one of the ministries that is dear to our hearts located in El Salvador. During the 12 year civil war that ended in 1990, many children were left orphaned or abandoned by parents who fled El Salvador. The Benners saw the need to help these children and received 13 children in 1982. Little by little, more children werecame on their own, churches and the government brought children to them for care, and the Shalom Children’s Home was founded.
Shalom now cares for over 80 children in El Salvador, from newborns to 18 years old. They receive shelter, clothing, food, medical care, education and life skills training in a Christian environment. The home is supported by a child sponsorship program.
We have personally supported Shalom for over 6 years now; it is a place of blessing for many children in El Salvador that either have no families or have been abandoned. This is good earth to seed and plant.
Luis Majano is a Computer Engineer with over 15 years of software development and systems architecture experience. He was born in San Salvador, El Salvador in the late 70’s, during a period of economical instability and civil war. He lived in El Salvador until 1995 and then moved to Miami, Florida where he completed his Bachelors of Science in Computer Engineering at Florida International University. Luis resides in Rancho Cucamonga, California with his beautiful wife Veronica, baby girl Alexia and baby boy Lucas!
He is the CEO of Ortus Solutions, a consulting firm specializing in web development, ColdFusion (CFML), Java development and all open source professional services under the ColdBox and ContentBox stack. He is the creator of ColdBox, ContentBox, WireBox, MockBox, LogBox and anything “BOX”, and contributes to many open source ColdFusion projects. He is also the Adobe ColdFusion user group manager for the Inland Empire. You can read his blog at www.luismajano.com
Luis has a passion for Jesus, tennis, golf, volleyball and anything electronic. Random Author Facts:
He played volleyball in the Salvadorean National Team at the tender age of 17
The Lord of the Rings and The Hobbit is something he reads every 5 years. (Geek!)
His first ever computer was a Texas Instrument TI-86 that his parents gave him in 1986. After some time digesting his very first BASIC book, he had written his own tic-tac-toe game at the age of 9. (Extra geek!)
He has a geek love for circuits, microcontrollers and overall embedded systems.
He has of late (during old age) become a fan of running and bike riding with his family.
Keep Jesus number one in your life and in your heart. I did and it changed my life from desolation, defeat and failure to an abundant life full of love, thankfulness, joy and overwhelming peace. As this world breathes failure and fear upon any life, Jesus brings power, love and a sound mind to everybody!
“Trust in the LORD with all your heart, and do not lean on your own understanding.” Proverbs 3:5
Jorge is an Industrial and Systems Engineer born in El Salvador. After finishing his Bachelor studies at the Monterrey Institute of Technology and Higher Education ITESM, Mexico, he went back to his home country where he worked as the COO of Industrias Bendek S.A.. In 2012 he left El Salvador and moved to Switzerland in persuit of the love of his life. He married her and today he resides in Basel with his lovely wife Marta and their daughter Sofía.
Jorge started working as project manager and business developer at Ortus Solutions, Corp. in 2013, . At Ortus he fell in love with software development and now enjoys taking part on software development projects and software documentation! He is a fellow Cristian who loves to play the guitar, worship and rejoice in the Lord!
Therefore, if anyone is in Christ, the new creation has come: The old has gone, the new is here! 2 Corinthians 5:17