You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@daffodil.apache.org by "Steve Lawrence (Jira)" <ji...@apache.org> on 2025/07/31 19:29:00 UTC
[jira] [Resolved] (DAFFODIL-3013) Consider simplified Validator API
[ https://issues.apache.org/jira/browse/DAFFODIL-3013?page=com.atlassian.jira.plugin.system.issuetabpanels:all-tabpanel ]
Steve Lawrence resolved DAFFODIL-3013.
--------------------------------------
Resolution: Fixed
Fixed in commit 0811512580493aceca4b7b536790d792178f9b90
> Consider simplified Validator API
> ---------------------------------
>
> Key: DAFFODIL-3013
> URL: https://issues.apache.org/jira/browse/DAFFODIL-3013
> Project: Daffodil
> Issue Type: Bug
> Components: API
> Affects Versions: 4.0.0
> Reporter: Steve Lawrence
> Priority: Major
> Fix For: 4.0.0
>
>
> The new Validator API provides all the necessary functionality to create and configure custom validators in a consistent way. But with it comes extra complexity for API users--they must create a validator factory, create a Properties instance with the correct values, and make the validator. While this design is probably the right approach to support custom/pluggable validators, much of this complexity can probably be hidden behind the scenes for API users.
> For example, ideal examples of ways to set a validator could look like this:
> DataProcessor.withValidator("limited")
> DataProcessor.withValidator("xerces", new URI(".../path/to/schema.dfdl.xsd")))
> DataProcessor.withValidator("schematron", new URI(".../path/to/schematron.sch")
> DataProcessor.withValidator("customValidator", new URI(".../path/to/file.properties")
> If the uri parameter ends in .properties or .config, we use Properties.load() to create a Properties instance. Otherwise we create a new Properties instance and call setProperty(name, uri.toString).
> Then we call Validator.get(name).make(properties) to create the validator, and finally call DataProcessor.withValidator(validator) to actually set the validator.
> If we want we can still have the DataProcessor.withValidator(Validator) API variant be public for those that really want to do it all manually, but it probably wouldn't be the usual way for most API users, since the other functions are simpler and provide basically the same functionality.
> This is also nice since it should move some of the logic to create Validators out of the CLI and into the API, simplifying the CLI a bit. This also could simplify the TDMLRunner, which also has similar logic for creating Validators.
--
This message was sent by Atlassian Jira
(v8.20.10#820010)