In my current GAE project I have setup a BaseBean.cfc class that contains
the following method:
---------------------------------------------------------------------------------
<cffunction name="toStruct" output="false">
<cfset var result = {} />
<cfset var key = "" />
<cfloop collection="#variables#" item="key">
<cfif NOT
listFindNoCase("this,init,onmissingmethod,tostruct,tostring,googlewrite,googledelete,googlekey",
key)>
<cfset result[key] = variables[key] />
<cfelseif lCase(key) EQ "googlekey">
<cfset result["__key__"] = googleKey(this).toString() />
</cfif>
</cfloop>
<cfreturn result />
</cffunction>
---------------------------------------------------------------------------------
I then have created a few components that extend from this CFC, and in the
previous GAE version I was able to call this to get a struct version of the
component. The line "<cfset result["__key__"] = googleKey(this).toString()
/>" actually used to read "<cfset result["__key__"] =
this.googleKey().toString() />", but that started to throw errors, so I
switched in an effort to try to get something to work again. Either way,
both methods in the current 1.5b build return this error: "*The page you
were executing caused an internal BlueDragon server error*". Here is the
stack trace:
java.lang.NullPointerException
at
com.naryx.tagfusion.expression.function.functionBase.getNamedParam(Unknown
Source)
at com.naryx.tagfusion.cfm.sql.GoogleKey.execute(Unknown Source)
at com.naryx.tagfusion.cfm.parser.CFFunctionExpression.Eval(Unknown
Source)
at com.naryx.tagfusion.cfm.parser.cfFullVarExpression.evalLHS(Unknown
Source)
at
com.naryx.tagfusion.cfm.parser.cfFullVarExpression.evalNatural(Unknown Source)
at com.naryx.tagfusion.cfm.parser.cfFullVarExpression.Eval(Unknown
Source)
at com.naryx.tagfusion.cfm.parser.CFAssignmentExpression.Eval(Unknown
Source)
at com.naryx.tagfusion.cfm.parser.runTime.run(Unknown Source)
at com.naryx.tagfusion.cfm.parser.runTime.runExpression(Unknown Source)
at com.naryx.tagfusion.cfm.parser.runTime.runExpression(Unknown Source)
at com.naryx.tagfusion.cfm.tag.cfSET.render(Unknown Source)
at com.naryx.tagfusion.cfm.tag.cfIF.render(Unknown Source)
at com.naryx.tagfusion.cfm.tag.cfTag.coreRender(Unknown Source)
at com.naryx.tagfusion.cfm.tag.cfTag.render(Unknown Source)
at com.naryx.tagfusion.cfm.tag.cfLOOP.renderCollection(Unknown Source)
at com.naryx.tagfusion.cfm.tag.cfLOOP.render(Unknown Source)
at com.naryx.tagfusion.cfm.tag.cfTag.coreRender(Unknown Source)
at com.naryx.tagfusion.cfm.tag.cfTag.renderToString(Unknown Source)
at com.naryx.tagfusion.cfm.tag.cfFUNCTION.realRun(Unknown Source)
at com.naryx.tagfusion.cfm.tag.cfFUNCTION.run(Unknown Source)
at com.naryx.tagfusion.cfm.tag.cfFUNCTION.run(Unknown Source)
at
com.naryx.tagfusion.cfm.parser.script.userDefinedFunction.execute(Unknown
Source)
at
com.naryx.tagfusion.cfm.engine.cfComponentData.invokeComponentFunction(Unknown
Source)
at
com.naryx.tagfusion.cfm.engine.cfComponentData.invokeComponentFunction(Unknown
Source)
at com.naryx.tagfusion.cfm.parser.cfFullVarExpression.Eval(Unknown
Source)
at
com.naryx.tagfusion.cfm.parser.cfFullVarExpression.evalNatural(Unknown Source)
at com.naryx.tagfusion.cfm.parser.cfFullVarExpression.Eval(Unknown
Source)
at com.naryx.tagfusion.cfm.parser.runTime.run(Unknown Source)
at com.naryx.tagfusion.cfm.parser.runTime.runExpression(Unknown Source)
at com.naryx.tagfusion.cfm.parser.runTime.runExpression(Unknown Source)
at com.naryx.tagfusion.cfm.parser.runTime.runExpression(Unknown Source)
at com.naryx.tagfusion.cfm.tag.cfTag.getDynamicAttribute(Unknown Source)
at com.naryx.tagfusion.cfm.tag.cfTag.getDynamic(Unknown Source)
at com.naryx.tagfusion.cfm.tag.cfTag.getDynamic(Unknown Source)
at com.naryx.tagfusion.cfm.tag.cfDUMP.render(Unknown Source)
at com.naryx.tagfusion.cfm.tag.cfTag.coreRender(Unknown Source)
at com.naryx.tagfusion.cfm.tag.cfTag.render(Unknown Source)
at com.naryx.tagfusion.cfm.tag.cfLOOP.renderIndex(Unknown Source)
at com.naryx.tagfusion.cfm.tag.cfLOOP.render(Unknown Source)
at com.naryx.tagfusion.cfm.tag.cfTag.coreRender(Unknown Source)
at com.naryx.tagfusion.cfm.tag.cfTag.renderToString(Unknown Source)
at com.naryx.tagfusion.cfm.tag.cfFUNCTION.realRun(Unknown Source)
at com.naryx.tagfusion.cfm.tag.cfFUNCTION.run(Unknown Source)
at com.naryx.tagfusion.cfm.tag.cfFUNCTION.run(Unknown Source)
at
com.naryx.tagfusion.cfm.parser.script.userDefinedFunction.execute(Unknown
Source)
at
com.naryx.tagfusion.cfm.engine.cfComponentData.invokeComponentFunction(Unknown
Source)
at
com.naryx.tagfusion.cfm.engine.cfComponentData.invokeComponentFunction(Unknown
Source)
at
com.naryx.tagfusion.cfm.tag.cfINVOKECommon.invokeComponentMethod(Unknown Source)
at com.naryx.tagfusion.cfm.tag.cfINVOKECommon.renderComponent(Unknown
Source)
at com.naryx.tagfusion.cfm.tag.cfINVOKECommon.render(Unknown Source)
at com.naryx.tagfusion.cfm.tag.cfTag.coreRender(Unknown Source)
at com.naryx.tagfusion.cfm.tag.cfTag.renderToString(Unknown Source)
at com.naryx.tagfusion.cfm.tag.cfFUNCTION.realRun(Unknown Source)
at com.naryx.tagfusion.cfm.tag.cfFUNCTION.run(Unknown Source)
at com.naryx.tagfusion.cfm.tag.cfFUNCTION.run(Unknown Source)
at
com.naryx.tagfusion.cfm.parser.script.userDefinedFunction.execute(Unknown
Source)
at com.naryx.tagfusion.cfm.parser.CFFunctionExpression.Eval(Unknown
Source)
at com.naryx.tagfusion.cfm.parser.runTime.run(Unknown Source)
at com.naryx.tagfusion.cfm.parser.runTime.runExpression(Unknown Source)
at com.naryx.tagfusion.cfm.parser.runTime.runExpression(Unknown Source)
at com.naryx.tagfusion.cfm.tag.cfSET.render(Unknown Source)
at com.naryx.tagfusion.cfm.tag.cfIF.render(Unknown Source)
at com.naryx.tagfusion.cfm.tag.cfTag.coreRender(Unknown Source)
at com.naryx.tagfusion.cfm.tag.cfTag.renderToString(Unknown Source)
at com.naryx.tagfusion.cfm.tag.cfFUNCTION.realRun(Unknown Source)
at com.naryx.tagfusion.cfm.tag.cfFUNCTION.run(Unknown Source)
at com.naryx.tagfusion.cfm.tag.cfFUNCTION.run(Unknown Source)
at
com.naryx.tagfusion.cfm.parser.script.userDefinedFunction.execute(Unknown
Source)
at
com.naryx.tagfusion.cfm.engine.cfComponentData.invokeComponentFunction(Unknown
Source)
at
com.naryx.tagfusion.cfm.engine.cfComponentData.invokeApplicationFunction(Unknown
Source)
at com.naryx.tagfusion.cfm.engine.cfSession.onRequestStart(Unknown
Source)
at com.naryx.tagfusion.cfm.engine.cfSession.onRequestStart(Unknown
Source)
at com.naryx.tagfusion.cfm.engine.cfEngine.service(Unknown Source)
at com.naryx.tagfusion.cfm.cfServlet.service(Unknown Source)
at javax.servlet.http.HttpServlet.service(HttpServlet.java:717)
at
org.mortbay.jetty.servlet.ServletHolder.handle(ServletHolder.java:511)
at
org.mortbay.jetty.servlet.ServletHandler.handle(ServletHandler.java:390)
at
org.mortbay.jetty.security.SecurityHandler.handle(SecurityHandler.java:216)
at
org.mortbay.jetty.servlet.SessionHandler.handle(SessionHandler.java:182)
at
org.mortbay.jetty.handler.ContextHandler.handle(ContextHandler.java:765)
at org.mortbay.jetty.webapp.WebAppContext.handle(WebAppContext.java:418)
at
com.google.apphosting.utils.jetty.DevAppEngineWebAppContext.handle(DevAppEngineWebAppContext.java:70)
at org.mortbay.jetty.servlet.Dispatcher.forward(Dispatcher.java:327)
at org.mortbay.jetty.servlet.Dispatcher.forward(Dispatcher.java:126)
at
com.google.appengine.tools.development.StaticFileUtils.serveWelcomeFileAsForward(StaticFileUtils.java:80)
at
com.google.appengine.tools.development.LocalResourceFileServlet.maybeServeWelcomeFile(LocalResourceFileServlet.java:247)
at
com.google.appengine.tools.development.LocalResourceFileServlet.doGet(LocalResourceFileServlet.java:120)
at javax.servlet.http.HttpServlet.service(HttpServlet.java:617)
at javax.servlet.http.HttpServlet.service(HttpServlet.java:717)
at
org.mortbay.jetty.servlet.ServletHolder.handle(ServletHolder.java:511)
at
org.mortbay.jetty.servlet.ServletHandler$CachedChain.doFilter(ServletHandler.java:1166)
at
com.google.appengine.api.blobstore.dev.ServeBlobFilter.doFilter(ServeBlobFilter.java:58)
at
org.mortbay.jetty.servlet.ServletHandler$CachedChain.doFilter(ServletHandler.java:1157)
at
com.google.apphosting.utils.servlet.TransactionCleanupFilter.doFilter(TransactionCleanupFilter.java:43)
at
org.mortbay.jetty.servlet.ServletHandler$CachedChain.doFilter(ServletHandler.java:1157)
at
com.google.appengine.tools.development.StaticFileFilter.doFilter(StaticFileFilter.java:122)
at
org.mortbay.jetty.servlet.ServletHandler$CachedChain.doFilter(ServletHandler.java:1157)
at
org.mortbay.jetty.servlet.ServletHandler.handle(ServletHandler.java:388)
at
org.mortbay.jetty.security.SecurityHandler.handle(SecurityHandler.java:216)
at
org.mortbay.jetty.servlet.SessionHandler.handle(SessionHandler.java:182)
at
org.mortbay.jetty.handler.ContextHandler.handle(ContextHandler.java:765)
at org.mortbay.jetty.webapp.WebAppContext.handle(WebAppContext.java:418)
at
com.google.apphosting.utils.jetty.DevAppEngineWebAppContext.handle(DevAppEngineWebAppContext.java:70)
at
org.mortbay.jetty.handler.HandlerWrapper.handle(HandlerWrapper.java:152)
at
com.google.appengine.tools.development.JettyContainerService$ApiProxyHandler.handle(JettyContainerService.java:351)
at
org.mortbay.jetty.handler.HandlerWrapper.handle(HandlerWrapper.java:152)
at org.mortbay.jetty.Server.handle(Server.java:326)
at
org.mortbay.jetty.HttpConnection.handleRequest(HttpConnection.java:542)
at
org.mortbay.jetty.HttpConnection$RequestHandler.headerComplete(HttpConnection.java:923)
at org.mortbay.jetty.HttpParser.parseNext(HttpParser.java:547)
at org.mortbay.jetty.HttpParser.parseAvailable(HttpParser.java:212)
at org.mortbay.jetty.HttpConnection.handle(HttpConnection.java:404)
at
org.mortbay.io.nio.SelectChannelEndPoint.run(SelectChannelEndPoint.java:409)
at
org.mortbay.thread.QueuedThreadPool$PoolThread.run(QueuedThreadPool.java:582)
Any ideas? Thanks!
--
official tag/function reference: http://openbd.org/manual/
mailing list - http://groups.google.com/group/openbd?hl=en