For the first time ever I decided to use cfeclipse's wizard to create the
cfc for this test case. It's usually a pet-peeve of mine not to scope
variables. Now it works.

Normally I create a variable.i=structnew() to hold my instance variables,
but I shouldn't do that here because the gae integration only looks for
simple vars directly on variables right?

Should I be seeing some data in the "Data Viewer" tab on my google
dashboard? I uploaded the app and ran it, expecting to see a new entry
there.

Cheers,
Baz


On Tue, Jun 2, 2009 at 8:20 AM, <[email protected]> wrote:

>
> Your CFML code is buggy. Remove the GoogleWrite and GoogleRead calls,
> and simply put the following after the CFSCRIPT where you create and
> initialize TestCFC:
>
>  <cfdump var="#TestCFC.getProp1()#">
>
> You'll see that it throws the same exception (yes, CF8 does too). The
> problem is that function arguments get copied to the function local
> scope so that you can reference them without using "arguments."
> notation. Therefore, within the "setProp1" function, references to
> "prop1" and "arguments.prop1" refer to the same local variable, and
> the following code just assigns "arguments.prop1" back to itself:
>
>  <cfset prop1 = arguments.prop1 />
>
> You need to create a new variable in either the "this" or "variables"
> scope, either by explicity referencing the scope (the recommended
> solution):
>
>  <cfset variables.prop1 = arguments.prop1 />
>
> or by giving it a different name (the following is the same as
> "variables.property1"):
>
>  <cfset property1 = arguments.prop1 />
>
> Finally, note that the CFPROPERTY tags currently have no effect on
> GoogleRead/Write. As I mentioned previously, all variables within the
> CFC "this" and "variables" scopes are searchable properties when you
> write to the Google datastore. In the future we may restrict that only
> to properties defined by CFPROPERTY tags, but for now we don't.
>
> Vince
>
> On Jun 2, 2:51 am, Baz <[email protected]> wrote:
> >
> > I wrote some simple test code to write and read a cfc from the Google
> > Datastore, included below. It creates a test cfc, sets a few properties
> to
> > simlpe values, GoogleWrite()'s the cfc to the google datastore, then
> reads
> > back the cfc from the google datastore into a new variable. If that new
> > variable is dump'ed, the component defintion along with its functions,
> > displays successfully. If I try and get a property value, however, the
> > variable is undefined. It seems that property values did not survive the
> > write.
> >
> > Is there something wrong with the test code or some other issue to
> consider?
> > The google dashboard (under the heading "Data Viewer") doesn't show any
> > objects saved either.
> >
> > Cheers,
> > Baz
> >
> > *Contents of index.cfm*
> >
> > <!--- create and populate testcfc --->
> > <cfscript>
> >     TestCFC=createobject('component', 'testcfc');
> >     TestCFC.setProp1(123);
> >     TestCFC.setProp2(now());
> >     TestCFC.setProp3('this is a string');
> > </cfscript>
> >
> > <!--- write component to datastore --->
> > <cfset Google_Key=TestCFC.GoogleWrite() />
> >
> > <!--- read back the object --->
> > <cfset ReadTestCFC=GoogleRead(Google_Key) />
> >
> > <!--- ERROR: Variable PROP1 does not exist.) --->
> > <cfdump var="#ReadTestCFC.getProp1()#">
> >
> > *CFML Runtime Error**Variable PROP1 does not exist.*Request/index.cfmFile
> > Trace/home/baz/Source/GAE-OpenBD/war/index.cfm
> > |
> > +-- /home/baz/Source/GAE-OpenBD/war/testcfc.cfc
> >
> >
>

--~--~---------~--~----~------------~-------~--~----~
Open BlueDragon Public Mailing List
 http://groups.google.com/group/openbd?hl=en
 official site @ http://www.openbluedragon.org/

!! save a network - trim replies before posting !!
-~----------~----~----~----~------~----~------~--~---

Reply via email to