commons-issues mailing list archives

Site index · List index
Message view « Date » · « Thread »
Top « Date » · « Thread »
From "Rahul Akolkar (JIRA)" <>
Subject [jira] Resolved: (SCXML-88) SCXMLSerializer does not serialize custom namespace declarations
Date Fri, 21 Nov 2008 21:13:44 GMT


Rahul Akolkar resolved SCXML-88.

    Resolution: Fixed

I'm marking this as fixed since the situation has now improved in the sense that it is possible
to get the serializer to write out the custom declarations, but only within certain limitations.

Those limitations are now clearly specified in the class Javadoc, which I have deployed to
the site. See:

In order to not rely on the link above, I'll reproduce the limitations below:

NOTE: This serializer makes the following assumptions about the original SCXML document(s)
parsed to create the object model: 
 * The default document namespace is the SCXML namespace:

 * The Commons SCXML namespace ( ), if needed, uses the "cs"
 * All namespace prefixes needed throughout the document are declared on the document root
element (<scxml>) 

Your test case will still not work, unless you move the namespace declarations to the root
<scxml> element.

Ofcourse, ideally it should be possible to accomodate declarations anywhere in the document,
but I contend that the focus of this library is the execution of state machines rather than
the serialization of its object model. Furthermore, even though I do not intend to spend more
time on this at the moment given that a workable solution is available within those limitations,
if a patch were to become available that serialized the namespace declarations for transitions,
actions etc. and included test cases to demonstrate correctness, we can revisit this.

> SCXMLSerializer does not serialize custom namespace declarations
> ----------------------------------------------------------------
>                 Key: SCXML-88
>                 URL:
>             Project: Commons SCXML
>          Issue Type: Bug
>    Affects Versions: 0.8
>            Reporter: Ingmar Kliche
>             Fix For: 0.9
>         Attachments: NamespacesInTransition_testcase.patch
> The SCXMLSerializer writes the scxml namespace as the default namespace to the <scxml>
root tag and adds a "cs" ("commons-scxml") namespace by default.
> But it does not take into account that the original scxml document might contain other
namespace declarations, e.g. on child tags:
> <?xml version="1.0" encoding="UTF-8"?>
> <scxml xmlns="" xmlns:cs=""
version="1.0" initial="S1">
>  <state id="S1">
>   <!-- some E4X like condition using XML namespaces -->
>   <!-- redefine default namespace to "foo" and use explicit namespace prefix for scxml:transition
tag -->
>   <scxml:transition event="foo" cond="* == 3" target="S2" xmlns="foo" xmlns:scxml=""
>   </transition>
>  </state>
>  <state id="S2" final="true">
>  </state>
> </scxml>
> The above SCXML document is parsed properly and namespaces are forwarded to the executor
(i.e. it works correct).  But if it comes to serialization the namespaces are not serialized

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

View raw message