CFC in Application Scope Looping Index

Ask a Question related to Coldfusion - Advanced Techniques, Design and Development.

  1. #1

    Default CFC in Application Scope Looping Index

    I am getting an 'outofbounds' errors in cfc's that I have in application scope.
    This occurs in loops and is logically impossible to happen. Can anyone tell
    me if the variables in functions in a CFC stored in application scope are not
    local to that function and/or request?

    Thank you,

    Craig

    canIgetAwitness Guest

  2. Similar Questions and Discussions

    1. web services and Application scope
      how do I see my Application variables within a method of a webservice-called CFC? I have an external system that calls my coldfusion mx 7 app...
    2. Application.xml ->Process->Scope
      server: Dual Processor Dual Core Xeon - 3.4GHz Ram: 2 GB DDRII Operating System: CentOS 4 (32 bit) -FEDORA X.X -RED HAT - ECC. I changed the...
    3. Application.xml->Process->Scope
      erver: Dual Processor Dual Core Xeon - 3.4GHz Ram: 2 GB DDRII Operating System: CentOS 4 (32 bit) I changing the scope in the application.xml to...
    4. Application Scope
      I have a farm of CF5 servers. In order to reduce the number of times I hit the database, I'm saving data within the application scope. I'm setting...
    5. DataKeys(Index): Scope issue
      I can access the dg's DataKeys values (table primary key values) from events raised by objects outside of the dg. For example, from a...
  3. #2

    Default CFC in Application Scope Looping Index

    I am getting an 'outofbounds' errors in cfc's that I have in application scope.
    This occurs in loops and is logically impossible to happen. Can anyone tell
    me if the variables in functions in a CFC stored in application scope are not
    local to that function and/or request?

    Thank you,

    Craig

    canIgetAwitness Guest

  4. #3

    Default Re: CFC in Application Scope Looping Index

    > I am getting an 'outofbounds' errors in cfc's that I have in application scope.
    > This occurs in loops and is logically impossible to happen. Can anyone tell
    > me if the variables in functions in a CFC stored in application scope are not
    > local to that function and/or request?
    Within a CFC instance (irrespective of the scope the instance is stored
    in), a variables-scope variable is global to the CFC for the life of the
    instance.

    eg:

    <cfset variables.foo = "bar">
    or:
    <cfset foo = "bar">

    Function-local variables are always local to the function, irrespective of
    the scope the CFC instance itself is stored in.

    eg:

    <cfset var foo = "bar">

    It might help by posting your code. Obviously it *is* logically possible
    for what you're seeing to happen, otherwise it wouldn't be happening:
    computers are annoying like that. However a few spare sets of eyes might
    help spot the problem.

    --

    Adam
    Adam Cameron Guest

  5. #4

    Default Re: CFC in Application Scope Looping Index

    Here is the code. Thanks for looking. It is in the code..

    <cfif bTasksFound>
    <cfset
    "xmlScores.scores.xmlAttributes.#UCASE(aSummedScor eNode[sssCounter].xmlAttribute
    s.id)#SUMMEDSCORE" = iSummedTotal>
    <cfelse>
    <cfset
    StructDelete(xmlScores.scores.xmlAttributes,"#UCAS E(aSummedScoreNode[sssCounter]
    ..xmlAttributes.id)#SUMMEDSCORE")>
    </cfif>

    That errors are reported. This cfc is stored in application scope.

    <cffunction name="setSummedScores" access="public" returntype="any">
    <cfargument name="xmlAssessment" type="any" required="true">
    <cfargument name="sGrade" type="string" required="true">
    <cfargument name="sRootTaskID" type="string" required="false" default="">
    <cfargument name="xmlScores" type="any" required="false"
    default="#session.xmlScores#">

    <cfif Len(sRootTaskID)>
    <!--- Check only those summed scores a particular task is in --->
    <cfset aSummedScoreNode =
    XMLSearch(arguments.xmlAssessment,"//summedscores/summedscore[contains(@GRADE,'#
    arguments.sGrade#') and contains(@IDREFS,'#arguments.sRootTaskID#')]")>
    <cfelse>
    <!--- Check ALL summed scores --->
    <cfset aSummedScoreNode =
    XMLSearch(arguments.xmlAssessment,"//summedscores/summedscore[contains(@GRADE,'#
    arguments.sGrade#')]")>
    </cfif>

    <cfif NOT ArrayIsEmpty(aSummedScoreNode)>
    <cfloop from="1" to="#ArrayLen(aSummedScoreNode)#" index="sssCounter">
    <cfset iSummedTotal = 0>
    <cfset bTasksFound = true>
    <cfloop list="#aSummedScoreNode[sssCounter].xmlAttributes.idrefs#"
    index="sTaskID">
    <cfif FindNoCase("or",sTaskID)>
    <cfset sFirstTaskID = ListFirst(sTaskID," ")>
    <cfset sSecondTaskID = ListLast(sTaskID," ")>
    <cfset aFirstScoreNode =
    XMLSearch(xmlScores,"//*[@IDREF='#sFirstTaskID#']")>
    <cfset aSecondScoreNode =
    XMLSearch(xmlScores,"//*[@IDREF='#sSecondTaskID#']")>
    <cfif ArrayIsEmpty(aFirstScoreNode) OR NOT
    StructKeyExists(aFirstScoreNode[1].xmlAttributes,"score")>
    <cfset bTasksFound = false>
    <cfbreak>
    <cfelseif ArrayIsEmpty(aSecondScoreNode) OR NOT
    StructKeyExists(aSecondScoreNode[1].xmlAttributes,"score")>
    <cfset iSummedTotal = iSummedTotal +
    aFirstScoreNode[1].xmlAttributes.score>
    <cfelseif aFirstScoreNode[1].xmlAttributes.score GT
    aSecondScoreNode[1].xmlAttributes.score>
    <cfset iSummedTotal = iSummedTotal +
    aFirstScoreNode[1].xmlAttributes.score>
    <cfelse>
    <cfset iSummedTotal = iSummedTotal +
    aSecondScoreNode[1].xmlAttributes.score>
    </cfif>
    <cfelse>
    <cfset aScoreNode = XMLSearch(xmlScores,"//*[@IDREF='#sTaskID#']")>
    <cfif ArrayIsEmpty(aScoreNode) OR NOT
    StructKeyExists(aScoreNode[1].xmlAttributes,"score")>
    <cfset bTasksFound = false>
    <cfbreak>
    <cfelse>
    <cfset iSummedTotal = iSummedTotal + aScoreNode[1].xmlAttributes.score>
    </cfif>
    </cfif>
    </cfloop>
    <cfif bTasksFound>
    <cfset
    "xmlScores.scores.xmlAttributes.#UCASE(aSummedScor eNode[sssCounter].xmlAttribute
    s.id)#SUMMEDSCORE" = iSummedTotal>
    <cfelse>
    <cfset
    StructDelete(xmlScores.scores.xmlAttributes,"#UCAS E(aSummedScoreNode[sssCounter]
    ..xmlAttributes.id)#SUMMEDSCORE")>
    </cfif>
    </cfloop>
    </cfif>
    <cfreturn xmlScores>
    </cffunction>

    canIgetAwitness Guest

  6. #5

    Default Re: CFC in Application Scope Looping Index

    You're not VARing any of yor variables. Is that by design?

    --

    Adam
    Adam Cameron Guest

Posting Permissions

  • You may not post new threads
  • You may post replies
  • You may not post attachments
  • You may not edit your posts

1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120 121 122 123 124 125 126 127 128 129 130 131 132 133 134 135 136 137 138 139