Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Spike #2

Open
wants to merge 41 commits into
base: main
Choose a base branch
from
Open
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
41 commits
Select commit Hold shift + click to select a range
6b4531b
before removing exclude session option
david-gibbs-ig Mar 8, 2022
73e5f5e
removed exclude session option
david-gibbs-ig Mar 8, 2022
b5e2406
spike for orchestra to apache avro schema generator
david-gibbs-ig Mar 11, 2022
acf6194
updated readme
david-gibbs-ig Mar 11, 2022
c7089a4
added option to normalise groups and components
david-gibbs-ig Mar 14, 2022
b15b5ed
Merge pull request #1 from IG-Group/spike
david-gibbs-ig Mar 14, 2022
9d8f659
updated project structure and readmes
david-gibbs-ig Mar 15, 2022
c65013a
updated dependency property name
david-gibbs-ig Mar 15, 2022
20e4a59
updated the name of injected default symbol in code set
david-gibbs-ig Mar 28, 2022
02e7edb
Merge branch 'spike' of github.com:FIXTradingCommunity/fix-orchestra-…
david-gibbs-ig Mar 28, 2022
831c8b3
updated case for generated member names
david-gibbs-ig Mar 31, 2022
b3a21d2
Merge branch 'spike' of github.com:IG-Group/fix-orchestra-avro into s…
david-gibbs-ig Mar 31, 2022
d0f1d31
added github actions
david-gibbs-ig Apr 2, 2022
645f95d
run install on branches except master
david-gibbs-ig Apr 2, 2022
7d00e2e
run install on branches except master
david-gibbs-ig Apr 2, 2022
08cf3a8
run install on branches except master
david-gibbs-ig Apr 2, 2022
78ffae6
Spike (#1)
david-gibbs-ig Apr 2, 2022
ce277d6
Ig mvn coord branch (#2)
david-gibbs-ig Apr 4, 2022
896b213
Ig mvn coord branch (#3)
david-gibbs-ig Apr 4, 2022
6bb70b6
Ig mvn coord branch (#4)
david-gibbs-ig Apr 4, 2022
0ca18df
[maven-release-plugin] prepare release repository-avro-parent-1.0.0
invalid-email-address Apr 4, 2022
60a1cad
[maven-release-plugin] prepare for next development iteration
invalid-email-address Apr 4, 2022
0af217f
Ig mvn coord branch (#5)
david-gibbs-ig Apr 4, 2022
f822c9d
[maven-release-plugin] prepare release repository-avro-parent-1.0.1
invalid-email-address Apr 4, 2022
43abba1
[maven-release-plugin] prepare for next development iteration
invalid-email-address Apr 4, 2022
33717a3
[maven-release-plugin] prepare release repository-avro-parent-1.0.2
invalid-email-address Apr 4, 2022
368d3d8
[maven-release-plugin] prepare for next development iteration
invalid-email-address Apr 4, 2022
dbaad50
Ig mvn coord branch (#6)
david-gibbs-ig Apr 4, 2022
c8c8f21
[maven-release-plugin] prepare release release-1.0.3
invalid-email-address Apr 4, 2022
8715b05
[maven-release-plugin] prepare for next development iteration
invalid-email-address Apr 4, 2022
ebb99cb
Ig mvn coord branch (#7)
david-gibbs-ig Apr 4, 2022
62cecea
[maven-release-plugin] prepare release release-1.0.4
invalid-email-address Apr 4, 2022
2f82129
[maven-release-plugin] prepare for next development iteration
invalid-email-address Apr 4, 2022
0a38448
Ig mvn coord branch (#8)
david-gibbs-ig Apr 4, 2022
5fbd3a1
[maven-release-plugin] prepare release release-1.0.5
invalid-email-address Apr 4, 2022
6e88d33
[maven-release-plugin] prepare for next development iteration
invalid-email-address Apr 4, 2022
210c163
merged main
david-gibbs-ig Apr 5, 2022
5760bba
deleted duplicate files
david-gibbs-ig Apr 5, 2022
9d684b5
change version to allow for iterations to get the release build working
david-gibbs-ig Apr 9, 2022
5e8081f
added use of DatatypeMapping as per review comments
david-gibbs-ig Apr 19, 2022
9877de0
added support for Avro logical types
david-gibbs-ig Apr 19, 2022
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
42 changes: 42 additions & 0 deletions .github/workflows/install.yml
Original file line number Diff line number Diff line change
@@ -0,0 +1,42 @@
# This is a basic workflow to help you get started with Actions

name: Maven Install

# Controls when the action will run.
on:
# Triggers the workflow on push or pull request events but not for the master branch
push:
branches:
- '*'
- '!main'

# Allows you to run this workflow manually from the Actions tab
workflow_dispatch:

# A workflow run is made up of one or more jobs that can run sequentially or in parallel
jobs:
# This workflow contains a single job called "build"
build:
# The type of runner that the job will run on
runs-on: ubuntu-latest
#when repo is slow then it can take north of 10 minutes to validate
timeout-minutes: 20
# Steps represent a sequence of tasks that will be executed as part of the job
steps:
# Checks-out your repository under $GITHUB_WORKSPACE, so your job can access it
- uses: actions/checkout@v2
# see https://github.com/actions/setup-java
- name: Set up JDK 11 and .m2/settings.xml
uses: actions/setup-java@v1
with:
java-version: 11
server-id: ossrh
- name: Configure Git user
run: |
git config user.name github-actions
git config user.email [email protected]
# see https://blog.frankel.ch/github-actions-maven-releases/
- id: install
name: maven install
run: mvn --no-transfer-progress --batch-mode install

56 changes: 56 additions & 0 deletions .github/workflows/release-and-publish.yml
Original file line number Diff line number Diff line change
@@ -0,0 +1,56 @@
# This is a basic workflow to help you get started with Actions

name: Release and Publish to OSSRH (maven central)

# Controls when the action will run.
on:
# Triggers the workflow on push or pull request events but only for the master branch
push:
branches: [ main ]

# Allows you to run this workflow manually from the Actions tab
workflow_dispatch:

# A workflow run is made up of one or more jobs that can run sequentially or in parallel
jobs:
# This workflow contains a single job called "build"
build:
# The type of runner that the job will run on
runs-on: ubuntu-latest
#when repo is slow then it can take north of 10 minutes to validate
timeout-minutes: 20
# Steps represent a sequence of tasks that will be executed as part of the job
steps:
# Checks-out your repository under $GITHUB_WORKSPACE, so your job can access it
- uses: actions/checkout@v2
# see https://github.com/actions/setup-java
- name: Set up JDK 11 and .m2/settings.xml
uses: actions/setup-java@v1
with:
java-version: 11
server-id: ossrh
server-username: MAVEN_USERNAME # env variable for username in release:perform
server-password: MAVEN_CENTRAL_TOKEN # env variable for token in release:perform
gpg-private-key: ${{ secrets.OSSRH_GPG_SECRET_KEY }} # Value of the GPG private key to import
gpg-passphrase: MAVEN_GPG_PASSPHRASE # env variable for GPG private key passphrase
- name: Configure Git user
run: |
git config user.name github-actions
git config user.email [email protected]
# see https://blog.frankel.ch/github-actions-maven-releases/
- id: release-prepare
name: release prepare
env:
MAVEN_GPG_PASSPHRASE: ${{ secrets.OSSRH_GPG_SECRET_KEY_PASSWORD }}
run: mvn --no-transfer-progress --batch-mode release:prepare
- id: release-perform
name: release perform
env:
MAVEN_USERNAME: ${{ secrets.OSSRH_USERNAME }}
MAVEN_CENTRAL_TOKEN: ${{ secrets.OSSRH_TOKEN }}
MAVEN_GPG_PASSPHRASE: ${{ secrets.OSSRH_GPG_SECRET_KEY_PASSWORD }}
run: |
mvn \
--no-transfer-progress \
--batch-mode \
release:perform
5 changes: 5 additions & 0 deletions .gitignore
Original file line number Diff line number Diff line change
Expand Up @@ -21,3 +21,8 @@

# virtual machine crash logs, see http://www.java.com/en/download/help/error_hotspot.xml
hs_err_pid*
**/.project
**/.settings
**/.classpath
**/target
**/bin
Binary file added FIXorchestraLogo.png
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
33 changes: 31 additions & 2 deletions README.md
Original file line number Diff line number Diff line change
@@ -1,2 +1,31 @@
# fix-orchestra-avro
The repository contains utilities for integration of FIX Orchestra and Apache Avro
# Repository To Avro Tools

![](FIXorchestraLogo.png)

The repository contains utilities for integration of FIX Orchestra and Apache Avro.

* FIX Orchestra is intended to provide a standard and some reference implementations for machine readable rules of engagement between counterparties. A customisation of the FIX Orchestra specification for a specific Rules of Engagement is know as an "orchestration". FIX Orchestra is intended to be customised.

* [Apache Avro™](https://avro.apache.org/docs/current/index.html) is a data serialization system. One the features it provides is a binary data format that is widely used in [Apache Kafka](https://kafka.apache.org/) integrations. Avro can similarly be used in JMS implementations and other use cases. Avro data serialization uses Avro schemas defined in JSON.

Since FIX version 5.0 there has been a logical distinction between the FIX transport and the FIX Application messages. FIX *Messages* can be exchanged using diverse transports. The generation of Avro Schemas from a FIX Orchestra repository supports cases where Avro is used for serialisation of FIX *Messages*. Using Avro schemas generated from FIX Orchestra may be challenging. Please see the ```repository-to-avro-examples```.

These challenges can be mitigated by customising the FIX Orchestration to reduce its complexity. FIX Orchestra is intended to be customised to adapt the Orchestration to the users' specific requirements and in this case to Avro. Without customisation a full FIX ExecutionReport, for example, won't compile : ``` error: code too large```. Customisation may include the removal of fields associated with the FIX transport (Session).

This Avro schema generation creates separate schemas for each FIX *Message*. Generated schemas artefacts may be used as constituents of other schemas, for example one may elect to use a union to permit a schema to contain more than one *Message" type. To allow flexibilty according to the users' requirements the repository-to-avro schema generation does not prescribe the containing/envelope schema.

```repository-to-avro``` supports options for the schema generation, please see the readme documents in the child projects for details

At time of writing the FIX Standard Orchestration needs some changes to work with Avro code generation for Java. This is accomplished with a simple ```xslt``` transformation that can be found in the build.

```xslt``` may be used for schema customisation but please refer to the FIX Orchestra projects for additional tools.

## Modules

* repository-to-avro : Generates an Avro schema corresponding to the supplied FIX Orchestra repository.

* repository-to-avro-maven-plugin : Faciliates FIX Orchestra repository to Avro Schema generation in [Apache Maven](https://maven.apache.org/) projects.

* repository-to-avro-examples : Examples using the generated schema
* repository-to-avro-example : Example using the generated schema
* repository-to-avro-example-normalised : Example using the generated schema with normalised Components and Groups written to separate files.
Loading