Skip to content

Commit 656cbf5

Browse files
committed
IGNITE-27559 Use MessageSerializer for SchemaAbstractOperation and successors
1 parent 40d9b61 commit 656cbf5

12 files changed

Lines changed: 246 additions & 120 deletions

modules/core/src/main/java/org/apache/ignite/internal/managers/discovery/DiscoveryMessageFactory.java

Lines changed: 18 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -59,10 +59,22 @@
5959
import org.apache.ignite.internal.processors.metastorage.persistence.DistributedMetaStorageUpdateAckMessageSerializer;
6060
import org.apache.ignite.internal.processors.metastorage.persistence.DistributedMetaStorageUpdateMessage;
6161
import org.apache.ignite.internal.processors.metastorage.persistence.DistributedMetaStorageUpdateMessageSerializer;
62+
import org.apache.ignite.internal.processors.query.QueryField;
63+
import org.apache.ignite.internal.processors.query.QueryFieldSerializer;
6264
import org.apache.ignite.internal.processors.query.schema.message.SchemaFinishDiscoveryMessage;
6365
import org.apache.ignite.internal.processors.query.schema.message.SchemaFinishDiscoveryMessageSerializer;
6466
import org.apache.ignite.internal.processors.query.schema.message.SchemaProposeDiscoveryMessage;
6567
import org.apache.ignite.internal.processors.query.schema.message.SchemaProposeDiscoveryMessageSerializer;
68+
import org.apache.ignite.internal.processors.query.schema.operation.SchemaAddQueryEntityOperation;
69+
import org.apache.ignite.internal.processors.query.schema.operation.SchemaAddQueryEntityOperationSerializer;
70+
import org.apache.ignite.internal.processors.query.schema.operation.SchemaAlterTableAddColumnOperation;
71+
import org.apache.ignite.internal.processors.query.schema.operation.SchemaAlterTableAddColumnOperationSerializer;
72+
import org.apache.ignite.internal.processors.query.schema.operation.SchemaAlterTableDropColumnOperation;
73+
import org.apache.ignite.internal.processors.query.schema.operation.SchemaAlterTableDropColumnOperationSerializer;
74+
import org.apache.ignite.internal.processors.query.schema.operation.SchemaIndexCreateOperation;
75+
import org.apache.ignite.internal.processors.query.schema.operation.SchemaIndexCreateOperationSerializer;
76+
import org.apache.ignite.internal.processors.query.schema.operation.SchemaIndexDropOperation;
77+
import org.apache.ignite.internal.processors.query.schema.operation.SchemaIndexDropOperationSerializer;
6678
import org.apache.ignite.marshaller.Marshaller;
6779
import org.apache.ignite.plugin.extensions.communication.MessageFactory;
6880
import org.apache.ignite.plugin.extensions.communication.MessageFactoryProvider;
@@ -155,6 +167,12 @@ public DiscoveryMessageFactory(@Nullable Marshaller cstDataMarshall, @Nullable C
155167

156168
/** {@inheritDoc} */
157169
@Override public void registerAll(MessageFactory factory) {
170+
factory.register((short)-115, SchemaAlterTableAddColumnOperation::new, new SchemaAlterTableAddColumnOperationSerializer());
171+
factory.register((short)-114, SchemaIndexCreateOperation::new, new SchemaIndexCreateOperationSerializer());
172+
factory.register((short)-113, SchemaIndexDropOperation::new, new SchemaIndexDropOperationSerializer());
173+
factory.register((short)-112, SchemaAlterTableDropColumnOperation::new, new SchemaAlterTableDropColumnOperationSerializer());
174+
factory.register((short)-111, SchemaAddQueryEntityOperation::new, new SchemaAddQueryEntityOperationSerializer());
175+
factory.register((short)-110, QueryField::new, new QueryFieldSerializer());
158176
factory.register((short)-109, User::new, new UserSerializer());
159177
factory.register((short)-108, UserManagementOperation::new, new UserManagementOperationSerializer());
160178
factory.register((short)-107, NodeSpecificData::new, new NodeSpecificDataSerializer());

modules/core/src/main/java/org/apache/ignite/internal/processors/query/QueryField.java

Lines changed: 64 additions & 18 deletions
Original file line numberDiff line numberDiff line change
@@ -18,35 +18,54 @@
1818
package org.apache.ignite.internal.processors.query;
1919

2020
import java.io.Serializable;
21+
import org.apache.ignite.IgniteCheckedException;
22+
import org.apache.ignite.IgniteException;
23+
import org.apache.ignite.internal.Order;
2124
import org.apache.ignite.internal.util.typedef.internal.S;
25+
import org.apache.ignite.internal.util.typedef.internal.U;
26+
import org.apache.ignite.marshaller.Marshallers;
27+
import org.apache.ignite.plugin.extensions.communication.Message;
2228

2329
/**
2430
* Query field metadata.
2531
*/
26-
public class QueryField implements Serializable {
32+
public class QueryField implements Serializable, Message {
2733
/** */
2834
private static final long serialVersionUID = 0L;
2935

3036
/** Field name. */
31-
private final String name;
37+
@Order(0)
38+
String name;
3239

3340
/** Alias. */
34-
private final String alias;
41+
@Order(1)
42+
String alias;
3543

3644
/** Class name for this field's values. */
37-
private final String typeName;
45+
@Order(2)
46+
String typeName;
3847

3948
/** Nullable flag. */
40-
private final boolean nullable;
49+
@Order(3)
50+
boolean nullable;
4151

4252
/** Default value. */
43-
private final Object dfltValue;
53+
private Object dfltVal;
54+
55+
/** Serialized form of 'default value'. */
56+
@Order(value = 4, method = "defaultValueBytes")
57+
byte[] dfltValBytes;
4458

4559
/** Precision. */
46-
private final int precision;
60+
@Order(5)
61+
int precision;
4762

4863
/** Scale. */
49-
private final int scale;
64+
@Order(6)
65+
int scale;
66+
67+
/** */
68+
public QueryField() { }
5069

5170
/**
5271
* @param name Field name.
@@ -61,39 +80,39 @@ public QueryField(String name, String typeName, boolean nullable) {
6180
* @param name Field name.
6281
* @param typeName Class name for this field's values.
6382
* @param nullable Nullable flag.
64-
* @param dfltValue Default value.
83+
* @param dfltVal Default value.
6584
*/
66-
public QueryField(String name, String typeName, boolean nullable, Object dfltValue) {
67-
this(name, typeName, nullable, dfltValue, -1, -1);
85+
public QueryField(String name, String typeName, boolean nullable, Object dfltVal) {
86+
this(name, typeName, nullable, dfltVal, -1, -1);
6887
}
6988

7089
/**
7190
* @param name Field name.
7291
* @param typeName Class name for this field's values.
7392
* @param nullable Nullable flag.
74-
* @param dfltValue Default value.
93+
* @param dfltVal Default value.
7594
* @param precision Precision.
7695
* @param scale Scale.
7796
*/
78-
public QueryField(String name, String typeName, boolean nullable, Object dfltValue, int precision, int scale) {
79-
this(name, typeName, null, nullable, dfltValue, precision, scale);
97+
public QueryField(String name, String typeName, boolean nullable, Object dfltVal, int precision, int scale) {
98+
this(name, typeName, null, nullable, dfltVal, precision, scale);
8099
}
81100

82101
/**
83102
* @param name Field name.
84103
* @param typeName Class name for this field's values.
85104
* @param alias Alias.
86105
* @param nullable Nullable flag.
87-
* @param dfltValue Default value.
106+
* @param dfltVal Default value.
88107
* @param precision Precision.
89108
* @param scale Scale.
90109
*/
91-
public QueryField(String name, String typeName, String alias, boolean nullable, Object dfltValue, int precision, int scale) {
110+
public QueryField(String name, String typeName, String alias, boolean nullable, Object dfltVal, int precision, int scale) {
92111
this.name = name;
93112
this.typeName = typeName;
94113
this.alias = alias;
95114
this.nullable = nullable;
96-
this.dfltValue = dfltValue;
115+
this.dfltVal = dfltVal;
97116
this.precision = precision;
98117
this.scale = scale;
99118
}
@@ -130,7 +149,7 @@ public boolean isNullable() {
130149
* @return Default value.
131150
*/
132151
public Object defaultValue() {
133-
return dfltValue;
152+
return dfltVal;
134153
}
135154

136155
/**
@@ -147,8 +166,35 @@ public int scale() {
147166
return scale;
148167
}
149168

169+
/** */
170+
public byte[] defaultValueBytes() {
171+
try {
172+
return U.marshal(Marshallers.jdk(), dfltVal);
173+
}
174+
catch (IgniteCheckedException e) {
175+
throw new IgniteException("Failed to marshal default value", e);
176+
}
177+
}
178+
179+
/** */
180+
public void defaultValueBytes(byte[] dfltValBytes) {
181+
if (dfltValBytes != null) {
182+
try {
183+
dfltVal = U.unmarshal(Marshallers.jdk(), dfltValBytes, U.gridClassLoader());
184+
}
185+
catch (IgniteCheckedException e) {
186+
throw new IgniteException("Failed to unmarshal default value", e);
187+
}
188+
}
189+
}
190+
150191
/** {@inheritDoc} */
151192
@Override public String toString() {
152193
return S.toString(QueryField.class, this);
153194
}
195+
196+
/** {@inheritDoc} */
197+
@Override public short directType() {
198+
return -110;
199+
}
154200
}

modules/core/src/main/java/org/apache/ignite/internal/processors/query/schema/message/SchemaAbstractDiscoveryMessage.java

Lines changed: 3 additions & 37 deletions
Original file line numberDiff line numberDiff line change
@@ -17,17 +17,13 @@
1717

1818
package org.apache.ignite.internal.processors.query.schema.message;
1919

20-
import org.apache.ignite.IgniteCheckedException;
21-
import org.apache.ignite.IgniteException;
2220
import org.apache.ignite.internal.Order;
2321
import org.apache.ignite.internal.managers.discovery.DiscoveryCustomMessage;
2422
import org.apache.ignite.internal.processors.query.schema.SchemaOperationException;
2523
import org.apache.ignite.internal.processors.query.schema.operation.SchemaAbstractOperation;
2624
import org.apache.ignite.internal.util.tostring.GridToStringInclude;
2725
import org.apache.ignite.internal.util.typedef.internal.S;
28-
import org.apache.ignite.internal.util.typedef.internal.U;
2926
import org.apache.ignite.lang.IgniteUuid;
30-
import org.apache.ignite.marshaller.Marshallers;
3127
import org.apache.ignite.plugin.extensions.communication.Message;
3228
import org.jetbrains.annotations.Nullable;
3329

@@ -44,14 +40,8 @@ public abstract class SchemaAbstractDiscoveryMessage implements DiscoveryCustomM
4440

4541
/** Operation. */
4642
@GridToStringInclude
47-
private SchemaAbstractOperation op;
48-
49-
/**
50-
* Operation bytes. Serialized reprezentation of schema operation.
51-
* TODO Should be removed in IGNITE-27559
52-
*/
53-
@Order(value = 1, method = "operationBytes")
54-
byte[] opBytes;
43+
@Order(1)
44+
SchemaAbstractOperation op;
5545

5646
/** Error message. */
5747
@Order(2)
@@ -92,31 +82,7 @@ protected SchemaAbstractDiscoveryMessage(SchemaAbstractOperation op) {
9282
* @return Operation.
9383
*/
9484
public SchemaAbstractOperation operation() {
95-
try {
96-
return op != null ? op : U.unmarshal(Marshallers.jdk(), opBytes, null);
97-
}
98-
catch (IgniteCheckedException e) {
99-
throw new IgniteException("Failed to unmarshal schema operation", e);
100-
}
101-
}
102-
103-
/**
104-
* @return Operation bytes.
105-
*/
106-
public byte[] operationBytes() {
107-
try {
108-
return opBytes != null ? opBytes : U.marshal(Marshallers.jdk(), op);
109-
}
110-
catch (IgniteCheckedException e) {
111-
throw new IgniteException("Failed to marshal schema operation", e);
112-
}
113-
}
114-
115-
/**
116-
* @param opBytes Operation bytes.
117-
*/
118-
public void operationBytes(byte[] opBytes) {
119-
this.opBytes = opBytes;
85+
return op;
12086
}
12187

12288
/**

modules/core/src/main/java/org/apache/ignite/internal/processors/query/schema/operation/SchemaAbstractAlterTableOperation.java

Lines changed: 0 additions & 39 deletions
This file was deleted.

modules/core/src/main/java/org/apache/ignite/internal/processors/query/schema/operation/SchemaAbstractOperation.java

Lines changed: 13 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -19,31 +19,39 @@
1919

2020
import java.io.Serializable;
2121
import java.util.UUID;
22+
import org.apache.ignite.internal.Order;
2223
import org.apache.ignite.internal.util.typedef.internal.S;
24+
import org.apache.ignite.plugin.extensions.communication.Message;
2325

2426
/**
2527
* Abstract operation on schema.
2628
*/
27-
public abstract class SchemaAbstractOperation implements Serializable {
29+
public abstract class SchemaAbstractOperation implements Serializable, Message {
2830
/** */
2931
private static final long serialVersionUID = 0L;
3032

3133
/** Operation ID. */
32-
private final UUID opId;
34+
@Order(0)
35+
UUID opId;
3336

3437
/** Cache name. */
35-
private final String cacheName;
38+
@Order(1)
39+
String cacheName;
3640

3741
/** Schema name. */
38-
private final String schemaName;
42+
@Order(2)
43+
String schemaName;
44+
45+
/** */
46+
protected SchemaAbstractOperation() {}
3947

4048
/**
4149
* Constructor.
4250
*
4351
* @param opId Operation ID.
4452
* @param schemaName Schema name.
4553
*/
46-
public SchemaAbstractOperation(UUID opId, String cacheName, String schemaName) {
54+
protected SchemaAbstractOperation(UUID opId, String cacheName, String schemaName) {
4755
this.opId = opId;
4856
this.cacheName = cacheName;
4957
this.schemaName = schemaName;

0 commit comments

Comments
 (0)