Skip to content

Commit

Permalink
v6.7.0
Browse files Browse the repository at this point in the history
  • Loading branch information
lmajano committed Jun 21, 2022
2 parents daa4a24 + 7a83e01 commit 83ccc79
Show file tree
Hide file tree
Showing 125 changed files with 2,618 additions and 1,715 deletions.
5 changes: 3 additions & 2 deletions .cfconfig.json
Original file line number Diff line number Diff line change
Expand Up @@ -3,7 +3,8 @@
"ajaxDebugWindowEnabled": false,
"debuggingEnabled": false,
"debuggingReportExecutionTimes": false,
"inspectTemplate":"always",
"debuggingShowDatabase" : true,
"inspectTemplate":"once",
"maxCFThreads":100,
"requestTimeout":"0,0,0,90",
"robustExceptionEnabled":true,
Expand Down Expand Up @@ -51,4 +52,4 @@
"validate":"false"
}
}
}
}
3 changes: 2 additions & 1 deletion .github/workflows/release.yml
Original file line number Diff line number Diff line change
Expand Up @@ -49,9 +49,10 @@ jobs:
${{ runner.OS }}-commandbox-cache-${{ hashFiles( 'box.json' ) }}
- name: Setup CommandBox
uses: Ortus-Solutions/setup-commandbox@main
uses: Ortus-Solutions/setup-commandbox@v2.0.0
with:
forgeboxAPIKey: ${{ secrets.FORGEBOX_API_TOKEN }}
version: 5.4.2

- name: Setup Environment Variables For Build Process
id: current_version
Expand Down
4 changes: 3 additions & 1 deletion .github/workflows/tests.yml
Original file line number Diff line number Diff line change
Expand Up @@ -37,7 +37,9 @@ jobs:
java-version: "11"

- name: Setup CommandBox CLI
uses: Ortus-Solutions/setup-commandbox@main
uses: Ortus-Solutions/[email protected]
with:
version: 5.4.2

- name: Setup .env For Runner
run: |
Expand Down
2 changes: 2 additions & 0 deletions .gitignore
Original file line number Diff line number Diff line change
Expand Up @@ -35,3 +35,5 @@ system/exceptions/node_modules/**
# Custom Settings
test-harness/config/runtime.properties.cfm
.env
/settings.xml
/.settings/
2 changes: 1 addition & 1 deletion box.json
Original file line number Diff line number Diff line change
@@ -1,6 +1,6 @@
{
"name":"ColdBox Platform",
"version":"6.6.1",
"version":"6.7.0",
"location":"https://downloads.ortussolutions.com/ortussolutions/coldbox/@build.version@/[email protected]@.zip",
"author":"Ortus Solutions <[email protected]>",
"slug":"coldbox",
Expand Down
84 changes: 84 additions & 0 deletions changelog.md
Original file line number Diff line number Diff line change
Expand Up @@ -7,6 +7,90 @@ and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0

----

## [6.7.0] => 2022-JUN-22

### ColdBox HMVC Core

#### Bug

* [COLDBOX-1114](https://ortussolutions.atlassian.net/browse/COLDBOX-1114) Persistance of variables failing due to null support
* [COLDBOX-1110](https://ortussolutions.atlassian.net/browse/COLDBOX-1110) Renderer is causing coldbox RestHandler to render convention view
* [COLDBOX-1109](https://ortussolutions.atlassian.net/browse/COLDBOX-1109) Exceptions in async interceptors are missing onException announcement
* [COLDBOX-1105](https://ortussolutions.atlassian.net/browse/COLDBOX-1105) Interception with `async` annotation causes InterceptorState Exception on Reinit
* [COLDBOX-1104](https://ortussolutions.atlassian.net/browse/COLDBOX-1104) A view not set exception is thrown when trying to execution handler ColdBox methods that are not concrete actions when they should be invalid events.
* [COLDBOX-1103](https://ortussolutions.atlassian.net/browse/COLDBOX-1103) Update getServerIP\(\) so it avoids looking at the cgi scope as it can cause issues on ACF
* [COLDBOX-1100](https://ortussolutions.atlassian.net/browse/COLDBOX-1100) Event Caching Does Not Preserve HTTP Response Codes
* [COLDBOX-1099](https://ortussolutions.atlassian.net/browse/COLDBOX-1099) Regression on ColdBox v6.6.1 around usage of statusCode = 0 on relocates
* [COLDBOX-1098](https://ortussolutions.atlassian.net/browse/COLDBOX-1098) RequestService context creation not thread safe
* [COLDBOX-1097](https://ortussolutions.atlassian.net/browse/COLDBOX-1097) Missing scopes on isNull\(\) checks
* [COLDBOX-1092](https://ortussolutions.atlassian.net/browse/COLDBOX-1092) RestHandler Try/Catches Break In Testbox When RunEvent\(\) is Called
* [COLDBOX-1045](https://ortussolutions.atlassian.net/browse/COLDBOX-1045) Scheduled tasks have no default error handling
* [COLDBOX-1043](https://ortussolutions.atlassian.net/browse/COLDBOX-1043) Creating scheduled task with unrecognized timeUnit throws null pointer
* [COLDBOX-1042](https://ortussolutions.atlassian.net/browse/COLDBOX-1042) afterAnyTask\(\) and task.after\(\) don't run after failing task
* [COLDBOX-1040](https://ortussolutions.atlassian.net/browse/COLDBOX-1040) Error in onAnyTaskError\(\) or after\(\) tasks not handled and executor dies.
* [COLDBOX-966](https://ortussolutions.atlassian.net/browse/COLDBOX-966) Coldbox Renderer.RenderLayout\(\) Overwrites Event's Current View

#### Improvement

* [COLDBOX-1124](https://ortussolutions.atlassian.net/browse/COLDBOX-1124) Convert mixer util to script and utilize only the necessary mixins by deprecating older mixins
* [COLDBOX-1116](https://ortussolutions.atlassian.net/browse/COLDBOX-1116) Enhance EntityNotFound Exception Messages for rest handlers
* [COLDBOX-1096](https://ortussolutions.atlassian.net/browse/COLDBOX-1096) SES is always disabled on RequestContext until RoutingService request capture : SES is the new default for ColdBox Apps
* [COLDBOX-1094](https://ortussolutions.atlassian.net/browse/COLDBOX-1094) coldbox 6.5 and 6.6 break ORM event handling in cborm
* [COLDBOX-1067](https://ortussolutions.atlassian.net/browse/COLDBOX-1067) Scheduled Tasks: Inject module context variables to module schedulers and inject global context into global scheduler
* [COLDBOX-1044](https://ortussolutions.atlassian.net/browse/COLDBOX-1044) Create singular aliases for timeunits

#### New Feature

* [COLDBOX-1123](https://ortussolutions.atlassian.net/browse/COLDBOX-1123) New xTask\(\) method in the schedulers that will automatically disable the task but still register it. Great for debugging!
* [COLDBOX-1121](https://ortussolutions.atlassian.net/browse/COLDBOX-1121) Log schedule task failures to console so errors are not ignored
* [COLDBOX-1120](https://ortussolutions.atlassian.net/browse/COLDBOX-1120) Scheduler's onShutdown\(\) callback now receives the boolean force and numeric timeout arguments
* [COLDBOX-1119](https://ortussolutions.atlassian.net/browse/COLDBOX-1119) The Scheduler's shutdown method now has two arguments: boolean force, numeric timeout
* [COLDBOX-1118](https://ortussolutions.atlassian.net/browse/COLDBOX-1118) All schedulers have a new property: shutdownTimeout which defaults to 30 that can be used to control how long to wait for tasks to gracefully complete when shutting down.
* [COLDBOX-1113](https://ortussolutions.atlassian.net/browse/COLDBOX-1113) New coldobx.system.testing.VirtualApp object that can startup,restart and shutdown Virtual Testing Applications
* [COLDBOX-1108](https://ortussolutions.atlassian.net/browse/COLDBOX-1108) Async interceptos can now discover their announced data without duplicating it via cfthread
* [COLDBOX-1107](https://ortussolutions.atlassian.net/browse/COLDBOX-1107) Interception Event pools are now using synchronized linked maps to provide concurrency
* [COLDBOX-1106](https://ortussolutions.atlassian.net/browse/COLDBOX-1106) New super type function "forAttribute" to help us serialize simple/complex data and encoded for usage in html attributes
* [COLDBOX-1101](https://ortussolutions.atlassian.net/browse/COLDBOX-1101) announce `onException` interception from RESTHandler, when exceptions are detected
* [COLDBOX-1053](https://ortussolutions.atlassian.net/browse/COLDBOX-1053) Async schedulers and executors can now have a graceful shutdown and await for task termination with a configurable timeout.
* [COLDBOX-1052](https://ortussolutions.atlassian.net/browse/COLDBOX-1052) Scheduled tasks add start and end date/times

#### Task

* [COLDBOX-1122](https://ortussolutions.atlassian.net/browse/COLDBOX-1122) lucee async tests where being skipped due to missing engine check
* [COLDBOX-1117](https://ortussolutions.atlassian.net/browse/COLDBOX-1117) Remove nextRun stat from scheduled task, it was never implemented

### CacheBox

#### Bug

* [CACHEBOX-66](https://ortussolutions.atlassian.net/browse/CACHEBOX-66) Cachebox concurrent store meta index not thread safe during reaping

#### Improvement

* [CACHEBOX-82](https://ortussolutions.atlassian.net/browse/CACHEBOX-82) Remove the usage of identity hash codes, they are no longer relevant and can cause contention under load

### LogBox

#### Improvement

* [LOGBOX-68](https://ortussolutions.atlassian.net/browse/LOGBOX-68) Remove the usage of identity hash codes, they are no longer relevant and can cause contention under load
* [LOGBOX-65](https://ortussolutions.atlassian.net/browse/LOGBOX-65) File Appender missing text "ExtraInfo: "

### WireBox

#### Bug

* [WIREBOX-126](https://ortussolutions.atlassian.net/browse/WIREBOX-126) Inherited Metadata Usage - Singleton attribute evaluated before Scopes

#### Improvement

* [WIREBOX-129](https://ortussolutions.atlassian.net/browse/WIREBOX-129) Massive refactor to improve object creation and injection wiring
* [WIREBOX-128](https://ortussolutions.atlassian.net/browse/WIREBOX-128) Injector now caches all object contains lookups to increase performance across hierarchy lookups
* [WIREBOX-127](https://ortussolutions.atlassian.net/browse/WIREBOX-127) Lazy load all constructs on the Injector to improve performance
* [WIREBOX-125](https://ortussolutions.atlassian.net/browse/WIREBOX-125) Remove the usage of identity hash codes, they are no longer relevant and can cause contention under load

----

## [6.6.1] => 2022-FEB-17

### Coldbox HMVC Core
Expand Down
2 changes: 1 addition & 1 deletion readme.md
Original file line number Diff line number Diff line change
Expand Up @@ -102,7 +102,7 @@ And constructed with the following guidelines:
## System Requirements

* Lucee 5+
* Adobe ColdFusion 2018+
* Adobe ColdFusion 2018+ (2016 Has Been Deprecated)

## Quick Installation

Expand Down
7 changes: 5 additions & 2 deletions [email protected]
Original file line number Diff line number Diff line change
Expand Up @@ -20,5 +20,8 @@
},
"JVM":{
"heapSize":"1024"
}
}
},
"cfconfig": {
"file" : ".cfconfig.json"
}
}
7 changes: 5 additions & 2 deletions [email protected]
Original file line number Diff line number Diff line change
Expand Up @@ -20,5 +20,8 @@
},
"JVM":{
"heapSize":"1024"
}
}
},
"cfconfig": {
"file" : ".cfconfig.json"
}
}
7 changes: 5 additions & 2 deletions [email protected]
Original file line number Diff line number Diff line change
Expand Up @@ -20,5 +20,8 @@
},
"JVM":{
"heapSize":"1024"
}
}
},
"cfconfig": {
"file" : ".cfconfig.json"
}
}
5 changes: 4 additions & 1 deletion [email protected]
Original file line number Diff line number Diff line change
Expand Up @@ -20,5 +20,8 @@
},
"JVM":{
"heapSize":"1024"
},
"cfconfig":{
"file":".cfconfig.json"
}
}
}
5 changes: 4 additions & 1 deletion [email protected]
Original file line number Diff line number Diff line change
Expand Up @@ -20,5 +20,8 @@
},
"JVM":{
"heapSize":"1024"
}
},
"cfconfig": {
"file" : ".cfconfig.json"
}
}
7 changes: 5 additions & 2 deletions [email protected]
Original file line number Diff line number Diff line change
Expand Up @@ -20,5 +20,8 @@
},
"JVM":{
"heapSize":"1024"
}
}
},
"cfconfig": {
"file" : ".cfconfig.json"
}
}
7 changes: 5 additions & 2 deletions server.json
Original file line number Diff line number Diff line change
Expand Up @@ -19,5 +19,8 @@
},
"JVM":{
"heapSize":"1024"
}
}
},
"cfconfig": {
"file" : ".cfconfig.json"
}
}
104 changes: 46 additions & 58 deletions system/Bootstrap.cfc
Original file line number Diff line number Diff line change
Expand Up @@ -161,7 +161,7 @@ component serializable="false" accessors="true" {
// process preReinit interceptors
application[ appKey ].getInterceptorService().announce( "preReinit" );
// Shutdown the application services
application[ appKey ].getLoaderService().processShutdown();
application[ appKey ].getLoaderService().processShutdown( force = true );
}
// Reload ColdBox
loadColdBox();
Expand Down Expand Up @@ -250,39 +250,44 @@ component serializable="false" accessors="true" {
}

// Verify if cached content existed.
if ( !isNull( refresults.eventCaching ) ) {
if ( !isNull( local.refresults.eventCaching ) ) {
// check renderdata
if ( refResults.eventCaching.renderData ) {
refResults.eventCaching.controller = cbController;
renderDataSetup( argumentCollection = refResults.eventCaching );
if ( local.refResults.eventCaching.renderData ) {
local.refResults.eventCaching.controller = cbController;
renderDataSetup( argumentCollection = local.refResults.eventCaching );
}

// Caching Header Identifier
getPageContextResponse().setHeader( "x-coldbox-cache-response", "true" );

// Response Headers that were cached
refResults.eventCaching.responseHeaders.each( function( key, value ){
local.refResults.eventCaching.responseHeaders.each( function( key, value ){
event.setHTTPHeader( name = key, value = value );
} );

// Cached Status Code
if ( isNumeric( local.refResults.eventCaching.statusCode ) ) {
event.setHTTPHeader( statusCode = local.refResults.eventCaching.statusCode );
}

// Render Content as binary or just output
if ( refResults.eventCaching.isBinary ) {
if ( local.refResults.eventCaching.isBinary ) {
cbController
.getDataMarshaller()
.renderContent(
type = "#refResults.eventCaching.contentType#",
variable = "#refResults.eventCaching.renderedContent#"
type = "#local.refResults.eventCaching.contentType#",
variable = "#local.refResults.eventCaching.renderedContent#"
);
} else {
cbController
.getDataMarshaller()
.renderContent( type = "#refResults.eventCaching.contentType#", reset = true );
writeOutput( refResults.eventCaching.renderedContent );
.renderContent( type = "#local.refResults.eventCaching.contentType#", reset = true );
writeOutput( local.refResults.eventCaching.renderedContent );
}
} else {
// ****** EXECUTE MAIN EVENT *******/
if ( NOT event.getIsNoExecution() ) {
refResults.results = cbController.runEvent( defaultEvent = true );
local.refResults.results = cbController.runEvent( defaultEvent = true );
}
// ****** RENDERING PROCEDURES *******/
if ( not event.isNoRender() ) {
Expand All @@ -301,14 +306,14 @@ component serializable="false" accessors="true" {
.marshallData( argumentCollection = renderData );
}
// Check if handler returned results
else if ( !isNull( refResults.results ) ) {
else if ( !isNull( local.refResults.results ) ) {
// If simple, just return it back, evaluates to HTML
if ( isSimpleValue( refResults.results ) ) {
renderedContent = refResults.results;
if ( isSimpleValue( local.refResults.results ) ) {
renderedContent = local.refResults.results;
}
// ColdBox does native JSON if you return a complex object.
else {
renderedContent = serializeJSON( refResults.results, true );
renderedContent = serializeJSON( local.refResults.results, true );
getPageContextResponse().setContentType( "application/json" );
}
}
Expand Down Expand Up @@ -342,49 +347,32 @@ component serializable="false" accessors="true" {
)
)
) {
lock
type ="exclusive"
name ="#variables.appHash#.caching.#eCacheEntry.cacheKey#"
timeout ="#variables.lockTimeout#"
throwontimeout ="true" {
// Try to discover the content type
var defaultContentType= "text/html";
// Discover from event caching first.
if ( !structIsEmpty( renderData ) ) {
defaultContentType = renderData.contentType;
} else {
// Else, ask the engine
defaultContentType = getPageContextResponse().getContentType();
}

// prepare storage entry
var cacheEntry = {
renderedContent : renderedContent,
renderData : false,
contentType : defaultContentType,
encoding : "",
statusCode : "",
statusText : "",
isBinary : false,
responseHeaders : event.getResponseHeaders()
};

// is this a render data entry? If So, append data
if ( !structIsEmpty( renderData ) ) {
cacheEntry.renderData = true;
structAppend( cacheEntry, renderData, true );
}

// Cache it
cacheBox
.getCache( eCacheEntry.provider )
.set(
eCacheEntry.cacheKey,
cacheEntry,
eCacheEntry.timeout,
eCacheEntry.lastAccessTimeout
);
// prepare storage entry
var cacheEntry = {
renderedContent : renderedContent,
renderData : !renderData.isEmpty(),
contentType : !isNull( renderData.contentType ) ? renderData.contentType : getPageContextResponse().getContentType(),
encoding : "UTF-8",
statusCode : getPageContextResponse().getStatus(),
statusText : "",
isBinary : false,
responseHeaders : event.getResponseHeaders()
};

// is this a render data entry? If So, append data
if ( !renderData.isEmpty() ) {
structAppend( cacheEntry, renderData, true );
}

// Cache it
cacheBox
.getCache( eCacheEntry.provider )
.set(
eCacheEntry.cacheKey,
cacheEntry,
eCacheEntry.timeout,
eCacheEntry.lastAccessTimeout
);
}
// end event caching

Expand Down
Loading

0 comments on commit 83ccc79

Please sign in to comment.