Repository: ignite
Updated Branches:
  refs/heads/ignite-1917 1c71f2257 -> 1b48b5857


IGNITE-1917: Removed schema ID advance in case of serializable objects.


Project: http://git-wip-us.apache.org/repos/asf/ignite/repo
Commit: http://git-wip-us.apache.org/repos/asf/ignite/commit/3f19b51b
Tree: http://git-wip-us.apache.org/repos/asf/ignite/tree/3f19b51b
Diff: http://git-wip-us.apache.org/repos/asf/ignite/diff/3f19b51b

Branch: refs/heads/ignite-1917
Commit: 3f19b51b1c994760dfe2ad24a58bf7c94c6bf1ce
Parents: 1c71f22
Author: vozerov-gridgain <[email protected]>
Authored: Mon Nov 16 13:24:10 2015 +0300
Committer: vozerov-gridgain <[email protected]>
Committed: Mon Nov 16 13:24:10 2015 +0300

----------------------------------------------------------------------
 .../internal/portable/BinaryFieldAccessor.java  | 18 ++++++------
 .../internal/portable/BinaryWriterExImpl.java   | 29 +++++++++++++++++---
 .../portable/PortableClassDescriptor.java       |  2 ++
 3 files changed, 36 insertions(+), 13 deletions(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/ignite/blob/3f19b51b/modules/core/src/main/java/org/apache/ignite/internal/portable/BinaryFieldAccessor.java
----------------------------------------------------------------------
diff --git 
a/modules/core/src/main/java/org/apache/ignite/internal/portable/BinaryFieldAccessor.java
 
b/modules/core/src/main/java/org/apache/ignite/internal/portable/BinaryFieldAccessor.java
index 6ae2188..c93e369 100644
--- 
a/modules/core/src/main/java/org/apache/ignite/internal/portable/BinaryFieldAccessor.java
+++ 
b/modules/core/src/main/java/org/apache/ignite/internal/portable/BinaryFieldAccessor.java
@@ -161,7 +161,7 @@ public abstract class BinaryFieldAccessor {
 
         /** {@inheritDoc} */
         @Override public void write(Object obj, BinaryWriterExImpl writer) 
throws BinaryObjectException {
-            writer.writeFieldId(id);
+            writer.writeFieldIdNoSchemaUpdate(id);
 
             byte val = UNSAFE.getByte(obj, offset);
 
@@ -191,7 +191,7 @@ public abstract class BinaryFieldAccessor {
 
         /** {@inheritDoc} */
         @Override public void write(Object obj, BinaryWriterExImpl writer) 
throws BinaryObjectException {
-            writer.writeFieldId(id);
+            writer.writeFieldIdNoSchemaUpdate(id);
 
             boolean val = UNSAFE.getBoolean(obj, offset);
 
@@ -221,7 +221,7 @@ public abstract class BinaryFieldAccessor {
 
         /** {@inheritDoc} */
         @Override public void write(Object obj, BinaryWriterExImpl writer) 
throws BinaryObjectException {
-            writer.writeFieldId(id);
+            writer.writeFieldIdNoSchemaUpdate(id);
 
             short val = UNSAFE.getShort(obj, offset);
 
@@ -251,7 +251,7 @@ public abstract class BinaryFieldAccessor {
 
         /** {@inheritDoc} */
         @Override public void write(Object obj, BinaryWriterExImpl writer) 
throws BinaryObjectException {
-            writer.writeFieldId(id);
+            writer.writeFieldIdNoSchemaUpdate(id);
 
             char val = UNSAFE.getChar(obj, offset);
 
@@ -281,7 +281,7 @@ public abstract class BinaryFieldAccessor {
 
         /** {@inheritDoc} */
         @Override public void write(Object obj, BinaryWriterExImpl writer) 
throws BinaryObjectException {
-            writer.writeFieldId(id);
+            writer.writeFieldIdNoSchemaUpdate(id);
 
             int val = UNSAFE.getInt(obj, offset);
 
@@ -311,7 +311,7 @@ public abstract class BinaryFieldAccessor {
 
         /** {@inheritDoc} */
         @Override public void write(Object obj, BinaryWriterExImpl writer) 
throws BinaryObjectException {
-            writer.writeFieldId(id);
+            writer.writeFieldIdNoSchemaUpdate(id);
 
             long val = UNSAFE.getLong(obj, offset);
 
@@ -341,7 +341,7 @@ public abstract class BinaryFieldAccessor {
 
         /** {@inheritDoc} */
         @Override public void write(Object obj, BinaryWriterExImpl writer) 
throws BinaryObjectException {
-            writer.writeFieldId(id);
+            writer.writeFieldIdNoSchemaUpdate(id);
 
             float val = UNSAFE.getFloat(obj, offset);
 
@@ -371,7 +371,7 @@ public abstract class BinaryFieldAccessor {
 
         /** {@inheritDoc} */
         @Override public void write(Object obj, BinaryWriterExImpl writer) 
throws BinaryObjectException {
-            writer.writeFieldId(id);
+            writer.writeFieldIdNoSchemaUpdate(id);
 
             double val = UNSAFE.getDouble(obj, offset);
 
@@ -413,7 +413,7 @@ public abstract class BinaryFieldAccessor {
             assert obj != null;
             assert writer != null;
 
-            writer.writeFieldId(id);
+            writer.writeFieldIdNoSchemaUpdate(id);
 
             Object val;
 

http://git-wip-us.apache.org/repos/asf/ignite/blob/3f19b51b/modules/core/src/main/java/org/apache/ignite/internal/portable/BinaryWriterExImpl.java
----------------------------------------------------------------------
diff --git 
a/modules/core/src/main/java/org/apache/ignite/internal/portable/BinaryWriterExImpl.java
 
b/modules/core/src/main/java/org/apache/ignite/internal/portable/BinaryWriterExImpl.java
index fa258d9..003856a 100644
--- 
a/modules/core/src/main/java/org/apache/ignite/internal/portable/BinaryWriterExImpl.java
+++ 
b/modules/core/src/main/java/org/apache/ignite/internal/portable/BinaryWriterExImpl.java
@@ -94,9 +94,6 @@ public class BinaryWriterExImpl implements BinaryWriter, 
BinaryRawWriterEx, Obje
     /** */
     private final PortableContext ctx;
 
-    /** */
-    private final int start;
-
     /** Output stream. */
     private final PortableOutputStream out;
 
@@ -106,6 +103,9 @@ public class BinaryWriterExImpl implements BinaryWriter, 
BinaryRawWriterEx, Obje
     /** */
     private int typeId;
 
+    /** */
+    private final int start;
+
     /** Raw offset position. */
     private int rawOffPos;
 
@@ -1671,7 +1671,28 @@ public class BinaryWriterExImpl implements BinaryWriter, 
BinaryRawWriterEx, Obje
     }
 
     /**
-     * @return Current schema ID.
+     * Write field ID without schema ID update. This method should be used 
when schema ID is stable because class
+     * is seializable.
+     *
+     * @param fieldId Field ID.
+     */
+    public void writeFieldIdNoSchemaUpdate(int fieldId) {
+        int fieldOff = out.position() - start;
+
+        schema.push(fieldId, fieldOff);
+
+        fieldCnt++;
+    }
+
+    /**
+     * @param schemaId Schema ID.
+     */
+    public void schemaId(int schemaId) {
+        this.schemaId = schemaId;
+    }
+
+    /**
+     * @return Schema ID.
      */
     public int schemaId() {
         return schemaId;

http://git-wip-us.apache.org/repos/asf/ignite/blob/3f19b51b/modules/core/src/main/java/org/apache/ignite/internal/portable/PortableClassDescriptor.java
----------------------------------------------------------------------
diff --git 
a/modules/core/src/main/java/org/apache/ignite/internal/portable/PortableClassDescriptor.java
 
b/modules/core/src/main/java/org/apache/ignite/internal/portable/PortableClassDescriptor.java
index 9502106..1817174 100644
--- 
a/modules/core/src/main/java/org/apache/ignite/internal/portable/PortableClassDescriptor.java
+++ 
b/modules/core/src/main/java/org/apache/ignite/internal/portable/PortableClassDescriptor.java
@@ -620,6 +620,8 @@ public class PortableClassDescriptor {
                         for (BinaryFieldAccessor info : fields)
                             info.write(obj, writer);
 
+                        writer.schemaId(stableSchema.schemaId());
+
                         writer.postWrite(userType);
                     }
                     finally {

Reply via email to