Summer,

I'm going to update the wiki entry (parts of it were contributed) as the wiki entry example shouldn't show replacing itself with a non-Mach-II extended CFC. If you use my suggestions on renaming the property name for the CFC that is loading the session facade to "sessionFacadeLoader" -- you'll be fine. At the moment, the behavior in your application as it stands is doing something that the framework doesn't support -- it's just in 1.6 it didn't show it's ugly head as it didn't check for this. 1.8 is just more strict on this rule that 1.6 was.

Best,
.Peter

Summer Wilson said the following on 11/01/10 13:11:
Okay...I'm really confused, because I basically went by http://greatbiztoolsllc.trac.cvsdude.com/mach-ii/wiki/UsingSessionFacade pretty much to the letter, except for having different session variables? And all of worked perfectly in 1.6...

~~ Summer AKA Collectonian


On Mon, Jan 11, 2010 at 12:48 PM, Peter J. Farrell <[email protected] <mailto:[email protected]>> wrote:

    Ah, I see what is going on...  What's happening is kind of not
    recommended architecture.

    This property:


    <property name="sessionFacade" type="properties.SessionProperty" />

    Extends the MachII.framework.Property construct.  Because this is
    a framework extension, we set this property name of
    "sessionFacade" as a "configurable property", however this
    property then creates a session facade and sets it into the
    Mach-II as a property named "sessionFacade".  So what is happening
    is that you are replacing the "sessionFacade" property with a
    non-configurable property later on at runtime.  Essentially,
    you're swapping in a non-Mach-II extended component into a slot
    that the framework marked as "Mach-II configurable".

    I'd recommend not using a Mach-II property CFC to load a
    non-Mach-II CFC in the same Mach-II property name.  You could
    easily fix the issue by changing:


    <property name="sessionFacade" type="properties.SessionProperty" />

    To this:

    <property name="sessionFacadeLoader"
    type="properties.SessionProperty" />

    Your "loader" will still function the same and place a reference
    to your "real" session facade into the "sessionFacade" property.

    HTH,
    .Peter

    P.s.  Your cfparams will only be run once when the session facade
    loads because your session facade is a singleton.  If you want to
    set those session variables when a new session starts, I'd
    recommend looking at the onSessionStart() plugin point in
    Mach-II.  You don't have to set the variables in that plugin
    point, but at least have the plugin point call an
    "onSessionStart()" method in your session facade.  In your plugin
    you can do this:

    <cffunction name="onSessionStart">
    <cfset getProperty("sessionFacade").onSessionStart() />
    </cffunction>

    In you session facade, add this:

    <cffunction name="onSessionStart">
    <cfset session.mycaptcha = "" />
    <cfset session.UpdateProfile = false />
    <cfset session.UpdatePassword = false />
    </cffunction>

    This is just pseudo code, but I think you can get the picture.  I
    think you're random error you might be seeing might has to do with
    missing session variables.  Just a guess since I haven't seen the
    exception.



-- 
You received this message because you are subscribed to Mach-II for CFML list.
To post to this group, send email to [email protected]
To unsubscribe from this group, send email to 
[email protected]
For more options, visit this group at 
http://groups.google.com/group/mach-ii-for-coldfusion?hl=en
SVN: http://greatbiztoolsllc.svn.cvsdude.com/mach-ii/
Wiki / Documentation / Tickets: 
http://greatbiztoolsllc.trac.cvsdude.com/mach-ii/

Reply via email to