epsilon icon indicating copy to clipboard operation
epsilon copied to clipboard

Structurizr EMC Driver

Open kolovos opened this issue 1 year ago • 6 comments
trafficstars

Structurizr is a textual DSL for software architecture diagrams that appears to be gaining momentum. It would be nice to develop an EMC driver for it on top of its Java API.

kolovos avatar Jul 17 '24 08:07 kolovos

I have created a first draft with tests and code coverage (~90%). I will improve it during these weeks.

If this is valuable, I may also need some guidance regarding the project format (Maven, packages...) towards a potential PR.

dandelion-lowcode avatar Sep 04 '24 08:09 dandelion-lowcode

Wow - this is amazing! It'd be nice to also include a .dt plugin in the PR for consistency with the rest of the drivers. Please let me know if there's anything I can help with!

kolovos avatar Sep 05 '24 10:09 kolovos

Thanks. I have created the .dt plugin and uploaded the tests.

Required stuff:

  • [ ] Fixing the feature and updatesite plugins - I don't recall how to do it. At the moment they are just placeholder folders.
  • [ ] Fixing the tests:
    • ~they use resources that I have put on a folder and, although they "work on my machine" :) in a Maven build, but I couldn't get them to work in a plugin scenario.~
    • Created StructurizrTestSuite and StructurizrTests classes and now resources are gathered using FileUtil.getFileStandalone. Still, I get compilation problems.

Finer stuff:

  • [ ] An implementation which differentiates between getAllOfType and getAllOfKind
  • [x] Right now the property getter/setter acts upon a limited set of properties (i.e., name, description, tag). While these may be sufficient, perhaps this could be improved by allowing to access all the existing getters and setters. (JavaPropertyS/Getter?)
  • [ ] There are probably too many dependencies. I have been adding JARs until there were no more ClassNotFound exceptions. I may have messed up re-exports in the plugins or something.
  • [ ] Probably writing a blog entry (?)

dandelion-lowcode avatar Sep 05 '24 20:09 dandelion-lowcode

Fixing the feature and updatesite plugins - I don't recall how to do it. At the moment they are just placeholder folders.

If you're considering contributing the driver to Epsilon, it may make sense to fork Epsilon and edit its update site, target platform etc. If you'd like to keep it in a separate repo for a while until it becomes more mature, you could check out the features and update site plugins from the Cameo driver

Right now the property getter/setter acts upon a limited set of properties (i.e., name, description, tag).

Interpeting foo.x as foo.getX()/foo.setX() is something that the existing JavaPropertyGetter/JavaPropertySetter classes already do for all objects in an Epsilon program, so the Structurizr property getters/setters shouldn't need to deal with such properties in a special way.

kolovos avatar Oct 01 '24 22:10 kolovos

Thanks, Dimitris. I think it is sensible to leave it in a separate repository for now. Also, do you think it makes sense to transfer it to epsilonlabs? I would need permissions for that, though.

dandelion-lowcode avatar Oct 07 '24 09:10 dandelion-lowcode

You're more than welcome to move the repo to epsilonlabs! I've just invited you to the organisation.

kolovos avatar Oct 07 '24 09:10 kolovos