[YANGTOOLS-1009] Emit YangModuleInfo packaging from yang-maven-plugin Created: 03/Jul/19 Updated: 19/Sep/23 |
|
| Status: | Confirmed |
| Project: | yangtools |
| Component/s: | maven plugin |
| Affects Version/s: | None |
| Fix Version/s: | 14.0.0 |
| Type: | New Feature | Priority: | High |
| Reporter: | Robert Varga | Assignee: | Unassigned |
| Resolution: | Unresolved | Votes: | 0 |
| Labels: | None | ||
| Remaining Estimate: | Not Specified | ||
| Time Spent: | Not Specified | ||
| Original Estimate: | Not Specified | ||
| Description |
|
org.opendaylight.yangtools.yang.binding.YangModuleInfo (as present in md-sal's yang-binding) artifact really belongs to yangtools, or at least yangtools needs an equivalent. This will allow us to package models in a runtime-discoverable way, without generating MD-SAL binding interfaces out of it. It also provides a Java foothold, which is good enough to extract packaged model's sources while also making sure dependencies are satisfied. This will allow us to package models and their parser support in centralized bundles, which md-sal can later enrich externally with corresponding Java bindings (or any other bindings, really). The MD-SAL version also links to imported modules, which creates a strong package-level binding between revisions. We do not want our version to do that – it should only expose the main module (and its submodules) and metadata about them. Any dependencies will be resolved through parsing anyway. We also should provide a utility wrapper, which will turn each such YangModuleInfo into a set of model.repo.api.YangTextSchemaSources – which can then be fed into a parser reactor. |
| Comments |
| Comment by Robert Varga [ 03/Jul/19 ] |
|
A package name string pointing to the YangModuleInfo should be exported for each local module, so that MD-SAL binding generator can point to these when generating its implementation (which additionally has inter-revision ties). Also, this packaging has implications on parser extensions, as these should package the models separately, so as not to pollute model packaging with yang.model.api dependencies. |