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...
[WIREBOX-82] - builder.toVirtualInheritance(): scoping issues
[WIREBOX-83] - When using sandbox security, and using a provider DSL the file existence checks blow up
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
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
[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 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
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
Luis Majano is a Computer Engineer with over 15 years of software development and systems architecture experience. He was born in 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 . Luis resides in Rancho Cucamonga, California with his beautiful wife Veronica, baby girl Alexia and baby boy Lucas!
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 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
This release is part of the ColdBox 4.2.0 update and contains the following updates:
[] - Closure-based providers don't work as documented
[] - Add a force
argument to the mapDirectory()
binder method
[] - Influence instance build via closure in the binder
[] - Add better checks for file system write permissions
[] - Update the documentation URL in box.json
[] - Pass injector
to closure-based providers
The source code for this book is hosted in GitHub: . You can freely contribute to it and submit pull requests. The contents of this book is copyright by 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 -
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 where you can submit pull requests.
15% of the proceeds of this book will go to charity to support orphaned kids in El Salvador - . So please donate and purchase the printed version of this book, every book sold can help a child for almost 2 months.
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.
WireBox can be downloaded as a standalone framework or it is included with the latest ColdBox Platform release, so no need to install it if you are within a ColdBox application.
The best way to install WireBox is using CommandBox CLI and package manager.
Adobe ColdFusion 11+
Lucee 4.5+
You can leverage to install the standalone version of WireBox with a simple command:
This will install Wirebox as a dependency in your application into a folder called wirebox
. You can then leverage the standalone namespace within your application: wirebox.system.ioc
.
You can download the latest version of WireBox from . Place in your webroot or create a /wirebox
mapping in your system.
wirebox.system.ioc
coldbox.system.ioc
Dependency injection is the art of making work come home to you. Dhanji R. Prasanna
WireBox alleviates the need for custom object factories or manual object creation in your ColdFusion (CFML) applications. It provides a standardized approach to object construction and assembling that will make your code easier to adapt to changes, easier to and extend.
As software developers we are always challenged with maintenance and one ever occurring annoyance, change. Therefore, the more sustainable and maintainable our software, the more we can concentrate on real problems and make our lives more productive. WireBox leverages an array of metadata annotations to make your object assembling, storage and creation easy as pie! We have leveraged the power of event driven architecture via object listeners or interceptors so you can extend not only WireBox but the way objects are analyzed, created, wired and much more. To the extent that our capabilities are all driven by our AOP listener which decouples itself from WireBox code and makes it extremely flexible.
Compared to manual Dependency Injection (DI), using WireBox can lead to the following advantages:
You will write less boilerplate code.
By giving WireBox DI responsibilities, you will stop creating objects manually or using custom object factories.
You can leverage object persistence scopes for performance and scalability. Even create time persisted objects.
You will not have any object creation or wiring code in your application, but have it abstracted via WireBox. Which will lead to more cohesive code that is not plagued with boilerplate code or factory code.
Objects will become more testable and easier to mock, which in turn can accelerate your development by using a TDD (Test Driven Development), BDD (Behavior Driven Development) approach.
Once WireBox leverages your objects you can take advantage of AOP or other event life cycle processes to really get funky with OO.
Here are a simple listing of features WireBox brings to the table:
Annotation driven dependency injection
0 configuration mode or a programmatic binder configuration approach via ColdFusion (No XML!)
Creation and Wiring of or by:
ColdFusion Components
Java Classes
RSS Feeds
WebService objects
Constant values
DSL string building
Factory Methods
Providers
Multiple Injection Styles: Property, Setter, Method, Constructor
Automatic Package/Directory object scanning and registration
Multiple object life cycle persistence scopes:
No Scope (Transients)
Singletons
Request Scoped
Session Scoped
Application Scoped
Server Scoped
CacheBox Scoped
Parent Factories
Factory Method Object Creations
Object life cycle events via WireBox Listeners/Interceptors
Customizable injection DSL
WireBox object providers to avoid scope-widening issues on time/volatile persisted objects