Skip to content

Commit b43ed62

Browse files
authored
Merge pull request #1199 from quickfix-j/copilot/improve-xpath-limit-process
Extract Saxon version into property and remove XPath limit workarounds
2 parents ac26cc9 + 6adac90 commit b43ed62

6 files changed

Lines changed: 46 additions & 236 deletions

File tree

.mvn/jvm.config

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1 +1 @@
1-
-Xms3g -Xmx6g -Djdk.xml.xpathExprGrpLimit=500 -Djdk.xml.xpathExprOpLimit=500
1+
-Xms3g -Xmx6g

pom.xml

Lines changed: 9 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -98,6 +98,7 @@
9898
<orchestra.file>OrchestraFIXLatest.xml</orchestra.file>
9999
<org.quickfixj.orchestra.tools.version>1.0.3</org.quickfixj.orchestra.tools.version>
100100
<jaxen.version>2.0.4</jaxen.version>
101+
<saxon.version>12.9</saxon.version>
101102
<jmh.version>1.37</jmh.version>
102103
<jcstress.version>0.16</jcstress.version>
103104
<hsqldb.version>1.8.0.10</hsqldb.version>
@@ -356,6 +357,14 @@
356357
<groupId>org.codehaus.mojo</groupId>
357358
<artifactId>xml-maven-plugin</artifactId>
358359
<version>${xml-maven-plugin-version}</version>
360+
<dependencies>
361+
<!-- Use Saxon to process XSLT 2.0 stylesheets correctly and avoid JDK's XPath operation count limit -->
362+
<dependency>
363+
<groupId>net.sf.saxon</groupId>
364+
<artifactId>Saxon-HE</artifactId>
365+
<version>${saxon.version}</version>
366+
</dependency>
367+
</dependencies>
359368
</plugin>
360369
<plugin>
361370
<groupId>org.codehaus.mojo</groupId>

quickfixj-base/src/main/xsl/extractRequiredFields.xsl

Lines changed: 8 additions & 53 deletions
Original file line numberDiff line numberDiff line change
@@ -15,59 +15,14 @@
1515
</xsl:template>
1616

1717
<!-- remove all the fields that are not required by core -->
18-
<xsl:template match="fixr:fields/fixr:field[not(
19-
@id='1156'
20-
or @id='1128'
21-
or @id='7'
22-
or @id='8'
23-
or @id='9'
24-
or @id='380'
25-
or @id='10'
26-
or @id='1129'
27-
or @id='1137'
28-
or @id='128'
29-
or @id='145'
30-
or @id='129'
31-
or @id='98'
32-
or @id='16'
33-
or @id='123'
34-
or @id='108'
35-
or @id='369'
36-
or @id='347'
37-
or @id='34'
38-
or @id='35'
39-
or @id='36'
40-
or @id='789'
41-
or @id='627'
42-
or @id='115'
43-
or @id='144'
44-
or @id='370'
45-
or @id='116'
46-
or @id='122'
47-
or @id='43'
48-
or @id='97'
49-
or @id='372'
50-
or @id='45'
51-
or @id='371'
52-
or @id='141'
53-
or @id='90'
54-
or @id='91'
55-
or @id='49'
56-
or @id='142'
57-
or @id='50'
58-
or @id='52'
59-
or @id='373'
60-
or @id='1409'
61-
or @id='89'
62-
or @id='93'
63-
or @id='56'
64-
or @id='143'
65-
or @id='57'
66-
or @id='112'
67-
or @id='58'
68-
or @id='213'
69-
or @id='212'
70-
)]">
18+
<xsl:template match="fixr:fields/fixr:field[not(@id = (
19+
'1156', '1128', '7', '8', '9', '380', '10', '1129', '1137',
20+
'128', '145', '129', '98', '16', '123', '108', '369', '347',
21+
'34', '35', '36', '789', '627', '115', '144', '370', '116',
22+
'122', '43', '97', '372', '45', '371', '141', '90', '91',
23+
'49', '142', '50', '52', '373', '1409', '89', '93', '56',
24+
'143', '57', '112', '58', '213', '212'
25+
))]">
7126
</xsl:template>
7227

7328
<!-- ApplExtID -->

quickfixj-codegenerator/pom.xml

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -40,7 +40,7 @@
4040
<dependency>
4141
<groupId>net.sf.saxon</groupId>
4242
<artifactId>Saxon-HE</artifactId>
43-
<version>12.9</version>
43+
<version>${saxon.version}</version>
4444
</dependency>
4545
<dependency>
4646
<groupId>org.junit.vintage</groupId>

quickfixj-messages/quickfixj-messages-all/src/main/xsl/minimiseOrchestra.xsl

Lines changed: 16 additions & 115 deletions
Original file line numberDiff line numberDiff line change
@@ -15,122 +15,23 @@
1515
</xsl:template>
1616

1717
<!-- filter out fields that are not used in QFJ tests -->
18-
<!-- Field 1492 ComplexEventStartDate is included to prove successful compilation of a field extending UTCDateOnly -->
18+
<!-- Field 1492 ComplexEventStartDate is included to prove successful compilation of a field extending UTCDateOnly -->
1919
<xsl:template
20-
match="fixr:fields/fixr:field[not(
21-
@id = '6' or
22-
@id = '8' or
23-
@id = '9' or
24-
@id = '10' or
25-
@id = '11' or
26-
@id = '19' or
27-
@id = '21' or
28-
@id = '22' or
29-
@id = '33' or
30-
@id = '34' or
31-
@id = '35' or
32-
@id = '38' or
33-
@id = '40' or
34-
@id = '43' or
35-
@id = '44' or
36-
@id = '45' or
37-
@id = '48' or
38-
@id = '49' or
39-
@id = '50' or
40-
@id = '52' or
41-
@id = '54' or
42-
@id = '55' or
43-
@id = '56' or
44-
@id = '57' or
45-
@id = '58' or
46-
@id = '59' or
47-
@id = '60' or
48-
@id = '89' or
49-
@id = '90' or
50-
@id = '91' or
51-
@id = '93' or
52-
@id = '95' or
53-
@id = '96' or
54-
@id = '97' or
55-
@id = '110' or
56-
@id = '115' or
57-
@id = '116' or
58-
@id = '122' or
59-
@id = '128' or
60-
@id = '129' or
61-
@id = '131' or
62-
@id = '134' or
63-
@id = '135' or
64-
@id = '142' or
65-
@id = '143' or
66-
@id = '144' or
67-
@id = '145' or
68-
@id = '146' or
69-
@id = '149' or
70-
@id = '152' or
71-
@id = '155' or
72-
@id = '167' or
73-
@id = '193' or
74-
@id = '212' or
75-
@id = '213' or
76-
@id = '268' or
77-
@id = '269' or
78-
@id = '270' or
79-
@id = '271' or
80-
@id = '277' or
81-
@id = '278' or
82-
@id = '279' or
83-
@id = '320' or
84-
@id = '322' or
85-
@id = '323' or
86-
@id = '336' or
87-
@id = '347' or
88-
@id = '369' or
89-
@id = '372' or
90-
@id = '380' or
91-
@id = '393' or
92-
@id = '447' or
93-
@id = '448' or
94-
@id = '452' or
95-
@id = '453' or
96-
@id = '460' or
97-
@id = '548' or
98-
@id = '549' or
99-
@id = '550' or
100-
@id = '552' or
101-
@id = '553' or
102-
@id = '554' or
103-
@id = '555' or
104-
@id = '560' or
105-
@id = '600' or
106-
@id = '627' or
107-
@id = '628' or
108-
@id = '629' or
109-
@id = '630' or
110-
@id = '918' or
111-
@id = '923' or
112-
@id = '924' or
113-
@id = '925' or
114-
@id = '1128' or
115-
@id = '1129' or
116-
@id = '1262' or
117-
@id = '1268' or
118-
@id = '1269' or
119-
@id = '1270' or
120-
@id = '1271' or
121-
@id = '1272' or
122-
@id = '1156' or
123-
@id = '1400' or
124-
@id = '1401' or
125-
@id = '1402' or
126-
@id = '1403' or
127-
@id = '1404' or
128-
@id = '1483' or
129-
@id = '1484' or
130-
@id = '1491' or
131-
@id = '1492' or
132-
@id = '1779' or
133-
@id = '321007')]"/>
20+
match="fixr:fields/fixr:field[not(@id = (
21+
'6', '8', '9', '10', '11', '19', '21', '22', '33',
22+
'34', '35', '38', '40', '43', '44', '45', '48', '49',
23+
'50', '52', '54', '55', '56', '57', '58', '59', '60',
24+
'89', '90', '91', '93', '95', '96', '97', '110', '115',
25+
'116', '122', '128', '129', '131', '134', '135', '142',
26+
'143', '144', '145', '146', '149', '152', '155', '167',
27+
'193', '212', '213', '268', '269', '270', '271', '277',
28+
'278', '279', '320', '322', '323', '336', '347', '369',
29+
'372', '380', '393', '447', '448', '452', '453', '460',
30+
'548', '549', '550', '552', '553', '554', '555', '560',
31+
'600', '627', '628', '629', '630', '918', '923', '924',
32+
'925', '1128', '1129', '1262', '1268', '1269', '1270',
33+
'1271', '1272', '1156', '1400', '1401', '1402', '1403',
34+
'1404', '1483', '1484', '1491', '1492', '1779', '321007'))]"/>
13435

13536
<!-- filter out components that are not used in QFJ tests -->
13637
<xsl:template

quickfixj-orchestration/src/main/xsl/extractSessionLayer.xsl

Lines changed: 11 additions & 66 deletions
Original file line numberDiff line numberDiff line change
@@ -19,72 +19,17 @@
1919
match="fixr:message[(@category='Session') ]" />
2020

2121
<!-- filter out FIX Session Layer fields -->
22-
<xsl:template match="fixr:fields/fixr:field[( @id='7'
23-
or @id='8'
24-
or @id='9'
25-
or @id='10'
26-
or @id='16'
27-
or @id='34'
28-
or @id='35'
29-
or @id='36'
30-
or @id='43'
31-
or @id='49'
32-
or @id='50'
33-
or @id='52'
34-
or @id='56'
35-
or @id='57'
36-
or @id='89'
37-
or @id='90'
38-
or @id='91'
39-
or @id='93'
40-
or @id='95'
41-
or @id='96'
42-
or @id='97'
43-
or @id='98'
44-
or @id='108'
45-
or @id='112'
46-
or @id='115'
47-
or @id='116'
48-
or @id='122'
49-
or @id='123'
50-
or @id='128'
51-
or @id='129'
52-
or @id='141'
53-
or @id='142'
54-
or @id='143'
55-
or @id='144'
56-
or @id='145'
57-
or @id='212'
58-
or @id='213'
59-
or @id='347'
60-
or @id='369'
61-
or @id='371'
62-
or @id='373'
63-
or @id='383'
64-
or @id='385'
65-
or @id='464'
66-
or @id='553'
67-
or @id='554'
68-
or @id='627'
69-
or @id='628'
70-
or @id='629'
71-
or @id='630'
72-
or @id='789'
73-
or @id='925'
74-
or @id='1128'
75-
or @id='1129'
76-
or @id='1137'
77-
or @id='1156'
78-
or @id='1400'
79-
or @id='1401'
80-
or @id='1402'
81-
or @id='1403'
82-
or @id='1404'
83-
or @id='1407'
84-
or @id='1408'
85-
or @id='1409'
86-
or @id='1410'
87-
or @id='2085') ]" />
22+
<xsl:template match="fixr:fields/fixr:field[@id = (
23+
'7', '8', '9', '10', '16', '34', '35', '36',
24+
'43', '49', '50', '52', '56', '57', '89', '90',
25+
'91', '93', '95', '96', '97', '98', '108', '112',
26+
'115', '116', '122', '123', '128', '129', '141',
27+
'142', '143', '144', '145', '212', '213', '347',
28+
'369', '371', '373', '383', '385', '464', '553',
29+
'554', '627', '628', '629', '630', '789', '925',
30+
'1128', '1129', '1137', '1156', '1400', '1401',
31+
'1402', '1403', '1404', '1407', '1408', '1409',
32+
'1410', '2085')] />
8833
8934
<!-- Remove Session category -->
9035
<xsl:template match="fixr:categories/fixr:category[(@name='Session') ]" />

0 commit comments

Comments
 (0)