Introduction
I've been an EA add-in developer folk since version 9 now and every time Sparx announces to release a new version of EA, I look at it with a smile in one eye and a tear in the other. New features on the one hand allow us developers to deliver add-ins with greater user experience, but on the other hand, it also forces us to keep on track with changes in the API and adapting our yet working solutions to them.
However, the EA release notes coming with every new build give only a subset of API changes for developers among mostly EA user-related stuff which is perfectly fine, but not very effective for developers.
In this article, I'm going to show you a small tool I developed for exactly these purposes:
- Highlight for each existing object model class and each broadcast event the changes from a selected source version to a selected target version
- Make the result of the comparison persistent so that it can be possibly copied around or saved in version control
- If possible, show only the actual changed classes/events to have a condensed view on only those
How does the tool work?
The approach, I used, before I had the idea to develop the tool was more or less like you see it in the picture below:
- Fire up to instances of the browser having the old online help version of each class on the left and the new online help version on the right
- Scroll through both side by side and try to not overlook but identify the changes
- Do this for every class/event that exists in the API
Being a computer scientist, it was a natural thing to think about how this process can be speeded up or even automated!
So I searched the net for a tool being able to perform a diff of web pages, because that is obviously not an easy task on HTML source code level.
I found a web page that is exactly doing the change detection/diff for two provided URLs. The advantage is I have only one page where the changes are highlighted plus I don't have to read the rest.
The result looks like this:
Making use of the web page still forced me to perform the diff for each and every class or event separately, i.e. copy URLs of the EA online help pages in the change detection web site and examine the results.
In the end, I automated this task as well by writing a .NET tool that maintains a manually collected list of online help pages and sends a diff request to the change detection website. The response is saved on the local machine class by class in its own html file. Around all these html files I built a simple website that allows easy navigation to the diff of each class.
How does the result look like?
As can be seen in the screen below, on the left frame of the index page, we see a navigation bar to the classes that have changed. Clicking on any of those loads the respective diff in the main frame on the right.
Unfortunately, the change detection website detects ALL changes in the whole HTML file. This means that it cannot be avoided to have false positives, when Sparx changes page layouts or the table headers/footers systematically. As can be seen in the screenshot, the diff between version 12.1 and 13 seems to work quite well :-)
Where can I get the tool and how can I use it?
The tool comes with a minimalistic UI, were source and target version can be selected and after having selected a folder where the results should be saved the process starts to run automatically.
The tool executable is attached to this article and needs an installed .NET framework 4 on the machine. By the time of this writing, EA versions 9.3, 10, 11, 12.0, 12.1 and 13 are supported. An advice of mine is to diff version by version to avoid having too many false positives because of layout changes.
Note that the tool contacts the change detection website and therefore requests an outgoing connection to the internet.
Conclusion
I plan to update the tool every time a new EA version will be shipped so that the attachment will be up-to-date. In case you have comments or find things that don't work as expected, feel free to write a comment here or contact me through mail (This email address is being protected from spambots. You need JavaScript enabled to view it.).