Skip to content

Commit 03e998a

Browse files
author
dxcity
committed
tagging release 3.263
1 parent a34e888 commit 03e998a

File tree

96 files changed

+2470
-766
lines changed

Some content is hidden

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

96 files changed

+2470
-766
lines changed

ReleaseNotes.txt

Lines changed: 5 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1,3 +1,8 @@
1+
QDS 3.263:
2+
3+
* [QD-976] Introduce WideDecimal format
4+
- Run JVM with "-Ddxscheme.price=wide -Ddxscheme.size=wide" to make all price, size and volume fields WideDecimal
5+
16
QDS 3.262:
27

38
* [QD-1081] Agent can loss data after resubscription

auth/pom.xml

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -14,7 +14,7 @@
1414
<parent>
1515
<artifactId>QD</artifactId>
1616
<groupId>com.devexperts.qd</groupId>
17-
<version>3.262</version>
17+
<version>3.263</version>
1818
<relativePath>../pom.xml</relativePath>
1919
</parent>
2020
<modelVersion>4.0.0</modelVersion>

dxfeed-api/pom.xml

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -14,7 +14,7 @@
1414
<parent>
1515
<artifactId>QD</artifactId>
1616
<groupId>com.devexperts.qd</groupId>
17-
<version>3.262</version>
17+
<version>3.263</version>
1818
<relativePath>../pom.xml</relativePath>
1919
</parent>
2020
<modelVersion>4.0.0</modelVersion>

dxfeed-bin/pom.xml

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -14,7 +14,7 @@
1414
<parent>
1515
<artifactId>QD</artifactId>
1616
<groupId>com.devexperts.qd</groupId>
17-
<version>3.262</version>
17+
<version>3.263</version>
1818
<relativePath>../pom.xml</relativePath>
1919
</parent>
2020
<modelVersion>4.0.0</modelVersion>

dxfeed-codegen-verify/pom.xml

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -14,7 +14,7 @@
1414
<parent>
1515
<artifactId>QD</artifactId>
1616
<groupId>com.devexperts.qd</groupId>
17-
<version>3.262</version>
17+
<version>3.263</version>
1818
</parent>
1919
<modelVersion>4.0.0</modelVersion>
2020

dxfeed-codegen/pom.xml

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -14,7 +14,7 @@
1414
<parent>
1515
<artifactId>QD</artifactId>
1616
<groupId>com.devexperts.qd</groupId>
17-
<version>3.262</version>
17+
<version>3.263</version>
1818
<relativePath>../pom.xml</relativePath>
1919
</parent>
2020
<modelVersion>4.0.0</modelVersion>

dxfeed-codegen/src/main/java/com/dxfeed/api/codegen/FactoryImplGen.java

Lines changed: 7 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -136,9 +136,13 @@ private void generateFieldCode(ClassGen cg, Map<String, RecordField> fields, Str
136136
}
137137
cg.addImport(new ClassName(SerialFieldType.class));
138138
for (FieldType.Field field : f.fieldType.fields) {
139-
String typeExpr = field.typeSelector != null ?
140-
"SystemProperties.getProperty(\"" + field.typeSelector + "\", \"\").equalsIgnoreCase(\"decimal\") ? SerialFieldType.DECIMAL : SerialFieldType.COMPACT_INT"
141-
: "SerialFieldType." + field.serialType;
139+
String typeExpr = "SerialFieldType." + field.serialType;
140+
if (field.typeSelectors.length != 0) {
141+
typeExpr = "select(" + typeExpr;
142+
for (String typeSelector : field.typeSelectors)
143+
typeExpr = typeExpr + ", \"" + typeSelector + "\"";
144+
typeExpr = typeExpr + ")";
145+
}
142146
if (f.voidSuffixes != null)
143147
typeExpr = "suffix.matches(\"" + f.voidSuffixes + "\") ? SerialFieldType.VOID : " + typeExpr;
144148
if (f.required) {

dxfeed-codegen/src/main/java/com/dxfeed/api/codegen/FieldType.java

Lines changed: 32 additions & 18 deletions
Original file line numberDiff line numberDiff line change
@@ -16,7 +16,6 @@
1616
import com.devexperts.io.Marshalled;
1717
import com.devexperts.qd.SerialFieldType;
1818
import com.devexperts.qd.util.*;
19-
import com.devexperts.util.SystemProperties;
2019
import com.devexperts.util.TimeUtil;
2120

2221
enum FieldType {
@@ -50,13 +49,36 @@ enum FieldType {
5049
.addAccess(Access.createWithAccessPattern("", "int", "0", "getInt(cursor, %s)", "setInt(cursor, %s, %s)"))
5150
.setMapper(new DecimalMapper(int.class))
5251
),
53-
INT_AS_DOUBLE(new Builder() // TODO this field type is more appropriate to name SIZE as it is tied to size type configuration
54-
.addField(new Field(false, "dxscheme.size"))
52+
SIZE(new Builder()
53+
.addField(new Field(false, SerialFieldType.COMPACT_INT, "dxscheme.size"))
5554
.addAccess(Access.createWithAccessPattern("", "int", "0", "getAsInt(cursor, %s)", "setAsInt(cursor, %s, %s)"))
5655
.addAccess(Access.createWithAccessPattern("Double", "double", "Double.NaN", "getAsDouble(cursor, %s)", "setAsDouble(cursor, %s, %s)"))
57-
.addAccess(Access.createWithAccessPattern("Decimal", "int", "0", "getAsDecimal(cursor, %s)", "setAsDecimal(cursor, %s, %s)"))
56+
.addAccess(Access.createWithAccessPattern("Decimal", "int", "0", "getAsTinyDecimal(cursor, %s)", "setAsTinyDecimal(cursor, %s, %s)"))
57+
.addAccess(Access.createWithAccessPattern("WideDecimal", "long", "0", "getAsWideDecimal(cursor, %s)", "setAsWideDecimal(cursor, %s, %s)"))
5858
.setMapper(new DefaultMapper("Double", double.class))
5959
),
60+
VOLUME(new Builder()
61+
.addField(new Field(false, SerialFieldType.DECIMAL, "dxscheme.volume", "dxscheme.size"))
62+
.addAccess(Access.createWithAccessPattern("", "long", "0", "getAsLong(cursor, %s)", "setAsLong(cursor, %s, %s)"))
63+
.addAccess(Access.createWithAccessPattern("Double", "double", "Double.NaN", "getAsDouble(cursor, %s)", "setAsDouble(cursor, %s, %s)"))
64+
.addAccess(Access.createWithAccessPattern("Decimal", "int", "0", "getAsTinyDecimal(cursor, %s)", "setAsTinyDecimal(cursor, %s, %s)"))
65+
.addAccess(Access.createWithAccessPattern("WideDecimal", "long", "0", "getAsWideDecimal(cursor, %s)", "setAsWideDecimal(cursor, %s, %s)"))
66+
.setMapper(new DefaultMapper("Double", double.class))
67+
),
68+
PRICE(new Builder()
69+
.addField(new Field(false, SerialFieldType.DECIMAL, "dxscheme.price"))
70+
.addAccess(Access.createWithAccessPattern("", "double", "Double.NaN", "getAsDouble(cursor, %s)", "setAsDouble(cursor, %s, %s)"))
71+
.addAccess(Access.createWithAccessPattern("Decimal", "int", "0", "getAsTinyDecimal(cursor, %s)", "setAsTinyDecimal(cursor, %s, %s)"))
72+
.addAccess(Access.createWithAccessPattern("WideDecimal", "long", "0", "getAsWideDecimal(cursor, %s)", "setAsWideDecimal(cursor, %s, %s)"))
73+
.setMapper(new DefaultMapper(double.class))
74+
),
75+
TURNOVER(new Builder()
76+
.addField(new Field(false, SerialFieldType.DECIMAL, "dxscheme.turnover", "dxscheme.price"))
77+
.addAccess(Access.createWithAccessPattern("", "double", "Double.NaN", "getAsDouble(cursor, %s)", "setAsDouble(cursor, %s, %s)"))
78+
.addAccess(Access.createWithAccessPattern("Decimal", "int", "0", "getAsTinyDecimal(cursor, %s)", "setAsTinyDecimal(cursor, %s, %s)"))
79+
.addAccess(Access.createWithAccessPattern("WideDecimal", "long", "0", "getAsWideDecimal(cursor, %s)", "setAsWideDecimal(cursor, %s, %s)"))
80+
.setMapper(new DefaultMapper(double.class))
81+
),
6082
DECIMAL_AS_DOUBLE(new Builder()
6183
.addField(new Field(false, SerialFieldType.DECIMAL))
6284
.addAccess(Access.createWithAccessPattern("", "double", "Double.NaN", "Decimal.toDouble(getInt(cursor, %s))", "setInt(cursor, %s, Decimal.compose(%s))"))
@@ -72,14 +94,6 @@ enum FieldType {
7294
.addImport(new ClassName(Decimal.class))
7395
.setMapper(new DecimalMapper(long.class))
7496
),
75-
DECIMAL_AS_LONG_AS_DOUBLE(new Builder()
76-
.addField(new Field(false, SerialFieldType.DECIMAL))
77-
.addAccess(Access.createWithAccessPattern("", "long", "0", "(long)Decimal.toDouble(getInt(cursor, %s))", "setInt(cursor, %s, Decimal.composeDecimal(%s, 0))"))
78-
.addAccess(Access.createWithAccessPattern("Double", "double", "Double.NaN", "Decimal.toDouble(getInt(cursor, %s))", "setInt(cursor, %s, Decimal.compose(%s))"))
79-
.addAccess(Access.createWithAccessPattern("Decimal", "int", "0", "getInt(cursor, %s)", "setInt(cursor, %s, %s)"))
80-
.addImport(new ClassName(Decimal.class))
81-
.setMapper(new DefaultMapper("Double", double.class))
82-
),
8397
DECIMAL_OR_INT_AS_LONG(new Builder()
8498
.addField(new Field(false, SerialFieldType.DECIMAL))
8599
.addVariable(new Variable(true, "boolean", "IsDecimal") {
@@ -271,22 +285,22 @@ static final class Field {
271285
final boolean required;
272286
final boolean isObject;
273287
final SerialFieldType serialType;
274-
final String typeSelector;
288+
final String[] typeSelectors;
275289
final String suffix;
276290

277291
Field(boolean isObject, SerialFieldType serialType) {
278-
this(true, isObject, serialType, null, "");
292+
this(true, isObject, "", serialType);
279293
}
280294

281-
Field(boolean isObject, String typeSelector) {
282-
this(true, isObject, null, typeSelector, "");
295+
Field(boolean isObject, SerialFieldType serialType, String... typeSelectors) {
296+
this(true, isObject, "", serialType, typeSelectors);
283297
}
284298

285-
Field(boolean required, boolean isObject, SerialFieldType serialType, String typeSelector, String suffix) {
299+
Field(boolean required, boolean isObject, String suffix, SerialFieldType serialType, String... typeSelectors) {
286300
this.required = required;
287301
this.isObject = isObject;
288302
this.serialType = serialType;
289-
this.typeSelector = typeSelector;
303+
this.typeSelectors = typeSelectors;
290304
this.suffix = suffix;
291305
}
292306

0 commit comments

Comments
 (0)