On Jun 18, 2006, at 1:55 PM, Gianny Damour wrote:

Hi,

Is there a way to do this substitution of JACC implementation by providing a substitutionGroup attribute to the security element?
<giant snip>

I think this is the best solution, although there are some problems. It appears that substitution groups may not really be intended to provide runtime-extensible element support, at least xmlbeans doesn't work that way. I think I have a solution.

Xmlbeans' ideas about substitution groups are that it only recognizes the substitutions that are in the set of schemas compiled at the same time as the element being substituted for. Later schemas compile just fine but the list of substitute qnames is hardcoded in the generated code for the substitutable element and also in the binary xsb encoding of the schema. It might be possible to add more qnames into the object model the xsb is deserialized into, but I don't see a reasonable way to modify the hardcoded list in the generated code.

What I've come up with that appears to work is:

- use substitution groups in the schemas. This makes it plausible to see what is intended, unlike with the use of any. - track substitution group elements ourselves, so we can dynamically change recognized substitution groups as builders are added. I'm less sure about tracking removing builders. In this case the elements wouldn't get deployed but we wouldn't get an error. - modify our response to validation failures to ignore those caused by unrecognized substitution group elements - use the XmlObject.selectChildren(QNameSet) method to get the substitution group elements based on our tracking of the QNames in the substitution group.

I hope to iron out the remaining wrinkles shortly and submit an updated patch for review.

thanks
david jencks


Reply via email to