Skip to content

Commit 6895019

Browse files
authored
Merge branch 'master' into optimiseSessionReset
2 parents 2b9e38f + 644820e commit 6895019

File tree

380 files changed

+27863
-4792
lines changed

Some content is hidden

Large Commits have some content hidden by default. Use the searchbox below for content that may be hidden.

380 files changed

+27863
-4792
lines changed

.github/ISSUE_TEMPLATE/config.yml

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -6,3 +6,6 @@ contact_links:
66
- name: Stack Overflow
77
url: https://stackoverflow.com/questions/ask?tags=quickfixj
88
about: Please ask usage releated questions here and tag your question with "quickfixj".
9+
- name: Discussions
10+
url: https://github.com/quickfix-j/quickfixj/discussions
11+
about: Please ask usage related questions here.

.github/dependabot.yml

Lines changed: 16 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,16 @@
1+
# Please see the documentation for all configuration options:
2+
# https://docs.github.com/github/administering-a-repository/configuration-options-for-dependency-updates
3+
4+
version: 2
5+
updates:
6+
- package-ecosystem: "maven" # See documentation for possible values
7+
directory: "/" # Location of package manifests
8+
schedule:
9+
interval: "daily"
10+
open-pull-requests-limit: 10
11+
- package-ecosystem: "github-actions"
12+
directory: "/"
13+
schedule:
14+
# Check for updates to GitHub Actions every weekday
15+
interval: "daily"
16+
open-pull-requests-limit: 10
Lines changed: 68 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,68 @@
1+
# For most projects, this workflow file will not need changing; you simply need
2+
# to commit it to your repository.
3+
#
4+
# You may wish to alter this file to override the set of languages analyzed,
5+
# or to provide custom queries or build logic.
6+
#
7+
# ******** NOTE ********
8+
# We have attempted to detect the languages in your repository. Please check
9+
# the `language` matrix defined below to confirm you have the correct set of
10+
# supported CodeQL languages.
11+
# ******** NOTE ********
12+
13+
name: "CodeQL"
14+
15+
on:
16+
workflow_dispatch:
17+
push:
18+
branches: [ master ]
19+
pull_request:
20+
# The branches below must be a subset of the branches above
21+
branches: [ master ]
22+
schedule:
23+
- cron: '39 6 * * 0'
24+
25+
jobs:
26+
analyze:
27+
name: Analyze
28+
runs-on: ubuntu-latest
29+
30+
strategy:
31+
fail-fast: false
32+
matrix:
33+
language: [ 'java' ]
34+
# CodeQL supports [ 'cpp', 'csharp', 'go', 'java', 'javascript', 'python' ]
35+
# Learn more:
36+
# https://docs.github.com/github/finding-security-vulnerabilities-and-errors-in-your-code/configuring-code-scanning#changing-the-languages-that-are-analyzed
37+
38+
steps:
39+
- name: Checkout repository
40+
uses: actions/checkout@v4
41+
42+
# Initializes the CodeQL tools for scanning.
43+
- name: Initialize CodeQL
44+
uses: github/codeql-action/init@v3
45+
with:
46+
languages: ${{ matrix.language }}
47+
# If you wish to specify custom queries, you can do so here or in a config file.
48+
# By default, queries listed here will override any specified in a config file.
49+
# Prefix the list here with "+" to use these queries and those in the config file.
50+
# queries: ./path/to/local/query, your-org/your-repo/queries@main
51+
52+
# Autobuild attempts to build any compiled languages (C/C++, C#, or Java).
53+
# If this step fails, then you should remove it and run the build manually (see below)
54+
#- name: Autobuild
55+
# env:
56+
# uses: github/codeql-action/autobuild@v2
57+
58+
# ℹ️ Command-line programs to run using the OS shell.
59+
# 📚 https://git.io/JvXDl
60+
61+
# ✏️ If the Autobuild fails above, remove it and uncomment the following three lines
62+
# and modify them (or add more) to build your code if your project
63+
# uses a compiled language
64+
- run: |
65+
./mvnw clean package -B -V -e -Pminimal-fix-latest -Dmaven.javadoc.skip=true -Dfindbugs.skip -Dcheckstyle.skip -Dpmd.skip=true -Dspotbugs.skip -Denforcer.skip -DskipTests -Dmaven.test.skip.exec -Dlicense.skip=true -Drat.skip=true -Dspotless.check.skip=true -D"java.util.logging.config.file"="logging.properties" -D"http.keepAlive"="false" -D"maven.wagon.http.pool"="false" -D"maven.wagon.httpconnectionManager.ttlSeconds"="120"
66+
67+
- name: Perform CodeQL Analysis
68+
uses: github/codeql-action/analyze@v3

.github/workflows/maven.yml

Lines changed: 58 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,58 @@
1+
name: Java CI
2+
3+
on:
4+
workflow_dispatch:
5+
push:
6+
pull_request:
7+
types: [reopened, opened, synchronize]
8+
schedule:
9+
- cron: '30 5 * * *'
10+
11+
jobs:
12+
test:
13+
runs-on: ${{ matrix.os }}
14+
strategy:
15+
matrix:
16+
os: [ubuntu-latest, macOS-latest]
17+
java: [8, 11, 17]
18+
fail-fast: false
19+
max-parallel: 4
20+
name: Test JDK ${{ matrix.java }}, ${{ matrix.os }}
21+
22+
steps:
23+
- uses: actions/checkout@v4
24+
- name: Set up JDK
25+
uses: actions/setup-java@v4
26+
with:
27+
distribution: 'temurin'
28+
java-version: ${{ matrix.java }}
29+
cache: 'maven'
30+
- name: Test with Maven
31+
run: ./mvnw install -B -V -Pminimal-fix-latest -D"java.util.logging.config.file"="logging.properties" -D"http.keepAlive"="false" -D"maven.wagon.http.pool"="false" -D"maven.wagon.httpconnectionManager.ttlSeconds"="120"
32+
33+
test-windows:
34+
runs-on: ${{ matrix.os }}
35+
strategy:
36+
matrix:
37+
os: [windows-latest]
38+
java: [8, 11, 17]
39+
fail-fast: false
40+
max-parallel: 3
41+
name: Test JDK ${{ matrix.java }}, ${{ matrix.os }}
42+
43+
steps:
44+
- uses: actions/checkout@v4
45+
- name: Configure pagefile
46+
uses: al-cheb/configure-pagefile-action@v1.3
47+
with:
48+
minimum-size: 8GB
49+
maximum-size: 16GB
50+
disk-root: "C:"
51+
- name: Set up Windows JDK
52+
uses: actions/setup-java@v4
53+
with:
54+
distribution: 'temurin'
55+
java-version: ${{ matrix.java }}
56+
cache: 'maven'
57+
- name: Test with Maven on Windows
58+
run: ./mvnw.cmd install -B -V -D"maven.javadoc.skip"="true" -P"skipBundlePlugin,minimal-fix-latest" -D"java.util.logging.config.file"="logging.properties" -D"http.keepAlive"="false" -D"maven.wagon.http.pool"="false" -D"maven.wagon.httpconnectionManager.ttlSeconds"="120"

.gitignore

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -11,3 +11,4 @@ target/
1111
*.iws
1212
# ignore NetBeans configuration
1313
nb-configuration.xml
14+
*.bak

.mvn/jvm.config

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1 @@
1+
-Xms3g -Xmx6g -Djdk.xml.xpathExprGrpLimit=500 -Djdk.xml.xpathExprOpLimit=500
Lines changed: 18 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,18 @@
1+
# Licensed to the Apache Software Foundation (ASF) under one
2+
# or more contributor license agreements. See the NOTICE file
3+
# distributed with this work for additional information
4+
# regarding copyright ownership. The ASF licenses this file
5+
# to you under the Apache License, Version 2.0 (the
6+
# "License"); you may not use this file except in compliance
7+
# with the License. You may obtain a copy of the License at
8+
#
9+
# http://www.apache.org/licenses/LICENSE-2.0
10+
#
11+
# Unless required by applicable law or agreed to in writing,
12+
# software distributed under the License is distributed on an
13+
# "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
14+
# KIND, either express or implied. See the License for the
15+
# specific language governing permissions and limitations
16+
# under the License.
17+
distributionUrl=https://repo.maven.apache.org/maven2/org/apache/maven/apache-maven/3.9.6/apache-maven-3.9.6-bin.zip
18+
wrapperUrl=https://repo.maven.apache.org/maven2/org/apache/maven/wrapper/maven-wrapper/3.2.0/maven-wrapper-3.2.0.jar

.travis.yml

Lines changed: 0 additions & 10 deletions
This file was deleted.

README.md

Lines changed: 64 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -1,15 +1,13 @@
11
QuickFIX/J
22
==========
3-
4-
[![Build Status](https://travis-ci.com/quickfix-j/quickfixj.svg?branch=master)](https://travis-ci.com/quickfix-j/quickfixj)
3+
[![Java CI](https://github.com/quickfix-j/quickfixj/actions/workflows/maven.yml/badge.svg)](https://github.com/quickfix-j/quickfixj/actions/workflows/maven.yml)
4+
[![CodeQL](https://github.com/quickfix-j/quickfixj/actions/workflows/codeql-analysis.yml/badge.svg)](https://github.com/quickfix-j/quickfixj/actions/workflows/codeql-analysis.yml)
55
[![Maven Central](https://maven-badges.herokuapp.com/maven-central/org.quickfixj/quickfixj-core/badge.svg)](https://maven-badges.herokuapp.com/maven-central/org.quickfixj/quickfixj-core)
6-
[![Total alerts](https://img.shields.io/lgtm/alerts/g/quickfix-j/quickfixj.svg?logo=lgtm&logoWidth=18)](https://lgtm.com/projects/g/quickfix-j/quickfixj/alerts/)
7-
[![Language grade: Java](https://img.shields.io/lgtm/grade/java/g/quickfix-j/quickfixj.svg?logo=lgtm&logoWidth=18)](https://lgtm.com/projects/g/quickfix-j/quickfixj/context:java)
86

97
This is the official QuickFIX/J project repository.
108

119
## intro
12-
QuickFIX/J is a full featured messaging engine for the FIX protocol.
10+
QuickFIX/J is a full featured messaging engine for the FIX protocol (FIX versions 4.0 - 5.0SP2/FIXT1.1 and FIXLatest).
1311
It is a 100% Java open source implementation of the popular C++ QuickFIX engine.
1412

1513
The Financial Information eXchange (FIX) protocol is a messaging standard developed
@@ -44,25 +42,45 @@ Pull requests are always welcome! Best is if you added a unit test to show that
4442

4543
Fastest: clone the repo and issue the following command.
4644
```
47-
$ mvn clean package -Dmaven.javadoc.skip=true -DskipTests -PskipBundlePlugin
45+
$ mvnw clean package -Dmaven.javadoc.skip=true -DskipTests -PskipBundlePlugin,minimal-fix-latest
4846
```
4947

5048
Slower: if you only want to skip the acceptance test suite:
5149
```
52-
$ mvn clean package -Dmaven.javadoc.skip=true -DskipAT=true -PskipBundlePlugin
50+
$ mvnw clean package -Dmaven.javadoc.skip=true -DskipAT=true -PskipBundlePlugin,minimal-fix-latest
5351
```
5452

5553
Slow: if you want to run all tests:
5654
```
57-
$ mvn clean package -Dmaven.javadoc.skip=true -PskipBundlePlugin
55+
$ mvnw clean package -Dmaven.javadoc.skip=true -PskipBundlePlugin,minimal-fix-latest
5856
```
5957
NB: If you want to use the resulting JARs in an OSGi environment you'll have to omit the `-PskipBundlePlugin` option.
6058

59+
## importing the project into the IDE
60+
61+
When the project is first created, it will not have the generated message classes and compile errors will occur! Best is to compile once on the command line before importing the project into the IDE.
62+
63+
If the IDE reports some errors after the compilation with `mvnw clean package`, try to use `mvnw clean install`, like:
64+
```
65+
$ mvnw clean install -Dmaven.javadoc.skip=true -DskipTests -PskipBundlePlugin,minimal-fix-latest
66+
```
67+
6168
## configuration options
6269
https://rawgit.com/quickfix-j/quickfixj/master/quickfixj-core/src/main/doc/usermanual/usage/configuration.html
6370

6471
## basics
6572

73+
### example applications
74+
75+
QuickFIX/J includes some example applications in the `quickfixj-examples` module. Moreover, here are some links to example applications:
76+
77+
Examples by Geoffrey Gershaw: https://github.com/ggershaw/Examples
78+
79+
Examples from QuickFIX/J Spring Boot Starter: https://github.com/esanchezros/quickfixj-spring-boot-starter-examples
80+
81+
If you would like to be added to this list, please open a PR with the changes.
82+
83+
6684
### Creating a QuickFIX/J application
6785

6886
Implement the `quickfix.Application` interface.
@@ -77,7 +95,7 @@ Here are explanations of what these functions provide for you.
7795

7896
`onLogout` notifies you when an FIX session is no longer online. This could happen during a normal logout exchange or because of a forced termination or a loss of network connection.
7997

80-
`toAdmin` provides you with a peek at the administrative messages that are being sent from your FIX engine to the counter party. This is normally not useful for an application however it is provided for any logging you may wish to do. Notice that the `quickfix.Message` is mutable. This allows you to add fields before an adminstrative message before it is sent out.
98+
`toAdmin` provides you with a peek at the administrative messages that are being sent from your FIX engine to the counter party. This is normally not useful for an application however it is provided for any logging you may wish to do. Notice that the `quickfix.Message` is mutable. This allows you to add fields to an administrative message before it is sent out.
8199

82100
`toApp` is a callback for application messages that are being sent to a counterparty. If you throw a `DoNotSend` exception in this method, the application will not send the message. This is mostly useful if the application has been asked to resend a message such as an order that is no longer relevant for the current market. Messages that are being resent are marked with the `PossDupFlag` in the header set to true; If a `DoNotSend` exception is thrown and the flag is set to true, a sequence reset will be sent in place of the message. If it is set to false, the message will simply not be sent. Notice that the `quickfix.Message` is mutable. This allows you to add fields to an application message before it is sent out.
83101

@@ -265,3 +283,40 @@ void sendOrderCancelRequest() throws SessionNotFound {
265283
Session.sendToTarget(message, "TW", "TARGET");
266284
}
267285
```
286+
287+
## QuickFIX/J Runtime
288+
289+
This project builds artefacts for the standard published FIX specification versions from FIX 4.0 to FIX Latest.
290+
291+
* ```quickfixj-messages-fix40```
292+
* ```quickfixj-messages-fix41```
293+
* ```quickfixj-messages-fix42```
294+
* ```quickfixj-messages-fix43```
295+
* ```quickfixj-messages-fix44```
296+
* ```quickfixj-messages-fix50```
297+
* ```quickfixj-messages-fix50sp1```
298+
* ```quickfixj-messages-fix50sp2```
299+
* ```quickfixj-messages-fixlatest```
300+
* ```quickfixj-messages-fixt11```
301+
* ```quickfixj-messages-all``` - includes all of the above
302+
303+
These artefacts are <u>**test**</u> dependencies of ```quickfixj-core```. They are **not** specified as _runtime_ dependencies, this makes it easier to customise QuickFIX/J deployments.
304+
305+
If you have no need to customise a FIX integration then you can use the ```org.quickfixj``` artefacts built by this project. Simply include them as dependencies of your application.
306+
307+
Artefacts for unused FIX specification versions can be omitted from your runtime.
308+
Many integrations will not require ```quickfixj-messages-all``` and need only depend on artefacts for a subset of the FIX standard versions. Please note that FIX Protocol versions 5.0 and later depend on ```quickfixj-messages-fixt11``` which provides the implementation for the FIXT1.1 transport messages.
309+
310+
Many integrations require specialisation of the FIX Messages, Components and/or Fields. This is accomplished by building and using custom artefacts. Please see [Customising QuickFIX/J](./customising-quickfixj.md) for more detail.
311+
312+
### Application Dependencies for QuickFIX/J Messages Build
313+
314+
![image info](./src/main/puml/dependencies_fixt11_fixlatest.png)
315+
316+
![image info](./src/main/puml/dependencies_qfj_all.png)
317+
318+
### Application Dependencies for Custom Messages Build
319+
320+
![image info](./src/main/puml/custom_dependencies.png)
321+
322+
![image info](./src/main/puml/custom_dependencies_fixt11_fixlatest.png)

SECURITY.md

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -5,8 +5,8 @@
55

66
| Version | Supported |
77
| ------- | ------------------ |
8-
| 2.1.x | :white_check_mark: |
9-
| < 2.1.x | :x: |
8+
| 2.3.x | :white_check_mark: |
9+
| < 2.2.x | :x: |
1010

1111
## Reporting a Vulnerability
1212

0 commit comments

Comments
 (0)