Skip to content

Commit 822c90b

Browse files
IGNITE-28232 Get rid of @order method feature (#12889)
1 parent 08a8afc commit 822c90b

44 files changed

Lines changed: 510 additions & 505 deletions

File tree

Some content is hidden

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

modules/calcite/src/main/java/org/apache/ignite/internal/processors/query/calcite/metadata/ColocationGroup.java

Lines changed: 12 additions & 14 deletions
Original file line numberDiff line numberDiff line change
@@ -29,19 +29,20 @@
2929
import java.util.UUID;
3030
import java.util.stream.Collectors;
3131
import java.util.stream.LongStream;
32+
import org.apache.ignite.IgniteCheckedException;
3233
import org.apache.ignite.internal.Order;
34+
import org.apache.ignite.internal.processors.cache.GridCacheSharedContext;
3335
import org.apache.ignite.internal.processors.cache.distributed.dht.topology.GridDhtPartitionState;
34-
import org.apache.ignite.internal.processors.query.calcite.message.CalciteMessage;
36+
import org.apache.ignite.internal.processors.query.calcite.message.CalciteMarshalableMessage;
3537
import org.apache.ignite.internal.processors.query.calcite.message.MessageType;
3638
import org.apache.ignite.internal.processors.query.calcite.util.Commons;
3739
import org.apache.ignite.internal.util.GridIntIterator;
3840
import org.apache.ignite.internal.util.GridIntList;
3941
import org.apache.ignite.internal.util.typedef.F;
4042
import org.apache.ignite.internal.util.typedef.internal.U;
41-
import org.jetbrains.annotations.Nullable;
4243

4344
/** */
44-
public class ColocationGroup implements CalciteMessage {
45+
public class ColocationGroup implements CalciteMarshalableMessage {
4546
/** */
4647
@Order(0)
4748
long[] srcIds;
@@ -60,7 +61,7 @@ public class ColocationGroup implements CalciteMessage {
6061
private boolean primaryAssignment;
6162

6263
/** Marshalled assignments serialization call holder. */
63-
@Order(value = 2, method = "marshalledAssignments")
64+
@Order(2)
6465
int[] marshalledAssignments;
6566

6667
/** */
@@ -317,10 +318,10 @@ public int[] partitions(UUID nodeId) {
317318
return MessageType.COLOCATION_GROUP;
318319
}
319320

320-
/** Significantly compacts and fastens UUIDs marshalling. */
321-
public @Nullable int[] marshalledAssignments() {
321+
/** {@inheritDoc} */
322+
@Override public void prepareMarshal(GridCacheSharedContext<?, ?> ctx) throws IgniteCheckedException {
322323
if (assignments == null || primaryAssignment)
323-
return null;
324+
return;
324325

325326
Map<UUID, Integer> nodeIdxs = new HashMap<>();
326327

@@ -343,16 +344,13 @@ public int[] partitions(UUID nodeId) {
343344
}
344345
}
345346

346-
return builder.build().buffer();
347+
marshalledAssignments = builder.build().buffer();
347348
}
348349

349-
/** Significantly compacts and fastens UUIDs unmarshalling. */
350-
public void marshalledAssignments(@Nullable int[] marshalledAssignments) {
351-
if (F.isEmpty(marshalledAssignments)) {
352-
assignments = null;
353-
350+
/** {@inheritDoc} */
351+
@Override public void prepareUnmarshal(GridCacheSharedContext<?, ?> ctx) throws IgniteCheckedException {
352+
if (F.isEmpty(marshalledAssignments))
354353
return;
355-
}
356354

357355
int bitsPerPart = Integer.SIZE - Integer.numberOfLeadingZeros(nodeIds.size());
358356

modules/calcite/src/main/java/org/apache/ignite/internal/processors/query/calcite/metadata/FragmentDescription.java

Lines changed: 14 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -21,6 +21,7 @@
2121
import java.util.List;
2222
import java.util.Map;
2323
import java.util.UUID;
24+
import org.apache.ignite.IgniteCheckedException;
2425
import org.apache.ignite.internal.Order;
2526
import org.apache.ignite.internal.processors.cache.GridCacheSharedContext;
2627
import org.apache.ignite.internal.processors.query.calcite.message.CalciteMarshalableMessage;
@@ -118,10 +119,16 @@ public void remoteSources0(Map<Long, UUIDCollectionMessage> remoteSources0) {
118119
}
119120

120121
/** {@inheritDoc} */
121-
@Override public void prepareMarshal(GridCacheSharedContext<?, ?> ctx) {
122-
if (target != null)
122+
@Override public void prepareMarshal(GridCacheSharedContext<?, ?> ctx) throws IgniteCheckedException {
123+
if (target != null) {
123124
target = target.explicitMapping();
124125

126+
target.prepareMarshal(ctx);
127+
}
128+
129+
if (mapping != null)
130+
mapping.prepareMarshal(ctx);
131+
125132
if (remoteSources0 == null && remoteSources != null) {
126133
remoteSources0 = U.newHashMap(remoteSources.size());
127134

@@ -131,7 +138,11 @@ public void remoteSources0(Map<Long, UUIDCollectionMessage> remoteSources0) {
131138
}
132139

133140
/** {@inheritDoc} */
134-
@Override public void prepareUnmarshal(GridCacheSharedContext<?, ?> ctx) {
141+
@Override public void prepareUnmarshal(GridCacheSharedContext<?, ?> ctx) throws IgniteCheckedException {
142+
target.prepareUnmarshal(ctx);
143+
144+
mapping.prepareUnmarshal(ctx);
145+
135146
if (remoteSources == null && remoteSources0 != null) {
136147
remoteSources = U.newHashMap(remoteSources0.size());
137148

modules/calcite/src/main/java/org/apache/ignite/internal/processors/query/calcite/metadata/FragmentMapping.java

Lines changed: 16 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -23,8 +23,10 @@
2323
import java.util.UUID;
2424
import java.util.function.Supplier;
2525
import java.util.stream.Collectors;
26+
import org.apache.ignite.IgniteCheckedException;
2627
import org.apache.ignite.internal.Order;
27-
import org.apache.ignite.internal.processors.query.calcite.message.CalciteMessage;
28+
import org.apache.ignite.internal.processors.cache.GridCacheSharedContext;
29+
import org.apache.ignite.internal.processors.query.calcite.message.CalciteMarshalableMessage;
2830
import org.apache.ignite.internal.processors.query.calcite.message.MessageType;
2931
import org.apache.ignite.internal.processors.query.calcite.util.Commons;
3032
import org.apache.ignite.internal.util.typedef.F;
@@ -34,7 +36,7 @@
3436
/**
3537
*
3638
*/
37-
public class FragmentMapping implements CalciteMessage {
39+
public class FragmentMapping implements CalciteMarshalableMessage {
3840
/** */
3941
@Order(0)
4042
List<ColocationGroup> colocationGrps;
@@ -177,4 +179,16 @@ public FragmentMapping explicitMapping(Set<Long> srcIds) {
177179
@Override public MessageType type() {
178180
return MessageType.FRAGMENT_MAPPING;
179181
}
182+
183+
/** {@inheritDoc} */
184+
@Override public void prepareMarshal(GridCacheSharedContext<?, ?> ctx) throws IgniteCheckedException {
185+
for (ColocationGroup grp : colocationGrps)
186+
grp.prepareMarshal(ctx);
187+
}
188+
189+
/** {@inheritDoc} */
190+
@Override public void prepareUnmarshal(GridCacheSharedContext<?, ?> ctx) throws IgniteCheckedException {
191+
for (ColocationGroup grp : colocationGrps)
192+
grp.prepareUnmarshal(ctx);
193+
}
180194
}

modules/codegen/src/main/java/org/apache/ignite/internal/MessageProcessor.java

Lines changed: 0 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -54,8 +54,6 @@
5454
* <ul>
5555
* <li>The target class must implement the {@code Message} interface.</li>
5656
* <li>Each field to be serialized must be annotated with {@code @Order}.</li>
57-
* <li>If {@link Order#method()} attribute was set, then each serializing field
58-
* must have a getter named {@code method()} and a setter named {@code method(value)}.</li>
5957
* </ul>
6058
*
6159
* <p>

modules/codegen/src/main/java/org/apache/ignite/internal/MessageSerializerGenerator.java

Lines changed: 24 additions & 52 deletions
Original file line numberDiff line numberDiff line change
@@ -31,7 +31,6 @@
3131
import java.util.LinkedHashMap;
3232
import java.util.List;
3333
import java.util.Map;
34-
import java.util.Objects;
3534
import java.util.Set;
3635
import java.util.TreeSet;
3736
import java.util.UUID;
@@ -53,7 +52,6 @@
5352
import javax.tools.JavaFileObject;
5453
import javax.tools.StandardLocation;
5554
import org.apache.ignite.internal.systemview.SystemViewRowAttributeWalkerProcessor;
56-
import org.apache.ignite.internal.util.typedef.F;
5755
import org.apache.ignite.internal.util.typedef.internal.SB;
5856
import org.jetbrains.annotations.Nullable;
5957

@@ -390,9 +388,7 @@ private void readField(VariableElement field, int opt) throws Exception {
390388
* @param field Field to generate write code.
391389
*/
392390
private void returnFalseIfWriteFailed(VariableElement field) throws Exception {
393-
String methodName = field.getAnnotation(Order.class).method();
394-
395-
String getExpr = F.isEmpty(methodName) ? field.getSimpleName().toString() : methodName + "()";
391+
String getExpr = field.getSimpleName().toString();
396392

397393
TypeMirror type = field.asType();
398394

@@ -557,18 +553,12 @@ private void returnFalseIfWriteFailed(Collection<String> code, String accessor,
557553
private void returnFalseIfWriteFailed(Collection<String> code, VariableElement field, String accessor, @Nullable String... args) {
558554
String argsStr = String.join(", ", args);
559555

560-
String methodName = field.getAnnotation(Order.class).method();
561-
562-
if (Objects.equals(methodName, "")) {
563-
if (type.equals(field.getEnclosingElement()))
564-
code.add(identedLine("if (!%s(msg.%s))", accessor, argsStr));
565-
else {
566-
// Field has to be requested from a super class object.
567-
code.add(identedLine("if (!%s(((%s)msg).%s))", accessor, field.getEnclosingElement().getSimpleName(), argsStr));
568-
}
569-
}
570-
else
556+
if (type.equals(field.getEnclosingElement()))
571557
code.add(identedLine("if (!%s(msg.%s))", accessor, argsStr));
558+
else {
559+
// Field has to be requested from a super class object.
560+
code.add(identedLine("if (!%s(((%s)msg).%s))", accessor, field.getEnclosingElement().getSimpleName(), argsStr));
561+
}
572562

573563
indent++;
574564

@@ -586,19 +576,13 @@ private void returnFalseIfEnumWriteFailed(
586576
String writerCall,
587577
String mapperCall,
588578
String fieldGetterCall) {
589-
String methodName = field.getAnnotation(Order.class).method();
590-
591-
if (Objects.equals(methodName, "")) {
592-
if (type.equals(field.getEnclosingElement()))
593-
code.add(identedLine("if (!%s(%s(msg.%s)))", writerCall, mapperCall, fieldGetterCall));
594-
else {
595-
// Field has to be requested from a super class object.
596-
code.add(identedLine("if (!%s(%s(((%s)msg).%s)))",
597-
writerCall, mapperCall, field.getEnclosingElement().getSimpleName(), fieldGetterCall));
598-
}
599-
}
600-
else
579+
if (type.equals(field.getEnclosingElement()))
601580
code.add(identedLine("if (!%s(%s(msg.%s)))", writerCall, mapperCall, fieldGetterCall));
581+
else {
582+
// Field has to be requested from a super class object.
583+
code.add(identedLine("if (!%s(%s(((%s)msg).%s)))",
584+
writerCall, mapperCall, field.getEnclosingElement().getSimpleName(), fieldGetterCall));
585+
}
602586

603587
indent++;
604588

@@ -895,19 +879,13 @@ private PrimitiveType unboxedType(TypeMirror type) {
895879
private void returnFalseIfReadFailed(VariableElement field, String mtd, String... args) {
896880
String argsStr = String.join(", ", args);
897881

898-
String methodName = field.getAnnotation(Order.class).method();
899-
900-
if (Objects.equals(methodName, "")) {
901-
if (type.equals(field.getEnclosingElement()))
902-
read.add(identedLine("msg.%s = %s(%s);", field.getSimpleName().toString(), mtd, argsStr));
903-
else {
904-
// Field has to be requested from a super class object.
905-
read.add(identedLine("((%s)msg).%s = %s(%s);",
906-
field.getEnclosingElement().getSimpleName(), field.getSimpleName().toString(), mtd, argsStr));
907-
}
882+
if (type.equals(field.getEnclosingElement()))
883+
read.add(identedLine("msg.%s = %s(%s);", field.getSimpleName().toString(), mtd, argsStr));
884+
else {
885+
// Field has to be requested from a super class object.
886+
read.add(identedLine("((%s)msg).%s = %s(%s);",
887+
field.getEnclosingElement().getSimpleName(), field.getSimpleName().toString(), mtd, argsStr));
908888
}
909-
else
910-
read.add(identedLine("msg.%s(%s(%s));", methodName, mtd, argsStr));
911889

912890
read.add(EMPTY);
913891

@@ -933,19 +911,13 @@ private void returnFalseIfEnumReadFailed(VariableElement field, String mapperDec
933911
else
934912
readOp = line("%s(%s, reader.readByte())", mapperDecodeCallStmnt, enumValuesFieldName);
935913

936-
String methodName = field.getAnnotation(Order.class).method();
937-
938-
if (Objects.equals(methodName, "")) {
939-
if (type.equals(field.getEnclosingElement()))
940-
read.add(identedLine("msg.%s = %s;", field.getSimpleName().toString(), readOp));
941-
else {
942-
// Field has to be requested from a super class object.
943-
read.add(identedLine("((%s)msg).%s = %s;",
944-
field.getEnclosingElement().getSimpleName(), field.getSimpleName().toString(), readOp));
945-
}
914+
if (type.equals(field.getEnclosingElement()))
915+
read.add(identedLine("msg.%s = %s;", field.getSimpleName().toString(), readOp));
916+
else {
917+
// Field has to be requested from a super class object.
918+
read.add(identedLine("((%s)msg).%s = %s;",
919+
field.getEnclosingElement().getSimpleName(), field.getSimpleName().toString(), readOp));
946920
}
947-
else
948-
read.add(identedLine("msg.%s(%s);", methodName, readOp));
949921

950922
read.add(EMPTY);
951923

modules/codegen/src/main/java/org/apache/ignite/internal/Order.java

Lines changed: 0 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -29,7 +29,6 @@
2929
* Fields annotated with {@code @Order} are processed in ascending order of their index.
3030
* <p> By default, it is assumed that getters and setters are named as the annotated fields,
3131
* e.g. field 'val' should have getters and satters with name 'val' (according Ignite's to code-style).
32-
* If you need to override this behavior, you can specify their name in the {@link #method} attribute.
3332
* <p> This annotation must be used on non-static fields, and access to those fields
3433
* should be performed strictly through corresponding getter and setter methods
3534
* following the naming convention: {@code fieldName()} for getter and {@code fieldName(Type)} for setter.
@@ -39,7 +38,4 @@
3938
public @interface Order {
4039
/** @return Order of the field. */
4140
int value();
42-
43-
/** @return Getter and setter name. */
44-
String method() default "";
4541
}

modules/core/src/main/java/org/apache/ignite/internal/MarshallerContextImpl.java

Lines changed: 0 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -45,7 +45,6 @@
4545
import org.apache.ignite.compute.ComputeTaskSession;
4646
import org.apache.ignite.internal.executor.GridExecutorService;
4747
import org.apache.ignite.internal.processors.cache.distributed.dht.preloader.GridDhtPartitionFullMap;
48-
import org.apache.ignite.internal.processors.cache.distributed.dht.preloader.GridDhtPartitionMap;
4948
import org.apache.ignite.internal.processors.cache.persistence.filename.SharedFileTree;
5049
import org.apache.ignite.internal.processors.closure.GridClosureProcessor;
5150
import org.apache.ignite.internal.processors.marshaller.MappedName;
@@ -146,7 +145,6 @@ public MarshallerContextImpl(@Nullable Collection<PluginProvider> plugins, Ignit
146145
});
147146

148147
checkHasClassName(GridDhtPartitionFullMap.class.getName(), ldr, CLS_NAMES_FILE);
149-
checkHasClassName(GridDhtPartitionMap.class.getName(), ldr, CLS_NAMES_FILE);
150148
checkHasClassName(HashMap.class.getName(), ldr, JDK_CLS_NAMES_FILE);
151149
}
152150
catch (IOException e) {

modules/core/src/main/java/org/apache/ignite/internal/cache/query/index/IndexKeyTypeMessage.java

Lines changed: 18 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -17,14 +17,16 @@
1717

1818
package org.apache.ignite.internal.cache.query.index;
1919

20+
import org.apache.ignite.IgniteCheckedException;
2021
import org.apache.ignite.internal.Order;
2122
import org.apache.ignite.internal.cache.query.index.sorted.IndexKeyType;
2223
import org.apache.ignite.internal.managers.communication.GridIoMessageFactory;
23-
import org.apache.ignite.plugin.extensions.communication.Message;
24+
import org.apache.ignite.marshaller.Marshaller;
25+
import org.apache.ignite.plugin.extensions.communication.MarshallableMessage;
2426
import org.jetbrains.annotations.Nullable;
2527

2628
/** Message wrapper for {@link IndexKeyType}. */
27-
public class IndexKeyTypeMessage implements Message {
29+
public class IndexKeyTypeMessage implements MarshallableMessage {
2830
/** Type code. */
2931
public static final short TYPE_CODE = 516;
3032

@@ -35,8 +37,8 @@ public class IndexKeyTypeMessage implements Message {
3537
private @Nullable IndexKeyType val;
3638

3739
/** Code. */
38-
@Order(value = 0, method = "code")
39-
byte code = NULL_VALUE_CODE;
40+
@Order(0)
41+
byte code;
4042

4143
/** Empty constructor for {@link GridIoMessageFactory}. */
4244
public IndexKeyTypeMessage() {
@@ -51,7 +53,8 @@ public IndexKeyTypeMessage(@Nullable IndexKeyType keyType) {
5153

5254
/** Constructor. */
5355
public IndexKeyTypeMessage(int keyTypeCode) {
54-
code((byte)keyTypeCode);
56+
code = (byte)keyTypeCode;
57+
val = decode(code);
5558
}
5659

5760
/** @return Code. */
@@ -64,7 +67,6 @@ public byte code() {
6467
*/
6568
public void code(byte code) {
6669
this.code = code;
67-
val = decode(code);
6870
}
6971

7072
/** @return Index key type. */
@@ -94,4 +96,14 @@ private static byte encode(@Nullable IndexKeyType keyType) {
9496
@Override public short directType() {
9597
return TYPE_CODE;
9698
}
99+
100+
/** {@inheritDoc} */
101+
@Override public void prepareMarshal(Marshaller marsh) throws IgniteCheckedException {
102+
code = encode(val);
103+
}
104+
105+
/** {@inheritDoc} */
106+
@Override public void finishUnmarshal(Marshaller marsh, ClassLoader clsLdr) throws IgniteCheckedException {
107+
val = decode(code);
108+
}
97109
}

0 commit comments

Comments
 (0)