Revapi API

API and common support classes of Revapi.

This module contains the API of Revapi as well as the main class that is used to instantiate, configure and run the API analysis. It also contains a couple of simplistic implementations of the Revapi interfaces to get you started with.

Probably more interesting than this short description is the architecture of Revapi which explains the role of individual interfaces found in this module. Additionally you might wanna checkout the project reports or javadoc.

Invocation

Revapi can be used in a couple of convenient ways - a maven plugin, a cli tool or even an Ant task. Please consult the links for more details about those.

In here we’re only going to deal with the invocation of the API analysis using the Java API when Revapi is used as a library.

First of all, we need to determine what archives we are going to compare. For that Revapi uses the API class:

API oldApi = API.of(myArchiveV1).supportedBy(v1Dependencies).build();
API oldApi = API.of(myArchiveV2).supportedBy(v2Dependencies).build();
Note
The myArchiveV1 and others in the example above are implementations of the archive interface. Revapi API provides a single simple implementation - FileArchive which represents a file as a Revapi archive - quite a useful and fitting thing. There are other implementations, too, though - for example the maven plugin has an implementation of this, too, which wraps a maven archive in a revapi archive and provides the maven archive’s GAV as the revapi archive’s name - quite a useful thing when reporting on what problems were found in which archive.

Configuration

Configuration is supplied using JBoss DMR which should in theory support loading the configuration from various formats if enough effort is done on the user’s side. Revapi as such has so far been extensively tested only with JSON data (support for XML has been added only in Revapi 0.8.0 supported by maven plugin 0.9.0). Even if data was translated into DMR from another format than JSON, the validation of that data will always be done against a JSON schema that is provided by the extensions.

For details, see the AnalysisContext class (and the way it is supplied with configuration by the caller) and Configurable interface for what is required of the extensions.

Back to top

Msb3 Maven skin by Marek Romanowski.