sbcgua/ajson

"Compact" version of AJSON

mbtools opened this issue · 6 comments

I have several projects where I want to include the core ajson functionality (no filter, no mapping). However, now it's all linked with dependencies, so I need to copy 3 classes + 4 interfaces + exception. Ideally, it should be 1 class, 1 interface, 1 exception.

I can, of course, clone and reduce this myself in another repo (with credit to you). But I wonder if there's a way to manage this in your repo without causing double maintenance. It needs an abapmerge for OO... Anyway, just something to think about.

I knew it would come one day ... I started feeling that ajson becomes a bit bloated.

First thoughts:

  • agrh ! I just aligned mapping and filtering to fit well to the ajson interface ! It looks so well ... but probably it is not the final iteration.
  • Would it make things easier if I split the package into 2 ? pure ajson and then other features like mapping, filtering, diffing ? But it would become more difficult to install ...
  • Indeed it would be nice to decouple classes more. Then just part of classes can be installed. Kind of ajson_core. And ... others ... utils ? schema ? The core would be ajson itself, exception, the interface and probably some unified interface for filtering/mapping. Then maybe some feature in AG to install a subpackage only. And abaplint rule to check the cross dependencies inside subpackages (could be nice ? @larshp )

Just thoughts. No immediate solution.

any impact on existing projects if split the package into 3 subpackages (in one repo)? core, utils and perf (for perf test prog) ?

abapGit impact: might need some adjustments in the renaming, but no problem, go for it

anyhow, we will get tree-shaking sometime for ABAP, abaplint ftw

OK, so the first step would be this: #152 Have a look, if looks fine, I'll merge

The split into core and others looks good. Thanks!