Introduction
Eiffel REMReM Protocol Interface project contains java interfaces that are implemented by Eiffel protocol
Implementing an interface allows a class to become more formal about the behavior it promises to provide. Interfaces form a contract between the class and the outside world, and this contract is enforced at build time by the java compiler.
Installation
This project does not need any installation since it is an interface, which is implemented by other projects.
This project is build by maven, by executing following commands:
mvn clean install
The produced jar file will be stored in /eiffel-remrem-protocol-interface/target/
Configuration
This project does not need any configuration since it is an interface, which is implemented by other projects.
Compatibility
All message services need to implement interface provided by this project to communicate properly.
Usage
Eiffel REMReM Protocol Interface contains interface MsgService. This interface contains set of general methods that should perform common tasks for generating Eiffel message. A main purpose of MsgService interface is to allow access only through well-defined entry points. This entry points will establish a communication layer (protocol) between messagebus technologies and rest of Eiffel project to accomplish technology agnosticism, ability to secure message bus entry/exit points and validation of Eiffel message. Interface methods are listed bellow with description.
- Method generateMsg takes a partial message and returns a valid Eiffel message.
- Method getEventId returns the Event ID from Eiffel message.
- Method getEventType returns the Event type from Eiffel message.
- Method getSupportedEventTypes returns collection of supported event types.
- Method getEventTemplate returns Eiffel message template.
- Method getServiceName returns service name from the messaging library.
- Method validateMsg validates the Eiffel message.
- Method generateRoutingKey returns routing key from the messaging library based on the Eiffel message eventType.
To create new version of protocol one will need to modify the interface, change the java api docs for methods to represent new version of interface and build the jar using maven. Include builded jar as external library in other projects and in these project implement the desired interface.
To import the project user need to add to pom.xml
<repositories> <repository> <id>jitpack.io</id> <url>https://jitpack.io</url> </repository> </repositories>
<dependency> <groupId>com.github.Ericsson</groupId> <artifactId>eiffel-remrem-protocol-interface</artifactId> <version>x.x.x</version> </dependency>
Or import the project to pom.xml
repositories { ... maven { url 'https://jitpack.io' } }
dependencies { compile("com.github.Ericsson:eiffel-remrem-protocol-interface:x.x.x") }
Currently interface implementation is in eiffel-remrem-semantics
The current version of Eiffel Protocol 2.0 is Toulouse