[ 
https://issues.apache.org/jira/browse/SCXML-59?page=com.atlassian.jira.plugin.system.issuetabpanels:all-tabpanel
 ]

Rahul Akolkar updated SCXML-59:
-------------------------------

    Fix Version/s: 1.0

I see, its worth more thought. The interesting bit to getting back to the 
Context abstraction is that the "location" could be a part of some context 
member, in that it doesn't have to refer to the entire <data> (it could be some 
node therein, identified by XPath, and information on the parent <data> is no 
longer available).

>From your summary, it isn't clear whether you mean to propose a solution (down 
>the road), but proposals / patches are welcome. Marking this to v1.0 since 
>some API additions / changes may be necessary.



> <assign location="..." expr="..."> problem for context with different 
> internal XML representation
> -------------------------------------------------------------------------------------------------
>
>                 Key: SCXML-59
>                 URL: https://issues.apache.org/jira/browse/SCXML-59
>             Project: Commons SCXML
>          Issue Type: Improvement
>    Affects Versions: 0.6
>            Reporter: Ingmar Kliche
>             Fix For: 1.0
>
>
> We are currently working on a prototype implementation of a ECMAScript 
> context and evaluator based on Rhino.
> It appears that Rhino has its internal context and uses an internal XML 
> representation different from org.w3c.dom.node. This means we have to convert 
> every XML Node/Document when it is stored into the context into Rhino's 
> internal XML representation (e.g. when the datamodel is stored into the 
> context). This works fine.
> The problem occurs with the current implementation of <assign location="..." 
> expr="...">. Assign uses evalLocation() twice to get two org.w3c.dom.node 
> objects (one for location and another for expr). Then the implementation of 
> Assign iterates through the two node structures and stores the expr node 
> under the location node.
> Doing this, Assign manipulates a variable within the context from outside, 
> i.e. it manipulates the XML data tree without using a set() at the context. 
> To do this it makes use of object references.
> For our context this appears to be a problem. As mentioned earlier we have a 
> different internal XML representation (i.e. other Java classes than 
> org.w3c.dom). Therefore our evalLocation() returns a org.w3c.dom.node object 
> (as required by the context interface) which is a converted copy of the 
> internal XML object. Assign therefore works on our copies and as it does not 
> store the result explicitly back into the context we loose it.
> I see the current implementation of Assign therefore as a violation of the 
> context abstraction (because Assign manipulates data within the context from 
> outside) and propose to change it. I propose to think about a solution which 
> avoids data convertion (as described above) whereever possible for 
> evaluators/contexts which use different internal (XML) data representation.

-- 
This message is automatically generated by JIRA.
-
You can reply to this email to add a comment to the issue online.

Reply via email to