This is an automated email from the ASF dual-hosted git repository.

timoninmaxim pushed a commit to branch master
in repository https://gitbox.apache.org/repos/asf/ignite.git


The following commit(s) were added to refs/heads/master by this push:
     new 2597ba43704 IGNITE-25950 Use MessageSerializer for GridCacheEntryInfo 
(#12198)
2597ba43704 is described below

commit 2597ba437042ef2f40e7281096135ed378bd88b9
Author: Ilya Shishkov <[email protected]>
AuthorDate: Fri Jul 18 23:15:33 2025 +0300

    IGNITE-25950 Use MessageSerializer for GridCacheEntryInfo (#12198)
---
 .../apache/ignite/internal/MessageProcessor.java   |   5 +-
 .../internal/MessageSerializerGenerator.java       |  11 +-
 .../java/org/apache/ignite/internal/Order.java     |   9 +-
 .../ignite/internal/GridDirectTransient.java       |   2 +
 .../communication/GridIoMessageFactory.java        |   3 +-
 .../processors/cache/GridCacheEntryInfo.java       | 124 ++-------------------
 .../src/test/resources/codegen/TestMessage.java    |  11 ++
 .../resources/codegen/TestMessageSerializer.java   |  16 ++-
 8 files changed, 57 insertions(+), 124 deletions(-)

diff --git 
a/modules/codegen2/src/main/java/org/apache/ignite/internal/MessageProcessor.java
 
b/modules/codegen2/src/main/java/org/apache/ignite/internal/MessageProcessor.java
index 1162c3269d0..177d8a87ad2 100644
--- 
a/modules/codegen2/src/main/java/org/apache/ignite/internal/MessageProcessor.java
+++ 
b/modules/codegen2/src/main/java/org/apache/ignite/internal/MessageProcessor.java
@@ -52,7 +52,10 @@ import javax.tools.Diagnostic;
  * <ul>
  *   <li>The target class must implement the {@code Message} interface.</li>
  *   <li>Each field to be serialized must be annotated with {@code 
@Order}.</li>
- *   <li>Each serializing field must have a getter named {@code fieldName()} 
and a setter named {@code fieldName(value)}.</li>
+ *   <li>By default, each serializing field must have a getter named {@code 
fieldName()} and
+ *   a setter named {@code fieldName(value)}.</li>
+ *   <li>If {@link Order#method()} attribute was set, then each serializing 
field
+ *   must have a getter named {@code method()} and a setter named {@code 
method(value)}.</li>
  * </ul>
  *
  * <p>
diff --git 
a/modules/codegen2/src/main/java/org/apache/ignite/internal/MessageSerializerGenerator.java
 
b/modules/codegen2/src/main/java/org/apache/ignite/internal/MessageSerializerGenerator.java
index 4f276a25be1..657d81d2b74 100644
--- 
a/modules/codegen2/src/main/java/org/apache/ignite/internal/MessageSerializerGenerator.java
+++ 
b/modules/codegen2/src/main/java/org/apache/ignite/internal/MessageSerializerGenerator.java
@@ -47,6 +47,7 @@ import javax.tools.FileObject;
 import javax.tools.JavaFileObject;
 import javax.tools.StandardLocation;
 
+import org.apache.ignite.internal.util.typedef.F;
 import org.apache.ignite.internal.util.typedef.internal.SB;
 import org.jetbrains.annotations.Nullable;
 
@@ -299,7 +300,10 @@ class MessageSerializerGenerator {
      * @param field Field to generate write code.
      */
     private void returnFalseIfWriteFailed(VariableElement field) throws 
Exception {
-        String getExpr = field.getSimpleName().toString() + "()";
+        String methodName = field.getAnnotation(Order.class).method();
+
+        String getExpr = (F.isEmpty(methodName) ? 
field.getSimpleName().toString() : methodName) + "()";
+
         TypeMirror type = field.asType();
 
         if (type.getKind().isPrimitive()) {
@@ -384,7 +388,10 @@ class MessageSerializerGenerator {
      */
     private void returnFalseIfReadFailed(VariableElement field) throws 
Exception {
         TypeMirror type = field.asType();
-        String name = field.getSimpleName().toString();
+
+        String methodName = field.getAnnotation(Order.class).method();
+
+        String name = F.isEmpty(methodName) ? field.getSimpleName().toString() 
: methodName;
 
         if (type.getKind().isPrimitive()) {
             String typeName = capitalizeOnlyFirst(type.getKind().name());
diff --git 
a/modules/codegen2/src/main/java/org/apache/ignite/internal/Order.java 
b/modules/codegen2/src/main/java/org/apache/ignite/internal/Order.java
index ea83a0dca1b..d1f50d0db87 100644
--- a/modules/codegen2/src/main/java/org/apache/ignite/internal/Order.java
+++ b/modules/codegen2/src/main/java/org/apache/ignite/internal/Order.java
@@ -27,8 +27,10 @@ import java.lang.annotation.Target;
  * <p>
  * The {@code value} indicates the index of the field in the serialization 
order.
  * Fields annotated with {@code @Order} are processed in ascending order of 
their index.
- * <p>
- * This annotation must be used on non-static fields, and access to those 
fields
+ * <p> By default, it is assumed that getters and setters are named as the 
annotated fields,
+ * e.g. field 'val' should have getters and satters with name 'val' (according 
Ignite's to code-style).
+ * If you need to override this behavior, you can specify their name in the 
{@link #method} attribute.
+ * <p> This annotation must be used on non-static fields, and access to those 
fields
  * should be performed strictly through corresponding getter and setter methods
  * following the naming convention: {@code fieldName()} for getter and {@code 
fieldName(Type)} for setter.
  */
@@ -37,4 +39,7 @@ import java.lang.annotation.Target;
 public @interface Order {
     /** @return Order of the field. */
     int value();
+
+    /** @return Getter and setter name. */
+    String method() default "";
 }
diff --git 
a/modules/core/src/main/java/org/apache/ignite/internal/GridDirectTransient.java
 
b/modules/core/src/main/java/org/apache/ignite/internal/GridDirectTransient.java
index be83d985fa6..29e1c4e7239 100644
--- 
a/modules/core/src/main/java/org/apache/ignite/internal/GridDirectTransient.java
+++ 
b/modules/core/src/main/java/org/apache/ignite/internal/GridDirectTransient.java
@@ -24,9 +24,11 @@ import java.lang.annotation.Target;
 
 /**
  * Annotates transient fields.
+ * Deprecated, see {@link Order} and {@link MessageProcessor} for details.
  */
 @Retention(RetentionPolicy.RUNTIME)
 @Target(ElementType.FIELD)
+@Deprecated
 public @interface GridDirectTransient {
     // No-op.
 }
diff --git 
a/modules/core/src/main/java/org/apache/ignite/internal/managers/communication/GridIoMessageFactory.java
 
b/modules/core/src/main/java/org/apache/ignite/internal/managers/communication/GridIoMessageFactory.java
index 24c24ab0cd0..71d8e5a411a 100644
--- 
a/modules/core/src/main/java/org/apache/ignite/internal/managers/communication/GridIoMessageFactory.java
+++ 
b/modules/core/src/main/java/org/apache/ignite/internal/managers/communication/GridIoMessageFactory.java
@@ -26,6 +26,7 @@ import org.apache.ignite.internal.GridTaskCancelRequest;
 import org.apache.ignite.internal.GridTaskSessionRequest;
 import org.apache.ignite.internal.IgniteDiagnosticMessage;
 import org.apache.ignite.internal.binary.BinaryUtils;
+import org.apache.ignite.internal.codegen.GridCacheEntryInfoSerializer;
 import org.apache.ignite.internal.codegen.GridIntListSerializer;
 import org.apache.ignite.internal.codegen.GridJobCancelRequestSerializer;
 import org.apache.ignite.internal.codegen.SessionChannelMessageSerializer;
@@ -272,7 +273,7 @@ public class GridIoMessageFactory implements 
MessageFactoryProvider {
         factory.register((short)88, GridCacheReturn::new);
         factory.register((short)89, CacheObjectImpl::new);
         factory.register((short)90, KeyCacheObjectImpl::new);
-        factory.register((short)91, GridCacheEntryInfo::new);
+        factory.register((short)91, GridCacheEntryInfo::new, new 
GridCacheEntryInfoSerializer());
         factory.register((short)92, CacheEntryInfoCollection::new);
         factory.register((short)93, CacheInvokeDirectResult::new);
         factory.register((short)94, IgniteTxKey::new);
diff --git 
a/modules/core/src/main/java/org/apache/ignite/internal/processors/cache/GridCacheEntryInfo.java
 
b/modules/core/src/main/java/org/apache/ignite/internal/processors/cache/GridCacheEntryInfo.java
index 38d1cf79e82..7d725e0e493 100644
--- 
a/modules/core/src/main/java/org/apache/ignite/internal/processors/cache/GridCacheEntryInfo.java
+++ 
b/modules/core/src/main/java/org/apache/ignite/internal/processors/cache/GridCacheEntryInfo.java
@@ -17,16 +17,13 @@
 
 package org.apache.ignite.internal.processors.cache;
 
-import java.nio.ByteBuffer;
 import org.apache.ignite.IgniteCheckedException;
-import org.apache.ignite.internal.GridDirectTransient;
+import org.apache.ignite.internal.Order;
 import org.apache.ignite.internal.processors.cache.version.GridCacheVersion;
 import org.apache.ignite.internal.util.tostring.GridToStringInclude;
 import org.apache.ignite.internal.util.typedef.internal.S;
 import org.apache.ignite.internal.util.typedef.internal.U;
 import org.apache.ignite.plugin.extensions.communication.Message;
-import org.apache.ignite.plugin.extensions.communication.MessageReader;
-import org.apache.ignite.plugin.extensions.communication.MessageWriter;
 
 /**
  * Entry information that gets passed over wire.
@@ -36,30 +33,34 @@ public class GridCacheEntryInfo implements Message {
     private static final int SIZE_OVERHEAD = 3 * 8 /* reference */ + 4 /* int 
*/ + 2 * 8 /* long */ + 32 /* version */;
 
     /** Cache key. */
+    @Order(0)
     @GridToStringInclude
     private KeyCacheObject key;
 
     /** Cache ID. */
+    @Order(1)
     private int cacheId;
 
     /** Cache value. */
+    @Order(value = 2, method = "value")
     private CacheObject val;
 
     /** Time to live. */
+    @Order(3)
     private long ttl;
 
     /** Expiration time. */
+    @Order(4)
     private long expireTime;
 
     /** Entry version. */
+    @Order(value = 5, method = "version")
     private GridCacheVersion ver;
 
     /** New flag. */
-    @GridDirectTransient
     private boolean isNew;
 
     /** Deleted flag. */
-    @GridDirectTransient
     private boolean deleted;
 
     /**
@@ -179,117 +180,6 @@ public class GridCacheEntryInfo implements Message {
         // No-op.
     }
 
-    /** {@inheritDoc} */
-    @Override public boolean writeTo(ByteBuffer buf, MessageWriter writer) {
-        writer.setBuffer(buf);
-
-        if (!writer.isHeaderWritten()) {
-            if (!writer.writeHeader(directType()))
-                return false;
-
-            writer.onHeaderWritten();
-        }
-
-        switch (writer.state()) {
-            case 0:
-                if (!writer.writeInt(cacheId))
-                    return false;
-
-                writer.incrementState();
-
-            case 1:
-                if (!writer.writeLong(expireTime))
-                    return false;
-
-                writer.incrementState();
-
-            case 2:
-                if (!writer.writeMessage(key))
-                    return false;
-
-                writer.incrementState();
-
-            case 3:
-                if (!writer.writeLong(ttl))
-                    return false;
-
-                writer.incrementState();
-
-            case 4:
-                if (!writer.writeMessage(val))
-                    return false;
-
-                writer.incrementState();
-
-            case 5:
-                if (!writer.writeMessage(ver))
-                    return false;
-
-                writer.incrementState();
-
-        }
-
-        return true;
-    }
-
-    /** {@inheritDoc} */
-    @Override public boolean readFrom(ByteBuffer buf, MessageReader reader) {
-        reader.setBuffer(buf);
-
-        switch (reader.state()) {
-            case 0:
-                cacheId = reader.readInt();
-
-                if (!reader.isLastRead())
-                    return false;
-
-                reader.incrementState();
-
-            case 1:
-                expireTime = reader.readLong();
-
-                if (!reader.isLastRead())
-                    return false;
-
-                reader.incrementState();
-
-            case 2:
-                key = reader.readMessage();
-
-                if (!reader.isLastRead())
-                    return false;
-
-                reader.incrementState();
-
-            case 3:
-                ttl = reader.readLong();
-
-                if (!reader.isLastRead())
-                    return false;
-
-                reader.incrementState();
-
-            case 4:
-                val = reader.readMessage();
-
-                if (!reader.isLastRead())
-                    return false;
-
-                reader.incrementState();
-
-            case 5:
-                ver = reader.readMessage();
-
-                if (!reader.isLastRead())
-                    return false;
-
-                reader.incrementState();
-
-        }
-
-        return true;
-    }
-
     /** {@inheritDoc} */
     @Override public short directType() {
         return 91;
diff --git a/modules/core/src/test/resources/codegen/TestMessage.java 
b/modules/core/src/test/resources/codegen/TestMessage.java
index ebcefb33fa1..78b99dbede3 100644
--- a/modules/core/src/test/resources/codegen/TestMessage.java
+++ b/modules/core/src/test/resources/codegen/TestMessage.java
@@ -62,6 +62,9 @@ public class TestMessage implements Message {
     @Order(10)
     private BitSet bitSet;
 
+    @Order(value = 11, method = "overridenFieldMethod")
+    private String field;
+
     public int id() {
         return id;
     }
@@ -150,6 +153,14 @@ public class TestMessage implements Message {
         this.bitSet = bitSet;
     }
 
+    public String overridenFieldMethod() {
+        return field;
+    }
+
+    public void overridenFieldMethod(String field) {
+        this.field = field;
+    }
+
     public short directType() {
         return 0;
     }
diff --git a/modules/core/src/test/resources/codegen/TestMessageSerializer.java 
b/modules/core/src/test/resources/codegen/TestMessageSerializer.java
index 83efa89d904..3d5a0b7e1f5 100644
--- a/modules/core/src/test/resources/codegen/TestMessageSerializer.java
+++ b/modules/core/src/test/resources/codegen/TestMessageSerializer.java
@@ -112,6 +112,12 @@ public class TestMessageSerializer implements 
MessageSerializer {
 
                 writer.incrementState();
 
+            case 11:
+                if (!writer.writeString(msg.overridenFieldMethod()))
+                    return false;
+
+                writer.incrementState();
+
         }
 
         return true;
@@ -212,8 +218,16 @@ public class TestMessageSerializer implements 
MessageSerializer {
 
                 reader.incrementState();
 
+            case 11:
+                msg.overridenFieldMethod(reader.readString());
+
+                if (!reader.isLastRead())
+                    return false;
+
+                reader.incrementState();
+
         }
 
         return true;
     }
-}
\ No newline at end of file
+}

Reply via email to