Loading...
Loading...
Loading...
Loading...
Loading...
Loading...
Loading...
Loading...
Loading...
The best way to contribute to WireBox
Hola amigo! I'm excited that you are interested in contributing to ColdBox, CacheBox, LogBox, and/or WireBox. Before submitting your contribution, please make sure to take a moment and read through the following guidelines:
This project is open source, and as such, the maintainers give their free time to build and maintain the source code held within. They make the code freely available in the hope that it will be of use to other developers and/or businesses. Please be considerate towards maintainers when raising issues or presenting pull requests. We all follow the Golden Rule: Do to others as you want them to do to you.
As contributors and maintainers of this project, we pledge to respect all people who contribute through reporting issues, posting feature requests, updating documentation, submitting pull requests or patches, and other activities.
Participants will be tolerant of opposing views.
Examples of unacceptable behavior by participants include the use of sexual language or imagery, derogatory comments or personal attacks, trolling, public or private harassment, insults, or other unprofessional conduct.
Project maintainers have the right and responsibility to remove, edit, or reject comments, commits, code, wiki edits, issues, and other contributions not aligned with this Code of Conduct. Project maintainers who do not follow the Code of Conduct may be removed from the project team.
When interpreting the words and actions of others, participants should always assume good intentions. Emotions cannot be derived from textual representations.
Instances of abusive, harassing, or otherwise unacceptable behavior may be reported by opening an issue or contacting one or more of the project maintainers.
Each of the main standalone frameworks in ColdBox has separate locations for submitting bug reports. Please also ensure that if you submit a pull request, you link it to the appropriate issue.
ColdBox Core:
CacheBox :
LogBox :
WireBox:
If you file a bug report, your issue should contain a title, a clear description of the issue, a way to replicate the issue, and any support files we might need to replicate your issue. The goal of a bug report is to make it easy for yourself - and others - to replicate the bug and develop a fix for it. All issues that do not contain a way to replicate will not be addressed.
If you have questions about usage, professional support, or just ideas to bounce off the maintainers, please do not create an issue. Leverage our support channels first.
Ortus Community Discourse:
Box Slack Team:
Professional Support:
The master branch is just a snapshot of the latest stable release. All development should be done in dedicated branches. Do not submit PRs against the master branch. They will be closed.
All pull requests should be sent against the development branch or the LTS version branch releases/v{version}
It's OK to have multiple small commits as you work on the PR - GitHub will automatically squash it before merging.
If you discover a security vulnerability, please email the development team at and make sure you report it to the #security channel in our Box Team Slack Channel. All security vulnerabilities will be promptly addressed.
We have added all the necessary information to develop on ColdBox in our area and our so you can set up the database to test against.
Please make sure your code runs on the following Supported CFML Engines:
Lucee 5+
Adobe ColdFusion 2018+
We are big on coding styles and have included a .cfformat.json in the root of the project so that you can run the formatting tools and CommandBox scripts:
We recommend that anytime you hack on the core, you start the format watcher (box run-script format:watch). This will monitor your changes and auto-format your code for you.
You can also see the Ortus Coding Standards you must follow here: https://github.com/Ortus-Solutions/coding-standards.
All CFCs are self-documenting, and we leverage to document the entire software. All functions must be properly documented using the DocBox syntax: https://docbox.ortusbooks.com/getting-started/annotating-your-code
You can support ColdBox and all of our Open Source initiatives at Ortus Solutions by becoming a Patreon. You can also get lots of goodies and services depending on the level of contributions.
Thank you to all the people who have already contributed to ColdBox! We: heart: : heart: : heart: love you!
Made with
Make sure all local tests pass before submitting the merge.
Please make sure all your pull requests have companion tests.
Please link the Jira issue in your PR title when sending the final PR
# Format everything
box run-script format
# Start a watcher, type away, save and auto-format for you
box run-script format:watchWireBox 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 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 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:
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:
WireBox is a professional open source library supported by . If you are interested in support please consider our or if you need consulting please purchase on of our . Here are some areas that we can assist you with:
Custom Development
Professional Support & Mentoring
Training
Server Tuning
Official Site:
CFCasts Video Training:
Source Code:
Bug Tracker:
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
__ ___ ____
\ \ / (_) | _ \
\ \ /\ / / _ _ __ ___| |_) | _____ __
\ \/ \/ / | | '__/ _ \ _ < / _ \ \/ /
\ /\ / | | | | __/ |_) | (_) > <
\/ \/ |_|_| \___|____/ \___/_/\_\Security Hardening
Code Reviews
Much More
Twitter: @coldbox
Facebook: https://www.facebook.com/coldboxplatform
Vimeo Channel: https://vimeo.com/channels/coldbox
August 3, 2023
This is a minor release with tons of updates and bug fixes.
The full release notes per library can be found below. Just click on the library tab and explore their release notes:
Bug
Several AOP and Internal WireBox methods not excluded from delegations
Wirebox standalone is missing delegates
Injections are null, sometimes
getEnv errors in Binder context
populateFromQuery delegate defaulting composeRelationships to true
Improvement
Improve debug logging to not send the full memento on several debug operations
Task
`toWebservice()` is now deprecated
Luis Majano is a Computer Engineer, published author, founder, and CEO of Ortus Solutions, Corp (), a consulting firm specializing in open-sourcing tooling, web development, architecture, and professional open-source.
He has been designing and working with software architecture and technologies since the year 2000. He has a passion for learning and mentoring developers so they can succeed with sustainable software practices and the usage and development of open-source software.
He is the creator of ColdBox HMVC, ContentBox Modular CMS, TestBox BDD, CommandBox CLI, and over 200 open-source projects. He speaks regularly at several international conferences, and you can read his blog at
<major>.<minor>.<patch>Luis is passionate about 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 computer was a Texas Instrument TI-99/4A 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 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 pursuit 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 a 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 in software development projects and software documentation! He is a fellow Christian 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
Brad grew up in southern Missouri, where he systematically disassembled every toy he ever owned, which occasionally led to unintentional shock therapy (TVs hold charge long after they've been unplugged, you know). After high school, he majored in Computer Science with a music minor at MidAmerica Nazarene University (Olathe, KS). Today he lives in Kansas City with his wife and three girls, where he still disassembles most of his belongings (including automobiles) with a slightly higher success rate of putting them back together again.) Brad enjoys church, international food, and the great outdoors.
Brad has been programming CFML for 12+ years and has used every version of CF since 4.5. He first fell in love with ColdFusion as a way to easily connect a database to his website for dynamic pages. Brad blogs at (http://www.codersrevolution.com) and likes to work on solder-at-home digital and analog circuits with his daughter and build projects with Arduino-based microcontrollers.
Brad's CommandBox Snake high score is 141.
WIREBOX-61 Make wirebox.system.aop.Mixer listener load automatically if any aspects are defined/mapped
CACHEBOX-70 Support ad-hoc struct literal of CacheBox DSL to configure CacheBox
LOGBOX-75 New listeners for all appenders: preProcessQueue() postProcessQueue()
LOGBOX-76 Add the queue as an argument to the processQueueElement() method
LOGBOX-79 new rolling appender property archiveLayout which is a closure that returns the pattern of the archive layout
Unhandled race conditions in FileRotator lead to errors and potential log data loss
log rotator was not checking for file existence and 1000s of errors could be produced
Support ad-hoc struct literal of LogBox DSL to configure LogBox
Add `Exclude` key to Logbox Categories to Easily Exclude Appenders
shutdown the appenders first instead of the executors to avoid chicken and egg issues
Change fileMaxArchives default from 2 to 10
Removal of instance approach in preferences to accessors for the LogBoxConfig
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 - http://www.ortussolutions.com/products/commandbox
All ColdFusion examples designed to run on the open source Lucee Platform or Adobe ColdFusion 11+
Flash, Flex, ColdFusion, and Adobe are registered trademarks and copyrights of Adobe Systems, Inc.
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.
10% 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 Children’s Home () 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 came 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.
The official WireBox 7 upgrade guide
ColdFusion 2016 support has been dropped. Adobe doesn't support them anymore, so neither do we.
If you are creating your own WireBox injector in your tests and using integration testing, you will have Injector collisions.
This affects EVERY version of WireBox because the default behavior of instantiating an Injector like the code above is to put the Injector in application scope: application.wirebox. This means that the REAL injector in an integration test lives in application.wirebox will be overridden. To avoid this collision, disable scope registration:
For those of you with custom wirebox DSLs, you'll need to update your DSL to match the new process() method signature:
The object BeanPopulator has been deprecated in favor of ObjectPopulator.
All the major information about WireBox Releases
myInjector = new coldbox.system.ioc.Injector()myInjector = new coldbox.system.ioc.Injector( {
scopeRegistration : { enabled : false }hj
} )
/**
* Process an incoming DSL definition and produce an object with it
*
* @definition The injection dsl definition structure to process. Keys: name, dsl
* @targetObject The target object we are building the DSL dependency for. If empty, means we are just requesting building
* @targetID The target ID we are building this dependency for
*
* @return coldbox.system.ioc.dsl.IDSLBuilder
*/
function process( required definition, targetObject, targetID );New additions without breaking backward compatibility bump the minor (and resets the patch)
Bug fixes and misc changes bump the patch
Updates are provided for 12 months for all releases, and security fixes are provided for two years after the next major release.
6.x
2022
2023
2025
7.x
2023
2024
2026
8.x
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 7.0 - May 2023
Version 3.0 - March 2011
Version 2.0 - April 2007
Version 1.0 - June 2006
Discover the power of WireBox 7.0.0
You can read all about this release on our main What's New Page: https://coldbox.ortusbooks.com/readme/release-history/whats-new-with-7.0.0
The full release notes per library can be found below. Just click on the library tab and explore their release notes:
BeanPopulator renamed to ObjectPopulator to be consistent with naming
WireBox caches Singletons even if their autowired dependencies throw exceptions.
Wirebox - add onInjectorMissingDependency event
Ability to remove specific objects from wirebox injector singleton's and request scopes via a `clear( key )` method
Object Delegators
Object Populator is now created by the Injector and it is now a singleton
Object populator now caches orm entity maps, so they are ONLy loaded once and population with orm objects accelerates tremendously
object populator cache relational metadata for faster population of the same objects
New `this.population` marker for controlling mas population of objects. It can include an `include` and and `exclude` list.
Lazy Properties
Property Observers
Transient request cache for injections and delegations
New config setting transientInjectionCache to enable or disable globally, default is true
You can now instantiate an Injector with the `binder` argument being the config structure instead of creating a binder
New injection DSL for ColdBox Root Injector `coldbox:rootWireBox`
Injectors can now track the root injector by having a root reference via `getRoot(), hasRoot()` methods
New DSL for wirebox only root injectors: `wirebox:root`
<major>.<minor>.<patch>2024
2025
2027
9.x
2025
2026
2028
LOGBOX-69 LogEvents in JSON are now prettified



