-
Notifications
You must be signed in to change notification settings - Fork 625
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
Fix orchestra with updated project structure #460
Fix orchestra with updated project structure #460
Conversation
…ild plans (does not rely on "mvn install", renamed module
… fix-orchestra
…a copy of core but with fields from FIX Latest, I have built this to be like core but I think core is wrong and is not originally intended to include the generated fields in the pacakaging
…already provided in the message packages, fixLatest module now generates the fixLatest artefacts
…s to allow ready end to end testing. The code generator for fixLatest currently writes out the messages in this format. It is presumed that a fixLatest package will be added and the legacy 50SP2 resurrected.
* update FileUtil to resolve new 403 error for requests with User-Agent header * Updated User-Agent value for FileUtil * Added check for HttpUrlConnection to changes done in #460 --------- Co-authored-by: david-gibbs-ig <david.gibbs@nadex.com>
* update FileUtil to resolve new 403 error for requests with User-Agent header * Updated User-Agent value for FileUtil * Added check for HttpUrlConnection to changes done in #460 --------- Co-authored-by: david-gibbs-ig <david.gibbs@nadex.com>
* update FileUtil to resolve new 403 error for requests with User-Agent header * Updated User-Agent value for FileUtil * Added check for HttpUrlConnection to changes done in #460 --------- Co-authored-by: david-gibbs-ig <david.gibbs@nadex.com>
* update FileUtil to resolve new 403 error for requests with User-Agent header * Updated User-Agent value for FileUtil * Added check for HttpUrlConnection to changes done in #460 --------- Co-authored-by: david-gibbs-ig <david.gibbs@nadex.com>
@david-gibbs-ig , I think I know where this error comes from. All fields that have a type of You did some (related ?) changes with this PR: quickfix-j/quickfixj-orchestra#4 What do you think? |
I did not remove the extra ctor for |
@chrjohn I have made the necessary change to the code generation in PR quickfix-j/quickfixj-orchestra#6 . |
…f a Field extending UTCDateOnly to the xsl for minimal-fix-latest
@chrjohn I'm very pleased to see the build checks green https://github.com/quickfix-j/quickfixj/pull/460/checks |
…//github.com/david-gibbs-ig/quickfixj into fix-orchestra-with-updated-project-structure
quickfixj-codegenerator/src/main/java/org/quickfixj/codegenerator/MessageCodeGenerator.java
Show resolved
Hide resolved
check if still `install` is needed instead of `test`
This reverts commit ca7c47e.
Ok that's an interesting clue, will look when I can.
From: Christoph John ***@***.***>
Sent: Thursday, November 30, 2023 11:52 AM
To: quickfix-j/quickfixj ***@***.***>
Cc: David Gibbs ***@***.***>; Mention ***@***.***>
Subject: Re: [quickfix-j/quickfixj] Fix orchestra with updated project structure (PR #460)
[EXTERNAL] This message originated outside of NADEX.
@chrjohn commented on this pull request.
________________________________
In quickfixj-codegenerator/src/main/java/org/quickfixj/codegenerator/MessageCodeGenerator.java<#460 (comment)>:
@@ -305,10 +305,6 @@ private void generateCodeFile(Task task, Document document, Map<String, String>
if (!task.isOverwrite()) {
return;
}
- if (outputFile.lastModified() > task.getSpecificationLastModified()) {
Seems I get compile errors when re-adding this method.
[ERROR] Failed to execute goal org.apache.maven.plugins:maven-compiler-plugin:3.10.1:testCompile (default-testCompile) on project quickfixj-core: Compilation failure: Compilation failure:
[ERROR] /home/cj/macd/workspace/quickfixj-new/qfj-dgibbs/quickfixj/quickfixj-core/src/test/java/quickfix/MessageTest.java:[150,80] error: incompatible types: LocalDateTime cannot be converted to String
[ERROR] /home/cj/macd/workspace/quickfixj-new/qfj-dgibbs/quickfixj/quickfixj-core/src/test/java/quickfix/MessageTest.java:[171,27] error: incompatible types: String cannot be converted to int
[ERROR] /home/cj/macd/workspace/quickfixj-new/qfj-dgibbs/quickfixj/quickfixj-core/src/test/java/quickfix/MessageTest.java:[171,57] error: cannot find symbol
-
Reply to this email directly, view it on GitHub<#460 (comment)>, or unsubscribe<https://github.com/notifications/unsubscribe-auth/AHCIBNWYAM7VZM6B56FTPC3YHBXNRAVCNFSM5L4UJHR2U5DIOJSWCZC7NNSXTPCQOVWGYUTFOF2WK43UKJSXM2LFO45TCNZVG4ZDONBWGYYA>.
You are receiving this because you were mentioned.Message ID: ***@***.***>
…________________________________
This electronic mail message and any attachments may contain confidential and/or privileged information that is only intended for use by, North American Derivatives Exchange, Inc. ("Nadex") or third-parties to whom it is directed. The contents of this electronic mail message are not to be copied, modified, published, transmitted, distributed, performed, displayed, or sold in any way. If you are not the addressee, you are prohibited from disclosing, copying, distributing or taking any action based on the contents of this message. If you have received this message by mistake, please contact the sender immediately. All emails sent to or from the Nadex corporate email system may be retained, monitored and/or reviewed by Nadex personnel. Nadex is located at 200 West Jackson Boulevard, Suite 1400, Chicago, IL 60606. Nadex is subject to U.S. regulatory oversight by the CFTC. Futures, options and swaps trading involves risk and may not be appropriate for all investors. The contents herein are not a solicitation, recommendation or offer to buy or sell any particular financial instrument listed on Nadex or elsewhere.
|
@david-gibbs-ig merging in 3, 2, 1... 🥳 |
Fantastic ! I had better make some examples now ! |
Fixes #317
This branch has structural changes that are intended to make it quicker to work with core.
Core no longer has a mutual dependency with ALL the source code for fields, components and messages for all the FIX versions. Core depends on a new module "Base" as do the generated Message, Component and Field classes. Base does depend on a small number of generated classes that are used in Standard Header and Footer. These classes are generated with and packaged with Base, but only these classes. This is to help decouple the messages resources from the core distribution and facilitate the build and maintenance of custom distributions. Core now has only test dependencies on the message packages. This is described at length in project markdown files.
There is a benefit to this structure; "core" can be developed without rebuilding the message packages. Build times for the message packages are long. The FIX Orchestration now has nearly 6000 fields. One only needs to rebuild the message packages when code generation is altered, when a new FIX Standard Orchestration is incorporated or when Base is changed. As a further convenience there is a minimal profile to reduce the size -P"minimal-fix-latest". This This makes fix latest much smaller but includes resources that are needed to test core.
Use of the FTC Code Generator copied from the https://github.com/FIXTradingCommunity/fix-orchestra-quickfix is introduced via a dependency on https://github.com/quickfix-j/quickfixj-orchestra. The XSL based QFJ code generation takes too long for FIXLatest and this was causing C.I. builds to fail. This FTC Code Generator is used for fixt11 and fixlatest to help with future compatibility. Other protocol versions are built with the old code generator to all options to build custom packages with very high backward compatibility but benefitting from the new core (and base).
The convention used in Orchestra for codeset enumerations can lead to sub-optimal constant names. Work is in progress with the FTC to work around this. Where FIX latest is part of the build some constant names will be different from legacy builds. As mentioned above, there are work arounds for this.
You'll see that the new code generation for fixlatest does not de-normalize components. I had extended the code generation to do so and more closely mirror the QFJ code generator but this resulted in enormous classes with extreme build times for compilation and javadoc. I suggest that we adopt normalised components for fixlatest as the convention for this qfj distribution. If you build from orchestra you will get normalised components in the fixlatest package. This could be an optional setting but I think it's a bad idea. There are no actual "components" in fixt11, only groups.
This project now also publishes a QuickFIXJ orchestration, modified to help with a correct QFJ build. This can then be used to "easily" derive and customise QFJ builds, without needing to understand the work required to conform the standard orchestration to QFJ.
Customised builds should now be more maintainable, there is no need to manage forks of QFJ to cope with ROE differences and this will enable more succinct code, documents and test generation.
I've tested this approach in branch "use-orchestration-from-qfj-project" of ig-orchestrations.
see:
https://github.com/quickfix-j/quickfixj-orchestra
https://github.com/IG-Group/ig-orchestrations/tree/use-orchestration-from-qfj-project.
https://github.com/IG-Group/ig-orchestrations/tree/use-orchestration-from-qfj-project/ig-us-rfed/orchestration
https://github.com/IG-Group/ig-orchestrations/blob/use-orchestration-from-qfj-project/ig-us-rfed/quickfixj-messages-fixLatest/pom.xml
I have also tested the resulting customized message package end to end with private QFJ FIX applications.