BlogBox on Railo

I have tracked down the error that was preventing BlogBox from running on Railo to the following line in BaseORMService.cfc:

var results = entityLoad(arguments.entityName, arguments.criteria, arguments.sortOrder, options);

When I change this line to:

var results = entityLoad(arguments.entityName, arguments.criteria);

BlogBox starts working.

So, something about sending in sortOrder was breaking it. I’m not sure if this is something on the Railo side or what. I will do testing. I thought it might have been a problem sending in sortOrder with an empty criteria struct, but I won’t speculate further until science has been performed.

However, for now, I have BlogBox running on Railo.

Awesome!

I do believe that’s a Railo issue as maybe those arguments are not implemented.

Luis F. Majano
President
Ortus Solutions, Corp
www.ortussolutions.com

ColdBox Platform: http://www.coldbox.org
Linked In: http://www.linkedin.com/pub/3/731/483
Blog: http://www.luismajano.com
IECFUG Manager: http://www.iecfug.com

Social: twitter.com/lmajano facebook.com/lmajano

Ok, cool, I’ll dig a little deeper.

Ok, so it looks like sending in an empty criteria struct with a specific sortOrder caused the error. This is a Railo bug that was fixed in Railo 3.3

However, updating to Railo 3.3 has all of the sudden caused the entrypoint /blog to stop working.

bbadmin still works, but now blog simply shows the “Welcome To ColdBox” page. The only thing I’ve done since I just had it working was update Railo…

Will report back.

Ok, finally got it all working on Railo 3.3, but with one caveat, which has to do with a problem I was having before also. I use a custom SES interceptor which ColdBox currently throws a fit about, an issue which I fixed in my fork on github, but the issue has reared its head again now with BlogBox.

This part of ModuleService.cfc:

// Get name of SES Interceptor
SESInterceptor = getController().getInterceptorService().getSESInterceptor();

// Register module routing entry point pre-pended to routes
if( controller.settingExists(‘sesBaseURL’) AND len(mConfig.entryPoint) AND NOT find(":",mConfig.entryPoint)){
interceptorService.getInterceptor(SESInterceptor ,true).addModuleRoutes(pattern=mConfig.entryPoint,module=arguments.moduleName,append=false);
}

The return value of getSESInterceptor() is always SES, even when there is a custom interceptor set, so I added a couple of lines to get the right interceptor in InterceptorService.cfc:

// Check if this interceptor extends the default system SES interceptor
if (getComponentMetaData(thisInterceptor).extends.fullname eq ‘coldbox.system.interceptors.SES’) {
SESInterceptor = ListLast(getComponentMetaData(thisInterceptor).fullname, “.”);
} else {
SESInterceptor = “SES”;
}

return SESInterceptor;

This works great and returns the right interceptor name.

If I dump the value of SESinterceptor right after:

SESInterceptor = getController().getInterceptorService().getSESInterceptor();

I see my correct interceptor name, however…

When this line runs:

interceptorService.getInterceptor(SESInterceptor ,true).addModuleRoutes(pattern=mConfig.entryPoint,module=arguments.moduleName,append=false);

The value of the SESInterceptor argument to getInterceptor() is always “SES”, even though the return value from getSESInterceptor() is my custom interceptor name.

I can’t figure out why this is happening.

Right after the getSESInterceptor() call, SESInterceptor is my custom interceptor name, but by the time interceptorService.getInterceptor() runs, the value has become SES again.

So, to get this working with my custom interceptor, I had to modify ModuleService.cfc to have a hard-coded name to my custom SES interceptor, like so:

interceptorService.getInterceptor(‘customSESName’,true).addModuleRoutes(pattern=mConfig.entryPoint,module=arguments.moduleName,append=false);

In both places where it appears.

Other than that, I’m up and running on Railo now.