[
https://issues.apache.org/jira/browse/DAFFODIL-2992?page=com.atlassian.jira.plugin.system.issuetabpanels:all-tabpanel
]
Steve Lawrence updated DAFFODIL-2992:
-------------------------------------
Issue Type: Improvement (was: Bug)
> Support embedding dependencies in saved parsers
> -----------------------------------------------
>
> Key: DAFFODIL-2992
> URL: https://issues.apache.org/jira/browse/DAFFODIL-2992
> Project: Daffodil
> Issue Type: Improvement
> Reporter: Steve Lawrence
> Priority: Major
>
> A common headache is building a saved parser that depends on charset, UDF, or
> layer plugins, and then making sure that plugin is made available on the
> classpath when that saved parser is reloaded. It is not a trivial task, and
> is easy to mess up. We should come up with a way to make this much easier and
> less error prone.
> One approach is to change the format our our saved parser so that instead of
> just containing the serialized parser, it is a zip file the contains the
> serialized parser as well as any plugins and dependencies.
> When the saved parser is reloaded, it could then extract the dependencies and
> make them available via a custom class loader.
> One benefit of this is that different saved parsers could have different
> versions of the same plugin, since the classloader can keep that all
> separate. Interactions with the ServiceLoader may add complications.
> One issue is how to define which jars should be added, since not all jars
> want to be embedded, just plugin jars. Other jars, like schema jars or
> daffodil jars should not be included.
> Maybe with the CLI it must be done manually with a new option to the save
> parser command, e.g.
> daffodil save-parser -s foo.dfdl.xsd -j charset.jar -j layer.jar foo.bin
> Alternatively, now that the daffodil SBT plugin is more common, we could
> potentially add logic in that to scan libraryDependencies and add those when
> using "sbt daffodilPackageBin". It's not clear how to filter out schema jars
> and only get charset jars.
> The DataProcessor.save API probably wants to change so that it can accept a
> list of additional jars to embed.
--
This message was sent by Atlassian Jira
(v8.20.10#820010)