The Ortus BlogBox

"Ortus: A rise, beginning, coming into being, born, the origin!"

 

 

Category Filtering: 'modules'

 

Attention: MessageBox is Now a Module

Scott Coldwell
Feb 27, 2015

 

The beloved MessageBox plugin has been a staple of the ColdBox platform since the beginning. With ColdBox 4.0 it's still available, but if you don't need it, you have the freedom to leave it out.

The new modular approach (and deprecation of plugins) of ColdBox 4.0 means much of its built-in functionality has been moved to separate, installable modules. One of the many new modules introduced with ColdBox 4.0 is the MessageBox Module. To install, simply fire up CommandBox:

box install cbmessagebox

 

For the plugin, you might have had code like this:

getPlugin("MessageBox").info( "Hello" );

With the module, your syntax changes slightly to:

getInstance("messagebox@cbmessagebox").info( "Hello" );

or, leveraging WireBox:

property name="messagebox" inject="messagebox@cbmessagebox";

...

variables.messagebox.info( "Hello" );

 

Happy messaging!

ColdBox, CommandBox, Modules 0

ColdBox 4.0 Removed Plugins

Brad Wood
Feb 26, 2015

 

ColdBox Plugins have graduated to become just models. The plugins convention has been removed and all references to plugin injection or DSL's are gone. You must now place all your plugins in your models directory and request them via getInstance() or getModel() calls.


Plugins are an old ColdBox convention but their baggage doesn't really serve a purpose now that we have modules for easy packaging of libraries and WireBox for easy creation of CFCs. Neither of those existed back when Plugins were birthed. It's time to say goodbye to the concept of plugins, but all their functionality will still be here, just with a slightly different (and more standardized) way of creating them.

ColdBox, Modules, Plugins, Tips & Tricks 0

Module Bundles in ColdBox 4

Luis Majano
Feb 24, 2015

 

With the advent of so much more functionality in modules, in ColdBox 4 we added the ability to group modules in a single directory we lovingly call The Module Bundle.  This feature became a reality due to a real client's need of being able to logically separate modules into logical buckets.  His application had an extensive amount of modules and he wanted to further segregate them, thus module bundles became a reality.  

 

 

Module bundles does not add extra functionality or features to the framework, but it is a mere logical boundary between modules.  It will allow you to create a folder with the convention {name}-bundle, notice the bundle suffix.  Then you can drop any amount of modules and sub-modules within it.  You can even drop in module bundles inside of it as well.

 

coldbox-bundle
  * cbstorages
  * cborm
  * cbsecurity

 

In ColdBox 4.X we will introduce the ability to package these bundles via CommandBox and even deliver them as a coldbox.bundle archive, which ColdBox will know how to unpack and install.

ColdBox, Modules, Tips & Tricks 0

The Storages Module

Curt Gratz
Feb 23, 2015

 

If you have been following our series here on ColdBox 4.0, you are probably sensing a theme.  

Another major change in ColdBox 4.0 was the removal of plugins as a thing.  They were just model objects anyway and we had treated them as such within the framework for some time.   However, because of that, we needed to do something with some of our various "core" plugins.  So sticking with our aforementioned theme, many of them were converted into modules.  

We decided that we could bundle a few of our old "core" plugins that had similar functionality together into one module.  The Storages Module.  This module consists of what was the

  • Session Storage Plugin
  • Application Storage Plugin
  • Client Storage Plugin
  • Cluster Storage Plugin
  • Cookie Storage Plugin

To install The Storages Module using command box simply use the following command.

box install cbstorages

If you have existing calls to the old plugins such as 

getPlugin( 'SessionStorage' )
getPlugin( 'ApplicationStorage' )
getPlugin( 'CookieStorage' )
etc...

Then after you install the module you can replace those with

getInstance( 'sessionStorage@cbstorages' )
getInstance( 'applicationStorage@cbstorages' )
getInstance( 'cookieStorage@cbstorages' )
etc...

We didn't make any changes to the API of the objects so everything should work as always after that.

Now...Module all the things...

ColdBox, Modules, Plugins, Tips & Tricks 0

Easily Inject Java into Your ColdBox App

Scott Coldwell
Feb 18, 2015

 

If you've ever worked with jars or raw java in ColdFusion, you will love the JavaLoader module for ColdBox. The JavaLoader module will interface with Mark Mandel's JavaLoader to allow you to do a network class loader, compiler and proxy. You can keep jars with your application's code instead of putting them in ColdFusion classpath, and you can even dynamically compile java code to use in your app.

To get started, simply install the module using CommandBox:

box install cbjavaloader

 

The module registers a new WireBox DSL called javaloader. You can then use this custom DSL for injecting direct java class loaded classes very easily:

property name="name"  inject="javaloader:{class-path}";
property name="hello" inject="javaloader:HelloWorld";
property name="buffer" inject="javaloader:org.class.path.StringBuffer";

 

With some basic configuration in your Coldbox.cfc, you can load jars or compile java:

// JavaLoader settings
javaloader = {
    // The array paths to load
    loadPaths = getJars( getDirectoryFromPath( getCurrentTemplatePath() ) & "lib" ),
    // Load ColdFusion classes with loader
    loadColdFusionClassPath = false,
    // Attach a custom class loader as a parent
    parentClassLoader = "",
    // Directories that contain Java source code that are to be dynamically compiled
    sourceDirectories = [],
    // the directory to build the .jar file for dynamic compilation in, defaults to ./tmp
    compileDirectory = getDirectoryFromPath( getCurrentTemplatePath() ) & "model/javaloader/tmp",
    // Whether or not the source is trusted, i.e. it is going to change? Defaults to false, so changes will be recompiled and loaded
    trustedSource = false
};

Happy Java-ing!

 

ColdBox, Modules, Tips & Tricks 0

The Security Module

Curt Gratz
Feb 16, 2015

 

Looking to secure your ColdBox application?  The Security Module can be your security rules engine for your application.  It provides flexible options to rules based security for you to use.

We have often talked about how a module can be either complex or as simple as an interceptor.  Our Security Module is basically just an interceptor that gets registered in your application to enforce rules you define.  Installing it is easy using CommandBox run the following command

box install cbsecurity

The module will register a security interceptor with empty rules for you.  You can update the security rules included in the `config` folder or comment the interceptor out and just add it to your main application or necessary modules using the mapping it creates for you.

The full documentation for the security interceptor can be found at

http://wiki.coldbox.org/wiki/Security.cfm​ 

Feel free to take advantage of this module to help your secure your application and take care of some of the boiler plate work for you. 

ColdBox, Modules, Tips & Tricks 0

Hey, where'd my debugger go?

Curt Gratz
Feb 09, 2015

 

You may be wondering where all that amazing debugging information went in your ColdBox 4.0 application.  Have no fear.  You can still have your cake and eat it too.  We modularized it (sensing a theme in ColdBox 4.0 yet?) So, how do you get all that wonderful debugging info?

Easy! Using CommandBox, run the following command.

box install cbdebugger --saveDev

Notice the --saveDev we added to our command.  This is handy as it tells CommandBox that you only want this as a dependency for your application in development.  

Once the debugger module is installed, you can control the settings via the debugger structure in your main Coldbox config file.  

Also, if you need access to the debugger service or the timer, they are available via the following WireBox mappings.

  • debuggerService@cbdebugger
  • timer@cbdebugger

Just call getInstance() on either to snag them as needed.

Debug to your heart's content.

ColdBox, CommandBox, Modules, Tips & Tricks, WireBox 2

ColdBox 4.0 Module Enhancements

Curt Gratz
Feb 02, 2015

 

One of the biggest things we changed about ColdBox 4.0 is making tons of the core completely modular.  To support this change, we needed to enhance our modules architecture which brought some cool new features to you.  

Module Inception

Every time I talk about ColdBox modules with people, I get asked if modules can contain modules, which up to now wasn't an option. But the first Module Enhancement I'd like to bring to your attention is just that.  We call it Module Inception.  This will allow for even greater ways for you to build and architect your applications.  Modules can be nested to the Nth degree.  Creating a ton of options and flexibility for you the developer in how you organize your code.

ColdBox, Modules, Tips & Tricks 0

ColdBox Validation is Now a Module

Scott Coldwell
Jan 28, 2015

 

The new modular approach of ColdBox 4.0 means much of its built-in functionality has been moved to separate, installable modules. One of the many new modules introduced with ColdBox 4.0 is the Validation Module. To install, simply fire up CommandBox.

ColdBox, ForgeBox, Modules, Plugins, Tips & Tricks 1

New Compatibility Module released to help get you on ColdBox 4.0

Brad Wood
Nov 13, 2014

 

ColdBox 4.0 is now in Release Candidate and we're tightening down all the screws for the big release.  As 4.0 is a major release of the platform, we've taken the opportunity to really clean up the code, making changes and improvements where necessary.  This includes the exodus of 75% of ColdBox's core code into pluggable modules so you can truly pick and choose what parts of the framework you want.  Some methods such as getPlugin() and getColdBoxOCM() were also removed.  This has naturally modified the framework's API a bit and your 3.x ColdBox app might not run without some tweaking.  

We have a What's New doc as well as a Compatibility Guide for ColdBox 4.0 where we have tried to document any changes necessary to get your codebase switched over.  However, we realize that some of this may take time for you to refactor if you have a larger codebase and we don't want it to keep you from looking at ColdBox 4.0  

That's why I've created a compatibility module for ColdBox 3.x code bases to help them run on the new 4.0 version of the ColdBox platform.  We feel this is a  much better solution than littering the core codebase with additional settings and feature flags.  ColdBox is the only framework with a first-class modular architecture.  Mix that with the incredible extensibility options, and this module has be ability to alter just about anything it wants.  

Only install it if you need it, and remove it once you're finished refactoring your code to the 4.0 standards.  This isn't meant to be a permanent install-- it's just a stepping stone to help you get your codebase up and running until you have time to finish refactoring.  Do feel free to use it in production, though it comes with no warranties or guarantees.  Here's a list of the modifications this module will make to ColdBox 4.x to make it work like the 3.x versions.

Functions and behaviors restored

  • Original getModuleSettings() behavior
  • getPlugin() function
  • getMyPlugin() function
  • getColdBoxOCM() function
  • UDFLibraryFile setting
  • "model" convention for WireBox scan locations
  • coldbox.system.plugin base class

The following WireBox mapping DSL namespaces are restored

  • ocm
  • ocm:{keyName}
  • coldbox:plugin:{pluginName}
  • coldbox:myplugin:{pluginName}
  • coldbox:myplugin:{pluginName@moduleName}
  • coldbox:fwconfigbean
  • coldbox:configbean
  • coldbox:cacheManager
  • coldbox:mailsettingsbean (requires mailservices module)
  • coldbox:debuggerService (requires cbdebugger module)
  • coldbox:validationManager (requires validation module)

This module also comes packaged with all the original ColdBox 3.8.1 plugins, so you only need to install this module and you'll have it all back again.   If you need any of the functionality that was refactored into modules such as ORM, validation, or i18n, just install those modules.  

Known issues:

  • When this module loads, it will copy Plugin.cfc to the coldbox/system directory.  If you uninstall this module, it will not remove that file.
  • Plugins only work for the default convention location of "plugins". 
  • You will still need to change the Application.cfc to use coldbox.system.Bootstrap instead of coldbox.system.ColdBox.  There's really no way around that one.

Installation

The preferred way to install this module is via CommandBox because using a package manager is just so fast and easy.  If you don't have Command Box, grab it real quick from here.  Then CD to your site's web root and run the following:

CommandBox> install cbcompat

If you want to do an old-fashioned installation, just click the download link from ForgeBox, and uncompress the contents of the zip file into your app's modules directory.

If you have questions or suggestions, hit me up on the ColdBox list, or feel free to submit a pull request.

ColdBox, CommandBox, Modules, Releases 0