The Functional Items Management Validator is a useful development tool for writing annotations which validates the consistency of FIM API annotations used by applications to make sure they are used properly. This tool represents the standard java annotations processor javax.annotation.processing.Processor implementation.
The FIM Validator is included in the mToolkit installation. The bundle is located in the ../lib/tools/ folder and its name is com.prosyst.mbs.fim.validator.jar.
The utility provides integration with build tools such as Ant, Maven and Gradle through javac support for annotation processors. In order to use it in conjunction with build utilities you have to add its jar to the class-path of javac. For example, the Maven POM dependencies section could be used:
<dependency>
<groupId>com.prosyst.mbs.fim</groupId>
<artifactId>com.prosyst.mbs.fim.api</artifactId>
<version>2.0.0</version>
</dependency>
<dependency>
<groupId>com.prosyst.mbs.fim</groupId>
<artifactId>com.prosyst.mbs.fim.validator</artifactId>
<version>2.0.0</version>
</dependency>
The groupId and artifactId are dependent on your Maven repository.
Annotation processors can be contained in jar files.
The FIM Validator requires Java 1.6 and works with different Java IDEs GUI. It works together with M2E with the help of M2E-APT extension plug-in from JBoss. The latest updates on the JBoss can be found here: http://download.jboss.org/jbosstools/updates/m2e-extensions/m2e-apt.
Please be noted that JBoss extension requires at least M2E 1.5.
The FIM Validator is added in FIM Demos and demos POM files can be checked.
Example:
<parent>
<groupId>com.prosyst.mbs.fim</groupId>
<artifactId>com.prosyst.mbs.fim.demos.pom</artifactId>
<version>2.0.0</version>
<relativePath>../pom.xml</relativePath>
</parent>
<!-- artifactId *must* end with -demo -->
<artifactId>com.prosyst.mbs.fim.simple-demo</artifactId>
<name>FIM :: Demos :: Simple</name>
<dependencies>
<dependency>
<groupId>com.prosyst.mbs.fim</groupId>
<artifactId>com.prosyst.mbs.fim.validator</artifactId>
<version>${project.version}</version>
<scope>compile</scope>
</dependency>
</dependencies>