All pages
Powered by GitBook
1 of 9

Loading...

Loading...

Loading...

Loading...

Loading...

Loading...

Loading...

Loading...

Loading...

Contributing Guide

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:

Code Of Conduct

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.

Bug Reporting

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.

Support Questions

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:

Pull Request Guidelines

  • 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.

Security Vulnerabilities

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.

Development Setup

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.

Language Compatibility

Please make sure your code runs on the following Supported CFML Engines:

  • Lucee 5+

  • Adobe ColdFusion 2018+

Coding Styles & Formatting

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.

CFC Docs With DocBox

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

Financial Contributions

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.

Contributors

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

  • https://ortussolutions.atlassian.net/browse/COLDBOX
    https://ortussolutions.atlassian.net/browse/CACHEBOX
    https://ortussolutions.atlassian.net/browse/LOGBOX
    https://ortussolutions.atlassian.net/browse/WIREBOX
    https://community.ortussolutions.com/c/communities/coldbox/13
    http://boxteam.ortussolutions.com/
    https://www.ortussolutions.com/services/support
    [email protected]
    readme collaboration
    tests readme
    DocBox
    Become a backer or sponsor on Patreon
    One-time donations via PayPal
    contributors-img
    # Format everything
    box run-script format
    
    # Start a watcher, type away, save and auto-format for you
    box run-script format:watch

    Introduction

    WireBox is an enterprise ColdFusion Dependency Injection and Aspect Oriented Programing (AOP) framework

    WireBox Manual - Version 7.x

    ColdBox Platform

    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.

    Versioning

    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

    License

    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

    Discussion & Help

    The WireBox help and discussion group can be found here:

    Reporting a Bug

    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:

    Jira Issue Tracking

    Professional Open Source

    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

    Resources

    • Official Site:

    • CFCasts Video Training:

    • Source Code:

    • Bug Tracker:

    HONOR GOES TO GOD ABOVE ALL

    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

  • Semantic Versioning
    Apache 2
    https://community.ortussolutions.com/
    https://github.com/coldbox/coldbox-platform
    https://ortussolutions.atlassian.net/browse/COLDBOX
    https://ortussolutions.atlassian.net/browse/WIREBOX
    https://ortussolutions.atlassian.net/browse/LOGBOX
    https://ortussolutions.atlassian.net/browse/CACHEBOX
    Ortus Solutions
    Ninja Subscription Support
    Consulting Plans
    https://www.coldbox.org
    http://ww.cfcasts.com
    https://github.com/coldbox/coldbox-platform
    https://ortussolutions.atlassian.net/browse/WIREBOX
    Ortus Solutions, Corp

    What's New With 7.1.0

    August 3, 2023

    This is a minor release with tons of updates and bug fixes.

    Release Notes

    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

    Author

    Luis Fernando Majano Lainez

    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

    What's New With 7.2.0

    November 18, 2023

    You can read all about this release on our main What's New Page:

    Release Notes

    The full release notes per library can be found below. Just click on the library tab and explore their release notes:

    <major>.<minor>.<patch>
    WIREBOX-148
    WIREBOX-150
    WIREBOX-151
    WIREBOX-152
    WIREBOX-154
    WIREBOX-147
    WIREBOX-149
    .

    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

    Contributors

    Jorge Emilio Reyes Bendeck

    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 Wood

    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.

    www.ortussolutions.com
    www.luismajano.com
    New Feature

    WIREBOX-61 Make wirebox.system.aop.Mixer listener load automatically if any aspects are defined/mapped

    Improvement

    CACHEBOX-70 Support ad-hoc struct literal of CacheBox DSL to configure CacheBox

    New Feature

    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

    Bug

    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

    Improvement

    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

    Task

    Removal of instance approach in preferences to accessors for the LogBoxConfig

    https://coldbox.ortusbooks.com/readme/release-history/whats-new-with-7.2.0

    About This Book

    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+

    External Trademarks & Copyrights

    Flash, Flex, ColdFusion, and Adobe are registered trademarks and copyrights of Adobe Systems, Inc.

    Notice of Liability

    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.

    Contributing

    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.

    Charitable Proceeds

    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

    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.

    LOGBOX-73
    LOGBOX-77
    LOGBOX-62
    LOGBOX-70
    LOGBOX-74
    LOGBOX-78
    LOGBOX-72
    GitHub repository
    https://www.harvesting.org/
    http://www.harvesting.org/
    Shalom Children's Home

    Upgrading to WireBox 7

    The official WireBox 7 upgrade guide

    ColdFusion 2016 Support Dropped

    ColdFusion 2016 support has been dropped. Adobe doesn't support them anymore, so neither do we.

    Testing Injector Creations

    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:

    Custom Wirebox DSLs

    For those of you with custom wirebox DSLs, you'll need to update your DSL to match the new process() method signature:

    BeanPopulator Deprecated

    The object BeanPopulator has been deprecated in favor of ObjectPopulator.

    Release History

    All the major information about WireBox Releases

    Versioning Schema

    Wirebox is maintained under the guidelines as much as possible. Releases will be numbered in the following format:

    And constructed with the following guidelines:

    • Breaking backward compatibility bumps the major (and resets the minor and patch)

    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

  • LTS - Support Policy

    Updates are provided for 12 months for all releases, and security fixes are provided for two years after the next major release.

    Version
    Release
    Updates
    Security Fixes

    6.x

    2022

    2023

    2025

    7.x

    2023

    2024

    2026

    8.x

    Releases

    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 6.0 - August 2020

    • Version 5.0 - July 2018

    • Version 4.0 - January 2015

    • Version 3.0 - March 2011

    • Version 2.0 - April 2007

    • Version 1.0 - June 2006

    Semantic Versioning

    What's New With 7.0.0

    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

    Release Notes

    The full release notes per library can be found below. Just click on the library tab and explore their release notes:

    Improvement

    BeanPopulator renamed to ObjectPopulator to be consistent with naming

    Bug

    WireBox caches Singletons even if their autowired dependencies throw exceptions.

    New Feature

    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`

    Bug

    • Intermittent Exception from MetadataIndexer

    Improvement

    Come up with better default serialization for exception objects on LogEvents

    New Feature

    <major>.<minor>.<patch>

    2024

    2025

    2027

    9.x

    2025

    2026

    2028

    Allow for closure for all logging messages in the logger, this way, we can verify the logging level automatically.

    LOGBOX-69 LogEvents in JSON are now prettified

    WIREBOX-133
    WIREBOX-132
    WIREBOX-89
    WIREBOX-130
    WIREBOX-131
    WIREBOX-134
    WIREBOX-135
    WIREBOX-136
    WIREBOX-137
    WIREBOX-138
    WIREBOX-139
    WIREBOX-140
    WIREBOX-141
    WIREBOX-142
    WIREBOX-143
    WIREBOX-144
    WIREBOX-145
    CACHEBOX-83
    LOGBOX-67
    LOGBOX-61