/service-idl

Xtext-based Service IDL (Interface Definition Language) and Code Generators for Protobuf, C++, Java and .NET

Primary LanguageXtendEclipse Public License 2.0EPL-2.0

Build Status

codecov

Download

This repository contains a Service IDL defined in Xtext, and several code generators for C++, Java, .NET and Google Protocol Buffers.

It is currently experimental, and not yet suitable for general use.

Obtaining the standalone command line generator

Releases of the standalone command line generator are available via GitHub or via Artifactory.

Release of the Eclipse plug-ins are currently not made available as an Eclipse update site. This may change in the future.

Usage

See Introduction

Dependencies of generated code

Note: All generated C++ code, and the Proxy/Dispatcher/Codec modules generated by the .NET and Java code generators, currently depend on proprietary libraries. These may be made open-source in the future.

Target technology Main dependency Supported versions
C++ BTC.CAB.ServiceComm[.SQ] cpp.servicecomm: 0.10, 0.11, 0.12
.NET BTC.CAB.ServiceComm.NET dotnet.servicecomm: 0.6, 0.7
Java BTC.CAB.ServiceComm.Java java.servicecomm: 0.3, 0.5

The default version is always the most recent version. An older version may be specified for the command line generator with the -versions parameter, e.g.

java -jar com.btc.serviceidl.plainjava-1.0.0-SNAPSHOT.jar input.idl -outputPath out -cppProjectSystem cmake -versions cpp.servicecomm=0.10

Currently generated .NET code is targeting .NET Framework version 4.6 or any compatible version.

Configuration when using the Eclipse plug-ins

Configuration of the above-mentioned settings is also possible when using the Eclipse plug-ins, although no UI is provided for that.

Properties files can be placed in parallel to the IDL file, either at directory scope (.generator) or at file scope (foo.idl.generator). If both are present, first the settings from the directory scope properties are applied, and then the settings from the file scope properties, which may override the above.

The output directories cannot be configured via the properties files at the moment.

The command line runner also interprets these files. Command line options override both the directory and file scope properties in that case.

An example file would look like this:

languages = java,cpp
cppProjectSystem = cmake
projectSet = full
versions = cpp.servicecomm=0.10

Contributing

See the contribution guidelines.

Frequently Asked Questions

See FAQ.