- org.neclipse.xtext.smalljavadsl - This project contains the grammar for a very simple language that allows us to define Java like classes and attribues inside it.
- org.neclipse.emfcompare.smalljavadsl - This project contains EMF Compare customization code.
- We have customized the FeatureFilter to ignore some of the attributes and references of the SmallJava model. What this means is that the compare framework will completely ignore these attributes(EAttribute) and references(EReference) during the matching phase.
- Secondly, we have customized the DiffBuilder to ignore the differences that don't make much sense to us. This is quiet useful as it enables us to represent a model change as a single change and not multiple changes.
- The ResourceSetCompare provides the compare api that takes two instances of ResourceSet and returns the differences. It defines the comparison scope, the custom matcher and configures the EMFCompare. We have ignored the Equivalences, Requirements and Conflicts phases as we only need the differences.
- The ResourceSetCompareTest contains all the unit-tests. It pretty much covers the important/basic test cases. It makes use of the unit-testing support provided by the xtext framework. Writing the unit-tests in this fashion has been fun and I personally find it easy to maintain. The tests are very clean and self-composed.
- The developer guide is an excellent introduction to how the Compare framework can be customized.