├── .gitignore ├── CHANGELOG.md ├── CODE_OF_CONDUCT.md ├── CONTRIBUTING.md ├── DockerfileClient ├── DockerfileServer ├── FIX_ARCH.png ├── FIX_CLIENT.png ├── FIX_SERVER.png ├── FIX_SERVER_NO_RESILIENCE.png ├── FIX_vs_legacy_ARCH.png ├── LICENSE ├── LICENSE.md ├── LICENSE.txt ├── README.md ├── build.gradle ├── build └── libs │ └── fixengineonaws.jar ├── buildSrc └── build.gradle ├── cloudformation ├── FIXEngineApplication.json ├── FIXEngineApplication.yml ├── FIXEngineVPCApplication.json └── FIXEngineVPCApplication.yml ├── images ├── ecs-cloudwatch.png ├── ecs-stop-task.png ├── fix-client-cf-1.png ├── fix-client-cf-2.png ├── fix-server-cf-1.png ├── fix-server-cf-2.png ├── fix-server-cf-3.png ├── fix-test-terminals.png ├── ga-dnsname.png └── msk-brokers.png ├── lib ├── Saxon-HE-9.8.0-4.jar ├── Saxon-HE-9.8.0-4.license ├── aws-java-sdk-core-1.11.906.jar ├── aws-java-sdk-core-1.11.906.license ├── aws-java-sdk-globalaccelerator-1.11.906.jar ├── aws-java-sdk-globalaccelerator-1.11.906.license ├── aws-java-sdk-route53-1.11.906.jar ├── aws-java-sdk-route53-1.11.906.license ├── aws-java-sdk-secretsmanager-1.11.906.jar ├── aws-java-sdk-secretsmanager-1.11.906.license ├── aws-java-sdk-ssm-1.11.906.jar ├── aws-java-sdk-ssm-1.11.906.license ├── commons-pool2-2.9.0.jar ├── dom4j-2.1.3.jar ├── dom4j-2.1.3.license ├── hamcrest-core-1.3.jar ├── httpclient-4.5.13.jar ├── httpclient-4.5.13.license ├── httpcore-4.4.13.jar ├── httpcore-4.4.13.license ├── jackson-annotations-2.12.3.jar ├── jackson-annotations-2.12.3.license ├── jackson-core-2.12.3.jar ├── jackson-core-2.12.3.license ├── jackson-databind-2.12.3.jar ├── jackson-databind-2.12.3.license ├── jackson-dataformat-cbor-2.6.7.jar ├── jackson-dataformat-cbor-2.6.7.license ├── jaxen-1.2.0.jar ├── jaxen-1.2.0.license ├── jcl-over-slf4j-1.7.30.jar ├── jcl-over-slf4j-1.7.30.license ├── jedis-3.6.3.jar ├── joda-time-2.8.1.jar ├── joda-time-2.8.1.license ├── json-simple-1.1.1.jar ├── json-simple-1.1.1.license ├── junit-4.13.2.jar ├── kafka-clients-2.8.0.jar ├── kafka-clients-2.8.0.license ├── mariadb-java-client-2.7.0.jar ├── mariadb-java-client-2.7.0.license ├── mina-core-2.1.3.jar ├── mina-core-2.1.5.license ├── proxool-0.9.1.jar ├── proxool-0.9.1.license ├── proxool-cglib-0.9.1.jar ├── proxool-cglib-0.9.1.license ├── quickfixj-core-2.2.0.jar ├── quickfixj-core-2.2.0.license ├── quickfixj-messages-all-2.2.0.jar ├── quickfixj-messages-all-2.2.0.license ├── slf4j-api-1.7.30.jar ├── slf4j-api-1.7.30.license ├── slf4j-jdk14-1.7.30.jar └── slf4j-jdk14-1.7.30.license ├── scripts ├── dockerbuild.sh ├── runtestclient.sh └── runtestserver.sh ├── settings.gradle ├── sql ├── create.sh └── create_mysql_objects.sql └── src ├── main ├── java │ └── com │ │ └── amazonaws │ │ └── fixengineonaws │ │ ├── FixEngine.java │ │ ├── FixEngineConfig.java │ │ ├── RedisSetting.java │ │ ├── RedisStore.java │ │ ├── RedisStoreFactory.java │ │ ├── RedisStoreTest.java │ │ ├── TestClient.java │ │ └── TestServer.java ├── quickfix │ └── AbstractMessageStoreTest.java └── resources │ └── config │ ├── FIX42.xml │ ├── client-local.config │ ├── client.cfg │ ├── client.config │ ├── server-local.config │ ├── server.cfg │ ├── server.config │ ├── test-client-local.config │ ├── test-client.cfg │ ├── test-client.config │ ├── test-server-local.config │ ├── test-server.cfg │ └── test-server.config └── test └── java ├── com └── amazonaws │ └── fixengineonaws │ ├── FixEncoderDecoderDemo.java │ └── TestClient.java ├── config ├── FIX42.xml ├── test-client.cfg └── test-server.cfg └── scripts ├── runtestclient.sh └── runtestserver.sh /.gitignore: -------------------------------------------------------------------------------- 1 | .gradle 2 | build 3 | buildSrc 4 | -------------------------------------------------------------------------------- /CHANGELOG.md: -------------------------------------------------------------------------------- 1 | # Change Log 2 | All notable changes to this project will be documented in this file. 3 | 4 | The format is based on [Keep a Changelog](https://keepachangelog.com/en/1.0.0/), 5 | and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0.html). 6 | 7 | ## [v 1.2] - 08/13/21 8 | ### Added CHANGELOG 9 | - tracking changes from now on 10 | - Added multiple FIX version support and expanded documentation to include testing and re-building and updated dependencies to address security vulnerabilities 11 | 12 | ## [v 1.1] - 1/14/21 13 | ### Added 14 | - Fully documented stable version inlcuding test client 15 | 16 | ## [v 1.0] - 12/7/20 17 | ### Added 18 | - Initial stable release 19 | -------------------------------------------------------------------------------- /CODE_OF_CONDUCT.md: -------------------------------------------------------------------------------- 1 | ## Code of Conduct 2 | This project has adopted the [Amazon Open Source Code of Conduct](https://aws.github.io/code-of-conduct). 3 | For more information see the [Code of Conduct FAQ](https://aws.github.io/code-of-conduct-faq) or contact 4 | opensource-codeofconduct@amazon.com with any additional questions or comments. 5 | -------------------------------------------------------------------------------- /CONTRIBUTING.md: -------------------------------------------------------------------------------- 1 | # Contributing Guidelines 2 | 3 | Thank you for your interest in contributing to our project. Whether it's a bug report, new feature, correction, or additional 4 | documentation, we greatly value feedback and contributions from our community. 5 | 6 | Please read through this document before submitting any issues or pull requests to ensure we have all the necessary 7 | information to effectively respond to your bug report or contribution. 8 | 9 | 10 | ## Reporting Bugs/Feature Requests 11 | 12 | We welcome you to use the GitHub issue tracker to report bugs or suggest features. 13 | 14 | When filing an issue, please check existing open, or recently closed, issues to make sure somebody else hasn't already 15 | reported the issue. Please try to include as much information as you can. Details like these are incredibly useful: 16 | 17 | * A reproducible test case or series of steps 18 | * The version of our code being used 19 | * Any modifications you've made relevant to the bug 20 | * Anything unusual about your environment or deployment 21 | 22 | 23 | ## Contributing via Pull Requests 24 | Contributions via pull requests are much appreciated. Before sending us a pull request, please ensure that: 25 | 26 | 1. You are working against the latest source on the *main* branch. 27 | 2. You check existing open, and recently merged, pull requests to make sure someone else hasn't addressed the problem already. 28 | 3. You open an issue to discuss any significant work - we would hate for your time to be wasted. 29 | 30 | To send us a pull request, please: 31 | 32 | 1. Fork the repository. 33 | 2. Modify the source; please focus on the specific change you are contributing. If you also reformat all the code, it will be hard for us to focus on your change. 34 | 3. Ensure local tests pass. 35 | 4. Commit to your fork using clear commit messages. 36 | 5. Send us a pull request, answering any default questions in the pull request interface. 37 | 6. Pay attention to any automated CI failures reported in the pull request, and stay involved in the conversation. 38 | 39 | GitHub provides additional document on [forking a repository](https://help.github.com/articles/fork-a-repo/) and 40 | [creating a pull request](https://help.github.com/articles/creating-a-pull-request/). 41 | 42 | 43 | ## Finding contributions to work on 44 | Looking at the existing issues is a great way to find something to contribute on. As our projects, by default, use the default GitHub issue labels (enhancement/bug/duplicate/help wanted/invalid/question/wontfix), looking at any 'help wanted' issues is a great place to start. 45 | 46 | 47 | ## Code of Conduct 48 | This project has adopted the [Amazon Open Source Code of Conduct](https://aws.github.io/code-of-conduct). 49 | For more information see the [Code of Conduct FAQ](https://aws.github.io/code-of-conduct-faq) or contact 50 | opensource-codeofconduct@amazon.com with any additional questions or comments. 51 | 52 | 53 | ## Security issue notifications 54 | If you discover a potential security issue in this project we ask that you notify AWS/Amazon Security via our [vulnerability reporting page](http://aws.amazon.com/security/vulnerability-reporting/). Please do **not** create a public github issue. 55 | 56 | 57 | ## Licensing 58 | 59 | See the [LICENSE](LICENSE) file for our project's licensing. We will ask you to confirm the licensing of your contribution. 60 | -------------------------------------------------------------------------------- /DockerfileClient: -------------------------------------------------------------------------------- 1 | FROM amazonlinux:latest 2 | 3 | RUN yum update -y 4 | 5 | # RUN amazon-linux-extras enable corretto8 6 | RUN yum install java-1.8.0-amazon-corretto-devel -y 7 | 8 | RUN mkdir -p fixengineonaws/libs 9 | 10 | RUN mkdir -p fixengineonaws/config 11 | 12 | COPY build/libs/fixengineonaws.jar /fixengineonaws/ 13 | 14 | COPY lib/*.* /fixengineonaws/libs/ 15 | 16 | COPY src/main/resources/config/server.cfg /fixengineonaws/config 17 | 18 | COPY src/main/resources/config/client.cfg /fixengineonaws/config 19 | 20 | WORKDIR /fixengineonaws 21 | 22 | # CMD java -jar ./libs/fixengineonaws.jar ./config/server.cfg 23 | 24 | CMD java -cp /fixengineonaws/fixengineonaws.jar:/fixengineonaws/libs/* com.amazonaws.fixengineonaws.FixEngine ./config/client.cfg 25 | 26 | 27 | -------------------------------------------------------------------------------- /DockerfileServer: -------------------------------------------------------------------------------- 1 | FROM amazonlinux:latest 2 | 3 | RUN yum update -y 4 | 5 | # RUN amazon-linux-extras enable corretto8 6 | RUN yum install java-1.8.0-amazon-corretto-devel -y 7 | 8 | RUN mkdir -p fixengineonaws/libs 9 | 10 | RUN mkdir -p fixengineonaws/config 11 | 12 | COPY build/libs/fixengineonaws.jar /fixengineonaws/ 13 | 14 | COPY lib/*.* /fixengineonaws/libs/ 15 | 16 | COPY src/main/resources/config/server.cfg /fixengineonaws/config 17 | 18 | COPY src/main/resources/config/client.cfg /fixengineonaws/config 19 | 20 | WORKDIR /fixengineonaws 21 | 22 | # CMD java -jar ./libs/fixengineonaws.jar ./config/server.cfg 23 | 24 | CMD java -cp /fixengineonaws/fixengineonaws.jar:/fixengineonaws/libs/* com.amazonaws.fixengineonaws.FixEngine ./config/server.cfg 25 | 26 | 27 | -------------------------------------------------------------------------------- /FIX_ARCH.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/aws-samples/amazon-resilient-fix-engine-demo/29ee6f3d30cf53fb2037254aa6de23ee31f2f0e4/FIX_ARCH.png -------------------------------------------------------------------------------- /FIX_CLIENT.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/aws-samples/amazon-resilient-fix-engine-demo/29ee6f3d30cf53fb2037254aa6de23ee31f2f0e4/FIX_CLIENT.png -------------------------------------------------------------------------------- /FIX_SERVER.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/aws-samples/amazon-resilient-fix-engine-demo/29ee6f3d30cf53fb2037254aa6de23ee31f2f0e4/FIX_SERVER.png -------------------------------------------------------------------------------- /FIX_SERVER_NO_RESILIENCE.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/aws-samples/amazon-resilient-fix-engine-demo/29ee6f3d30cf53fb2037254aa6de23ee31f2f0e4/FIX_SERVER_NO_RESILIENCE.png -------------------------------------------------------------------------------- /FIX_vs_legacy_ARCH.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/aws-samples/amazon-resilient-fix-engine-demo/29ee6f3d30cf53fb2037254aa6de23ee31f2f0e4/FIX_vs_legacy_ARCH.png -------------------------------------------------------------------------------- /LICENSE: -------------------------------------------------------------------------------- 1 | Copyright Amazon.com, Inc. or its affiliates. All Rights Reserved. 2 | 3 | Permission is hereby granted, free of charge, to any person obtaining a copy of 4 | this software and associated documentation files (the "Software"), to deal in 5 | the Software without restriction, including without limitation the rights to 6 | use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of 7 | the Software, and to permit persons to whom the Software is furnished to do so. 8 | 9 | THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR 10 | IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS 11 | FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR 12 | COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER 13 | IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN 14 | CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. 15 | 16 | -------------------------------------------------------------------------------- /LICENSE.md: -------------------------------------------------------------------------------- 1 | Copyright 2021 Amazon.com, Inc. or its affiliates. All Rights Reserved. 2 | 3 | Permission is hereby granted, free of charge, to any person obtaining a copy of 4 | this software and associated documentation files (the "Software"), to deal in 5 | the Software without restriction, including without limitation the rights to 6 | use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of 7 | the Software, and to permit persons to whom the Software is furnished to do so. 8 | 9 | THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR 10 | IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS 11 | FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR 12 | COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER 13 | IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN 14 | CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. 15 | 16 | -------------------------------------------------------------------------------- /LICENSE.txt: -------------------------------------------------------------------------------- 1 | The QuickFIX Software License, Version 1.0 2 | 3 | Copyright (c) 2001-2005 quickfixengine.org All rights 4 | reserved. 5 | 6 | Redistribution and use in source and binary forms, with or without 7 | modification, are permitted provided that the following conditions 8 | are met: 9 | 10 | 1. Redistributions of source code must retain the above copyright 11 | notice, this list of conditions and the following disclaimer. 12 | 13 | 2. Redistributions in binary form must reproduce the above copyright 14 | notice, this list of conditions and the following disclaimer in 15 | the documentation and/or other materials provided with the 16 | distribution. 17 | 18 | 3. The end-user documentation included with the redistribution, 19 | if any, must include the following acknowledgment: 20 | "This product includes software developed by 21 | quickfixengine.org (http://www.quickfixengine.org/)." 22 | Alternately, this acknowledgment may appear in the software itself, 23 | if and wherever such third-party acknowledgments normally appear. 24 | 25 | 4. The names "QuickFIX" and "quickfixengine.org" must 26 | not be used to endorse or promote products derived from this 27 | software without prior written permission. For written 28 | permission, please contact ask@quickfixengine.org 29 | 30 | 5. Products derived from this software may not be called "QuickFIX", 31 | nor may "QuickFIX" appear in their name, without prior written 32 | permission of quickfixengine.org 33 | 34 | THIS SOFTWARE IS PROVIDED ``AS IS'' AND ANY EXPRESSED OR IMPLIED 35 | WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES 36 | OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE 37 | DISCLAIMED. IN NO EVENT SHALL QUICKFIXENGINE.ORG OR 38 | ITS CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, 39 | SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT 40 | LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF 41 | USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND 42 | ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, 43 | OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT 44 | OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF 45 | SUCH DAMAGE. 46 | 47 | 48 | Apache License 49 | Version 2.0, January 2004 50 | 51 | TERMS AND CONDITIONS FOR USE, REPRODUCTION, AND DISTRIBUTION 52 | 53 | 1. Definitions. 54 | 55 | "License" shall mean the terms and conditions for use, reproduction, and distribution as defined by Sections 1 through 9 of this document. 56 | 57 | "Licensor" shall mean the copyright owner or entity authorized by the copyright owner that is granting the License. 58 | 59 | "Legal Entity" shall mean the union of the acting entity and all other entities that control, are controlled by, or are under common control with that entity. For the purposes of this definition, "control" means (i) the power, direct or indirect, to cause the direction or management of such entity, whether by contract or otherwise, or (ii) ownership of fifty percent (50%) or more of the outstanding shares, or (iii) beneficial ownership of such entity. 60 | 61 | "You" (or "Your") shall mean an individual or Legal Entity exercising permissions granted by this License. 62 | 63 | "Source" form shall mean the preferred form for making modifications, including but not limited to software source code, documentation source, and configuration files. 64 | 65 | "Object" form shall mean any form resulting from mechanical transformation or translation of a Source form, including but not limited to compiled object code, generated documentation, and conversions to other media types. 66 | 67 | "Work" shall mean the work of authorship, whether in Source or Object form, made available under the License, as indicated by a copyright notice that is included in or attached to the work (an example is provided in the Appendix below). 68 | 69 | "Derivative Works" shall mean any work, whether in Source or Object form, that is based on (or derived from) the Work and for which the editorial revisions, annotations, elaborations, or other modifications represent, as a whole, an original work of authorship. For the purposes of this License, Derivative Works shall not include works that remain separable from, or merely link (or bind by name) to the interfaces of, the Work and Derivative Works thereof. 70 | 71 | "Contribution" shall mean any work of authorship, including the original version of the Work and any modifications or additions to that Work or Derivative Works thereof, that is intentionally submitted to Licensor for inclusion in the Work by the copyright owner or by an individual or Legal Entity authorized to submit on behalf of the copyright owner. For the purposes of this definition, "submitted" means any form of electronic, verbal, or written communication sent to the Licensor or its representatives, including but not limited to communication on electronic mailing lists, source code control systems, and issue tracking systems that are managed by, or on behalf of, the Licensor for the purpose of discussing and improving the Work, but excluding communication that is conspicuously marked or otherwise designated in writing by the copyright owner as "Not a Contribution." 72 | 73 | "Contributor" shall mean Licensor and any individual or Legal Entity on behalf of whom a Contribution has been received by Licensor and subsequently incorporated within the Work. 74 | 75 | 2. Grant of Copyright License. Subject to the terms and conditions of this License, each Contributor hereby grants to You a perpetual, worldwide, non-exclusive, no-charge, royalty-free, irrevocable copyright license to reproduce, prepare Derivative Works of, publicly display, publicly perform, sublicense, and distribute the Work and such Derivative Works in Source or Object form. 76 | 77 | 3. Grant of Patent License. Subject to the terms and conditions of this License, each Contributor hereby grants to You a perpetual, worldwide, non-exclusive, no-charge, royalty-free, irrevocable (except as stated in this section) patent license to make, have made, use, offer to sell, sell, import, and otherwise transfer the Work, where such license applies only to those patent claims licensable by such Contributor that are necessarily infringed by their Contribution(s) alone or by combination of their Contribution(s) with the Work to which such Contribution(s) was submitted. If You institute patent litigation against any entity (including a cross-claim or counterclaim in a lawsuit) alleging that the Work or a Contribution incorporated within the Work constitutes direct or contributory patent infringement, then any patent licenses granted to You under this License for that Work shall terminate as of the date such litigation is filed. 78 | 79 | 4. Redistribution. You may reproduce and distribute copies of the Work or Derivative Works thereof in any medium, with or without modifications, and in Source or Object form, provided that You meet the following conditions: 80 | 81 | 1. You must give any other recipients of the Work or Derivative Works a copy of this License; and 82 | 2. You must cause any modified files to carry prominent notices stating that You changed the files; and 83 | 3. You must retain, in the Source form of any Derivative Works that You distribute, all copyright, patent, trademark, and attribution notices from the Source form of the Work, excluding those notices that do not pertain to any part of the Derivative Works; and 84 | 4. If the Work includes a "NOTICE" text file as part of its distribution, then any Derivative Works that You distribute must include a readable copy of the attribution notices contained within such NOTICE file, excluding those notices that do not pertain to any part of the Derivative Works, in at least one of the following places: within a NOTICE text file distributed as part of the Derivative Works; within the Source form or documentation, if provided along with the Derivative Works; or, within a display generated by the Derivative Works, if and wherever such third-party notices normally appear. The contents of the NOTICE file are for informational purposes only and do not modify the License. You may add Your own attribution notices within Derivative Works that You distribute, alongside or as an addendum to the NOTICE text from the Work, provided that such additional attribution notices cannot be construed as modifying the License. 85 | 86 | You may add Your own copyright statement to Your modifications and may provide additional or different license terms and conditions for use, reproduction, or distribution of Your modifications, or for any such Derivative Works as a whole, provided Your use, reproduction, and distribution of the Work otherwise complies with the conditions stated in this License. 87 | 88 | 5. Submission of Contributions. Unless You explicitly state otherwise, any Contribution intentionally submitted for inclusion in the Work by You to the Licensor shall be under the terms and conditions of this License, without any additional terms or conditions. Notwithstanding the above, nothing herein shall supersede or modify the terms of any separate license agreement you may have executed with Licensor regarding such Contributions. 89 | 90 | 6. Trademarks. This License does not grant permission to use the trade names, trademarks, service marks, or product names of the Licensor, except as required for reasonable and customary use in describing the origin of the Work and reproducing the content of the NOTICE file. 91 | 92 | 7. Disclaimer of Warranty. Unless required by applicable law or agreed to in writing, Licensor provides the Work (and each Contributor provides its Contributions) on an "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied, including, without limitation, any warranties or conditions of TITLE, NON-INFRINGEMENT, MERCHANTABILITY, or FITNESS FOR A PARTICULAR PURPOSE. You are solely responsible for determining the appropriateness of using or redistributing the Work and assume any risks associated with Your exercise of permissions under this License. 93 | 94 | 8. Limitation of Liability. In no event and under no legal theory, whether in tort (including negligence), contract, or otherwise, unless required by applicable law (such as deliberate and grossly negligent acts) or agreed to in writing, shall any Contributor be liable to You for damages, including any direct, indirect, special, incidental, or consequential damages of any character arising as a result of this License or out of the use or inability to use the Work (including but not limited to damages for loss of goodwill, work stoppage, computer failure or malfunction, or any and all other commercial damages or losses), even if such Contributor has been advised of the possibility of such damages. 95 | 96 | 9. Accepting Warranty or Additional Liability. While redistributing the Work or Derivative Works thereof, You may choose to offer, and charge a fee for, acceptance of support, warranty, indemnity, or other liability obligations and/or rights consistent with this License. However, in accepting such obligations, You may act only on Your own behalf and on Your sole responsibility, not on behalf of any other Contributor, and only if You agree to indemnify, defend, and hold each Contributor harmless for any liability incurred by, or claims asserted against, such Contributor by reason of your accepting any such warranty or additional liability. 97 | 98 | END OF TERMS AND CONDITIONS 99 | 100 | Note: Other license terms may apply to certain, identified software files contained within or distributed with the accompanying software if such terms are included in the directory containing the accompanying software. Such other license terms will then apply in lieu of the terms of the software license above. 101 | -------------------------------------------------------------------------------- /build.gradle: -------------------------------------------------------------------------------- 1 | plugins { 2 | id 'java' 3 | } 4 | 5 | repositories { 6 | mavenCentral() 7 | flatDir { 8 | dirs 'lib' 9 | } 10 | } 11 | 12 | sourceSets { 13 | main { 14 | java { 15 | srcDirs = ['src/main/java', 'src/main/quickfix'] // Added quickfix directory 16 | } 17 | resources { 18 | srcDirs = ['src/main/resources'] 19 | } 20 | } 21 | test { 22 | java { 23 | srcDirs = ['src/test/java'] 24 | } 25 | } 26 | } 27 | 28 | dependencies { 29 | implementation fileTree(dir: 'lib', include: '*.jar') 30 | } 31 | 32 | jar { 33 | archiveBaseName = 'fixengineonaws' 34 | 35 | from { 36 | configurations.runtimeClasspath.collect { it.isDirectory() ? it : zipTree(it) } 37 | } 38 | 39 | manifest { 40 | attributes 'Main-Class': 'com.amazonaws.fixengineonaws.FixEngine' 41 | } 42 | 43 | exclude 'META-INF/*.RSA', 'META-INF/*.SF','META-INF/*.DSA' 44 | 45 | duplicatesStrategy = DuplicatesStrategy.EXCLUDE 46 | } 47 | 48 | // Update Java version if needed 49 | sourceCompatibility = JavaVersion.VERSION_11 // or whatever version you're using 50 | targetCompatibility = JavaVersion.VERSION_11 51 | 52 | tasks.withType(JavaCompile) { 53 | options.encoding = 'UTF-8' 54 | options.compilerArgs += ['-Xlint:deprecation'] 55 | } -------------------------------------------------------------------------------- /build/libs/fixengineonaws.jar: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/aws-samples/amazon-resilient-fix-engine-demo/29ee6f3d30cf53fb2037254aa6de23ee31f2f0e4/build/libs/fixengineonaws.jar -------------------------------------------------------------------------------- /buildSrc/build.gradle: -------------------------------------------------------------------------------- 1 | // Setup the "brazilGradle" extension to use in the "buildscript {}" block. 2 | def brazilGradleRepo = project.findProperty('brazilGradleRepo') 3 | def brazilGradleName = project.findProperty('brazilGradleName') 4 | 5 | if (brazilGradleRepo != null && brazilGradleName!= null) { 6 | repositories { 7 | maven { 8 | url = uri(brazilGradleRepo) 9 | } 10 | } 11 | dependencies { 12 | "runtimeOnly"(brazilGradleName) 13 | } 14 | } 15 | -------------------------------------------------------------------------------- /images/ecs-cloudwatch.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/aws-samples/amazon-resilient-fix-engine-demo/29ee6f3d30cf53fb2037254aa6de23ee31f2f0e4/images/ecs-cloudwatch.png -------------------------------------------------------------------------------- /images/ecs-stop-task.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/aws-samples/amazon-resilient-fix-engine-demo/29ee6f3d30cf53fb2037254aa6de23ee31f2f0e4/images/ecs-stop-task.png -------------------------------------------------------------------------------- /images/fix-client-cf-1.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/aws-samples/amazon-resilient-fix-engine-demo/29ee6f3d30cf53fb2037254aa6de23ee31f2f0e4/images/fix-client-cf-1.png -------------------------------------------------------------------------------- /images/fix-client-cf-2.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/aws-samples/amazon-resilient-fix-engine-demo/29ee6f3d30cf53fb2037254aa6de23ee31f2f0e4/images/fix-client-cf-2.png -------------------------------------------------------------------------------- /images/fix-server-cf-1.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/aws-samples/amazon-resilient-fix-engine-demo/29ee6f3d30cf53fb2037254aa6de23ee31f2f0e4/images/fix-server-cf-1.png -------------------------------------------------------------------------------- /images/fix-server-cf-2.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/aws-samples/amazon-resilient-fix-engine-demo/29ee6f3d30cf53fb2037254aa6de23ee31f2f0e4/images/fix-server-cf-2.png -------------------------------------------------------------------------------- /images/fix-server-cf-3.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/aws-samples/amazon-resilient-fix-engine-demo/29ee6f3d30cf53fb2037254aa6de23ee31f2f0e4/images/fix-server-cf-3.png -------------------------------------------------------------------------------- /images/fix-test-terminals.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/aws-samples/amazon-resilient-fix-engine-demo/29ee6f3d30cf53fb2037254aa6de23ee31f2f0e4/images/fix-test-terminals.png -------------------------------------------------------------------------------- /images/ga-dnsname.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/aws-samples/amazon-resilient-fix-engine-demo/29ee6f3d30cf53fb2037254aa6de23ee31f2f0e4/images/ga-dnsname.png -------------------------------------------------------------------------------- /images/msk-brokers.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/aws-samples/amazon-resilient-fix-engine-demo/29ee6f3d30cf53fb2037254aa6de23ee31f2f0e4/images/msk-brokers.png -------------------------------------------------------------------------------- /lib/Saxon-HE-9.8.0-4.jar: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/aws-samples/amazon-resilient-fix-engine-demo/29ee6f3d30cf53fb2037254aa6de23ee31f2f0e4/lib/Saxon-HE-9.8.0-4.jar -------------------------------------------------------------------------------- /lib/Saxon-HE-9.8.0-4.license: -------------------------------------------------------------------------------- 1 | Licensing 2 | This section of the documentation provides information about Saxon licensing, including required notices for open-source components that have been incorporated into Saxon, and acknowledgments of contributors. 3 | 4 | This documentation relates both to the open source Saxon-HE product and to the commercial products Saxon-PE and Saxon-EE. The conditions of use are of course different in the two cases; there are also differences in the third-party components that are included. 5 | 6 | The information in this section applies to both the Java and .NET versions of Saxon, unless otherwise specified. 7 | 8 | The source code of Saxon can be considered for licensing purposes as having four parts: 9 | 10 | Category A consists of open-source code which was written as part of Saxon either by the initial developer, or by another contributor. All such components are subject only to the MPL 2.0 license. Details of third-party Contributions is provided, for information. 11 | Category B code was originally produced as part of some other product and subsequently incorporated (with varying degrees of modification) into Saxon by way of source code integration. Many of these components have their own license conditions: these are in all cases licenses similar in form to either the Mozilla Public License, the Apache license, or the BSD license. All these licenses are "non-viral": they permit the code to be combined into a commercial product without requiring the commercial code to become open source. In some cases the license conditions require the origin of the code to be acknowledged, typically by including a notice in all distributions of the product. These notices are provided in the notices directory of the Saxon product as distributed, and the documentation provides a table listing all these Third-party code components. 12 | Category C code consists of components that are included unchanged in the Saxon distribution in binary form, for the convenience of users to avoid the need for a separate download. (In the Java product this includes the ASM library for bytecode generation, the XQJ interface definitions, and the JLine 2 library for interactive console input; in the .NET product it also includes the IKVMC and OpenJDK runtimes, the Apache Xerces parser, and the TagSoup HTML parser.) These are listed as Redistributed components. 13 | The code in this category is in most cases used in all Saxon editions (the only open source code in Saxon-PE or Saxon-EE that is not also used in Saxon-HE is the ASM bytecode generation library and the ICU localization library). In all cases the license under which the code was used permits the creation of commercial products derived from this code, and does not "infect" such products with open source obligations. In many cases the relevant license requires a notice to be published; this is satisfied by inclusion of the relevant notices in this documentation and also in the notices directory of the issued product. In many cases the relevant license also requires any modifications to source code to be published; Saxonica satisfies the requirement by issuing the source code of Saxon-HE, which includes all such modifications. 14 | 15 | Category D code is proprietary (non-open-source) code developed and owned by Saxonica. This is made available to a small number of selected integration partners under the terms of a custom contract. This code is not used in Saxon-HE. 16 | Saxon-HE 17 | The open-source Saxon-HE product is made available under the Mozilla Public License (the "License"). Prior to Saxon 9.5 MPL Version 1.0 was used; from 9.5 onwards, MPL Version 2.0 is used. You may not use the software except as permitted by the License. You may obtain a copy of the License at http://www.mozilla.org/MPL/. 18 | 19 | MPL version 2.0 allows software to be declared as "compatible with secondary licenses". Saxon code, in general, is NOT compatible with secondary licenses. This means it is not possible to redistribute the source code under a different license. The reason for this is the difficulty of obtaining the consent of all past contributors to the code. 20 | 21 | Saxon-HE is built from code in categories A, B, and C above. This code is published and is available for use under the terms of the license. Most users will never need access to source code, but for those who do, it is published in two forms: 22 | 23 | Saxonica's open-source Subversion repository at dev.saxonica.com contains the source code in the form required by the MPL license, that is, "the form of the work preferred for making modifications". This form of the code includes preprocessor directives used to identify variations between the code for different Saxon editions, and it therefore cannot be compiled until the preprocessor has been run. The repository includes Ant build files that invoke this preprocessing. The build files are complex and have many dependencies. Many users will therefore find it easier to build from the preprocessed source published on SourceForge. 24 | For every release, a ZIP file containing Saxon-HE source is published on the SourceForge site (project name Saxon). A typical file name is saxon-source-10.0.zip. The is the source code after preprocessing to extract the code needed for building Saxon-HE, and it is possible to compile it simply by dropping it into the source directory structure for an IDE such as Eclipse or IntelliJ, provided all the required third-party libraries are present on the classpath. 25 | Saxonica does not actively solicit contributions to the code from external developers. We will accept contributions only if the requirements and design have been agreed in advance, if comprehensive test material is supplied in a suitable form, and if a contribution agreement is signed. 26 | 27 | Saxon-HE includes a separate JAR file, saxon-xqj-10.0.jar, which contains Saxon's support for the XQJ interface, a standard API for access to XQuery engines from Java. In previous Saxon releases this was made available as part of the main JAR file. It has been decoupled because it has been pointed out that the license under which Oracle distributes XQJ is not a pure open source license under the definition used by the Open Source Initiative: specifically, it does not allow modifications, and it does not allow redistribution except as part of a product that satisfies all the compatibility tests. Saxon satisfies these conditions, but some users are only prepared to use code that conforms to OSI-approved licenses. If you fall into this category, please delete the saxon-xqj-10.0.jar file. (In Saxon-PE and Saxon-EE, the XQJ components are delivered as part of the main Saxon JAR file.) 28 | 29 | Although Saxonica complies with all the terms of the XQJ license, Saxonica does not necessarily accept that producing an implementation of a published API is an action that legally requires a license. 30 | 31 | Saxon-EE and Saxon-PE 32 | The Enterprise and Professional editions of Saxon are commercial products released under the terms and conditions published at http://www.saxonica.com/license/paid-license.pdf. 33 | 34 | These products include some open source components. In particular, they include the open-source components used to build Saxon-HE (categories A, B, and C above) in their entirety; they also include some open-source components (notably the ASM and ICU libraries) which are not used in Saxon-HE. Although your contract with Saxonica is entirely defined by the commercial license, the existence of an open source license for these components gives you additional rights, which are described above. 35 | 36 | The Saxon SQL extension 37 | The Saxon SQL extension is available as an open-source plug-in to Saxon-PE or Saxon-EE (on the Java platform only, not available on the .NET platform). It will not run with Saxon-HE because it relies on XSLT element extensibility, a feature not available in Saxon-HE. However, the code of the SQL extension itself is open-source and is issued under the Mozilla Public License, meaning that you are free to extend it and customize it to your needs, even though it requires Saxon-PE or Saxon-EE to run. 38 | 39 | EXSLT extensions 40 | A substantial number of extension functions defined in EXSLT are available as an open-source plug-in to Saxon-PE or Saxon-EE. Many of these are implemented as reflexive extension functions, and therefore rely on a mechanism not available in Saxon-HE. However, the code of the these extension functions itself is open-source and is issued under the Mozilla Public License 2.0, meaning that you are free to extend it and customize it to your needs, even though it requires Saxon-PE or Saxon-EE to run. (See EXSLT extensions for more information on the functions available.) 41 | 42 | Note: this does not apply to implementations of the EXPath extension functions, which since Saxon 9.6 are implemented in code that is Saxonica-proprietary. (See EXPath extensions for more information on the functions available.) 43 | 44 | Redistribution 45 | Redistribution of Saxon-HE is freely permitted under the terms of the Mozilla Public License 2.0. Note that this requires inclusion of all the necessary notices. If any source code changes are made, the license requires that they be published (or at any rate, made available to your users); but you are not required to publish the source of your own application code if it is in separate modules. 46 | 47 | If you produce a product that includes or requires Saxon-HE, please refer to it prominently as "The Saxon XSLT and XQuery Processor from Saxonica Limited", and include the URL of the home page, which is at http://www.saxonica.com/. As a courtesy, please take reasonable steps to ensure that your users know that they are running Saxon. 48 | 49 | Redistribution of Saxon-PE or Saxon-EE as a component of a commercial application is possible under commercial terms; prices are published in the Saxonica online store, and a specimen contract will be supplied on request. 50 | 51 | Technical Support (Saxon-HE) 52 | Software distributed under the License is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY KIND, either express or implied. See the License for the specific language governing rights and limitations under the License. 53 | 54 | There is no guarantee of technical support, though we are usually able to answer enquiries within a few days. Please use the bug trackers and support forums provided on the community site at saxonica.plan.io. There is also a mailing list available at http://lists.sourceforge.net/lists/listinfo/saxon-help. Please check the bug tracker at saxonica.plan.io for details of known errors; all bugs are listed there, whether they apply to the open-source or commercial versions of Saxon. 55 | 56 | Unless otherwise stated, any code snippets that are published on a public forum in the course of a request for technical support are considered to be implicitly licensed for use in Saxonica's test suite, or where relevant for inclusion in the product itself, for release under the Mozilla Public License. -------------------------------------------------------------------------------- /lib/aws-java-sdk-core-1.11.906.jar: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/aws-samples/amazon-resilient-fix-engine-demo/29ee6f3d30cf53fb2037254aa6de23ee31f2f0e4/lib/aws-java-sdk-core-1.11.906.jar -------------------------------------------------------------------------------- /lib/aws-java-sdk-core-1.11.906.license: -------------------------------------------------------------------------------- 1 | Apache License Version 2.0, January 2004 TERMS AND CONDITIONS FOR USE, REPRODUCTION, AND DISTRIBUTION 1. Definitions. "License" shall mean the terms and conditions for use, reproduction, and distribution as defined by Sections 1 through 9 of this document. "Licensor" shall mean the copyright owner or entity authorized by the copyright owner that is granting the License. "Legal Entity" shall mean the union of the acting entity and all other entities that control, are controlled by, or are under common control with that entity. For the purposes of this definition, "control" means (i) the power, direct or indirect, to cause the direction or management of such entity, whether by contract or otherwise, or (ii) ownership of fifty percent (50%) or more of the outstanding shares, or (iii) beneficial ownership of such entity. "You" (or "Your") shall mean an individual or Legal Entity exercising permissions granted by this License. "Source" form shall mean the preferred form for making modifications, including but not limited to software source code, documentation source, and configuration files. "Object" form shall mean any form resulting from mechanical transformation or translation of a Source form, including but not limited to compiled object code, generated documentation, and conversions to other media types. "Work" shall mean the work of authorship, whether in Source or Object form, made available under the License, as indicated by a copyright notice that is included in or attached to the work (an example is provided in the Appendix below). "Derivative Works" shall mean any work, whether in Source or Object form, that is based on (or derived from) the Work and for which the editorial revisions, annotations, elaborations, or other modifications represent, as a whole, an original work of authorship. For the purposes of this License, Derivative Works shall not include works that remain separable from, or merely link (or bind by name) to the interfaces of, the Work and Derivative Works thereof. "Contribution" shall mean any work of authorship, including the original version of the Work and any modifications or additions to that Work or Derivative Works thereof, that is intentionally submitted to Licensor for inclusion in the Work by the copyright owner or by an individual or Legal Entity authorized to submit on behalf of the copyright owner. For the purposes of this definition, "submitted" means any form of electronic, verbal, or written communication sent to the Licensor or its representatives, including but not limited to communication on electronic mailing lists, source code control systems, and issue tracking systems that are managed by, or on behalf of, the Licensor for the purpose of discussing and improving the Work, but excluding communication that is conspicuously marked or otherwise designated in writing by the copyright owner as "Not a Contribution." "Contributor" shall mean Licensor and any individual or Legal Entity on behalf of whom a Contribution has been received by Licensor and subsequently incorporated within the Work. 2. Grant of Copyright License. Subject to the terms and conditions of this License, each Contributor hereby grants to You a perpetual, worldwide, non-exclusive, no-charge, royalty-free, irrevocable copyright license to reproduce, prepare Derivative Works of, publicly display, publicly perform, sublicense, and distribute the Work and such Derivative Works in Source or Object form. 3. Grant of Patent License. Subject to the terms and conditions of this License, each Contributor hereby grants to You a perpetual, worldwide, non-exclusive, no-charge, royalty-free, irrevocable (except as stated in this section) patent license to make, have made, use, offer to sell, sell, import, and otherwise transfer the Work, where such license applies only to those patent claims licensable by such Contributor that are necessarily infringed by their Contribution(s) alone or by combination of their Contribution(s) with the Work to which such Contribution(s) was submitted. If You institute patent litigation against any entity (including a cross-claim or counterclaim in a lawsuit) alleging that the Work or a Contribution incorporated within the Work constitutes direct or contributory patent infringement, then any patent licenses granted to You under this License for that Work shall terminate as of the date such litigation is filed. 4. Redistribution. You may reproduce and distribute copies of the Work or Derivative Works thereof in any medium, with or without modifications, and in Source or Object form, provided that You meet the following conditions: 1. You must give any other recipients of the Work or Derivative Works a copy of this License; and 2. You must cause any modified files to carry prominent notices stating that You changed the files; and 3. You must retain, in the Source form of any Derivative Works that You distribute, all copyright, patent, trademark, and attribution notices from the Source form of the Work, excluding those notices that do not pertain to any part of the Derivative Works; and 4. If the Work includes a "NOTICE" text file as part of its distribution, then any Derivative Works that You distribute must include a readable copy of the attribution notices contained within such NOTICE file, excluding those notices that do not pertain to any part of the Derivative Works, in at least one of the following places: within a NOTICE text file distributed as part of the Derivative Works; within the Source form or documentation, if provided along with the Derivative Works; or, within a display generated by the Derivative Works, if and wherever such third-party notices normally appear. The contents of the NOTICE file are for informational purposes only and do not modify the License. You may add Your own attribution notices within Derivative Works that You distribute, alongside or as an addendum to the NOTICE text from the Work, provided that such additional attribution notices cannot be construed as modifying the License. You may add Your own copyright statement to Your modifications and may provide additional or different license terms and conditions for use, reproduction, or distribution of Your modifications, or for any such Derivative Works as a whole, provided Your use, reproduction, and distribution of the Work otherwise complies with the conditions stated in this License. 5. Submission of Contributions. Unless You explicitly state otherwise, any Contribution intentionally submitted for inclusion in the Work by You to the Licensor shall be under the terms and conditions of this License, without any additional terms or conditions. Notwithstanding the above, nothing herein shall supersede or modify the terms of any separate license agreement you may have executed with Licensor regarding such Contributions. 6. Trademarks. This License does not grant permission to use the trade names, trademarks, service marks, or product names of the Licensor, except as required for reasonable and customary use in describing the origin of the Work and reproducing the content of the NOTICE file. 7. Disclaimer of Warranty. Unless required by applicable law or agreed to in writing, Licensor provides the Work (and each Contributor provides its Contributions) on an "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied, including, without limitation, any warranties or conditions of TITLE, NON-INFRINGEMENT, MERCHANTABILITY, or FITNESS FOR A PARTICULAR PURPOSE. You are solely responsible for determining the appropriateness of using or redistributing the Work and assume any risks associated with Your exercise of permissions under this License. 8. Limitation of Liability. In no event and under no legal theory, whether in tort (including negligence), contract, or otherwise, unless required by applicable law (such as deliberate and grossly negligent acts) or agreed to in writing, shall any Contributor be liable to You for damages, including any direct, indirect, special, incidental, or consequential damages of any character arising as a result of this License or out of the use or inability to use the Work (including but not limited to damages for loss of goodwill, work stoppage, computer failure or malfunction, or any and all other commercial damages or losses), even if such Contributor has been advised of the possibility of such damages. 9. Accepting Warranty or Additional Liability. While redistributing the Work or Derivative Works thereof, You may choose to offer, and charge a fee for, acceptance of support, warranty, indemnity, or other liability obligations and/or rights consistent with this License. However, in accepting such obligations, You may act only on Your own behalf and on Your sole responsibility, not on behalf of any other Contributor, and only if You agree to indemnify, defend, and hold each Contributor harmless for any liability incurred by, or claims asserted against, such Contributor by reason of your accepting any such warranty or additional liability. END OF TERMS AND CONDITIONS Note: Other license terms may apply to certain, identified software files contained within or distributed with the accompanying software if such terms are included in the directory containing the accompanying software. Such other license terms will then apply in lieu of the terms of the software license above. -------------------------------------------------------------------------------- /lib/aws-java-sdk-globalaccelerator-1.11.906.jar: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/aws-samples/amazon-resilient-fix-engine-demo/29ee6f3d30cf53fb2037254aa6de23ee31f2f0e4/lib/aws-java-sdk-globalaccelerator-1.11.906.jar -------------------------------------------------------------------------------- /lib/aws-java-sdk-globalaccelerator-1.11.906.license: -------------------------------------------------------------------------------- 1 | Apache License Version 2.0, January 2004 TERMS AND CONDITIONS FOR USE, REPRODUCTION, AND DISTRIBUTION 1. Definitions. "License" shall mean the terms and conditions for use, reproduction, and distribution as defined by Sections 1 through 9 of this document. "Licensor" shall mean the copyright owner or entity authorized by the copyright owner that is granting the License. "Legal Entity" shall mean the union of the acting entity and all other entities that control, are controlled by, or are under common control with that entity. For the purposes of this definition, "control" means (i) the power, direct or indirect, to cause the direction or management of such entity, whether by contract or otherwise, or (ii) ownership of fifty percent (50%) or more of the outstanding shares, or (iii) beneficial ownership of such entity. "You" (or "Your") shall mean an individual or Legal Entity exercising permissions granted by this License. "Source" form shall mean the preferred form for making modifications, including but not limited to software source code, documentation source, and configuration files. "Object" form shall mean any form resulting from mechanical transformation or translation of a Source form, including but not limited to compiled object code, generated documentation, and conversions to other media types. "Work" shall mean the work of authorship, whether in Source or Object form, made available under the License, as indicated by a copyright notice that is included in or attached to the work (an example is provided in the Appendix below). "Derivative Works" shall mean any work, whether in Source or Object form, that is based on (or derived from) the Work and for which the editorial revisions, annotations, elaborations, or other modifications represent, as a whole, an original work of authorship. For the purposes of this License, Derivative Works shall not include works that remain separable from, or merely link (or bind by name) to the interfaces of, the Work and Derivative Works thereof. "Contribution" shall mean any work of authorship, including the original version of the Work and any modifications or additions to that Work or Derivative Works thereof, that is intentionally submitted to Licensor for inclusion in the Work by the copyright owner or by an individual or Legal Entity authorized to submit on behalf of the copyright owner. For the purposes of this definition, "submitted" means any form of electronic, verbal, or written communication sent to the Licensor or its representatives, including but not limited to communication on electronic mailing lists, source code control systems, and issue tracking systems that are managed by, or on behalf of, the Licensor for the purpose of discussing and improving the Work, but excluding communication that is conspicuously marked or otherwise designated in writing by the copyright owner as "Not a Contribution." "Contributor" shall mean Licensor and any individual or Legal Entity on behalf of whom a Contribution has been received by Licensor and subsequently incorporated within the Work. 2. Grant of Copyright License. Subject to the terms and conditions of this License, each Contributor hereby grants to You a perpetual, worldwide, non-exclusive, no-charge, royalty-free, irrevocable copyright license to reproduce, prepare Derivative Works of, publicly display, publicly perform, sublicense, and distribute the Work and such Derivative Works in Source or Object form. 3. Grant of Patent License. Subject to the terms and conditions of this License, each Contributor hereby grants to You a perpetual, worldwide, non-exclusive, no-charge, royalty-free, irrevocable (except as stated in this section) patent license to make, have made, use, offer to sell, sell, import, and otherwise transfer the Work, where such license applies only to those patent claims licensable by such Contributor that are necessarily infringed by their Contribution(s) alone or by combination of their Contribution(s) with the Work to which such Contribution(s) was submitted. If You institute patent litigation against any entity (including a cross-claim or counterclaim in a lawsuit) alleging that the Work or a Contribution incorporated within the Work constitutes direct or contributory patent infringement, then any patent licenses granted to You under this License for that Work shall terminate as of the date such litigation is filed. 4. Redistribution. You may reproduce and distribute copies of the Work or Derivative Works thereof in any medium, with or without modifications, and in Source or Object form, provided that You meet the following conditions: 1. You must give any other recipients of the Work or Derivative Works a copy of this License; and 2. You must cause any modified files to carry prominent notices stating that You changed the files; and 3. You must retain, in the Source form of any Derivative Works that You distribute, all copyright, patent, trademark, and attribution notices from the Source form of the Work, excluding those notices that do not pertain to any part of the Derivative Works; and 4. If the Work includes a "NOTICE" text file as part of its distribution, then any Derivative Works that You distribute must include a readable copy of the attribution notices contained within such NOTICE file, excluding those notices that do not pertain to any part of the Derivative Works, in at least one of the following places: within a NOTICE text file distributed as part of the Derivative Works; within the Source form or documentation, if provided along with the Derivative Works; or, within a display generated by the Derivative Works, if and wherever such third-party notices normally appear. The contents of the NOTICE file are for informational purposes only and do not modify the License. You may add Your own attribution notices within Derivative Works that You distribute, alongside or as an addendum to the NOTICE text from the Work, provided that such additional attribution notices cannot be construed as modifying the License. You may add Your own copyright statement to Your modifications and may provide additional or different license terms and conditions for use, reproduction, or distribution of Your modifications, or for any such Derivative Works as a whole, provided Your use, reproduction, and distribution of the Work otherwise complies with the conditions stated in this License. 5. Submission of Contributions. Unless You explicitly state otherwise, any Contribution intentionally submitted for inclusion in the Work by You to the Licensor shall be under the terms and conditions of this License, without any additional terms or conditions. Notwithstanding the above, nothing herein shall supersede or modify the terms of any separate license agreement you may have executed with Licensor regarding such Contributions. 6. Trademarks. This License does not grant permission to use the trade names, trademarks, service marks, or product names of the Licensor, except as required for reasonable and customary use in describing the origin of the Work and reproducing the content of the NOTICE file. 7. Disclaimer of Warranty. Unless required by applicable law or agreed to in writing, Licensor provides the Work (and each Contributor provides its Contributions) on an "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied, including, without limitation, any warranties or conditions of TITLE, NON-INFRINGEMENT, MERCHANTABILITY, or FITNESS FOR A PARTICULAR PURPOSE. You are solely responsible for determining the appropriateness of using or redistributing the Work and assume any risks associated with Your exercise of permissions under this License. 8. Limitation of Liability. In no event and under no legal theory, whether in tort (including negligence), contract, or otherwise, unless required by applicable law (such as deliberate and grossly negligent acts) or agreed to in writing, shall any Contributor be liable to You for damages, including any direct, indirect, special, incidental, or consequential damages of any character arising as a result of this License or out of the use or inability to use the Work (including but not limited to damages for loss of goodwill, work stoppage, computer failure or malfunction, or any and all other commercial damages or losses), even if such Contributor has been advised of the possibility of such damages. 9. Accepting Warranty or Additional Liability. While redistributing the Work or Derivative Works thereof, You may choose to offer, and charge a fee for, acceptance of support, warranty, indemnity, or other liability obligations and/or rights consistent with this License. However, in accepting such obligations, You may act only on Your own behalf and on Your sole responsibility, not on behalf of any other Contributor, and only if You agree to indemnify, defend, and hold each Contributor harmless for any liability incurred by, or claims asserted against, such Contributor by reason of your accepting any such warranty or additional liability. END OF TERMS AND CONDITIONS Note: Other license terms may apply to certain, identified software files contained within or distributed with the accompanying software if such terms are included in the directory containing the accompanying software. Such other license terms will then apply in lieu of the terms of the software license above. -------------------------------------------------------------------------------- /lib/aws-java-sdk-route53-1.11.906.jar: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/aws-samples/amazon-resilient-fix-engine-demo/29ee6f3d30cf53fb2037254aa6de23ee31f2f0e4/lib/aws-java-sdk-route53-1.11.906.jar -------------------------------------------------------------------------------- /lib/aws-java-sdk-route53-1.11.906.license: -------------------------------------------------------------------------------- 1 | Apache License Version 2.0, January 2004 TERMS AND CONDITIONS FOR USE, REPRODUCTION, AND DISTRIBUTION 1. Definitions. "License" shall mean the terms and conditions for use, reproduction, and distribution as defined by Sections 1 through 9 of this document. "Licensor" shall mean the copyright owner or entity authorized by the copyright owner that is granting the License. "Legal Entity" shall mean the union of the acting entity and all other entities that control, are controlled by, or are under common control with that entity. For the purposes of this definition, "control" means (i) the power, direct or indirect, to cause the direction or management of such entity, whether by contract or otherwise, or (ii) ownership of fifty percent (50%) or more of the outstanding shares, or (iii) beneficial ownership of such entity. "You" (or "Your") shall mean an individual or Legal Entity exercising permissions granted by this License. "Source" form shall mean the preferred form for making modifications, including but not limited to software source code, documentation source, and configuration files. "Object" form shall mean any form resulting from mechanical transformation or translation of a Source form, including but not limited to compiled object code, generated documentation, and conversions to other media types. "Work" shall mean the work of authorship, whether in Source or Object form, made available under the License, as indicated by a copyright notice that is included in or attached to the work (an example is provided in the Appendix below). "Derivative Works" shall mean any work, whether in Source or Object form, that is based on (or derived from) the Work and for which the editorial revisions, annotations, elaborations, or other modifications represent, as a whole, an original work of authorship. For the purposes of this License, Derivative Works shall not include works that remain separable from, or merely link (or bind by name) to the interfaces of, the Work and Derivative Works thereof. "Contribution" shall mean any work of authorship, including the original version of the Work and any modifications or additions to that Work or Derivative Works thereof, that is intentionally submitted to Licensor for inclusion in the Work by the copyright owner or by an individual or Legal Entity authorized to submit on behalf of the copyright owner. For the purposes of this definition, "submitted" means any form of electronic, verbal, or written communication sent to the Licensor or its representatives, including but not limited to communication on electronic mailing lists, source code control systems, and issue tracking systems that are managed by, or on behalf of, the Licensor for the purpose of discussing and improving the Work, but excluding communication that is conspicuously marked or otherwise designated in writing by the copyright owner as "Not a Contribution." "Contributor" shall mean Licensor and any individual or Legal Entity on behalf of whom a Contribution has been received by Licensor and subsequently incorporated within the Work. 2. Grant of Copyright License. Subject to the terms and conditions of this License, each Contributor hereby grants to You a perpetual, worldwide, non-exclusive, no-charge, royalty-free, irrevocable copyright license to reproduce, prepare Derivative Works of, publicly display, publicly perform, sublicense, and distribute the Work and such Derivative Works in Source or Object form. 3. Grant of Patent License. Subject to the terms and conditions of this License, each Contributor hereby grants to You a perpetual, worldwide, non-exclusive, no-charge, royalty-free, irrevocable (except as stated in this section) patent license to make, have made, use, offer to sell, sell, import, and otherwise transfer the Work, where such license applies only to those patent claims licensable by such Contributor that are necessarily infringed by their Contribution(s) alone or by combination of their Contribution(s) with the Work to which such Contribution(s) was submitted. If You institute patent litigation against any entity (including a cross-claim or counterclaim in a lawsuit) alleging that the Work or a Contribution incorporated within the Work constitutes direct or contributory patent infringement, then any patent licenses granted to You under this License for that Work shall terminate as of the date such litigation is filed. 4. Redistribution. You may reproduce and distribute copies of the Work or Derivative Works thereof in any medium, with or without modifications, and in Source or Object form, provided that You meet the following conditions: 1. You must give any other recipients of the Work or Derivative Works a copy of this License; and 2. You must cause any modified files to carry prominent notices stating that You changed the files; and 3. You must retain, in the Source form of any Derivative Works that You distribute, all copyright, patent, trademark, and attribution notices from the Source form of the Work, excluding those notices that do not pertain to any part of the Derivative Works; and 4. If the Work includes a "NOTICE" text file as part of its distribution, then any Derivative Works that You distribute must include a readable copy of the attribution notices contained within such NOTICE file, excluding those notices that do not pertain to any part of the Derivative Works, in at least one of the following places: within a NOTICE text file distributed as part of the Derivative Works; within the Source form or documentation, if provided along with the Derivative Works; or, within a display generated by the Derivative Works, if and wherever such third-party notices normally appear. The contents of the NOTICE file are for informational purposes only and do not modify the License. You may add Your own attribution notices within Derivative Works that You distribute, alongside or as an addendum to the NOTICE text from the Work, provided that such additional attribution notices cannot be construed as modifying the License. You may add Your own copyright statement to Your modifications and may provide additional or different license terms and conditions for use, reproduction, or distribution of Your modifications, or for any such Derivative Works as a whole, provided Your use, reproduction, and distribution of the Work otherwise complies with the conditions stated in this License. 5. Submission of Contributions. Unless You explicitly state otherwise, any Contribution intentionally submitted for inclusion in the Work by You to the Licensor shall be under the terms and conditions of this License, without any additional terms or conditions. Notwithstanding the above, nothing herein shall supersede or modify the terms of any separate license agreement you may have executed with Licensor regarding such Contributions. 6. Trademarks. This License does not grant permission to use the trade names, trademarks, service marks, or product names of the Licensor, except as required for reasonable and customary use in describing the origin of the Work and reproducing the content of the NOTICE file. 7. Disclaimer of Warranty. Unless required by applicable law or agreed to in writing, Licensor provides the Work (and each Contributor provides its Contributions) on an "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied, including, without limitation, any warranties or conditions of TITLE, NON-INFRINGEMENT, MERCHANTABILITY, or FITNESS FOR A PARTICULAR PURPOSE. You are solely responsible for determining the appropriateness of using or redistributing the Work and assume any risks associated with Your exercise of permissions under this License. 8. Limitation of Liability. In no event and under no legal theory, whether in tort (including negligence), contract, or otherwise, unless required by applicable law (such as deliberate and grossly negligent acts) or agreed to in writing, shall any Contributor be liable to You for damages, including any direct, indirect, special, incidental, or consequential damages of any character arising as a result of this License or out of the use or inability to use the Work (including but not limited to damages for loss of goodwill, work stoppage, computer failure or malfunction, or any and all other commercial damages or losses), even if such Contributor has been advised of the possibility of such damages. 9. Accepting Warranty or Additional Liability. While redistributing the Work or Derivative Works thereof, You may choose to offer, and charge a fee for, acceptance of support, warranty, indemnity, or other liability obligations and/or rights consistent with this License. However, in accepting such obligations, You may act only on Your own behalf and on Your sole responsibility, not on behalf of any other Contributor, and only if You agree to indemnify, defend, and hold each Contributor harmless for any liability incurred by, or claims asserted against, such Contributor by reason of your accepting any such warranty or additional liability. END OF TERMS AND CONDITIONS Note: Other license terms may apply to certain, identified software files contained within or distributed with the accompanying software if such terms are included in the directory containing the accompanying software. Such other license terms will then apply in lieu of the terms of the software license above. -------------------------------------------------------------------------------- /lib/aws-java-sdk-secretsmanager-1.11.906.jar: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/aws-samples/amazon-resilient-fix-engine-demo/29ee6f3d30cf53fb2037254aa6de23ee31f2f0e4/lib/aws-java-sdk-secretsmanager-1.11.906.jar -------------------------------------------------------------------------------- /lib/aws-java-sdk-secretsmanager-1.11.906.license: -------------------------------------------------------------------------------- 1 | Apache License Version 2.0, January 2004 TERMS AND CONDITIONS FOR USE, REPRODUCTION, AND DISTRIBUTION 1. Definitions. "License" shall mean the terms and conditions for use, reproduction, and distribution as defined by Sections 1 through 9 of this document. "Licensor" shall mean the copyright owner or entity authorized by the copyright owner that is granting the License. "Legal Entity" shall mean the union of the acting entity and all other entities that control, are controlled by, or are under common control with that entity. For the purposes of this definition, "control" means (i) the power, direct or indirect, to cause the direction or management of such entity, whether by contract or otherwise, or (ii) ownership of fifty percent (50%) or more of the outstanding shares, or (iii) beneficial ownership of such entity. "You" (or "Your") shall mean an individual or Legal Entity exercising permissions granted by this License. "Source" form shall mean the preferred form for making modifications, including but not limited to software source code, documentation source, and configuration files. "Object" form shall mean any form resulting from mechanical transformation or translation of a Source form, including but not limited to compiled object code, generated documentation, and conversions to other media types. "Work" shall mean the work of authorship, whether in Source or Object form, made available under the License, as indicated by a copyright notice that is included in or attached to the work (an example is provided in the Appendix below). "Derivative Works" shall mean any work, whether in Source or Object form, that is based on (or derived from) the Work and for which the editorial revisions, annotations, elaborations, or other modifications represent, as a whole, an original work of authorship. For the purposes of this License, Derivative Works shall not include works that remain separable from, or merely link (or bind by name) to the interfaces of, the Work and Derivative Works thereof. "Contribution" shall mean any work of authorship, including the original version of the Work and any modifications or additions to that Work or Derivative Works thereof, that is intentionally submitted to Licensor for inclusion in the Work by the copyright owner or by an individual or Legal Entity authorized to submit on behalf of the copyright owner. For the purposes of this definition, "submitted" means any form of electronic, verbal, or written communication sent to the Licensor or its representatives, including but not limited to communication on electronic mailing lists, source code control systems, and issue tracking systems that are managed by, or on behalf of, the Licensor for the purpose of discussing and improving the Work, but excluding communication that is conspicuously marked or otherwise designated in writing by the copyright owner as "Not a Contribution." "Contributor" shall mean Licensor and any individual or Legal Entity on behalf of whom a Contribution has been received by Licensor and subsequently incorporated within the Work. 2. Grant of Copyright License. Subject to the terms and conditions of this License, each Contributor hereby grants to You a perpetual, worldwide, non-exclusive, no-charge, royalty-free, irrevocable copyright license to reproduce, prepare Derivative Works of, publicly display, publicly perform, sublicense, and distribute the Work and such Derivative Works in Source or Object form. 3. Grant of Patent License. Subject to the terms and conditions of this License, each Contributor hereby grants to You a perpetual, worldwide, non-exclusive, no-charge, royalty-free, irrevocable (except as stated in this section) patent license to make, have made, use, offer to sell, sell, import, and otherwise transfer the Work, where such license applies only to those patent claims licensable by such Contributor that are necessarily infringed by their Contribution(s) alone or by combination of their Contribution(s) with the Work to which such Contribution(s) was submitted. If You institute patent litigation against any entity (including a cross-claim or counterclaim in a lawsuit) alleging that the Work or a Contribution incorporated within the Work constitutes direct or contributory patent infringement, then any patent licenses granted to You under this License for that Work shall terminate as of the date such litigation is filed. 4. Redistribution. You may reproduce and distribute copies of the Work or Derivative Works thereof in any medium, with or without modifications, and in Source or Object form, provided that You meet the following conditions: 1. You must give any other recipients of the Work or Derivative Works a copy of this License; and 2. You must cause any modified files to carry prominent notices stating that You changed the files; and 3. You must retain, in the Source form of any Derivative Works that You distribute, all copyright, patent, trademark, and attribution notices from the Source form of the Work, excluding those notices that do not pertain to any part of the Derivative Works; and 4. If the Work includes a "NOTICE" text file as part of its distribution, then any Derivative Works that You distribute must include a readable copy of the attribution notices contained within such NOTICE file, excluding those notices that do not pertain to any part of the Derivative Works, in at least one of the following places: within a NOTICE text file distributed as part of the Derivative Works; within the Source form or documentation, if provided along with the Derivative Works; or, within a display generated by the Derivative Works, if and wherever such third-party notices normally appear. The contents of the NOTICE file are for informational purposes only and do not modify the License. You may add Your own attribution notices within Derivative Works that You distribute, alongside or as an addendum to the NOTICE text from the Work, provided that such additional attribution notices cannot be construed as modifying the License. You may add Your own copyright statement to Your modifications and may provide additional or different license terms and conditions for use, reproduction, or distribution of Your modifications, or for any such Derivative Works as a whole, provided Your use, reproduction, and distribution of the Work otherwise complies with the conditions stated in this License. 5. Submission of Contributions. Unless You explicitly state otherwise, any Contribution intentionally submitted for inclusion in the Work by You to the Licensor shall be under the terms and conditions of this License, without any additional terms or conditions. Notwithstanding the above, nothing herein shall supersede or modify the terms of any separate license agreement you may have executed with Licensor regarding such Contributions. 6. Trademarks. This License does not grant permission to use the trade names, trademarks, service marks, or product names of the Licensor, except as required for reasonable and customary use in describing the origin of the Work and reproducing the content of the NOTICE file. 7. Disclaimer of Warranty. Unless required by applicable law or agreed to in writing, Licensor provides the Work (and each Contributor provides its Contributions) on an "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied, including, without limitation, any warranties or conditions of TITLE, NON-INFRINGEMENT, MERCHANTABILITY, or FITNESS FOR A PARTICULAR PURPOSE. You are solely responsible for determining the appropriateness of using or redistributing the Work and assume any risks associated with Your exercise of permissions under this License. 8. Limitation of Liability. In no event and under no legal theory, whether in tort (including negligence), contract, or otherwise, unless required by applicable law (such as deliberate and grossly negligent acts) or agreed to in writing, shall any Contributor be liable to You for damages, including any direct, indirect, special, incidental, or consequential damages of any character arising as a result of this License or out of the use or inability to use the Work (including but not limited to damages for loss of goodwill, work stoppage, computer failure or malfunction, or any and all other commercial damages or losses), even if such Contributor has been advised of the possibility of such damages. 9. Accepting Warranty or Additional Liability. While redistributing the Work or Derivative Works thereof, You may choose to offer, and charge a fee for, acceptance of support, warranty, indemnity, or other liability obligations and/or rights consistent with this License. However, in accepting such obligations, You may act only on Your own behalf and on Your sole responsibility, not on behalf of any other Contributor, and only if You agree to indemnify, defend, and hold each Contributor harmless for any liability incurred by, or claims asserted against, such Contributor by reason of your accepting any such warranty or additional liability. END OF TERMS AND CONDITIONS Note: Other license terms may apply to certain, identified software files contained within or distributed with the accompanying software if such terms are included in the directory containing the accompanying software. Such other license terms will then apply in lieu of the terms of the software license above. -------------------------------------------------------------------------------- /lib/aws-java-sdk-ssm-1.11.906.jar: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/aws-samples/amazon-resilient-fix-engine-demo/29ee6f3d30cf53fb2037254aa6de23ee31f2f0e4/lib/aws-java-sdk-ssm-1.11.906.jar -------------------------------------------------------------------------------- /lib/aws-java-sdk-ssm-1.11.906.license: -------------------------------------------------------------------------------- 1 | Apache License Version 2.0, January 2004 TERMS AND CONDITIONS FOR USE, REPRODUCTION, AND DISTRIBUTION 1. Definitions. "License" shall mean the terms and conditions for use, reproduction, and distribution as defined by Sections 1 through 9 of this document. "Licensor" shall mean the copyright owner or entity authorized by the copyright owner that is granting the License. "Legal Entity" shall mean the union of the acting entity and all other entities that control, are controlled by, or are under common control with that entity. For the purposes of this definition, "control" means (i) the power, direct or indirect, to cause the direction or management of such entity, whether by contract or otherwise, or (ii) ownership of fifty percent (50%) or more of the outstanding shares, or (iii) beneficial ownership of such entity. "You" (or "Your") shall mean an individual or Legal Entity exercising permissions granted by this License. "Source" form shall mean the preferred form for making modifications, including but not limited to software source code, documentation source, and configuration files. "Object" form shall mean any form resulting from mechanical transformation or translation of a Source form, including but not limited to compiled object code, generated documentation, and conversions to other media types. "Work" shall mean the work of authorship, whether in Source or Object form, made available under the License, as indicated by a copyright notice that is included in or attached to the work (an example is provided in the Appendix below). "Derivative Works" shall mean any work, whether in Source or Object form, that is based on (or derived from) the Work and for which the editorial revisions, annotations, elaborations, or other modifications represent, as a whole, an original work of authorship. For the purposes of this License, Derivative Works shall not include works that remain separable from, or merely link (or bind by name) to the interfaces of, the Work and Derivative Works thereof. "Contribution" shall mean any work of authorship, including the original version of the Work and any modifications or additions to that Work or Derivative Works thereof, that is intentionally submitted to Licensor for inclusion in the Work by the copyright owner or by an individual or Legal Entity authorized to submit on behalf of the copyright owner. For the purposes of this definition, "submitted" means any form of electronic, verbal, or written communication sent to the Licensor or its representatives, including but not limited to communication on electronic mailing lists, source code control systems, and issue tracking systems that are managed by, or on behalf of, the Licensor for the purpose of discussing and improving the Work, but excluding communication that is conspicuously marked or otherwise designated in writing by the copyright owner as "Not a Contribution." "Contributor" shall mean Licensor and any individual or Legal Entity on behalf of whom a Contribution has been received by Licensor and subsequently incorporated within the Work. 2. Grant of Copyright License. Subject to the terms and conditions of this License, each Contributor hereby grants to You a perpetual, worldwide, non-exclusive, no-charge, royalty-free, irrevocable copyright license to reproduce, prepare Derivative Works of, publicly display, publicly perform, sublicense, and distribute the Work and such Derivative Works in Source or Object form. 3. Grant of Patent License. Subject to the terms and conditions of this License, each Contributor hereby grants to You a perpetual, worldwide, non-exclusive, no-charge, royalty-free, irrevocable (except as stated in this section) patent license to make, have made, use, offer to sell, sell, import, and otherwise transfer the Work, where such license applies only to those patent claims licensable by such Contributor that are necessarily infringed by their Contribution(s) alone or by combination of their Contribution(s) with the Work to which such Contribution(s) was submitted. If You institute patent litigation against any entity (including a cross-claim or counterclaim in a lawsuit) alleging that the Work or a Contribution incorporated within the Work constitutes direct or contributory patent infringement, then any patent licenses granted to You under this License for that Work shall terminate as of the date such litigation is filed. 4. Redistribution. You may reproduce and distribute copies of the Work or Derivative Works thereof in any medium, with or without modifications, and in Source or Object form, provided that You meet the following conditions: 1. You must give any other recipients of the Work or Derivative Works a copy of this License; and 2. You must cause any modified files to carry prominent notices stating that You changed the files; and 3. You must retain, in the Source form of any Derivative Works that You distribute, all copyright, patent, trademark, and attribution notices from the Source form of the Work, excluding those notices that do not pertain to any part of the Derivative Works; and 4. If the Work includes a "NOTICE" text file as part of its distribution, then any Derivative Works that You distribute must include a readable copy of the attribution notices contained within such NOTICE file, excluding those notices that do not pertain to any part of the Derivative Works, in at least one of the following places: within a NOTICE text file distributed as part of the Derivative Works; within the Source form or documentation, if provided along with the Derivative Works; or, within a display generated by the Derivative Works, if and wherever such third-party notices normally appear. The contents of the NOTICE file are for informational purposes only and do not modify the License. You may add Your own attribution notices within Derivative Works that You distribute, alongside or as an addendum to the NOTICE text from the Work, provided that such additional attribution notices cannot be construed as modifying the License. You may add Your own copyright statement to Your modifications and may provide additional or different license terms and conditions for use, reproduction, or distribution of Your modifications, or for any such Derivative Works as a whole, provided Your use, reproduction, and distribution of the Work otherwise complies with the conditions stated in this License. 5. Submission of Contributions. Unless You explicitly state otherwise, any Contribution intentionally submitted for inclusion in the Work by You to the Licensor shall be under the terms and conditions of this License, without any additional terms or conditions. Notwithstanding the above, nothing herein shall supersede or modify the terms of any separate license agreement you may have executed with Licensor regarding such Contributions. 6. Trademarks. This License does not grant permission to use the trade names, trademarks, service marks, or product names of the Licensor, except as required for reasonable and customary use in describing the origin of the Work and reproducing the content of the NOTICE file. 7. Disclaimer of Warranty. Unless required by applicable law or agreed to in writing, Licensor provides the Work (and each Contributor provides its Contributions) on an "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied, including, without limitation, any warranties or conditions of TITLE, NON-INFRINGEMENT, MERCHANTABILITY, or FITNESS FOR A PARTICULAR PURPOSE. You are solely responsible for determining the appropriateness of using or redistributing the Work and assume any risks associated with Your exercise of permissions under this License. 8. Limitation of Liability. In no event and under no legal theory, whether in tort (including negligence), contract, or otherwise, unless required by applicable law (such as deliberate and grossly negligent acts) or agreed to in writing, shall any Contributor be liable to You for damages, including any direct, indirect, special, incidental, or consequential damages of any character arising as a result of this License or out of the use or inability to use the Work (including but not limited to damages for loss of goodwill, work stoppage, computer failure or malfunction, or any and all other commercial damages or losses), even if such Contributor has been advised of the possibility of such damages. 9. Accepting Warranty or Additional Liability. While redistributing the Work or Derivative Works thereof, You may choose to offer, and charge a fee for, acceptance of support, warranty, indemnity, or other liability obligations and/or rights consistent with this License. However, in accepting such obligations, You may act only on Your own behalf and on Your sole responsibility, not on behalf of any other Contributor, and only if You agree to indemnify, defend, and hold each Contributor harmless for any liability incurred by, or claims asserted against, such Contributor by reason of your accepting any such warranty or additional liability. END OF TERMS AND CONDITIONS Note: Other license terms may apply to certain, identified software files contained within or distributed with the accompanying software if such terms are included in the directory containing the accompanying software. Such other license terms will then apply in lieu of the terms of the software license above. -------------------------------------------------------------------------------- /lib/commons-pool2-2.9.0.jar: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/aws-samples/amazon-resilient-fix-engine-demo/29ee6f3d30cf53fb2037254aa6de23ee31f2f0e4/lib/commons-pool2-2.9.0.jar -------------------------------------------------------------------------------- /lib/dom4j-2.1.3.jar: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/aws-samples/amazon-resilient-fix-engine-demo/29ee6f3d30cf53fb2037254aa6de23ee31f2f0e4/lib/dom4j-2.1.3.jar -------------------------------------------------------------------------------- /lib/dom4j-2.1.3.license: -------------------------------------------------------------------------------- 1 | Copyright 2001-2016 (C) MetaStuff, Ltd. and DOM4J contributors. All Rights Reserved. 2 | 3 | Redistribution and use of this software and associated documentation 4 | ("Software"), with or without modification, are permitted provided 5 | that the following conditions are met: 6 | 7 | 1. Redistributions of source code must retain copyright 8 | statements and notices. Redistributions must also contain a 9 | copy of this document. 10 | 11 | 2. Redistributions in binary form must reproduce the 12 | above copyright notice, this list of conditions and the 13 | following disclaimer in the documentation and/or other 14 | materials provided with the distribution. 15 | 16 | 3. The name "DOM4J" must not be used to endorse or promote 17 | products derived from this Software without prior written 18 | permission of MetaStuff, Ltd. For written permission, 19 | please contact dom4j-info@metastuff.com. 20 | 21 | 4. Products derived from this Software may not be called "DOM4J" 22 | nor may "DOM4J" appear in their names without prior written 23 | permission of MetaStuff, Ltd. DOM4J is a registered 24 | trademark of MetaStuff, Ltd. 25 | 26 | 5. Due credit should be given to the DOM4J Project - https://dom4j.github.io/ 27 | 28 | THIS SOFTWARE IS PROVIDED BY METASTUFF, LTD. AND CONTRIBUTORS 29 | ``AS IS'' AND ANY EXPRESSED OR IMPLIED WARRANTIES, INCLUDING, BUT 30 | NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND 31 | FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL 32 | METASTUFF, LTD. OR ITS CONTRIBUTORS BE LIABLE FOR ANY DIRECT, 33 | INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES 34 | (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR 35 | SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) 36 | HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, 37 | STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) 38 | ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED 39 | OF THE POSSIBILITY OF SUCH DAMAGE. 40 | -------------------------------------------------------------------------------- /lib/hamcrest-core-1.3.jar: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/aws-samples/amazon-resilient-fix-engine-demo/29ee6f3d30cf53fb2037254aa6de23ee31f2f0e4/lib/hamcrest-core-1.3.jar -------------------------------------------------------------------------------- /lib/httpclient-4.5.13.jar: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/aws-samples/amazon-resilient-fix-engine-demo/29ee6f3d30cf53fb2037254aa6de23ee31f2f0e4/lib/httpclient-4.5.13.jar -------------------------------------------------------------------------------- /lib/httpclient-4.5.13.license: -------------------------------------------------------------------------------- 1 | Apache License 2 | Version 2.0, January 2004 3 | http://www.apache.org/licenses/ 4 | 5 | TERMS AND CONDITIONS FOR USE, REPRODUCTION, AND DISTRIBUTION 6 | 7 | 1. Definitions. 8 | 9 | "License" shall mean the terms and conditions for use, reproduction, 10 | and distribution as defined by Sections 1 through 9 of this document. 11 | 12 | "Licensor" shall mean the copyright owner or entity authorized by 13 | the copyright owner that is granting the License. 14 | 15 | "Legal Entity" shall mean the union of the acting entity and all 16 | other entities that control, are controlled by, or are under common 17 | control with that entity. For the purposes of this definition, 18 | "control" means (i) the power, direct or indirect, to cause the 19 | direction or management of such entity, whether by contract or 20 | otherwise, or (ii) ownership of fifty percent (50%) or more of the 21 | outstanding shares, or (iii) beneficial ownership of such entity. 22 | 23 | "You" (or "Your") shall mean an individual or Legal Entity 24 | exercising permissions granted by this License. 25 | 26 | "Source" form shall mean the preferred form for making modifications, 27 | including but not limited to software source code, documentation 28 | source, and configuration files. 29 | 30 | "Object" form shall mean any form resulting from mechanical 31 | transformation or translation of a Source form, including but 32 | not limited to compiled object code, generated documentation, 33 | and conversions to other media types. 34 | 35 | "Work" shall mean the work of authorship, whether in Source or 36 | Object form, made available under the License, as indicated by a 37 | copyright notice that is included in or attached to the work 38 | (an example is provided in the Appendix below). 39 | 40 | "Derivative Works" shall mean any work, whether in Source or Object 41 | form, that is based on (or derived from) the Work and for which the 42 | editorial revisions, annotations, elaborations, or other modifications 43 | represent, as a whole, an original work of authorship. For the purposes 44 | of this License, Derivative Works shall not include works that remain 45 | separable from, or merely link (or bind by name) to the interfaces of, 46 | the Work and Derivative Works thereof. 47 | 48 | "Contribution" shall mean any work of authorship, including 49 | the original version of the Work and any modifications or additions 50 | to that Work or Derivative Works thereof, that is intentionally 51 | submitted to Licensor for inclusion in the Work by the copyright owner 52 | or by an individual or Legal Entity authorized to submit on behalf of 53 | the copyright owner. For the purposes of this definition, "submitted" 54 | means any form of electronic, verbal, or written communication sent 55 | to the Licensor or its representatives, including but not limited to 56 | communication on electronic mailing lists, source code control systems, 57 | and issue tracking systems that are managed by, or on behalf of, the 58 | Licensor for the purpose of discussing and improving the Work, but 59 | excluding communication that is conspicuously marked or otherwise 60 | designated in writing by the copyright owner as "Not a Contribution." 61 | 62 | "Contributor" shall mean Licensor and any individual or Legal Entity 63 | on behalf of whom a Contribution has been received by Licensor and 64 | subsequently incorporated within the Work. 65 | 66 | 2. Grant of Copyright License. Subject to the terms and conditions of 67 | this License, each Contributor hereby grants to You a perpetual, 68 | worldwide, non-exclusive, no-charge, royalty-free, irrevocable 69 | copyright license to reproduce, prepare Derivative Works of, 70 | publicly display, publicly perform, sublicense, and distribute the 71 | Work and such Derivative Works in Source or Object form. 72 | 73 | 3. Grant of Patent License. Subject to the terms and conditions of 74 | this License, each Contributor hereby grants to You a perpetual, 75 | worldwide, non-exclusive, no-charge, royalty-free, irrevocable 76 | (except as stated in this section) patent license to make, have made, 77 | use, offer to sell, sell, import, and otherwise transfer the Work, 78 | where such license applies only to those patent claims licensable 79 | by such Contributor that are necessarily infringed by their 80 | Contribution(s) alone or by combination of their Contribution(s) 81 | with the Work to which such Contribution(s) was submitted. If You 82 | institute patent litigation against any entity (including a 83 | cross-claim or counterclaim in a lawsuit) alleging that the Work 84 | or a Contribution incorporated within the Work constitutes direct 85 | or contributory patent infringement, then any patent licenses 86 | granted to You under this License for that Work shall terminate 87 | as of the date such litigation is filed. 88 | 89 | 4. Redistribution. You may reproduce and distribute copies of the 90 | Work or Derivative Works thereof in any medium, with or without 91 | modifications, and in Source or Object form, provided that You 92 | meet the following conditions: 93 | 94 | (a) You must give any other recipients of the Work or 95 | Derivative Works a copy of this License; and 96 | 97 | (b) You must cause any modified files to carry prominent notices 98 | stating that You changed the files; and 99 | 100 | (c) You must retain, in the Source form of any Derivative Works 101 | that You distribute, all copyright, patent, trademark, and 102 | attribution notices from the Source form of the Work, 103 | excluding those notices that do not pertain to any part of 104 | the Derivative Works; and 105 | 106 | (d) If the Work includes a "NOTICE" text file as part of its 107 | distribution, then any Derivative Works that You distribute must 108 | include a readable copy of the attribution notices contained 109 | within such NOTICE file, excluding those notices that do not 110 | pertain to any part of the Derivative Works, in at least one 111 | of the following places: within a NOTICE text file distributed 112 | as part of the Derivative Works; within the Source form or 113 | documentation, if provided along with the Derivative Works; or, 114 | within a display generated by the Derivative Works, if and 115 | wherever such third-party notices normally appear. The contents 116 | of the NOTICE file are for informational purposes only and 117 | do not modify the License. You may add Your own attribution 118 | notices within Derivative Works that You distribute, alongside 119 | or as an addendum to the NOTICE text from the Work, provided 120 | that such additional attribution notices cannot be construed 121 | as modifying the License. 122 | 123 | You may add Your own copyright statement to Your modifications and 124 | may provide additional or different license terms and conditions 125 | for use, reproduction, or distribution of Your modifications, or 126 | for any such Derivative Works as a whole, provided Your use, 127 | reproduction, and distribution of the Work otherwise complies with 128 | the conditions stated in this License. 129 | 130 | 5. Submission of Contributions. Unless You explicitly state otherwise, 131 | any Contribution intentionally submitted for inclusion in the Work 132 | by You to the Licensor shall be under the terms and conditions of 133 | this License, without any additional terms or conditions. 134 | Notwithstanding the above, nothing herein shall supersede or modify 135 | the terms of any separate license agreement you may have executed 136 | with Licensor regarding such Contributions. 137 | 138 | 6. Trademarks. This License does not grant permission to use the trade 139 | names, trademarks, service marks, or product names of the Licensor, 140 | except as required for reasonable and customary use in describing the 141 | origin of the Work and reproducing the content of the NOTICE file. 142 | 143 | 7. Disclaimer of Warranty. Unless required by applicable law or 144 | agreed to in writing, Licensor provides the Work (and each 145 | Contributor provides its Contributions) on an "AS IS" BASIS, 146 | WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or 147 | implied, including, without limitation, any warranties or conditions 148 | of TITLE, NON-INFRINGEMENT, MERCHANTABILITY, or FITNESS FOR A 149 | PARTICULAR PURPOSE. You are solely responsible for determining the 150 | appropriateness of using or redistributing the Work and assume any 151 | risks associated with Your exercise of permissions under this License. 152 | 153 | 8. Limitation of Liability. In no event and under no legal theory, 154 | whether in tort (including negligence), contract, or otherwise, 155 | unless required by applicable law (such as deliberate and grossly 156 | negligent acts) or agreed to in writing, shall any Contributor be 157 | liable to You for damages, including any direct, indirect, special, 158 | incidental, or consequential damages of any character arising as a 159 | result of this License or out of the use or inability to use the 160 | Work (including but not limited to damages for loss of goodwill, 161 | work stoppage, computer failure or malfunction, or any and all 162 | other commercial damages or losses), even if such Contributor 163 | has been advised of the possibility of such damages. 164 | 165 | 9. Accepting Warranty or Additional Liability. While redistributing 166 | the Work or Derivative Works thereof, You may choose to offer, 167 | and charge a fee for, acceptance of support, warranty, indemnity, 168 | or other liability obligations and/or rights consistent with this 169 | License. However, in accepting such obligations, You may act only 170 | on Your own behalf and on Your sole responsibility, not on behalf 171 | of any other Contributor, and only if You agree to indemnify, 172 | defend, and hold each Contributor harmless for any liability 173 | incurred by, or claims asserted against, such Contributor by reason 174 | of your accepting any such warranty or additional liability. 175 | 176 | END OF TERMS AND CONDITIONS -------------------------------------------------------------------------------- /lib/httpcore-4.4.13.jar: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/aws-samples/amazon-resilient-fix-engine-demo/29ee6f3d30cf53fb2037254aa6de23ee31f2f0e4/lib/httpcore-4.4.13.jar -------------------------------------------------------------------------------- /lib/httpcore-4.4.13.license: -------------------------------------------------------------------------------- 1 | Apache License 2 | Version 2.0, January 2004 3 | http://www.apache.org/licenses/ 4 | 5 | TERMS AND CONDITIONS FOR USE, REPRODUCTION, AND DISTRIBUTION 6 | 7 | 1. Definitions. 8 | 9 | "License" shall mean the terms and conditions for use, reproduction, 10 | and distribution as defined by Sections 1 through 9 of this document. 11 | 12 | "Licensor" shall mean the copyright owner or entity authorized by 13 | the copyright owner that is granting the License. 14 | 15 | "Legal Entity" shall mean the union of the acting entity and all 16 | other entities that control, are controlled by, or are under common 17 | control with that entity. For the purposes of this definition, 18 | "control" means (i) the power, direct or indirect, to cause the 19 | direction or management of such entity, whether by contract or 20 | otherwise, or (ii) ownership of fifty percent (50%) or more of the 21 | outstanding shares, or (iii) beneficial ownership of such entity. 22 | 23 | "You" (or "Your") shall mean an individual or Legal Entity 24 | exercising permissions granted by this License. 25 | 26 | "Source" form shall mean the preferred form for making modifications, 27 | including but not limited to software source code, documentation 28 | source, and configuration files. 29 | 30 | "Object" form shall mean any form resulting from mechanical 31 | transformation or translation of a Source form, including but 32 | not limited to compiled object code, generated documentation, 33 | and conversions to other media types. 34 | 35 | "Work" shall mean the work of authorship, whether in Source or 36 | Object form, made available under the License, as indicated by a 37 | copyright notice that is included in or attached to the work 38 | (an example is provided in the Appendix below). 39 | 40 | "Derivative Works" shall mean any work, whether in Source or Object 41 | form, that is based on (or derived from) the Work and for which the 42 | editorial revisions, annotations, elaborations, or other modifications 43 | represent, as a whole, an original work of authorship. For the purposes 44 | of this License, Derivative Works shall not include works that remain 45 | separable from, or merely link (or bind by name) to the interfaces of, 46 | the Work and Derivative Works thereof. 47 | 48 | "Contribution" shall mean any work of authorship, including 49 | the original version of the Work and any modifications or additions 50 | to that Work or Derivative Works thereof, that is intentionally 51 | submitted to Licensor for inclusion in the Work by the copyright owner 52 | or by an individual or Legal Entity authorized to submit on behalf of 53 | the copyright owner. For the purposes of this definition, "submitted" 54 | means any form of electronic, verbal, or written communication sent 55 | to the Licensor or its representatives, including but not limited to 56 | communication on electronic mailing lists, source code control systems, 57 | and issue tracking systems that are managed by, or on behalf of, the 58 | Licensor for the purpose of discussing and improving the Work, but 59 | excluding communication that is conspicuously marked or otherwise 60 | designated in writing by the copyright owner as "Not a Contribution." 61 | 62 | "Contributor" shall mean Licensor and any individual or Legal Entity 63 | on behalf of whom a Contribution has been received by Licensor and 64 | subsequently incorporated within the Work. 65 | 66 | 2. Grant of Copyright License. Subject to the terms and conditions of 67 | this License, each Contributor hereby grants to You a perpetual, 68 | worldwide, non-exclusive, no-charge, royalty-free, irrevocable 69 | copyright license to reproduce, prepare Derivative Works of, 70 | publicly display, publicly perform, sublicense, and distribute the 71 | Work and such Derivative Works in Source or Object form. 72 | 73 | 3. Grant of Patent License. Subject to the terms and conditions of 74 | this License, each Contributor hereby grants to You a perpetual, 75 | worldwide, non-exclusive, no-charge, royalty-free, irrevocable 76 | (except as stated in this section) patent license to make, have made, 77 | use, offer to sell, sell, import, and otherwise transfer the Work, 78 | where such license applies only to those patent claims licensable 79 | by such Contributor that are necessarily infringed by their 80 | Contribution(s) alone or by combination of their Contribution(s) 81 | with the Work to which such Contribution(s) was submitted. If You 82 | institute patent litigation against any entity (including a 83 | cross-claim or counterclaim in a lawsuit) alleging that the Work 84 | or a Contribution incorporated within the Work constitutes direct 85 | or contributory patent infringement, then any patent licenses 86 | granted to You under this License for that Work shall terminate 87 | as of the date such litigation is filed. 88 | 89 | 4. Redistribution. You may reproduce and distribute copies of the 90 | Work or Derivative Works thereof in any medium, with or without 91 | modifications, and in Source or Object form, provided that You 92 | meet the following conditions: 93 | 94 | (a) You must give any other recipients of the Work or 95 | Derivative Works a copy of this License; and 96 | 97 | (b) You must cause any modified files to carry prominent notices 98 | stating that You changed the files; and 99 | 100 | (c) You must retain, in the Source form of any Derivative Works 101 | that You distribute, all copyright, patent, trademark, and 102 | attribution notices from the Source form of the Work, 103 | excluding those notices that do not pertain to any part of 104 | the Derivative Works; and 105 | 106 | (d) If the Work includes a "NOTICE" text file as part of its 107 | distribution, then any Derivative Works that You distribute must 108 | include a readable copy of the attribution notices contained 109 | within such NOTICE file, excluding those notices that do not 110 | pertain to any part of the Derivative Works, in at least one 111 | of the following places: within a NOTICE text file distributed 112 | as part of the Derivative Works; within the Source form or 113 | documentation, if provided along with the Derivative Works; or, 114 | within a display generated by the Derivative Works, if and 115 | wherever such third-party notices normally appear. The contents 116 | of the NOTICE file are for informational purposes only and 117 | do not modify the License. You may add Your own attribution 118 | notices within Derivative Works that You distribute, alongside 119 | or as an addendum to the NOTICE text from the Work, provided 120 | that such additional attribution notices cannot be construed 121 | as modifying the License. 122 | 123 | You may add Your own copyright statement to Your modifications and 124 | may provide additional or different license terms and conditions 125 | for use, reproduction, or distribution of Your modifications, or 126 | for any such Derivative Works as a whole, provided Your use, 127 | reproduction, and distribution of the Work otherwise complies with 128 | the conditions stated in this License. 129 | 130 | 5. Submission of Contributions. Unless You explicitly state otherwise, 131 | any Contribution intentionally submitted for inclusion in the Work 132 | by You to the Licensor shall be under the terms and conditions of 133 | this License, without any additional terms or conditions. 134 | Notwithstanding the above, nothing herein shall supersede or modify 135 | the terms of any separate license agreement you may have executed 136 | with Licensor regarding such Contributions. 137 | 138 | 6. Trademarks. This License does not grant permission to use the trade 139 | names, trademarks, service marks, or product names of the Licensor, 140 | except as required for reasonable and customary use in describing the 141 | origin of the Work and reproducing the content of the NOTICE file. 142 | 143 | 7. Disclaimer of Warranty. Unless required by applicable law or 144 | agreed to in writing, Licensor provides the Work (and each 145 | Contributor provides its Contributions) on an "AS IS" BASIS, 146 | WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or 147 | implied, including, without limitation, any warranties or conditions 148 | of TITLE, NON-INFRINGEMENT, MERCHANTABILITY, or FITNESS FOR A 149 | PARTICULAR PURPOSE. You are solely responsible for determining the 150 | appropriateness of using or redistributing the Work and assume any 151 | risks associated with Your exercise of permissions under this License. 152 | 153 | 8. Limitation of Liability. In no event and under no legal theory, 154 | whether in tort (including negligence), contract, or otherwise, 155 | unless required by applicable law (such as deliberate and grossly 156 | negligent acts) or agreed to in writing, shall any Contributor be 157 | liable to You for damages, including any direct, indirect, special, 158 | incidental, or consequential damages of any character arising as a 159 | result of this License or out of the use or inability to use the 160 | Work (including but not limited to damages for loss of goodwill, 161 | work stoppage, computer failure or malfunction, or any and all 162 | other commercial damages or losses), even if such Contributor 163 | has been advised of the possibility of such damages. 164 | 165 | 9. Accepting Warranty or Additional Liability. While redistributing 166 | the Work or Derivative Works thereof, You may choose to offer, 167 | and charge a fee for, acceptance of support, warranty, indemnity, 168 | or other liability obligations and/or rights consistent with this 169 | License. However, in accepting such obligations, You may act only 170 | on Your own behalf and on Your sole responsibility, not on behalf 171 | of any other Contributor, and only if You agree to indemnify, 172 | defend, and hold each Contributor harmless for any liability 173 | incurred by, or claims asserted against, such Contributor by reason 174 | of your accepting any such warranty or additional liability. 175 | 176 | END OF TERMS AND CONDITIONS -------------------------------------------------------------------------------- /lib/jackson-annotations-2.12.3.jar: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/aws-samples/amazon-resilient-fix-engine-demo/29ee6f3d30cf53fb2037254aa6de23ee31f2f0e4/lib/jackson-annotations-2.12.3.jar -------------------------------------------------------------------------------- /lib/jackson-core-2.12.3.jar: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/aws-samples/amazon-resilient-fix-engine-demo/29ee6f3d30cf53fb2037254aa6de23ee31f2f0e4/lib/jackson-core-2.12.3.jar -------------------------------------------------------------------------------- /lib/jackson-databind-2.12.3.jar: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/aws-samples/amazon-resilient-fix-engine-demo/29ee6f3d30cf53fb2037254aa6de23ee31f2f0e4/lib/jackson-databind-2.12.3.jar -------------------------------------------------------------------------------- /lib/jackson-dataformat-cbor-2.6.7.jar: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/aws-samples/amazon-resilient-fix-engine-demo/29ee6f3d30cf53fb2037254aa6de23ee31f2f0e4/lib/jackson-dataformat-cbor-2.6.7.jar -------------------------------------------------------------------------------- /lib/jaxen-1.2.0.jar: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/aws-samples/amazon-resilient-fix-engine-demo/29ee6f3d30cf53fb2037254aa6de23ee31f2f0e4/lib/jaxen-1.2.0.jar -------------------------------------------------------------------------------- /lib/jaxen-1.2.0.license: -------------------------------------------------------------------------------- 1 | BSD License for Jaxen 2 | Copyright 2003-2006 The Werken Company. All Rights Reserved. 3 | 4 | Redistribution and use in source and binary forms, with or without modification, are permitted provided that the following conditions are met: 5 | Redistributions of source code must retain the above copyright notice, this list of conditions and the following disclaimer. 6 | Redistributions in binary form must reproduce the above copyright notice, this list of conditions and the following disclaimer in the documentation and/or other materials provided with the distribution. 7 | Neither the name of the Jaxen Project nor the names of its contributors may be used to endorse or promote products derived from this software without specific prior written permission. 8 | THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. -------------------------------------------------------------------------------- /lib/jcl-over-slf4j-1.7.30.jar: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/aws-samples/amazon-resilient-fix-engine-demo/29ee6f3d30cf53fb2037254aa6de23ee31f2f0e4/lib/jcl-over-slf4j-1.7.30.jar -------------------------------------------------------------------------------- /lib/jcl-over-slf4j-1.7.30.license: -------------------------------------------------------------------------------- 1 | Apache License 2 | Version 2.0, January 2004 3 | http://www.apache.org/licenses/ 4 | 5 | TERMS AND CONDITIONS FOR USE, REPRODUCTION, AND DISTRIBUTION 6 | 7 | 1. Definitions. 8 | 9 | "License" shall mean the terms and conditions for use, reproduction, 10 | and distribution as defined by Sections 1 through 9 of this document. 11 | 12 | "Licensor" shall mean the copyright owner or entity authorized by 13 | the copyright owner that is granting the License. 14 | 15 | "Legal Entity" shall mean the union of the acting entity and all 16 | other entities that control, are controlled by, or are under common 17 | control with that entity. For the purposes of this definition, 18 | "control" means (i) the power, direct or indirect, to cause the 19 | direction or management of such entity, whether by contract or 20 | otherwise, or (ii) ownership of fifty percent (50%) or more of the 21 | outstanding shares, or (iii) beneficial ownership of such entity. 22 | 23 | "You" (or "Your") shall mean an individual or Legal Entity 24 | exercising permissions granted by this License. 25 | 26 | "Source" form shall mean the preferred form for making modifications, 27 | including but not limited to software source code, documentation 28 | source, and configuration files. 29 | 30 | "Object" form shall mean any form resulting from mechanical 31 | transformation or translation of a Source form, including but 32 | not limited to compiled object code, generated documentation, 33 | and conversions to other media types. 34 | 35 | "Work" shall mean the work of authorship, whether in Source or 36 | Object form, made available under the License, as indicated by a 37 | copyright notice that is included in or attached to the work 38 | (an example is provided in the Appendix below). 39 | 40 | "Derivative Works" shall mean any work, whether in Source or Object 41 | form, that is based on (or derived from) the Work and for which the 42 | editorial revisions, annotations, elaborations, or other modifications 43 | represent, as a whole, an original work of authorship. For the purposes 44 | of this License, Derivative Works shall not include works that remain 45 | separable from, or merely link (or bind by name) to the interfaces of, 46 | the Work and Derivative Works thereof. 47 | 48 | "Contribution" shall mean any work of authorship, including 49 | the original version of the Work and any modifications or additions 50 | to that Work or Derivative Works thereof, that is intentionally 51 | submitted to Licensor for inclusion in the Work by the copyright owner 52 | or by an individual or Legal Entity authorized to submit on behalf of 53 | the copyright owner. For the purposes of this definition, "submitted" 54 | means any form of electronic, verbal, or written communication sent 55 | to the Licensor or its representatives, including but not limited to 56 | communication on electronic mailing lists, source code control systems, 57 | and issue tracking systems that are managed by, or on behalf of, the 58 | Licensor for the purpose of discussing and improving the Work, but 59 | excluding communication that is conspicuously marked or otherwise 60 | designated in writing by the copyright owner as "Not a Contribution." 61 | 62 | "Contributor" shall mean Licensor and any individual or Legal Entity 63 | on behalf of whom a Contribution has been received by Licensor and 64 | subsequently incorporated within the Work. 65 | 66 | 2. Grant of Copyright License. Subject to the terms and conditions of 67 | this License, each Contributor hereby grants to You a perpetual, 68 | worldwide, non-exclusive, no-charge, royalty-free, irrevocable 69 | copyright license to reproduce, prepare Derivative Works of, 70 | publicly display, publicly perform, sublicense, and distribute the 71 | Work and such Derivative Works in Source or Object form. 72 | 73 | 3. Grant of Patent License. Subject to the terms and conditions of 74 | this License, each Contributor hereby grants to You a perpetual, 75 | worldwide, non-exclusive, no-charge, royalty-free, irrevocable 76 | (except as stated in this section) patent license to make, have made, 77 | use, offer to sell, sell, import, and otherwise transfer the Work, 78 | where such license applies only to those patent claims licensable 79 | by such Contributor that are necessarily infringed by their 80 | Contribution(s) alone or by combination of their Contribution(s) 81 | with the Work to which such Contribution(s) was submitted. If You 82 | institute patent litigation against any entity (including a 83 | cross-claim or counterclaim in a lawsuit) alleging that the Work 84 | or a Contribution incorporated within the Work constitutes direct 85 | or contributory patent infringement, then any patent licenses 86 | granted to You under this License for that Work shall terminate 87 | as of the date such litigation is filed. 88 | 89 | 4. Redistribution. You may reproduce and distribute copies of the 90 | Work or Derivative Works thereof in any medium, with or without 91 | modifications, and in Source or Object form, provided that You 92 | meet the following conditions: 93 | 94 | (a) You must give any other recipients of the Work or 95 | Derivative Works a copy of this License; and 96 | 97 | (b) You must cause any modified files to carry prominent notices 98 | stating that You changed the files; and 99 | 100 | (c) You must retain, in the Source form of any Derivative Works 101 | that You distribute, all copyright, patent, trademark, and 102 | attribution notices from the Source form of the Work, 103 | excluding those notices that do not pertain to any part of 104 | the Derivative Works; and 105 | 106 | (d) If the Work includes a "NOTICE" text file as part of its 107 | distribution, then any Derivative Works that You distribute must 108 | include a readable copy of the attribution notices contained 109 | within such NOTICE file, excluding those notices that do not 110 | pertain to any part of the Derivative Works, in at least one 111 | of the following places: within a NOTICE text file distributed 112 | as part of the Derivative Works; within the Source form or 113 | documentation, if provided along with the Derivative Works; or, 114 | within a display generated by the Derivative Works, if and 115 | wherever such third-party notices normally appear. The contents 116 | of the NOTICE file are for informational purposes only and 117 | do not modify the License. You may add Your own attribution 118 | notices within Derivative Works that You distribute, alongside 119 | or as an addendum to the NOTICE text from the Work, provided 120 | that such additional attribution notices cannot be construed 121 | as modifying the License. 122 | 123 | You may add Your own copyright statement to Your modifications and 124 | may provide additional or different license terms and conditions 125 | for use, reproduction, or distribution of Your modifications, or 126 | for any such Derivative Works as a whole, provided Your use, 127 | reproduction, and distribution of the Work otherwise complies with 128 | the conditions stated in this License. 129 | 130 | 5. Submission of Contributions. Unless You explicitly state otherwise, 131 | any Contribution intentionally submitted for inclusion in the Work 132 | by You to the Licensor shall be under the terms and conditions of 133 | this License, without any additional terms or conditions. 134 | Notwithstanding the above, nothing herein shall supersede or modify 135 | the terms of any separate license agreement you may have executed 136 | with Licensor regarding such Contributions. 137 | 138 | 6. Trademarks. This License does not grant permission to use the trade 139 | names, trademarks, service marks, or product names of the Licensor, 140 | except as required for reasonable and customary use in describing the 141 | origin of the Work and reproducing the content of the NOTICE file. 142 | 143 | 7. Disclaimer of Warranty. Unless required by applicable law or 144 | agreed to in writing, Licensor provides the Work (and each 145 | Contributor provides its Contributions) on an "AS IS" BASIS, 146 | WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or 147 | implied, including, without limitation, any warranties or conditions 148 | of TITLE, NON-INFRINGEMENT, MERCHANTABILITY, or FITNESS FOR A 149 | PARTICULAR PURPOSE. You are solely responsible for determining the 150 | appropriateness of using or redistributing the Work and assume any 151 | risks associated with Your exercise of permissions under this License. 152 | 153 | 8. Limitation of Liability. In no event and under no legal theory, 154 | whether in tort (including negligence), contract, or otherwise, 155 | unless required by applicable law (such as deliberate and grossly 156 | negligent acts) or agreed to in writing, shall any Contributor be 157 | liable to You for damages, including any direct, indirect, special, 158 | incidental, or consequential damages of any character arising as a 159 | result of this License or out of the use or inability to use the 160 | Work (including but not limited to damages for loss of goodwill, 161 | work stoppage, computer failure or malfunction, or any and all 162 | other commercial damages or losses), even if such Contributor 163 | has been advised of the possibility of such damages. 164 | 165 | 9. Accepting Warranty or Additional Liability. While redistributing 166 | the Work or Derivative Works thereof, You may choose to offer, 167 | and charge a fee for, acceptance of support, warranty, indemnity, 168 | or other liability obligations and/or rights consistent with this 169 | License. However, in accepting such obligations, You may act only 170 | on Your own behalf and on Your sole responsibility, not on behalf 171 | of any other Contributor, and only if You agree to indemnify, 172 | defend, and hold each Contributor harmless for any liability 173 | incurred by, or claims asserted against, such Contributor by reason 174 | of your accepting any such warranty or additional liability. 175 | 176 | END OF TERMS AND CONDITIONS -------------------------------------------------------------------------------- /lib/jedis-3.6.3.jar: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/aws-samples/amazon-resilient-fix-engine-demo/29ee6f3d30cf53fb2037254aa6de23ee31f2f0e4/lib/jedis-3.6.3.jar -------------------------------------------------------------------------------- /lib/joda-time-2.8.1.jar: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/aws-samples/amazon-resilient-fix-engine-demo/29ee6f3d30cf53fb2037254aa6de23ee31f2f0e4/lib/joda-time-2.8.1.jar -------------------------------------------------------------------------------- /lib/json-simple-1.1.1.jar: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/aws-samples/amazon-resilient-fix-engine-demo/29ee6f3d30cf53fb2037254aa6de23ee31f2f0e4/lib/json-simple-1.1.1.jar -------------------------------------------------------------------------------- /lib/junit-4.13.2.jar: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/aws-samples/amazon-resilient-fix-engine-demo/29ee6f3d30cf53fb2037254aa6de23ee31f2f0e4/lib/junit-4.13.2.jar -------------------------------------------------------------------------------- /lib/kafka-clients-2.8.0.jar: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/aws-samples/amazon-resilient-fix-engine-demo/29ee6f3d30cf53fb2037254aa6de23ee31f2f0e4/lib/kafka-clients-2.8.0.jar -------------------------------------------------------------------------------- /lib/mariadb-java-client-2.7.0.jar: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/aws-samples/amazon-resilient-fix-engine-demo/29ee6f3d30cf53fb2037254aa6de23ee31f2f0e4/lib/mariadb-java-client-2.7.0.jar -------------------------------------------------------------------------------- /lib/mina-core-2.1.3.jar: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/aws-samples/amazon-resilient-fix-engine-demo/29ee6f3d30cf53fb2037254aa6de23ee31f2f0e4/lib/mina-core-2.1.3.jar -------------------------------------------------------------------------------- /lib/proxool-0.9.1.jar: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/aws-samples/amazon-resilient-fix-engine-demo/29ee6f3d30cf53fb2037254aa6de23ee31f2f0e4/lib/proxool-0.9.1.jar -------------------------------------------------------------------------------- /lib/proxool-0.9.1.license: -------------------------------------------------------------------------------- 1 | /* ==================================================================== 2 | * Copyright (c) 2002-2003 Proxool. All rights reserved. 3 | * 4 | * Redistribution and use in source and binary forms, with or without 5 | * modification, are permitted provided that the following conditions 6 | * are met: 7 | * 8 | * 1. Redistributions of source code must retain the above copyright 9 | * notice, this list of conditions and the following disclaimer. 10 | * 11 | * 2. Redistributions in binary form must reproduce the above copyright 12 | * notice, this list of conditions and the following disclaimer in 13 | * the documentation and/or other materials provided with the 14 | * distribution. 15 | * 16 | * 3. All advertising materials mentioning features or use of this 17 | * software must display the following acknowledgment: 18 | * "This product includes software developed by the Proxool 19 | * Project (http://proxool.sourceforge.net/)." 20 | * 21 | * 4. The name "Proxool" must not be used to endorse or promote products 22 | * derived from this software without prior written permission. For 23 | * written permission, please contact bill@logicalcobwebs.co.uk. 24 | * 25 | * 5. Products derived from this software may not be called "Proxool" 26 | * nor may "Proxool" appear in their names without prior written 27 | * permission of the Proxool Project. 28 | * 29 | * 6. Redistributions of any form whatsoever must retain the following 30 | * acknowledgment: 31 | * "This product includes software developed by the Proxool Project 32 | * (http://proxool.sourceforge.net/)." 33 | * 34 | * THIS SOFTWARE IS PROVIDED BY THE PROXOOL PROJECT ``AS IS'' AND ANY 35 | * EXPRESSED OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE 36 | * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR 37 | * PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE PROXOOL PROJECT OR 38 | * ITS CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, 39 | * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT 40 | * NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; 41 | * LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) 42 | * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, 43 | * STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) 44 | * ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED 45 | * OF THE POSSIBILITY OF SUCH DAMAGE. 46 | * ==================================================================== 47 | * 48 | * This software consists of voluntary contributions made by many 49 | * individuals on behalf of the Proxool Project. For more information 50 | * on the Proxool Project, please see . 51 | * 52 | */ -------------------------------------------------------------------------------- /lib/proxool-cglib-0.9.1.jar: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/aws-samples/amazon-resilient-fix-engine-demo/29ee6f3d30cf53fb2037254aa6de23ee31f2f0e4/lib/proxool-cglib-0.9.1.jar -------------------------------------------------------------------------------- /lib/proxool-cglib-0.9.1.license: -------------------------------------------------------------------------------- 1 | /* ==================================================================== 2 | * Copyright (c) 2002-2003 Proxool. All rights reserved. 3 | * 4 | * Redistribution and use in source and binary forms, with or without 5 | * modification, are permitted provided that the following conditions 6 | * are met: 7 | * 8 | * 1. Redistributions of source code must retain the above copyright 9 | * notice, this list of conditions and the following disclaimer. 10 | * 11 | * 2. Redistributions in binary form must reproduce the above copyright 12 | * notice, this list of conditions and the following disclaimer in 13 | * the documentation and/or other materials provided with the 14 | * distribution. 15 | * 16 | * 3. All advertising materials mentioning features or use of this 17 | * software must display the following acknowledgment: 18 | * "This product includes software developed by the Proxool 19 | * Project (http://proxool.sourceforge.net/)." 20 | * 21 | * 4. The name "Proxool" must not be used to endorse or promote products 22 | * derived from this software without prior written permission. For 23 | * written permission, please contact bill@logicalcobwebs.co.uk. 24 | * 25 | * 5. Products derived from this software may not be called "Proxool" 26 | * nor may "Proxool" appear in their names without prior written 27 | * permission of the Proxool Project. 28 | * 29 | * 6. Redistributions of any form whatsoever must retain the following 30 | * acknowledgment: 31 | * "This product includes software developed by the Proxool Project 32 | * (http://proxool.sourceforge.net/)." 33 | * 34 | * THIS SOFTWARE IS PROVIDED BY THE PROXOOL PROJECT ``AS IS'' AND ANY 35 | * EXPRESSED OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE 36 | * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR 37 | * PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE PROXOOL PROJECT OR 38 | * ITS CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, 39 | * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT 40 | * NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; 41 | * LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) 42 | * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, 43 | * STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) 44 | * ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED 45 | * OF THE POSSIBILITY OF SUCH DAMAGE. 46 | * ==================================================================== 47 | * 48 | * This software consists of voluntary contributions made by many 49 | * individuals on behalf of the Proxool Project. For more information 50 | * on the Proxool Project, please see . 51 | * 52 | */ -------------------------------------------------------------------------------- /lib/quickfixj-core-2.2.0.jar: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/aws-samples/amazon-resilient-fix-engine-demo/29ee6f3d30cf53fb2037254aa6de23ee31f2f0e4/lib/quickfixj-core-2.2.0.jar -------------------------------------------------------------------------------- /lib/quickfixj-core-2.2.0.license: -------------------------------------------------------------------------------- 1 | QuickFIX License The QuickFIX Software License, Version 1.0 Copyright (c) 2001-2005 quickfixengine.org All rights reserved. Redistribution and use in source and binary forms, with or without modification, are permitted provided that the following conditions are met: Redistributions of source code must retain the above copyright notice, this list of conditions and the following disclaimer. Redistributions in binary form must reproduce the above copyright notice, this list of conditions and the following disclaimer in the documentation and/or other materials provided with the distribution. The end-user documentation included with the redistribution, if any, must include the following acknowledgment: "This product includes software developed by quickfixengine.org http://www.quickfixengine.org/". Alternately, this acknowledgment may appear in the software itself, if and wherever such third-party acknowledgments normally appear. The names "QuickFIX" and "quickfixengine.org" must not be used to endorse or promote products derived from this software without prior written permission. For written permission, please contact quickfix-users@lists.sourceforge.net. Products derived from this software may not be called "QuickFIX", nor may "QuickFIX" appear in their name, without prior written permission of quickfixengine.org THIS SOFTWARE IS PROVIDED ``AS IS'' AND ANY EXPRESSED OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL QUICKFIXENGINE.ORG OR ITS CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. -------------------------------------------------------------------------------- /lib/quickfixj-messages-all-2.2.0.jar: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/aws-samples/amazon-resilient-fix-engine-demo/29ee6f3d30cf53fb2037254aa6de23ee31f2f0e4/lib/quickfixj-messages-all-2.2.0.jar -------------------------------------------------------------------------------- /lib/quickfixj-messages-all-2.2.0.license: -------------------------------------------------------------------------------- 1 | QuickFIX License 2 | The QuickFIX Software License, Version 1.0 3 | 4 | Copyright (c) 2001-2005 quickfixengine.org All rights reserved. 5 | 6 | Redistribution and use in source and binary forms, with or without modification, are permitted provided that the following conditions are met: 7 | 8 | Redistributions of source code must retain the above copyright notice, this list of conditions and the following disclaimer. 9 | Redistributions in binary form must reproduce the above copyright notice, this list of conditions and the following disclaimer in the documentation and/or other materials provided with the distribution. 10 | The end-user documentation included with the redistribution, if any, must include the following acknowledgment: "This product includes software developed by quickfixengine.org http://www.quickfixengine.org/". Alternately, this acknowledgment may appear in the software itself, if and wherever such third-party acknowledgments normally appear. 11 | The names "QuickFIX" and "quickfixengine.org" must not be used to endorse or promote products derived from this software without prior written permission. For written permission, please contact quickfix-users@lists.sourceforge.net. 12 | Products derived from this software may not be called "QuickFIX", nor may "QuickFIX" appear in their name, without prior written permission of quickfixengine.org 13 | THIS SOFTWARE IS PROVIDED ``AS IS'' AND ANY EXPRESSED OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL QUICKFIXENGINE.ORG OR ITS CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. -------------------------------------------------------------------------------- /lib/slf4j-api-1.7.30.jar: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/aws-samples/amazon-resilient-fix-engine-demo/29ee6f3d30cf53fb2037254aa6de23ee31f2f0e4/lib/slf4j-api-1.7.30.jar -------------------------------------------------------------------------------- /lib/slf4j-api-1.7.30.license: -------------------------------------------------------------------------------- 1 | Apache License 2 | Version 2.0, January 2004 3 | http://www.apache.org/licenses/ 4 | 5 | TERMS AND CONDITIONS FOR USE, REPRODUCTION, AND DISTRIBUTION 6 | 7 | 1. Definitions. 8 | 9 | "License" shall mean the terms and conditions for use, reproduction, 10 | and distribution as defined by Sections 1 through 9 of this document. 11 | 12 | "Licensor" shall mean the copyright owner or entity authorized by 13 | the copyright owner that is granting the License. 14 | 15 | "Legal Entity" shall mean the union of the acting entity and all 16 | other entities that control, are controlled by, or are under common 17 | control with that entity. For the purposes of this definition, 18 | "control" means (i) the power, direct or indirect, to cause the 19 | direction or management of such entity, whether by contract or 20 | otherwise, or (ii) ownership of fifty percent (50%) or more of the 21 | outstanding shares, or (iii) beneficial ownership of such entity. 22 | 23 | "You" (or "Your") shall mean an individual or Legal Entity 24 | exercising permissions granted by this License. 25 | 26 | "Source" form shall mean the preferred form for making modifications, 27 | including but not limited to software source code, documentation 28 | source, and configuration files. 29 | 30 | "Object" form shall mean any form resulting from mechanical 31 | transformation or translation of a Source form, including but 32 | not limited to compiled object code, generated documentation, 33 | and conversions to other media types. 34 | 35 | "Work" shall mean the work of authorship, whether in Source or 36 | Object form, made available under the License, as indicated by a 37 | copyright notice that is included in or attached to the work 38 | (an example is provided in the Appendix below). 39 | 40 | "Derivative Works" shall mean any work, whether in Source or Object 41 | form, that is based on (or derived from) the Work and for which the 42 | editorial revisions, annotations, elaborations, or other modifications 43 | represent, as a whole, an original work of authorship. For the purposes 44 | of this License, Derivative Works shall not include works that remain 45 | separable from, or merely link (or bind by name) to the interfaces of, 46 | the Work and Derivative Works thereof. 47 | 48 | "Contribution" shall mean any work of authorship, including 49 | the original version of the Work and any modifications or additions 50 | to that Work or Derivative Works thereof, that is intentionally 51 | submitted to Licensor for inclusion in the Work by the copyright owner 52 | or by an individual or Legal Entity authorized to submit on behalf of 53 | the copyright owner. For the purposes of this definition, "submitted" 54 | means any form of electronic, verbal, or written communication sent 55 | to the Licensor or its representatives, including but not limited to 56 | communication on electronic mailing lists, source code control systems, 57 | and issue tracking systems that are managed by, or on behalf of, the 58 | Licensor for the purpose of discussing and improving the Work, but 59 | excluding communication that is conspicuously marked or otherwise 60 | designated in writing by the copyright owner as "Not a Contribution." 61 | 62 | "Contributor" shall mean Licensor and any individual or Legal Entity 63 | on behalf of whom a Contribution has been received by Licensor and 64 | subsequently incorporated within the Work. 65 | 66 | 2. Grant of Copyright License. Subject to the terms and conditions of 67 | this License, each Contributor hereby grants to You a perpetual, 68 | worldwide, non-exclusive, no-charge, royalty-free, irrevocable 69 | copyright license to reproduce, prepare Derivative Works of, 70 | publicly display, publicly perform, sublicense, and distribute the 71 | Work and such Derivative Works in Source or Object form. 72 | 73 | 3. Grant of Patent License. Subject to the terms and conditions of 74 | this License, each Contributor hereby grants to You a perpetual, 75 | worldwide, non-exclusive, no-charge, royalty-free, irrevocable 76 | (except as stated in this section) patent license to make, have made, 77 | use, offer to sell, sell, import, and otherwise transfer the Work, 78 | where such license applies only to those patent claims licensable 79 | by such Contributor that are necessarily infringed by their 80 | Contribution(s) alone or by combination of their Contribution(s) 81 | with the Work to which such Contribution(s) was submitted. If You 82 | institute patent litigation against any entity (including a 83 | cross-claim or counterclaim in a lawsuit) alleging that the Work 84 | or a Contribution incorporated within the Work constitutes direct 85 | or contributory patent infringement, then any patent licenses 86 | granted to You under this License for that Work shall terminate 87 | as of the date such litigation is filed. 88 | 89 | 4. Redistribution. You may reproduce and distribute copies of the 90 | Work or Derivative Works thereof in any medium, with or without 91 | modifications, and in Source or Object form, provided that You 92 | meet the following conditions: 93 | 94 | (a) You must give any other recipients of the Work or 95 | Derivative Works a copy of this License; and 96 | 97 | (b) You must cause any modified files to carry prominent notices 98 | stating that You changed the files; and 99 | 100 | (c) You must retain, in the Source form of any Derivative Works 101 | that You distribute, all copyright, patent, trademark, and 102 | attribution notices from the Source form of the Work, 103 | excluding those notices that do not pertain to any part of 104 | the Derivative Works; and 105 | 106 | (d) If the Work includes a "NOTICE" text file as part of its 107 | distribution, then any Derivative Works that You distribute must 108 | include a readable copy of the attribution notices contained 109 | within such NOTICE file, excluding those notices that do not 110 | pertain to any part of the Derivative Works, in at least one 111 | of the following places: within a NOTICE text file distributed 112 | as part of the Derivative Works; within the Source form or 113 | documentation, if provided along with the Derivative Works; or, 114 | within a display generated by the Derivative Works, if and 115 | wherever such third-party notices normally appear. The contents 116 | of the NOTICE file are for informational purposes only and 117 | do not modify the License. You may add Your own attribution 118 | notices within Derivative Works that You distribute, alongside 119 | or as an addendum to the NOTICE text from the Work, provided 120 | that such additional attribution notices cannot be construed 121 | as modifying the License. 122 | 123 | You may add Your own copyright statement to Your modifications and 124 | may provide additional or different license terms and conditions 125 | for use, reproduction, or distribution of Your modifications, or 126 | for any such Derivative Works as a whole, provided Your use, 127 | reproduction, and distribution of the Work otherwise complies with 128 | the conditions stated in this License. 129 | 130 | 5. Submission of Contributions. Unless You explicitly state otherwise, 131 | any Contribution intentionally submitted for inclusion in the Work 132 | by You to the Licensor shall be under the terms and conditions of 133 | this License, without any additional terms or conditions. 134 | Notwithstanding the above, nothing herein shall supersede or modify 135 | the terms of any separate license agreement you may have executed 136 | with Licensor regarding such Contributions. 137 | 138 | 6. Trademarks. This License does not grant permission to use the trade 139 | names, trademarks, service marks, or product names of the Licensor, 140 | except as required for reasonable and customary use in describing the 141 | origin of the Work and reproducing the content of the NOTICE file. 142 | 143 | 7. Disclaimer of Warranty. Unless required by applicable law or 144 | agreed to in writing, Licensor provides the Work (and each 145 | Contributor provides its Contributions) on an "AS IS" BASIS, 146 | WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or 147 | implied, including, without limitation, any warranties or conditions 148 | of TITLE, NON-INFRINGEMENT, MERCHANTABILITY, or FITNESS FOR A 149 | PARTICULAR PURPOSE. You are solely responsible for determining the 150 | appropriateness of using or redistributing the Work and assume any 151 | risks associated with Your exercise of permissions under this License. 152 | 153 | 8. Limitation of Liability. In no event and under no legal theory, 154 | whether in tort (including negligence), contract, or otherwise, 155 | unless required by applicable law (such as deliberate and grossly 156 | negligent acts) or agreed to in writing, shall any Contributor be 157 | liable to You for damages, including any direct, indirect, special, 158 | incidental, or consequential damages of any character arising as a 159 | result of this License or out of the use or inability to use the 160 | Work (including but not limited to damages for loss of goodwill, 161 | work stoppage, computer failure or malfunction, or any and all 162 | other commercial damages or losses), even if such Contributor 163 | has been advised of the possibility of such damages. 164 | 165 | 9. Accepting Warranty or Additional Liability. While redistributing 166 | the Work or Derivative Works thereof, You may choose to offer, 167 | and charge a fee for, acceptance of support, warranty, indemnity, 168 | or other liability obligations and/or rights consistent with this 169 | License. However, in accepting such obligations, You may act only 170 | on Your own behalf and on Your sole responsibility, not on behalf 171 | of any other Contributor, and only if You agree to indemnify, 172 | defend, and hold each Contributor harmless for any liability 173 | incurred by, or claims asserted against, such Contributor by reason 174 | of your accepting any such warranty or additional liability. 175 | 176 | END OF TERMS AND CONDITIONS 177 | -------------------------------------------------------------------------------- /lib/slf4j-jdk14-1.7.30.jar: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/aws-samples/amazon-resilient-fix-engine-demo/29ee6f3d30cf53fb2037254aa6de23ee31f2f0e4/lib/slf4j-jdk14-1.7.30.jar -------------------------------------------------------------------------------- /lib/slf4j-jdk14-1.7.30.license: -------------------------------------------------------------------------------- 1 | Apache License 2 | Version 2.0, January 2004 3 | http://www.apache.org/licenses/ 4 | 5 | TERMS AND CONDITIONS FOR USE, REPRODUCTION, AND DISTRIBUTION 6 | 7 | 1. Definitions. 8 | 9 | "License" shall mean the terms and conditions for use, reproduction, 10 | and distribution as defined by Sections 1 through 9 of this document. 11 | 12 | "Licensor" shall mean the copyright owner or entity authorized by 13 | the copyright owner that is granting the License. 14 | 15 | "Legal Entity" shall mean the union of the acting entity and all 16 | other entities that control, are controlled by, or are under common 17 | control with that entity. For the purposes of this definition, 18 | "control" means (i) the power, direct or indirect, to cause the 19 | direction or management of such entity, whether by contract or 20 | otherwise, or (ii) ownership of fifty percent (50%) or more of the 21 | outstanding shares, or (iii) beneficial ownership of such entity. 22 | 23 | "You" (or "Your") shall mean an individual or Legal Entity 24 | exercising permissions granted by this License. 25 | 26 | "Source" form shall mean the preferred form for making modifications, 27 | including but not limited to software source code, documentation 28 | source, and configuration files. 29 | 30 | "Object" form shall mean any form resulting from mechanical 31 | transformation or translation of a Source form, including but 32 | not limited to compiled object code, generated documentation, 33 | and conversions to other media types. 34 | 35 | "Work" shall mean the work of authorship, whether in Source or 36 | Object form, made available under the License, as indicated by a 37 | copyright notice that is included in or attached to the work 38 | (an example is provided in the Appendix below). 39 | 40 | "Derivative Works" shall mean any work, whether in Source or Object 41 | form, that is based on (or derived from) the Work and for which the 42 | editorial revisions, annotations, elaborations, or other modifications 43 | represent, as a whole, an original work of authorship. For the purposes 44 | of this License, Derivative Works shall not include works that remain 45 | separable from, or merely link (or bind by name) to the interfaces of, 46 | the Work and Derivative Works thereof. 47 | 48 | "Contribution" shall mean any work of authorship, including 49 | the original version of the Work and any modifications or additions 50 | to that Work or Derivative Works thereof, that is intentionally 51 | submitted to Licensor for inclusion in the Work by the copyright owner 52 | or by an individual or Legal Entity authorized to submit on behalf of 53 | the copyright owner. For the purposes of this definition, "submitted" 54 | means any form of electronic, verbal, or written communication sent 55 | to the Licensor or its representatives, including but not limited to 56 | communication on electronic mailing lists, source code control systems, 57 | and issue tracking systems that are managed by, or on behalf of, the 58 | Licensor for the purpose of discussing and improving the Work, but 59 | excluding communication that is conspicuously marked or otherwise 60 | designated in writing by the copyright owner as "Not a Contribution." 61 | 62 | "Contributor" shall mean Licensor and any individual or Legal Entity 63 | on behalf of whom a Contribution has been received by Licensor and 64 | subsequently incorporated within the Work. 65 | 66 | 2. Grant of Copyright License. Subject to the terms and conditions of 67 | this License, each Contributor hereby grants to You a perpetual, 68 | worldwide, non-exclusive, no-charge, royalty-free, irrevocable 69 | copyright license to reproduce, prepare Derivative Works of, 70 | publicly display, publicly perform, sublicense, and distribute the 71 | Work and such Derivative Works in Source or Object form. 72 | 73 | 3. Grant of Patent License. Subject to the terms and conditions of 74 | this License, each Contributor hereby grants to You a perpetual, 75 | worldwide, non-exclusive, no-charge, royalty-free, irrevocable 76 | (except as stated in this section) patent license to make, have made, 77 | use, offer to sell, sell, import, and otherwise transfer the Work, 78 | where such license applies only to those patent claims licensable 79 | by such Contributor that are necessarily infringed by their 80 | Contribution(s) alone or by combination of their Contribution(s) 81 | with the Work to which such Contribution(s) was submitted. If You 82 | institute patent litigation against any entity (including a 83 | cross-claim or counterclaim in a lawsuit) alleging that the Work 84 | or a Contribution incorporated within the Work constitutes direct 85 | or contributory patent infringement, then any patent licenses 86 | granted to You under this License for that Work shall terminate 87 | as of the date such litigation is filed. 88 | 89 | 4. Redistribution. You may reproduce and distribute copies of the 90 | Work or Derivative Works thereof in any medium, with or without 91 | modifications, and in Source or Object form, provided that You 92 | meet the following conditions: 93 | 94 | (a) You must give any other recipients of the Work or 95 | Derivative Works a copy of this License; and 96 | 97 | (b) You must cause any modified files to carry prominent notices 98 | stating that You changed the files; and 99 | 100 | (c) You must retain, in the Source form of any Derivative Works 101 | that You distribute, all copyright, patent, trademark, and 102 | attribution notices from the Source form of the Work, 103 | excluding those notices that do not pertain to any part of 104 | the Derivative Works; and 105 | 106 | (d) If the Work includes a "NOTICE" text file as part of its 107 | distribution, then any Derivative Works that You distribute must 108 | include a readable copy of the attribution notices contained 109 | within such NOTICE file, excluding those notices that do not 110 | pertain to any part of the Derivative Works, in at least one 111 | of the following places: within a NOTICE text file distributed 112 | as part of the Derivative Works; within the Source form or 113 | documentation, if provided along with the Derivative Works; or, 114 | within a display generated by the Derivative Works, if and 115 | wherever such third-party notices normally appear. The contents 116 | of the NOTICE file are for informational purposes only and 117 | do not modify the License. You may add Your own attribution 118 | notices within Derivative Works that You distribute, alongside 119 | or as an addendum to the NOTICE text from the Work, provided 120 | that such additional attribution notices cannot be construed 121 | as modifying the License. 122 | 123 | You may add Your own copyright statement to Your modifications and 124 | may provide additional or different license terms and conditions 125 | for use, reproduction, or distribution of Your modifications, or 126 | for any such Derivative Works as a whole, provided Your use, 127 | reproduction, and distribution of the Work otherwise complies with 128 | the conditions stated in this License. 129 | 130 | 5. Submission of Contributions. Unless You explicitly state otherwise, 131 | any Contribution intentionally submitted for inclusion in the Work 132 | by You to the Licensor shall be under the terms and conditions of 133 | this License, without any additional terms or conditions. 134 | Notwithstanding the above, nothing herein shall supersede or modify 135 | the terms of any separate license agreement you may have executed 136 | with Licensor regarding such Contributions. 137 | 138 | 6. Trademarks. This License does not grant permission to use the trade 139 | names, trademarks, service marks, or product names of the Licensor, 140 | except as required for reasonable and customary use in describing the 141 | origin of the Work and reproducing the content of the NOTICE file. 142 | 143 | 7. Disclaimer of Warranty. Unless required by applicable law or 144 | agreed to in writing, Licensor provides the Work (and each 145 | Contributor provides its Contributions) on an "AS IS" BASIS, 146 | WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or 147 | implied, including, without limitation, any warranties or conditions 148 | of TITLE, NON-INFRINGEMENT, MERCHANTABILITY, or FITNESS FOR A 149 | PARTICULAR PURPOSE. You are solely responsible for determining the 150 | appropriateness of using or redistributing the Work and assume any 151 | risks associated with Your exercise of permissions under this License. 152 | 153 | 8. Limitation of Liability. In no event and under no legal theory, 154 | whether in tort (including negligence), contract, or otherwise, 155 | unless required by applicable law (such as deliberate and grossly 156 | negligent acts) or agreed to in writing, shall any Contributor be 157 | liable to You for damages, including any direct, indirect, special, 158 | incidental, or consequential damages of any character arising as a 159 | result of this License or out of the use or inability to use the 160 | Work (including but not limited to damages for loss of goodwill, 161 | work stoppage, computer failure or malfunction, or any and all 162 | other commercial damages or losses), even if such Contributor 163 | has been advised of the possibility of such damages. 164 | 165 | 9. Accepting Warranty or Additional Liability. While redistributing 166 | the Work or Derivative Works thereof, You may choose to offer, 167 | and charge a fee for, acceptance of support, warranty, indemnity, 168 | or other liability obligations and/or rights consistent with this 169 | License. However, in accepting such obligations, You may act only 170 | on Your own behalf and on Your sole responsibility, not on behalf 171 | of any other Contributor, and only if You agree to indemnify, 172 | defend, and hold each Contributor harmless for any liability 173 | incurred by, or claims asserted against, such Contributor by reason 174 | of your accepting any such warranty or additional liability. 175 | 176 | END OF TERMS AND CONDITIONS 177 | -------------------------------------------------------------------------------- /scripts/dockerbuild.sh: -------------------------------------------------------------------------------- 1 | while [[ "$#" -gt 0 ]] 2 | do 3 | case $1 in 4 | --account-id) 5 | AWS_ACCOUNT_ID="$2" 6 | ;; 7 | --region) 8 | AWS_REGION="$2" 9 | ;; 10 | --ecr-repo-name) 11 | ECR_REPO_NAME="$2" 12 | ;; 13 | --engine-role) 14 | ENGINE_ROLE="$2" 15 | ;; 16 | esac 17 | shift 18 | done 19 | 20 | # Generates IMDS v2 Token 21 | IMDS_TOKEN=`curl -X PUT "http://169.254.169.254/latest/api/token" -H "X-aws-ec2-metadata-token-ttl-seconds: 21600"` 22 | 23 | # Uses Current AWS Region if Not Supplied as Argument (Metadata Service & IAM Role Required) 24 | AWS_REGION=${AWS_REGION:-$(curl -H "X-aws-ec2-metadata-token: $IMDS_TOKEN" -s http://169.254.169.254/latest/dynamic/instance-identity/document | jq .region -r)} 25 | 26 | # Uses Current AWS Account ID if Not Supplied as Argument (Metadata Service & IAM Role Required) 27 | AWS_ACCOUNT_ID=${AWS_ACCOUNT_ID:-$(curl -H "X-aws-ec2-metadata-token: $IMDS_TOKEN" -s http://169.254.169.254/latest/dynamic/instance-identity/document | jq .accountId -r)} 28 | 29 | aws ecr get-login-password --region $AWS_REGION | sudo docker login --username AWS --password-stdin $AWS_ACCOUNT_ID.dkr.ecr.$AWS_REGION.amazonaws.com 30 | 31 | gradle build 32 | sudo service docker start 33 | sudo docker build -t fixengineonaws --file Dockerfile$ENGINE_ROLE . 34 | 35 | sudo docker tag fixengineonaws:latest $AWS_ACCOUNT_ID.dkr.ecr.$AWS_REGION.amazonaws.com/$ECR_REPO_NAME:latest 36 | 37 | sudo docker push $AWS_ACCOUNT_ID.dkr.ecr.$AWS_REGION.amazonaws.com/$ECR_REPO_NAME:latest 38 | -------------------------------------------------------------------------------- /scripts/runtestclient.sh: -------------------------------------------------------------------------------- 1 | java -cp ./build/libs/fixengineonaws.jar:./lib/* com.amazonaws.fixengineonaws.TestClient ./src/main/resources/config/test-client.cfg -------------------------------------------------------------------------------- /scripts/runtestserver.sh: -------------------------------------------------------------------------------- 1 | java -cp ./build/libs/fixengineonaws.jar:./lib/* com.amazonaws.fixengineonaws.TestClient ./src/main/resources/config/test-server.cfg -------------------------------------------------------------------------------- /settings.gradle: -------------------------------------------------------------------------------- 1 | // Always define a settings file: 2 | // https://docs.gradle.org/current/userguide/organizing_gradle_projects.html#always_define_a_settings_file 3 | -------------------------------------------------------------------------------- /sql/create.sh: -------------------------------------------------------------------------------- 1 | #!/bin/sh 2 | 3 | DB_USER=$1 4 | DB_PASS=$2 5 | 6 | echo Creating database 7 | mysql -u${DB_USER} -p${DB_PASS} --execute="source create_mysql_objects.sql"; 8 | 9 | -------------------------------------------------------------------------------- /sql/create_mysql_objects.sql: -------------------------------------------------------------------------------- 1 | CREATE DATABASE quickfix; 2 | 3 | USE quickfix; 4 | 5 | CREATE USER fixengine IDENTIFIED BY 'password'; 6 | 7 | CREATE TABLE sessions ( 8 | beginstring CHAR(8) NOT NULL, 9 | sendercompid VARCHAR(64) NOT NULL, 10 | targetcompid VARCHAR(64) NOT NULL, 11 | session_qualifier VARCHAR(64) NOT NULL, 12 | creation_time DATETIME NOT NULL, 13 | incoming_seqnum INT NOT NULL, 14 | outgoing_seqnum INT NOT NULL, 15 | PRIMARY KEY (beginstring, sendercompid, targetcompid, session_qualifier) 16 | ); 17 | GRANT SELECT, INSERT, UPDATE, DELETE ON quickfix.sessions TO fixengine; 18 | 19 | CREATE TABLE messages ( 20 | beginstring CHAR(8) NOT NULL, 21 | sendercompid VARCHAR(64) NOT NULL, 22 | targetcompid VARCHAR(64) NOT NULL, 23 | session_qualifier VARCHAR(64) NOT NULL, 24 | msgseqnum INT NOT NULL, 25 | message BLOB NOT NULL, 26 | PRIMARY KEY (beginstring, sendercompid, targetcompid, session_qualifier, msgseqnum) 27 | ); 28 | GRANT SELECT, INSERT, UPDATE, DELETE ON quickfix.messages TO fixengine; 29 | 30 | CREATE TABLE messages_log ( 31 | id INT UNSIGNED NOT NULL AUTO_INCREMENT, 32 | time DATETIME NOT NULL, 33 | time_milliseconds INT NOT NULL, 34 | beginstring CHAR(8), 35 | sendercompid VARCHAR(64), 36 | targetcompid VARCHAR(64), 37 | session_qualifier VARCHAR(64), 38 | text BLOB NOT NULL, 39 | PRIMARY KEY (id) 40 | ); 41 | GRANT SELECT, INSERT, UPDATE, DELETE ON quickfix.messages_log TO fixengine; 42 | 43 | CREATE TABLE messages_backup_log ( 44 | id INT UNSIGNED NOT NULL AUTO_INCREMENT, 45 | time DATETIME NOT NULL, 46 | time_milliseconds INT NOT NULL, 47 | beginstring CHAR(8), 48 | sendercompid VARCHAR(64), 49 | targetcompid VARCHAR(64), 50 | session_qualifier VARCHAR(64), 51 | text BLOB NOT NULL, 52 | PRIMARY KEY (id) 53 | ); 54 | GRANT SELECT, INSERT, UPDATE, DELETE ON quickfix.messages_backup_log TO fixengine; 55 | 56 | CREATE TABLE event_log ( 57 | id INT UNSIGNED NOT NULL AUTO_INCREMENT, 58 | time DATETIME NOT NULL, 59 | time_milliseconds INT NOT NULL, 60 | beginstring CHAR(8), 61 | sendercompid VARCHAR(64), 62 | targetcompid VARCHAR(64), 63 | session_qualifier VARCHAR(64), 64 | text BLOB NOT NULL, 65 | PRIMARY KEY (id) 66 | ); 67 | GRANT SELECT, INSERT, UPDATE, DELETE ON quickfix.event_log TO fixengine; 68 | 69 | CREATE TABLE event_backup_log ( 70 | id INT UNSIGNED NOT NULL AUTO_INCREMENT, 71 | time DATETIME NOT NULL, 72 | time_milliseconds INT NOT NULL, 73 | beginstring CHAR(8), 74 | sendercompid VARCHAR(64), 75 | targetcompid VARCHAR(64), 76 | session_qualifier VARCHAR(64), 77 | text BLOB NOT NULL, 78 | PRIMARY KEY (id) 79 | ); 80 | GRANT SELECT, INSERT, UPDATE, DELETE ON quickfix.event_backup_log TO fixengine; 81 | 82 | CREATE TABLE ActiveEngine ( 83 | TS TIMESTAMP DEFAULT CURRENT_TIMESTAMP, 84 | ipAddress VARCHAR(16) NOT NULL, 85 | PRIMARY KEY (TS, ipAddress) 86 | ); 87 | GRANT SELECT, UPDATE ON quickfix.ActiveEngine TO fixengine; 88 | 89 | INSERT INTO ActiveEngine VALUES (NOW(), "none"); 90 | 91 | 92 | DELIMITER // 93 | 94 | create procedure EngineStatus(IN ipAdd varchar(16), OUT value int, OUT lastIpAdd varchar(16), OUT lastTimestamp DATETIME, OUT timeNow DATETIME, OUT timeDiffSec int) 95 | BEGIN 96 | START TRANSACTION; 97 | SET timeNow = NOW(); 98 | SELECT TS, timestampdiff (second, TS, timeNow), ipAddress INTO lastTimestamp, timeDiffSec, lastIpAdd FROM ActiveEngine; 99 | IF timeDiffSec <= 3 AND ipAdd != lastIpAdd THEN # If another IP is the leader and not stale 100 | SET value = 0; # Then I do nothing and keep waiting 101 | ELSE 102 | UPDATE ActiveEngine SET TS = timeNow, ipAddress = ipAdd; # Else I am going to be the leader (update DB to say this) 103 | IF (timeDiffSec > 3) THEN # If the last leader is stale (no matter if it was me or another IP) 104 | SET value = -1; # Then I need to become the new leader 105 | ELSE 106 | SET value = 1; # Else I am still the active leader 107 | END IF; 108 | END IF; 109 | COMMIT; 110 | END // 111 | 112 | DELIMITER ; 113 | 114 | GRANT EXECUTE ON PROCEDURE quickfix.EngineStatus TO fixengine; 115 | 116 | GRANT SELECT ON mysql.proc TO fixengine; 117 | 118 | -------------------------------------------------------------------------------- /src/main/java/com/amazonaws/fixengineonaws/RedisSetting.java: -------------------------------------------------------------------------------- 1 | /******************************************************************************* 2 | +++ * Copyright (c) quickfixengine.org All rights reserved. 3 | * 4 | * This file is part of the QuickFIX FIX Engine 5 | * 6 | * This file may be distributed under the terms of the quickfixengine.org 7 | * license as defined by quickfixengine.org and appearing in the file 8 | * LICENSE included in the packaging of this file. 9 | * 10 | * This file is provided AS IS with NO WARRANTY OF ANY KIND, INCLUDING 11 | * THE WARRANTY OF DESIGN, MERCHANTABILITY AND FITNESS FOR A 12 | * PARTICULAR PURPOSE. 13 | * 14 | * See http://www.quickfixengine.org/LICENSE for licensing information. 15 | * 16 | * Contact ask@quickfixengine.org if any conditions of this licensing 17 | * are not clear to you. 18 | ******************************************************************************/ 19 | 20 | //package com.amazonaws.fixengineonaws; 21 | package com.amazonaws.fixengineonaws; 22 | 23 | 24 | /** 25 | * Class for storing Redis (or AWS MemoryDB) setting constants for the message store classes. 26 | * Cloned from JdbcSetting class (in case you want to extend it to write logs/heartbeats to Redis too) 27 | */ 28 | public class RedisSetting { 29 | 30 | /** 31 | * Setting name for Redis cluster endpoint hostname 32 | */ 33 | public static final String SETTING_REDIS_HOST = "MemoryDBHost"; 34 | 35 | /** 36 | * Setting name for Redis cluster endpoint port 37 | */ 38 | public static final String SETTING_REDIS_PORT = "MemoryDBPort"; 39 | 40 | /** 41 | * Defines the table name for the messages table. Default is "messages". 42 | * If you use a different name, you must set up your database accordingly. 43 | */ 44 | public static final String SETTING_REDIS_STORE_MESSAGES_TABLE_NAME = "RedisStoreMessagesTableName"; 45 | 46 | /** 47 | * Defines the table name for the session table. Default is "sessions". 48 | * If you use a different name, you must set up your database accordingly. 49 | */ 50 | public static final String SETTING_REDIS_STORE_SESSIONS_TABLE_NAME = "RedisStoreSessionsTableName"; 51 | 52 | public static final String DEFAULT_REDIS_HOST = "localhost"; 53 | public static final String DEFAULT_REDIS_PORT = "6379"; 54 | 55 | public static final String DEFAULT_REDIS_LEADER_LOCK_NAME = "FIX_ENGINE"; // TODO: This should be replaced by a GUID that is the stack ID 56 | public static final String DEFAULT_REDIS_FIX_TO_APP_QUEUE_NAME = "fix_to_app_queue"; 57 | public static final String DEFAULT_REDIS_APP_TO_FIX_QUEUE_NAME = "app_to_fix_queue"; 58 | 59 | public static final String SETTING_REDIS_LEADER_LOCK_NAME = "MemoryDBLeaderLock"; 60 | public static final String SETTING_REDIS_FIX_TO_APP_QUEUE_NAME = "MemoryDBFixToAppQueueName"; 61 | public static final String SETTING_REDIS_APP_TO_FIX_QUEUE_NAME = "MemoryDBAppToFixQueueName"; 62 | 63 | 64 | 65 | } 66 | -------------------------------------------------------------------------------- /src/main/java/com/amazonaws/fixengineonaws/RedisStoreFactory.java: -------------------------------------------------------------------------------- 1 | //package com.amazonaws.fixengineonaws; 2 | package com.amazonaws.fixengineonaws; 3 | 4 | 5 | import quickfix.MessageStore; 6 | import quickfix.MessageStoreFactory; 7 | import quickfix.SessionID; 8 | import quickfix.SessionSettings; 9 | import redis.clients.jedis.Jedis; 10 | 11 | /** 12 | * Creates a generic JDBC message store. 13 | */ 14 | public class RedisStoreFactory implements MessageStoreFactory { 15 | private final SessionSettings settings; 16 | private Jedis jedis; 17 | 18 | /** 19 | * Create a factory using session settings. 20 | */ 21 | public RedisStoreFactory(SessionSettings settings) { 22 | this.settings = settings; 23 | } 24 | 25 | /** 26 | * Create a JDBC message store. 27 | * 28 | * @param sessionID the sessionID for the message store. 29 | */ 30 | public MessageStore create(SessionID sessionID) { 31 | try { 32 | return new RedisStore(settings, sessionID, jedis); 33 | } catch (Exception e) { 34 | throw new RuntimeException(e); 35 | } 36 | } 37 | 38 | /** 39 | * Used to support the MySQL-specific class (JNI compatibility) 40 | * 41 | * @return the session settings 42 | */ 43 | protected SessionSettings getSettings() { 44 | return settings; 45 | } 46 | 47 | public void setDataSource(Jedis jedis) { 48 | this.jedis = jedis; 49 | } 50 | } 51 | -------------------------------------------------------------------------------- /src/main/java/com/amazonaws/fixengineonaws/RedisStoreTest.java: -------------------------------------------------------------------------------- 1 | package com.amazonaws.fixengineonaws; 2 | 3 | import javax.naming.Context; 4 | import javax.naming.InitialContext; 5 | import javax.naming.NamingException; 6 | 7 | import redis.clients.jedis.Jedis; 8 | 9 | import quickfix.AbstractMessageStoreTest; 10 | import quickfix.ConfigError; 11 | import quickfix.MessageStoreFactory; 12 | import quickfix.SessionSettings; 13 | import quickfix.SessionID; 14 | 15 | import java.io.IOException; 16 | import java.util.ArrayList; 17 | import java.util.Date; 18 | import java.util.List; 19 | 20 | public class RedisStoreTest extends AbstractMessageStoreTest { 21 | private String initialContextFactory; 22 | 23 | // TODO: generate real guid 24 | private static String ENGINE_ID = "ENGINE_ID_DEFAULT_THIS_TO_A_GUID"; 25 | 26 | protected void setUp() throws Exception { 27 | initialContextFactory = System.getProperty(Context.INITIAL_CONTEXT_FACTORY); 28 | initialContextFactory = System.getProperty(Context.PROVIDER_URL); 29 | System.setProperty(Context.INITIAL_CONTEXT_FACTORY, "tyrex.naming.MemoryContextFactory"); 30 | System.setProperty(Context.PROVIDER_URL, "TEST"); 31 | // bindDataSource(); 32 | super.setUp(); 33 | } 34 | 35 | protected void tearDown() throws Exception { 36 | if (initialContextFactory != null) { 37 | System.setProperty(Context.INITIAL_CONTEXT_FACTORY, initialContextFactory); 38 | } 39 | RedisStore store = (RedisStore) getMessageStoreFactory("xsessions", "messages").create(getSessionID()); 40 | store.reset(); 41 | super.tearDown(); 42 | } 43 | 44 | // private void bindDataSource() throws NamingException { 45 | // new InitialContext().rebind("TestDataSource", getDataSource()); 46 | // } 47 | 48 | protected MessageStoreFactory getMessageStoreFactory() throws ConfigError, IOException { 49 | return getMessageStoreFactory(null, null); 50 | } 51 | 52 | private RedisStoreFactory getMessageStoreFactory(String sessionTableName, String messageTableName) 53 | throws ConfigError, IOException { 54 | SessionSettings settings = new SessionSettings(); 55 | 56 | // if (settings.isSetting(sessionID, SETTING_ENGINE_ID)) { 57 | // ENGINE_ID = settings.getString(sessionID, SETTING_ENGINE_ID); 58 | // } 59 | 60 | 61 | // TODO: USE SessionSettings sessionTableName and messageTableName to pass unique IDs from factory constructor to store! 62 | 63 | settings.setString(RedisSetting.SETTING_REDIS_HOST, RedisSetting.DEFAULT_REDIS_HOST); 64 | settings.setString(RedisSetting.SETTING_REDIS_PORT, RedisSetting.DEFAULT_REDIS_PORT); 65 | 66 | if (sessionTableName != null) { 67 | settings.setString(RedisSetting.SETTING_REDIS_STORE_SESSIONS_TABLE_NAME, sessionTableName); 68 | } 69 | 70 | if (messageTableName != null) { 71 | settings.setString(RedisSetting.SETTING_REDIS_STORE_MESSAGES_TABLE_NAME, messageTableName); 72 | } 73 | 74 | return new RedisStoreFactory(settings); 75 | } 76 | 77 | public void testExplicitDataSource() throws Exception { 78 | RedisStoreFactory factory = new RedisStoreFactory(new SessionSettings()); 79 | factory.setDataSource(getDataSource()); 80 | factory.create(new SessionID("FIX4.4", "SENDER", "TARGET")); 81 | } 82 | 83 | public void testSequenceNumbersWithCustomSessionsTableName() throws Exception { 84 | RedisStore store = (RedisStore) getMessageStoreFactory("xsessions", "messages").create(getSessionID()); 85 | store.reset(); 86 | assertEquals("wrong value", 1, store.getNextSenderMsgSeqNum()); 87 | assertEquals("wrong value", 1, store.getNextTargetMsgSeqNum()); 88 | } 89 | 90 | public void testMessageStorageMessagesWithCustomMessagesTableName() throws Exception { 91 | RedisStore store = (RedisStore) getMessageStoreFactory("sessions", "xmessages").create(getSessionID()); 92 | 93 | assertTrue("set failed", store.set(111, "message2")); 94 | assertTrue("set failed", store.set(113, "message1")); 95 | assertTrue("set failed", store.set(120, "message3")); 96 | 97 | ArrayList messages = new ArrayList<>(); 98 | store.get(100, 115, messages); 99 | assertEquals("wrong # of messages", 2, messages.size()); 100 | assertEquals("wrong message", "message2", messages.get(0)); 101 | assertEquals("wrong message", "message1", messages.get(1)); 102 | } 103 | 104 | protected Jedis getDataSource() { 105 | try { 106 | return new Jedis(RedisSetting.DEFAULT_REDIS_HOST, Integer.parseInt(RedisSetting.DEFAULT_REDIS_PORT)); 107 | } catch (Exception e) { 108 | // TODO: add redis local installation instructions 109 | System.out.println("UNABLE TO CONSTRUCT Jedis OBJECT USING HOST " + RedisSetting.DEFAULT_REDIS_HOST + " AND PORT " + RedisSetting.DEFAULT_REDIS_PORT); 110 | System.out.println("To test locally, please Install Ubuntu Linux and Redis on Windows: https://redis.io/docs/getting-started/installation/install-redis-on-windows/"); 111 | System.out.println("curl -fsSL https://packages.redis.io/gpg | sudo gpg --dearmor -o /usr/share/keyrings/redis-archive-keyring.gpg"); 112 | System.out.println("echo \"deb [signed-by=/usr/share/keyrings/redis-archive-keyring.gpg] https://packages.redis.io/deb $(lsb_release -cs) main\" | sudo tee /etc/apt/sources.list.d/redis.list"); 113 | System.out.println("sudo apt-get update"); 114 | System.out.println("sudo apt-get install redis"); 115 | System.out.println("sudo service redis-server start"); 116 | System.out.println("redis-cli"); 117 | System.out.println("sudo service redis-server stop"); 118 | throw e; 119 | } 120 | } 121 | 122 | public void testCreationTime() throws Exception { 123 | RedisStore store = (RedisStore) getStore(); 124 | 125 | Date creationTime = store.getCreationTime(); 126 | 127 | store = (RedisStore) createStore(); 128 | Date creationTime2 = store.getCreationTime(); 129 | 130 | assertEquals("creation time not stored correctly", creationTime, creationTime2); 131 | } 132 | 133 | protected Class getMessageStoreClass() { 134 | return RedisStore.class; 135 | } 136 | 137 | public void testMessageUpdate() throws Exception { 138 | RedisStore store = (RedisStore) getMessageStoreFactory().create(getSessionID()); 139 | store.reset(); 140 | 141 | assertTrue(store.set(1, "MESSAGE1")); 142 | assertTrue(store.set(1, "MESSAGE2")); 143 | 144 | List messages = new ArrayList<>(); 145 | store.get(1, 1, messages); 146 | assertEquals("MESSAGE2", messages.get(0)); 147 | } 148 | } 149 | -------------------------------------------------------------------------------- /src/main/java/com/amazonaws/fixengineonaws/TestClient.java: -------------------------------------------------------------------------------- 1 | package com.amazonaws.fixengineonaws; 2 | 3 | import java.io.FileNotFoundException; 4 | import java.io.FileReader; 5 | import java.io.IOException; 6 | 7 | import quickfix.ConfigError; 8 | import quickfix.SessionNotFound; 9 | import quickfix.field.ClOrdID; 10 | import quickfix.field.HandlInst; 11 | import quickfix.field.OrdType; 12 | import quickfix.field.SenderCompID; 13 | import quickfix.field.SenderSubID; 14 | import quickfix.field.Side; 15 | import quickfix.field.Symbol; 16 | import quickfix.field.TargetCompID; 17 | import quickfix.field.TimeInForce; 18 | import quickfix.field.TransactTime; 19 | import quickfix.fix42.NewOrderSingle; //update fix version to the version the application will be using 20 | import redis.clients.jedis.Jedis; 21 | 22 | import java.util.Date; 23 | import java.util.Properties; 24 | import java.util.logging.Logger; 25 | import java.util.logging.Level; 26 | import java.text.SimpleDateFormat; 27 | 28 | public class TestClient { 29 | private static Logger LOGGER = Logger.getLogger(FixEngine.class.getName()); 30 | 31 | private static SimpleDateFormat DATE_FORMAT= new SimpleDateFormat("yyyy-MM-dd HH:mm:ss.SSS"); 32 | private static Date LAST_NO_MESSAGE_LOG = new Date(); 33 | private static long totalAppToFixProcessngTime = 0; 34 | private static long totalAppToFixProcessedMessages = 0; 35 | private static long totalFixToAppProcessngTime = 0; 36 | private static long totalFixToAppProcessedMessages = 0; 37 | 38 | private static Jedis jedis; 39 | 40 | private static NewOrderSingle generateOrder(int id) { 41 | //String orderIdStr = "ORDER_ID_" + System.currentTimeMillis(); 42 | String orderIdStr = "ORDER_ID_" + (1000000 + id); 43 | String accountIdStr = "TEST_SENDER_COMP_ID"; 44 | String senderSubIdStr = "TEST_SENDER_SUB_ID"; 45 | String targetIdStr = "TEST_SENDER_COMP_ID"; 46 | String symbolStr = "AMZN"; 47 | char side = Side.BUY; 48 | char orderType = OrdType.MARKET; 49 | char timeInForce = TimeInForce.DAY; 50 | NewOrderSingle newOrder = new NewOrderSingle(new ClOrdID(orderIdStr), new HandlInst('1'), new Symbol(symbolStr), new Side(side), new TransactTime(), new OrdType(orderType)); 51 | /* 52 | Choose message constructor based on FIX version 53 | 4.2 - NewOrderSingle(ClOrdID clOrdID, HandlInst handlInst, Symbol symbol, Side side, TransactTime transactTime, OrdType ordType) 54 | 4.3 - NewOrderSingle(ClOrdID clOrdID, HandlInst handlInst, Side side, TransactTime transactTime, OrdType ordType) 55 | 4.4 - NewOrderSingle(ClOrdID clOrdID, Side side, TransactTime transactTime, OrdType ordType) 56 | 5.0 - NewOrderSingle(ClOrdID clOrdID, Side side, TransactTime transactTime, OrdType ordType) 57 | */ 58 | quickfix.Message.Header header = newOrder.getHeader(); 59 | header.setField(new SenderCompID(accountIdStr)); 60 | header.setField(new SenderSubID(senderSubIdStr)); 61 | header.setField(new TargetCompID(targetIdStr)); 62 | // newOrder.setChar(59, new TimeInForce(timeInForce).getValue()); 63 | newOrder.setChar(59, timeInForce); 64 | int quantitiyInt = 300; 65 | newOrder.setInt(38, quantitiyInt); 66 | double priceDouble = 123.45; 67 | newOrder.setDouble(44, priceDouble); 68 | return newOrder; 69 | } 70 | 71 | public static void main(String[] args) throws ConfigError, FileNotFoundException, InterruptedException, SessionNotFound { 72 | LOGGER.setLevel(Level.INFO); 73 | //LOGGER.setLevel(Level.WARNING); 74 | 75 | String configfile = "config/test-client.config"; 76 | if(args.length > 0) { 77 | configfile = args[0]; 78 | } 79 | System.out.println("***MAIN STARTING WITH CONFIG FILE: " + configfile); 80 | 81 | String memoryDBHost = RedisSetting.DEFAULT_REDIS_HOST; 82 | String memoryDBPort = RedisSetting.DEFAULT_REDIS_PORT; 83 | String memoryDBAppToFixQueueName = RedisSetting.DEFAULT_REDIS_APP_TO_FIX_QUEUE_NAME; 84 | String memoryDBFixToAppQueueName = RedisSetting.DEFAULT_REDIS_FIX_TO_APP_QUEUE_NAME; 85 | int noOfMessages = 10*1000; 86 | int waitBetweenMessages = 0; 87 | 88 | FileReader reader = new FileReader(configfile); 89 | Properties config = new Properties(); 90 | try { 91 | config.load(reader); 92 | } catch (IOException e) { 93 | LOGGER.severe("ERROR LOADING CONFIG FILE " + configfile); 94 | e.printStackTrace(); 95 | } 96 | memoryDBHost = config.getProperty("MemoryDBHost"); 97 | memoryDBPort = config.getProperty("MemoryDBPort"); 98 | memoryDBAppToFixQueueName = config.getProperty("MemoryDBAppToFixQueueName"); 99 | memoryDBFixToAppQueueName = config.getProperty("MemoryDBFixToAppQueueName"); 100 | noOfMessages = Integer.parseInt(config.getProperty("NoOfMessages")); 101 | waitBetweenMessages = Integer.parseInt(config.getProperty("WaitBetweenMessages")); 102 | 103 | System.out.println("***MAIN STARTING WITH memoryDBHost: " + memoryDBHost + "; memoryDBPort:" + memoryDBPort + "; memoryDBAppToFixQueueName:" + memoryDBAppToFixQueueName + "; memoryDBFixToAppQueueName:" + memoryDBFixToAppQueueName + "; noOfMessages:" + noOfMessages + "; waitBetweenMessages:" + waitBetweenMessages); 104 | 105 | jedis = new Jedis(memoryDBHost, Integer.parseInt(memoryDBPort)); 106 | 107 | generateOrders(noOfMessages, waitBetweenMessages, memoryDBAppToFixQueueName); 108 | 109 | pollForReplies(waitBetweenMessages, memoryDBFixToAppQueueName); 110 | 111 | } 112 | 113 | private static void logStats(boolean appToFix, int count, Date firstOrderTime, Date lastOrderTime) { 114 | if (count > 0 && lastOrderTime!=null && firstOrderTime!=null) { 115 | long totalTime = 1; 116 | long totalCount = 1; 117 | if(appToFix) { 118 | totalAppToFixProcessngTime += lastOrderTime.getTime() - firstOrderTime.getTime(); 119 | totalTime = totalAppToFixProcessngTime; 120 | totalAppToFixProcessedMessages += count; 121 | totalCount = totalAppToFixProcessedMessages; 122 | } else { 123 | totalFixToAppProcessngTime += lastOrderTime.getTime() - firstOrderTime.getTime(); 124 | totalTime = totalFixToAppProcessngTime; 125 | totalFixToAppProcessedMessages += count; 126 | totalCount = totalFixToAppProcessedMessages; 127 | } 128 | long totalTimeInSec = (totalTime)/1000; 129 | if (totalTimeInSec < 1) totalTimeInSec = 1; 130 | double tps = totalCount/totalTimeInSec; 131 | LOGGER.info(" ************ Order Generation Performance & Througput Results ******************* "); 132 | // LOGGER.info("\n Start Time: " + DATE_FORMAT.format(firstOrderTime) + 133 | // "\n End Time: " + DATE_FORMAT.format(lastOrderTime) + "\n Total Messages Processed: " + count 134 | // + "\n Total Processing Time (seconds) " + totalTimeInSec + "\n TPS: " + tps); 135 | LOGGER.info("************* " + (appToFix?"AppToFix":"FixToApp") + ": Total Processing Time (seconds): " + totalTimeInSec + 136 | "\t Total Messages Processed: " + totalCount + "\t TPS: " + tps); 137 | LOGGER.info(" ************ ************ ************ ************ ************"); 138 | } 139 | } 140 | 141 | 142 | private static void generateOrders(int numberOfMessages, int waitBetweenMessages, String queueName) throws InterruptedException{ 143 | LOGGER.info(" NO_OF_MESSAGES : " + numberOfMessages + " WAIT_BETWEEN_MESSAGES: " + waitBetweenMessages); 144 | 145 | Date firstOrderGeneratedTime = new Date(); 146 | Date lastOrderGeneratedTime = null; 147 | 148 | for(int orderId=1;orderId<=numberOfMessages;orderId++) { 149 | String ordStr = null; 150 | 151 | Thread.sleep(waitBetweenMessages); 152 | LOGGER.info("***main() I_AM_TEST_CLIENT orderId # " + orderId); 153 | 154 | NewOrderSingle ord = generateOrder(orderId); 155 | ordStr = ord.toString(); 156 | // LOGGER.info("*********** ORDER Client to Server *****************************************************************************************"); 157 | LOGGER.fine("************GENERATED ORDER FIX STRING: " + ordStr); 158 | 159 | try { 160 | jedis.rpush(queueName, ordStr); 161 | LOGGER.info("************PUSHED ORDER FIX STRING: " + ordStr + " TO QUEUE: " + queueName); 162 | } catch (Exception ex) { 163 | LOGGER.severe(ex.getMessage()); 164 | } 165 | 166 | lastOrderGeneratedTime = new Date(); 167 | logStats(false, orderId, firstOrderGeneratedTime, lastOrderGeneratedTime); 168 | } 169 | } 170 | 171 | private static void pollForReplies(int waitBetweenMessages, String inboundQueueName) { 172 | LOGGER.fine("****pollForOrders: Start "); 173 | Date firstOrderRcvdTime = null; 174 | Date lastOrderRcvdTime = null; 175 | 176 | // Loop until ctrl + c 177 | int count = 0; 178 | while(true) { 179 | // Poll for records 180 | String appToFixMessage = jedis.lpop(inboundQueueName); 181 | //LOGGER.fine(" After polling consumer records.count() : " + records.count()); 182 | // Did we get any? 183 | if (appToFixMessage == null) { 184 | // timeout/nothing to read! Log stats if we had processed some messages up until now! 185 | if( (new Date().getTime() - LAST_NO_MESSAGE_LOG.getTime())/1000 > 10) { 186 | LOGGER.info("nothing to read from MemoryDB QUEUE: " + inboundQueueName); 187 | LAST_NO_MESSAGE_LOG = new Date(); 188 | } 189 | logStats(true, count, firstOrderRcvdTime, lastOrderRcvdTime); 190 | count=0; 191 | } else { 192 | // if this is the first message in the batch, restart the TPS timer 193 | if (count == 0) firstOrderRcvdTime = new Date(); 194 | count += 1; 195 | LOGGER.fine( count + ": " + appToFixMessage); 196 | // LOGGER.info("*********** ORDER RCVD from Client or Server *****************************************************************************************"); 197 | LOGGER.info("*** RECEIVED ORDER STRING: " + appToFixMessage + " FROM QUEUE: " + inboundQueueName); 198 | 199 | lastOrderRcvdTime = new Date(); 200 | } // if (appToFixMessage == null) 201 | 202 | try { 203 | Thread.sleep(waitBetweenMessages); 204 | } catch (InterruptedException e) { 205 | LOGGER.severe(" InterruptedException : " + e.getMessage()); 206 | } 207 | } //while loop 208 | } 209 | } -------------------------------------------------------------------------------- /src/main/java/com/amazonaws/fixengineonaws/TestServer.java: -------------------------------------------------------------------------------- 1 | package com.amazonaws.fixengineonaws; 2 | 3 | import java.io.FileNotFoundException; 4 | import java.io.FileReader; 5 | import java.io.IOException; 6 | 7 | import quickfix.ConfigError; 8 | import quickfix.SessionNotFound; 9 | import quickfix.field.AvgPx; 10 | import quickfix.field.CumQty; 11 | import quickfix.field.ExecID; 12 | import quickfix.field.ExecTransType; 13 | import quickfix.field.ExecType; 14 | import quickfix.field.LeavesQty; 15 | import quickfix.field.OrdStatus; 16 | import quickfix.field.OrderID; 17 | import quickfix.field.Side; 18 | import quickfix.field.Symbol; 19 | import quickfix.fix42.ExecutionReport; //update fix version to the version the application will be using 20 | import redis.clients.jedis.Jedis; 21 | 22 | import java.util.Date; 23 | import java.util.Properties; 24 | import java.util.logging.Logger; 25 | import java.util.logging.Level; 26 | import java.text.SimpleDateFormat; 27 | 28 | 29 | public class TestServer { 30 | private static Logger LOGGER = Logger.getLogger(FixEngine.class.getName()); 31 | 32 | private static SimpleDateFormat DATE_FORMAT= new SimpleDateFormat("yyyy-MM-dd HH:mm:ss.SSS"); 33 | private static Date LAST_NO_MESSAGE_LOG = new Date(); 34 | private static long totalAppToFixProcessngTime = 0; 35 | private static long totalAppToFixProcessedMessages = 0; 36 | private static long totalFixToAppProcessngTime = 0; 37 | private static long totalFixToAppProcessedMessages = 0; 38 | 39 | private static Jedis jedis; 40 | 41 | private static ExecutionReport generateExecution(int id) { 42 | // String orderIdStr = "ORDER_ID_" + System.currentTimeMillis(); 43 | String orderIdStr = "ORDER_ID_" + 1000000 + id; 44 | String execIdStr = "EXEC_ID_" + 1; 45 | String symbolStr = "AMZN"; 46 | char side = Side.BUY; 47 | ExecutionReport newExec = new ExecutionReport(new OrderID(orderIdStr), new ExecID(execIdStr), new ExecTransType(ExecTransType.NEW), new ExecType(ExecType.PARTIAL_FILL), 48 | new OrdStatus(OrdStatus.PARTIALLY_FILLED), new Symbol(symbolStr), new Side(side), new LeavesQty(250), new CumQty(50), new AvgPx(123.34)); 49 | // Choose ExecutionReport constructor based on FIX version 50 | // 4.2 - ExecutionReport(OrderID orderID, ExecID execID, ExecTransType execTransType, ExecType execType, OrdStatus ordStatus, Symbol symbol, Side side, LeavesQty leavesQty, CumQty cumQty, AvgPx avgPx) 51 | // 4.3 - ExecutionReport(OrderID orderID, ExecID execID, ExecType execType, OrdStatus ordStatus, Side side, LeavesQty leavesQty, CumQty cumQty, AvgPx avgPx) 52 | // 4.4 - ExecutionReport(OrderID orderID, ExecID execID, ExecType execType, OrdStatus ordStatus, Side side, LeavesQty leavesQty, CumQty cumQty, AvgPx avgPx) 53 | // 5.0 - ExecutionReport(OrderID orderID, ExecID execID, ExecType execType, OrdStatus ordStatus, Side side, LeavesQty leavesQty, CumQty cumQty) 54 | return newExec; 55 | } 56 | 57 | public static void main(String[] args) throws ConfigError, FileNotFoundException, InterruptedException, SessionNotFound { 58 | 59 | LOGGER.setLevel(Level.INFO); 60 | //LOGGER.setLevel(Level.WARNING); 61 | 62 | String configfile = "config/test-server.config"; 63 | if(args.length > 0) { 64 | configfile = args[0]; 65 | } 66 | System.out.println("***MAIN STARTING WITH CONFIG FILE: " + configfile); 67 | 68 | String MemoryDBHost = RedisSetting.DEFAULT_REDIS_HOST; 69 | String MemoryDBPort = RedisSetting.DEFAULT_REDIS_PORT; 70 | String MemoryDBAppToFixQueueName = RedisSetting.DEFAULT_REDIS_APP_TO_FIX_QUEUE_NAME; 71 | String MemoryDBFixToAppQueueName = RedisSetting.DEFAULT_REDIS_FIX_TO_APP_QUEUE_NAME; 72 | int WaitBetweenMessages = 0; 73 | boolean SendExecReport = true; 74 | 75 | FileReader reader = new FileReader(configfile); 76 | Properties config = new Properties(); 77 | try { 78 | config.load(reader); 79 | } catch (IOException e) { 80 | LOGGER.severe("ERROR LOADING CONFIG FILE " + configfile); 81 | e.printStackTrace(); 82 | } 83 | MemoryDBHost = config.getProperty("MemoryDBHost"); 84 | MemoryDBPort = config.getProperty("MemoryDBPort"); 85 | MemoryDBAppToFixQueueName = config.getProperty("MemoryDBAppToFixQueueName"); 86 | MemoryDBFixToAppQueueName = config.getProperty("MemoryDBFixToAppQueueName"); 87 | WaitBetweenMessages = Integer.parseInt(config.getProperty("WaitBetweenMessages")); 88 | SendExecReport = "true".equals(config.getProperty("SendExecReport")); 89 | 90 | jedis = new Jedis(MemoryDBHost, Integer.parseInt(MemoryDBPort)); 91 | 92 | pollForOrders(WaitBetweenMessages, MemoryDBFixToAppQueueName, MemoryDBAppToFixQueueName, SendExecReport); 93 | } 94 | 95 | private static void logStats(boolean appToFix, int count, Date firstOrderTime, Date lastOrderTime) { 96 | if (count > 0 && lastOrderTime!=null && firstOrderTime!=null) { 97 | long totalTime = 1; 98 | long totalCount = 1; 99 | if(appToFix) { 100 | totalAppToFixProcessngTime += lastOrderTime.getTime() - firstOrderTime.getTime(); 101 | totalTime = totalAppToFixProcessngTime; 102 | totalAppToFixProcessedMessages += count; 103 | totalCount = totalAppToFixProcessedMessages; 104 | } else { 105 | totalFixToAppProcessngTime += lastOrderTime.getTime() - firstOrderTime.getTime(); 106 | totalTime = totalFixToAppProcessngTime; 107 | totalFixToAppProcessedMessages += count; 108 | totalCount = totalFixToAppProcessedMessages; 109 | } 110 | long totalTimeInSec = (totalTime)/1000; 111 | if (totalTimeInSec < 1) totalTimeInSec = 1; 112 | double tps = totalCount/totalTimeInSec; 113 | LOGGER.info(" ************ Order Generation Performance & Througput Results ******************* "); 114 | // LOGGER.info("\n Start Time: " + DATE_FORMAT.format(firstOrderTime) + 115 | // "\n End Time: " + DATE_FORMAT.format(lastOrderTime) + "\n Total Messages Processed: " + count 116 | // + "\n Total Processing Time (seconds) " + totalTimeInSec + "\n TPS: " + tps); 117 | LOGGER.info("************* " + (appToFix?"AppToFix":"FixToApp") + ": Total Processing Time (seconds): " + totalTimeInSec + 118 | "\t Total Messages Processed: " + totalCount + "\t TPS: " + tps); 119 | LOGGER.info(" ************ ************ ************ ************ ************"); 120 | } 121 | } 122 | 123 | private static void pollForOrders(int waitBetweenMessages, String inboundQueueName, String outboundQueueName, boolean replyWithExecution) { 124 | LOGGER.fine("****pollForOrders: Start "); 125 | Date firstOrderRcvdTime = null; 126 | Date lastOrderRcvdTime = null; 127 | // Loop until ctrl + c 128 | int count = 0; 129 | while(true) { 130 | // Poll for records 131 | String appToFixMessage = jedis.lpop(inboundQueueName); 132 | //LOGGER.fine(" After polling consumer records.count() : " + records.count()); 133 | // Did we get any? 134 | if (appToFixMessage == null) { 135 | // timeout/nothing to read! Log stats if we had processed some messages up until now! 136 | if( (new Date().getTime() - LAST_NO_MESSAGE_LOG.getTime())/1000 > 10) { 137 | LOGGER.info("nothing to read from MemoryDB"); 138 | LAST_NO_MESSAGE_LOG = new Date(); 139 | } 140 | logStats(false, count, firstOrderRcvdTime, lastOrderRcvdTime); 141 | count=0; 142 | } else { 143 | // if this is the first message in the batch, restart the TPS timer 144 | if (count == 0) firstOrderRcvdTime = new Date(); 145 | count += 1; 146 | LOGGER.fine( count + ": " + appToFixMessage); 147 | LOGGER.info("*********** ORDER RCVD from Client or Server *****************************************************************************************"); 148 | LOGGER.info("*** ordStr : " + appToFixMessage); 149 | 150 | if (replyWithExecution) { // send the execution report back to client Fix Engine 151 | ExecutionReport newExec = generateExecution(count); 152 | String ordStr = newExec.toString(); 153 | try { 154 | jedis.rpush(outboundQueueName, ordStr); 155 | LOGGER.info("*********** Generated ExecutionReport from Server to Client ********************************************************"); 156 | LOGGER.info("ExecutionReport : " + ordStr); 157 | } catch (Exception ex) { 158 | LOGGER.severe(" Exception : " + ex.getMessage()); 159 | } 160 | } 161 | lastOrderRcvdTime = new Date(); 162 | } // if (appToFixMessage == null) 163 | 164 | try { 165 | Thread.sleep(waitBetweenMessages); 166 | } catch (InterruptedException e) { 167 | LOGGER.severe(" InterruptedException : " + e.getMessage()); 168 | } 169 | } //while loop 170 | } 171 | } -------------------------------------------------------------------------------- /src/main/quickfix/AbstractMessageStoreTest.java: -------------------------------------------------------------------------------- 1 | /******************************************************************************* 2 | * Copyright (c) quickfixengine.org All rights reserved. 3 | * 4 | * This file is part of the QuickFIX FIX Engine 5 | * 6 | * This file may be distributed under the terms of the quickfixengine.org 7 | * license as defined by quickfixengine.org and appearing in the file 8 | * LICENSE included in the packaging of this file. 9 | * 10 | * This file is provided AS IS with NO WARRANTY OF ANY KIND, INCLUDING 11 | * THE WARRANTY OF DESIGN, MERCHANTABILITY AND FITNESS FOR A 12 | * PARTICULAR PURPOSE. 13 | * 14 | * See http://www.quickfixengine.org/LICENSE for licensing information. 15 | * 16 | * Contact ask@quickfixengine.org if any conditions of this licensing 17 | * are not clear to you. 18 | ******************************************************************************/ 19 | 20 | package quickfix; 21 | 22 | import junit.framework.TestCase; 23 | 24 | import java.io.IOException; 25 | import java.util.ArrayList; 26 | 27 | public abstract class AbstractMessageStoreTest extends TestCase { 28 | private SessionID sessionID; 29 | private MessageStore store; 30 | 31 | // Automatically disable tests if database isn't available 32 | private boolean testEnabled = true; 33 | private MessageStoreFactory messageStoreFactory; 34 | 35 | @Override 36 | protected void setUp() throws Exception { 37 | if (!testEnabled) { 38 | return; 39 | } 40 | final long now = System.currentTimeMillis(); 41 | sessionID = new SessionID("FIX.4.2", "SENDER-" + now, "TARGET-" + now); 42 | messageStoreFactory = getMessageStoreFactoryForTest(); 43 | store = messageStoreFactory.create(getSessionID()); 44 | assertEquals("wrong store type", getMessageStoreClass(), store.getClass()); 45 | super.setUp(); 46 | } 47 | 48 | private MessageStoreFactory getMessageStoreFactoryForTest() throws Exception { 49 | if (messageStoreFactory == null) { 50 | messageStoreFactory = getMessageStoreFactory(); 51 | } 52 | return messageStoreFactory; 53 | } 54 | 55 | protected abstract MessageStoreFactory getMessageStoreFactory() throws Exception; 56 | 57 | protected abstract Class getMessageStoreClass(); 58 | 59 | protected MessageStore getStore() { 60 | return store; 61 | } 62 | 63 | protected MessageStore createStore() throws Exception { 64 | return messageStoreFactory.create(sessionID); 65 | } 66 | 67 | public void testMessageStoreSequenceNumbers() throws Exception { 68 | if (!testEnabled) { 69 | return; 70 | } 71 | 72 | store.reset(); 73 | assertEquals("wrong value", 1, store.getNextSenderMsgSeqNum()); 74 | assertEquals("wrong value", 1, store.getNextTargetMsgSeqNum()); 75 | 76 | store.setNextSenderMsgSeqNum(123); 77 | assertEquals("wrong value", 123, store.getNextSenderMsgSeqNum()); 78 | 79 | store.incrNextSenderMsgSeqNum(); 80 | assertEquals("wrong value", 124, store.getNextSenderMsgSeqNum()); 81 | 82 | store.setNextTargetMsgSeqNum(321); 83 | assertEquals("wrong value", 321, store.getNextTargetMsgSeqNum()); 84 | 85 | store.incrNextTargetMsgSeqNum(); 86 | assertEquals("wrong value", 322, store.getNextTargetMsgSeqNum()); 87 | 88 | // test reset again after values have been set 89 | store.reset(); 90 | assertEquals("wrong value", 1, store.getNextSenderMsgSeqNum()); 91 | assertEquals("wrong value", 1, store.getNextTargetMsgSeqNum()); 92 | } 93 | 94 | protected SessionID getSessionID() { 95 | return sessionID; 96 | } 97 | 98 | public void testMessageStorageMessages() throws Exception { 99 | if (!testEnabled) { 100 | return; 101 | } 102 | // message 111 == äbcfödçé 103 | assertTrue("set failed", store.set(111, "\u00E4bcf\u00F6d\u00E7\u00E9")); 104 | assertTrue("set failed", store.set(113, "message1")); 105 | assertTrue("set failed", store.set(120, "message3")); 106 | 107 | store.refresh(); 108 | 109 | final ArrayList messages = new ArrayList<>(); 110 | store.get(100, 115, messages); 111 | assertEquals("wrong # of messages", 2, messages.size()); 112 | assertEquals("wrong message", "\u00E4bcf\u00F6d\u00E7\u00E9", messages.get(0)); 113 | assertEquals("wrong message", "message1", messages.get(1)); 114 | } 115 | 116 | public void testMessageStorageOutOfSequence() throws Exception { 117 | if (!testEnabled) { 118 | return; 119 | } 120 | assertTrue("set failed", store.set(113, "message2")); 121 | assertTrue("set failed", store.set(111, "message1")); 122 | assertTrue("set failed", store.set(120, "message3")); 123 | 124 | store.refresh(); 125 | 126 | final ArrayList messages = new ArrayList<>(); 127 | store.get(100, 115, messages); 128 | assertEquals("wrong # of messages", 2, messages.size()); 129 | assertEquals("wrong message", "message1", messages.get(0)); 130 | assertEquals("wrong message", "message2", messages.get(1)); 131 | } 132 | 133 | public void testRefreshMessageStore() throws Exception { 134 | if (!testEnabled) { 135 | return; 136 | } 137 | 138 | if (!(store instanceof MemoryStore)) { 139 | final MessageStore failoverStore = getMessageStoreFactory().create(sessionID); 140 | try { 141 | final MessageStore primaryStore = store; 142 | 143 | assertEquals("wrong value", 1, primaryStore.getNextSenderMsgSeqNum()); 144 | assertEquals("wrong value", 1, primaryStore.getNextTargetMsgSeqNum()); 145 | 146 | assertEquals("wrong value", 1, failoverStore.getNextSenderMsgSeqNum()); 147 | assertEquals("wrong value", 1, failoverStore.getNextTargetMsgSeqNum()); 148 | 149 | primaryStore.setNextSenderMsgSeqNum(20); 150 | primaryStore.setNextTargetMsgSeqNum(20); 151 | 152 | assertEquals("wrong value", 20, primaryStore.getNextSenderMsgSeqNum()); 153 | assertEquals("wrong value", 20, primaryStore.getNextTargetMsgSeqNum()); 154 | 155 | closeMessageStore(primaryStore); 156 | 157 | assertEquals("wrong value", 1, failoverStore.getNextSenderMsgSeqNum()); 158 | assertEquals("wrong value", 1, failoverStore.getNextTargetMsgSeqNum()); 159 | 160 | failoverStore.refresh(); 161 | 162 | assertEquals("wrong value", 20, failoverStore.getNextSenderMsgSeqNum()); 163 | assertEquals("wrong value", 20, failoverStore.getNextTargetMsgSeqNum()); 164 | } finally { 165 | closeMessageStore(failoverStore); 166 | } 167 | } 168 | } 169 | 170 | protected void closeMessageStore(MessageStore store) throws IOException { 171 | // does nothing, by default 172 | } 173 | 174 | protected String getConfigurationFileName() { 175 | return "test.cfg"; 176 | } 177 | 178 | protected void setTestEnabled(boolean b) { 179 | testEnabled = b; 180 | } 181 | } 182 | -------------------------------------------------------------------------------- /src/main/resources/config/client-local.config: -------------------------------------------------------------------------------- 1 | [default] 2 | ApplicationID=DummyClientApplicationID 3 | FileStorePath=storage/messages/ 4 | ConnectionType=initiator 5 | StartTime=00:01:00 Europe/Bucharest 6 | EndTime=23:59:00 Europe/Bucharest 7 | HeartBtInt=30 8 | UseDataDictionary=Y 9 | DataDictionary=FIX42.xml 10 | ValidateUserDefinedFields=N 11 | ValidateIncomingMessage=N 12 | RefreshOnLogon=Y 13 | 14 | UseMemoryDBLeaderLock=true 15 | UseMemoryDBMessageStore=true 16 | 17 | 18 | MemoryDBHost=localhost 19 | MemoryDBPort=6379 20 | 21 | MemoryDBLeaderLock=ClientFixEngineLeaderLock 22 | MemoryDBLeaderLockDuration=3000 23 | MemoryDBFixToAppQueueName=ClientFixToAppQueue 24 | MemoryDBAppToFixQueueName=ClientAppToFixQueue 25 | 26 | DebugLogging=false 27 | 28 | [session] 29 | BeginString=FIX.4.2 30 | SocketConnectHost=localhost 31 | SocketConnectPort=9877 32 | SenderCompID=client 33 | TargetCompID=server -------------------------------------------------------------------------------- /src/main/resources/config/client.cfg: -------------------------------------------------------------------------------- 1 | [default] 2 | ApplicationID= 3 | FileStorePath=storage/messages/ 4 | ConnectionType= 5 | StartTime=00:01:00 Europe/Bucharest 6 | EndTime=23:59:00 Europe/Bucharest 7 | HeartBtInt=30 8 | UseDataDictionary=Y 9 | DataDictionary=FIX42.xml 10 | ValidateUserDefinedFields=N 11 | ValidateIncomingMessage=N 12 | RefreshOnLogon=Y 13 | 14 | JdbcDriver=org.mariadb.jdbc.Driver 15 | JdbcLogHeartBeats=N 16 | JdbcStoreMessagesTableName=messages 17 | JdbcStoreSessionsTableName=sessions 18 | JdbcLogIncomingTable=messages_log 19 | JdbcLogOutgoingTable=messages_log 20 | JdbcLogEventTable=event_log 21 | JdbcSessionIdDefaultPropertyValue= 22 | setMaximumActiveTime=12 23 | 24 | UseJdbcHeartbeat=true 25 | UseJdbcMessageStore=true 26 | 27 | KafkaOutboundTopicName=TO-FIX-ENGINE 28 | KafkaConsumerGroupID=fixengine-mex-consumer 29 | KafkaInboundTopicName=FROM-FIX-ENGINE 30 | kafkaBootstrapBrokerString=:,: 31 | RDSClusterSecretArn= 32 | 33 | DebugLogging= 34 | 35 | [session] 36 | BeginString=FIX. 37 | SocketConnectHost= 38 | SocketConnectPort= 39 | SenderCompID= 40 | TargetCompID= -------------------------------------------------------------------------------- /src/main/resources/config/client.config: -------------------------------------------------------------------------------- 1 | [default] 2 | ApplicationID= 3 | FileStorePath=storage/messages/ 4 | ConnectionType= 5 | StartTime=00:01:00 Europe/Bucharest 6 | EndTime=23:59:00 Europe/Bucharest 7 | HeartBtInt=30 8 | UseDataDictionary=Y 9 | DataDictionary=FIX42.xml 10 | ValidateUserDefinedFields=N 11 | ValidateIncomingMessage=N 12 | RefreshOnLogon=Y 13 | 14 | UseMemoryDBLeaderLock=true 15 | UseMemoryDBMessageStore=true 16 | 17 | MemoryDBHost= 18 | MemoryDBPort= 19 | 20 | MemoryDBLeaderLock=ClientFixEngineLeaderLock 21 | MemoryDBLeaderLockDuration=3000 22 | MemoryDBFixToAppQueueName=ClientFixToAppQueue 23 | MemoryDBAppToFixQueueName=ClientAppToFixQueue 24 | 25 | DebugLogging= 26 | 27 | [session] 28 | BeginString=FIX. 29 | SocketConnectHost= 30 | SocketConnectPort= 31 | SenderCompID= 32 | TargetCompID= -------------------------------------------------------------------------------- /src/main/resources/config/server-local.config: -------------------------------------------------------------------------------- 1 | [default] 2 | ApplicationID=DummyServerApplicationID 3 | FileStorePath=storage/messages/ 4 | ConnectionType=acceptor 5 | StartTime=00:01:00 Europe/Bucharest 6 | EndTime=23:59:00 Europe/Bucharest 7 | HeartBtInt=30 8 | UseDataDictionary=Y 9 | DataDictionary=FIX42.xml 10 | ValidateUserDefinedFields=N 11 | ValidateIncomingMessage=N 12 | RefreshOnLogon=Y 13 | 14 | UseMemoryDBLeaderLock=true 15 | UseMemoryDBMessageStore=true 16 | 17 | MemoryDBHost=localhost 18 | MemoryDBPort=6379 19 | 20 | MemoryDBLeaderLock=ServerFixEngineLeaderLock 21 | MemoryDBLeaderLockDuration=3000 22 | MemoryDBFixToAppQueueName=ServerFixToAppQueue 23 | MemoryDBAppToFixQueueName=ServerAppToFixQueue 24 | 25 | GAEndpointGroupArn=DummyGlobalAcceleratorEndpointGroupArn 26 | GAEndpointArn=DUMMY_GLOBAL_ACCELERATOR_ENDPOINT_ARN 27 | 28 | DebugLogging=false 29 | 30 | [session] 31 | BeginString=FIX.4.2 32 | SocketAcceptPort=9877 33 | SenderCompID=server 34 | TargetCompID=client 35 | AcceptorTemplate=N -------------------------------------------------------------------------------- /src/main/resources/config/server.cfg: -------------------------------------------------------------------------------- 1 | [default] 2 | ApplicationID= 3 | FileStorePath=storage/messages/ 4 | ConnectionType= 5 | StartTime=00:01:00 Europe/Bucharest 6 | EndTime=23:59:00 Europe/Bucharest 7 | HeartBtInt=30 8 | UseDataDictionary=Y 9 | DataDictionary=FIX42.xml 10 | ValidateUserDefinedFields=N 11 | ValidateIncomingMessage=N 12 | RefreshOnLogon=Y 13 | 14 | JdbcDriver=org.mariadb.jdbc.Driver 15 | JdbcLogHeartBeats=N 16 | JdbcStoreMessagesTableName=messages 17 | JdbcStoreSessionsTableName=sessions 18 | JdbcLogIncomingTable=messages_log 19 | JdbcLogOutgoingTable=messages_log 20 | JdbcLogEventTable=event_log 21 | JdbcSessionIdDefaultPropertyValue= 22 | setMaximumActiveTime=12 23 | 24 | UseJdbcHeartbeat=true 25 | UseJdbcMessageStore=true 26 | 27 | KafkaOutboundTopicName=TO-FIX-ENGINE 28 | KafkaConsumerGroupID=fixengine-mex-consumer 29 | KafkaInboundTopicName=FROM-FIX-ENGINE 30 | kafkaBootstrapBrokerString=:,: 31 | RDSClusterSecretArn= 32 | GAEndpointGroupArn= 33 | GAEndpointArn= 34 | 35 | DebugLogging= 36 | 37 | [session] 38 | BeginString=FIX. 39 | SocketAcceptPort= 40 | SenderCompID= 41 | TargetCompID= 42 | AcceptorTemplate=N 43 | -------------------------------------------------------------------------------- /src/main/resources/config/server.config: -------------------------------------------------------------------------------- 1 | [default] 2 | ApplicationID= 3 | FileStorePath=storage/messages/ 4 | ConnectionType= 5 | StartTime=00:01:00 Europe/Bucharest 6 | EndTime=23:59:00 Europe/Bucharest 7 | HeartBtInt=30 8 | UseDataDictionary=Y 9 | DataDictionary=FIX42.xml 10 | ValidateUserDefinedFields=N 11 | ValidateIncomingMessage=N 12 | RefreshOnLogon=Y 13 | 14 | UseMemoryDBLeaderLock=true 15 | UseMemoryDBMessageStore=true 16 | 17 | MemoryDBHost= 18 | MemoryDBPort= 19 | 20 | MemoryDBLeaderLock=ServerFixEngineLeaderLock 21 | MemoryDBLeaderLockDuration=3000 22 | MemoryDBFixToAppQueueName=ServerFixToAppQueue 23 | MemoryDBAppToFixQueueName=ServerAppToFixQueue 24 | 25 | GAEndpointGroupArn= 26 | GAEndpointArn= 27 | 28 | DebugLogging= 29 | 30 | [session] 31 | BeginString=FIX. 32 | SocketAcceptPort= 33 | SenderCompID= 34 | TargetCompID= 35 | AcceptorTemplate=N -------------------------------------------------------------------------------- /src/main/resources/config/test-client-local.config: -------------------------------------------------------------------------------- 1 | MemoryDBHost=localhost 2 | MemoryDBPort=6379 3 | MemoryDBAppToFixQueueName=ClientAppToFixQueue 4 | MemoryDBFixToAppQueueName=ClientFixToAppQueue 5 | NoOfMessages=10000 6 | WaitBetweenMessages=0 -------------------------------------------------------------------------------- /src/main/resources/config/test-client.cfg: -------------------------------------------------------------------------------- 1 | ConnectionType=initiator 2 | KafkaBootstrapBrokerString= 3 | KafkaOutboundTopicName=TO-FIX-ENGINE 4 | KafkaConsumerGroupID=fixengine-consumer-clienttest 5 | KafkaInboundTopicName=FROM-FIX-ENGINE 6 | NoOfMessages=1000 7 | WaitBetweenMessages=1 8 | 9 | -------------------------------------------------------------------------------- /src/main/resources/config/test-client.config: -------------------------------------------------------------------------------- 1 | MemoryDBHost= 2 | MemoryDBPort= 3 | MemoryDBAppToFixQueueName=ClientAppToFixQueue 4 | MemoryDBFixToAppQueueName=ClientFixToAppQueue 5 | NoOfMessages=1000 6 | WaitBetweenMessages=0 -------------------------------------------------------------------------------- /src/main/resources/config/test-server-local.config: -------------------------------------------------------------------------------- 1 | MemoryDBHost=localhost 2 | MemoryDBPort=6379 3 | MemoryDBFixToAppQueueName=ServerFixToAppQueue 4 | MemoryDBAppToFixQueueName=ServerAppToFixQueue 5 | NoOfMessages=1 6 | WaitBetweenMessages=0 7 | SendExecReport=true -------------------------------------------------------------------------------- /src/main/resources/config/test-server.cfg: -------------------------------------------------------------------------------- 1 | ConnectionType=acceptor 2 | KafkaBootstrapBrokerString= 3 | KafkaOutboundTopicName=TO-FIX-ENGINE 4 | KafkaConsumerGroupID=fixengine-consumer-servertest 5 | KafkaInboundTopicName=FROM-FIX-ENGINE 6 | NoOfMessages=1 7 | WaitBetweenMessages=1 8 | SendExecReport=true -------------------------------------------------------------------------------- /src/main/resources/config/test-server.config: -------------------------------------------------------------------------------- 1 | MemoryDBHost= 2 | MemoryDBPort= 3 | MemoryDBFixToAppQueueName=ServerFixToAppQueue 4 | MemoryDBAppToFixQueueName=ServerAppToFixQueue 5 | NoOfMessages=1 6 | WaitBetweenMessages=0 7 | SendExecReport=true -------------------------------------------------------------------------------- /src/test/java/com/amazonaws/fixengineonaws/FixEncoderDecoderDemo.java: -------------------------------------------------------------------------------- 1 | package com.amazonaws.fixengineonaws; 2 | 3 | import java.io.InputStream; 4 | import quickfix.ConfigError; 5 | import quickfix.DataDictionary; 6 | import quickfix.DefaultMessageFactory; 7 | import quickfix.InvalidMessage; 8 | import quickfix.MessageFactory; 9 | import quickfix.field.ClOrdID; 10 | import quickfix.field.HandlInst; 11 | import quickfix.field.OrdType; 12 | import quickfix.field.SenderCompID; 13 | import quickfix.field.SenderSubID; 14 | import quickfix.field.Side; 15 | import quickfix.field.Symbol; 16 | import quickfix.field.TargetCompID; 17 | import quickfix.field.TimeInForce; 18 | import quickfix.field.TransactTime; 19 | import quickfix.fix42.NewOrderSingle; //update fix version to the version the application will be using 20 | 21 | /** 22 | * Fix encoding and decoding demo class 23 | * 24 | *

Copyright 2019 Amazon.com, Inc. or its affiliates. All Rights Reserved.

25 | * 26 | * Permission is hereby granted, free of charge, to any person obtaining a copy of this 27 | * software and associated documentation files (the "Software"), to deal in the Software 28 | * without restriction, including without limitation the rights to use, copy, modify, 29 | * merge, publish, distribute, sublicense, and/or sell copies of the Software, and to 30 | * permit persons to whom the Software is furnished to do so. 31 | *

32 | * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, 33 | * INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A 34 | * PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT 35 | * HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION 36 | * OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE 37 | * SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. 38 | */ 39 | 40 | public class FixEncoderDecoderDemo { 41 | 42 | public static NewOrderSingle generateOrder() { 43 | String orderIdStr = "ORDER_ID_" + System.currentTimeMillis(); 44 | String accountIdStr = "TEST_SENDER_COMP_ID"; 45 | String senderSubIdStr = "TEST_SENDER_SUB_ID"; 46 | String targetIdStr = "TEST_SENDER_COMP_ID"; 47 | String symbolStr = "MSFT"; 48 | char side = Side.BUY; 49 | char orderType = OrdType.MARKET; 50 | char timeInForce = TimeInForce.DAY; 51 | NewOrderSingle newOrder = new NewOrderSingle(new ClOrdID(orderIdStr), new HandlInst('1'), new Symbol(symbolStr), new Side(side), new TransactTime(), new OrdType(orderType)); 52 | /* 53 | Choose NewOrderSingle constructor based on FIX version 54 | 4.2 - NewOrderSingle(ClOrdID clOrdID, HandlInst handlInst, Symbol symbol, Side side, TransactTime transactTime, OrdType ordType) 55 | 4.3 - NewOrderSingle(ClOrdID clOrdID, HandlInst handlInst, Side side, TransactTime transactTime, OrdType ordType) 56 | 4.4 - NewOrderSingle(ClOrdID clOrdID, Side side, TransactTime transactTime, OrdType ordType) 57 | 5.0 - NewOrderSingle(ClOrdID clOrdID, Side side, TransactTime transactTime, OrdType ordType) 58 | */ 59 | 60 | 61 | quickfix.Message.Header header = newOrder.getHeader(); 62 | header.setField(new SenderCompID(accountIdStr)); 63 | header.setField(new SenderSubID(senderSubIdStr)); 64 | header.setField(new TargetCompID(targetIdStr)); 65 | newOrder.setChar(59, timeInForce); 66 | int quantitiyInt = 300; 67 | newOrder.setInt(38, quantitiyInt); 68 | double priceDouble = 123.45; 69 | newOrder.setDouble(44, priceDouble); 70 | return newOrder; 71 | } 72 | 73 | public static String orderToFixString(NewOrderSingle order) { 74 | return order.toString(); 75 | } 76 | 77 | public static NewOrderSingle fixStringToOrder(String orderStr) { 78 | MessageFactory messageFactory = new DefaultMessageFactory(); 79 | String fixFormatXml = "FIX42.xml"; //update to desired FIX version 80 | //Can update InputStream object name to desired FIX version 81 | InputStream fix42Input = FixEngine.class.getClassLoader().getResourceAsStream(fixFormatXml); // This pulls the XML file from quickfix-messages-all-2.2.0.jar 82 | DataDictionary dataDictionary; 83 | try { 84 | dataDictionary = new DataDictionary(fix42Input); //if changing name, update here as well 85 | } catch (ConfigError e) { 86 | System.out.println("ERROR: Unable to find FIX Format XML file (in quickfix-messages-all jar file): " + fixFormatXml); 87 | System.out.println(e); 88 | e.printStackTrace(); 89 | return null; 90 | } 91 | 92 | try { 93 | NewOrderSingle parsedOrd = (NewOrderSingle)quickfix.MessageUtils.parse(messageFactory, dataDictionary, orderStr); 94 | return parsedOrd; 95 | } catch (InvalidMessage e) { 96 | System.out.println("ERROR: Invalid FIX message: " + orderStr); 97 | System.out.println(e); 98 | e.printStackTrace(); 99 | return null; 100 | } 101 | } 102 | 103 | public static void main(String[] args) { 104 | NewOrderSingle order = generateOrder(); 105 | String fixEncodedOrderString = orderToFixString(order); 106 | System.out.println("*************** GENERATED ORDER FIX STRING : " + fixEncodedOrderString ); 107 | NewOrderSingle decodedOrder = fixStringToOrder(fixEncodedOrderString); 108 | System.out.println("*************** DECODED ORDER FROM FIX STRING: " + decodedOrder ); 109 | } 110 | } -------------------------------------------------------------------------------- /src/test/java/config/test-client.cfg: -------------------------------------------------------------------------------- 1 | ConnectionType=initiator 2 | KafkaBootstrapBrokerString= 3 | KafkaOutboundTopicName=TO-FIX-ENGINE 4 | KafkaConsumerGroupID=fixengine-consumer-clienttest 5 | KafkaInboundTopicName=FROM-FIX-ENGINE 6 | NoOfMessages=1000 7 | WaitBetweenMessages=1 8 | 9 | -------------------------------------------------------------------------------- /src/test/java/config/test-server.cfg: -------------------------------------------------------------------------------- 1 | ConnectionType=acceptor 2 | KafkaBootstrapBrokerString= 3 | KafkaOutboundTopicName=TO-FIX-ENGINE 4 | KafkaConsumerGroupID=fixengine-consumer-servertest 5 | KafkaInboundTopicName=FROM-FIX-ENGINE 6 | NoOfMessages=1 7 | WaitBetweenMessages=1 8 | SendExecReport=true -------------------------------------------------------------------------------- /src/test/java/scripts/runtestclient.sh: -------------------------------------------------------------------------------- 1 | java -cp ./fixengineonaws.jar:./libs/* com.amazonaws.fixengineonaws.TestClient ./test-client.cfg -------------------------------------------------------------------------------- /src/test/java/scripts/runtestserver.sh: -------------------------------------------------------------------------------- 1 | java -cp ./fixengineonaws.jar:./libs/* com.amazonaws.fixengineonaws.TestClient ./test-server.cfg --------------------------------------------------------------------------------