I believe the issue is that we don't serialize the XercesValidator used for full validation, I think maybe because it's not serializable?

So if you reload() a saved parser with full validation, the XercesValidator needs to be recreated, and it does so using the schema files listed in this member:

  ssrd.elementRuntimeData.schemaURIStringsForFullValidation.

But since this is reloaded, it's very possible that those schemas no longer exist at those paths (e.g. moving a saved() parser from a build machine to a production machine) and so it fails.

Potentially we could allow it, and just error if those paths don't exist?

I believe DAFFODIL-1749 is about solving this issue.


On 12/9/22 9:38 AM, Interrante, John A (GE Research, US) wrote:
I got curious and searched the codebase and website, but I couldn't find an 
explanation why Daffodil lets you save and reload a parser, but restricts you 
from doing one thing with a restored parser that you can do with a normal 
parser.   The only restriction Daffodil imposes is that you can't perform full 
validation with a reloaded parser.  Why is that restriction imposed?


Reply via email to