You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@ignite.apache.org by vo...@apache.org on 2016/09/08 14:46:13 UTC

[31/50] ignite git commit: Better invariants in SessionStateData.

Better invariants in SessionStateData.


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

Branch: refs/heads/ignite-3199-1
Commit: 5543901d26f1ed82cf0e465f57852b98f11b98bd
Parents: 7a90d55
Author: vozerov-gridgain <vo...@gridgain.com>
Authored: Wed Sep 7 20:14:25 2016 +0300
Committer: vozerov-gridgain <vo...@gridgain.com>
Committed: Wed Sep 7 20:14:25 2016 +0300

----------------------------------------------------------------------
 .../platform/websession/LockEntryProcessor.java | 15 +---
 .../platform/websession/LockInfo.java           |  2 +-
 .../platform/websession/SessionStateData.java   | 80 ++++++++++++--------
 .../websession/SetAndUnlockEntryProcessor.java  |  8 +-
 .../websession/UnlockEntryProcessor.java        |  8 +-
 5 files changed, 60 insertions(+), 53 deletions(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/ignite/blob/5543901d/modules/core/src/main/java/org/apache/ignite/internal/processors/platform/websession/LockEntryProcessor.java
----------------------------------------------------------------------
diff --git a/modules/core/src/main/java/org/apache/ignite/internal/processors/platform/websession/LockEntryProcessor.java b/modules/core/src/main/java/org/apache/ignite/internal/processors/platform/websession/LockEntryProcessor.java
index a8591a4..03ae929 100644
--- a/modules/core/src/main/java/org/apache/ignite/internal/processors/platform/websession/LockEntryProcessor.java
+++ b/modules/core/src/main/java/org/apache/ignite/internal/processors/platform/websession/LockEntryProcessor.java
@@ -21,7 +21,6 @@ import org.apache.ignite.cache.CacheEntryProcessor;
 
 import javax.cache.processor.EntryProcessorException;
 import javax.cache.processor.MutableEntry;
-import java.sql.Timestamp;
 
 /**
  * Entry processor that locks web session data.
@@ -43,21 +42,13 @@ public class LockEntryProcessor implements CacheEntryProcessor<String, SessionSt
 
         assert data != null;
 
-        if (data.getLockNodeId() != null) {
-            // Already locked: return lock time.
-            Timestamp lockTime = data.getLockTime();
-
-            assert lockTime != null;
-
-            return lockTime;
-        }
+        if (data.locked())
+            return data.lockTime();
 
         LockInfo lockInfo = (LockInfo)objects[0];
 
         // Not locked: lock and return result
-        data.setLockNodeId(lockInfo.nodeId());
-        data.setLockId(lockInfo.id());
-        data.setLockTime(lockInfo.getTime());
+        data.lock(lockInfo);
 
         // Apply.
         entry.setValue(data);

http://git-wip-us.apache.org/repos/asf/ignite/blob/5543901d/modules/core/src/main/java/org/apache/ignite/internal/processors/platform/websession/LockInfo.java
----------------------------------------------------------------------
diff --git a/modules/core/src/main/java/org/apache/ignite/internal/processors/platform/websession/LockInfo.java b/modules/core/src/main/java/org/apache/ignite/internal/processors/platform/websession/LockInfo.java
index e71ae38..28bca3a 100644
--- a/modules/core/src/main/java/org/apache/ignite/internal/processors/platform/websession/LockInfo.java
+++ b/modules/core/src/main/java/org/apache/ignite/internal/processors/platform/websession/LockInfo.java
@@ -58,7 +58,7 @@ public class LockInfo implements Binarylizable {
     /**
      * @return Time.
      */
-    public Timestamp getTime() {
+    public Timestamp time() {
         return time;
     }
 

http://git-wip-us.apache.org/repos/asf/ignite/blob/5543901d/modules/core/src/main/java/org/apache/ignite/internal/processors/platform/websession/SessionStateData.java
----------------------------------------------------------------------
diff --git a/modules/core/src/main/java/org/apache/ignite/internal/processors/platform/websession/SessionStateData.java b/modules/core/src/main/java/org/apache/ignite/internal/processors/platform/websession/SessionStateData.java
index 6ef7c59..e850706 100644
--- a/modules/core/src/main/java/org/apache/ignite/internal/processors/platform/websession/SessionStateData.java
+++ b/modules/core/src/main/java/org/apache/ignite/internal/processors/platform/websession/SessionStateData.java
@@ -23,6 +23,8 @@ import org.apache.ignite.binary.BinaryRawWriter;
 import org.apache.ignite.binary.BinaryReader;
 import org.apache.ignite.binary.BinaryWriter;
 import org.apache.ignite.binary.Binarylizable;
+import org.apache.ignite.internal.util.tostring.GridToStringExclude;
+import org.apache.ignite.internal.util.typedef.internal.S;
 
 import java.sql.Timestamp;
 import java.util.UUID;
@@ -32,66 +34,75 @@ import java.util.UUID;
  */
 @SuppressWarnings({"ReturnOfDateField", "AssignmentToDateFieldFromParameter"})
 public class SessionStateData implements Binarylizable {
-    /** */
-    private int timeout;
+    /** Items. */
+    private KeyValueDirtyTrackedCollection items;
 
-    /** */
-    private UUID lockNodeId;
+    /** Static objects. */
+    @GridToStringExclude
+    private byte[] staticObjects;
 
-    /** */
-    private long lockId;
+    /** Timeout. */
+    private int timeout;
 
-    /** */
-    private Timestamp lockTime;
+    /** Lock ID. */
+    private long lockId;
 
-    /** */
-    private KeyValueDirtyTrackedCollection items;
+    /** Lock node ID. */
+    private UUID lockNodeId;
 
-    /** */
-    private byte[] staticObjects;
+    /** Lock time. */
+    private Timestamp lockTime;
 
     /**
-     * Gets the lock node id.
+     * @return Lock ID.
      */
-    public UUID getLockNodeId() {
-        return lockNodeId;
+    public long lockId() {
+        return lockId;
     }
 
     /**
-     * Sets the lock node id.
-     *
+     * @return Lock node ID.
      */
-    public void setLockNodeId(UUID lockNodeId) {
-        this.lockNodeId = lockNodeId;
+    public UUID lockNodeId() {
+        return lockNodeId;
     }
 
     /**
-     * Gets the lock id.
-     *
+     * @return Lock time.
      */
-    public long getLockId() {
-        return lockId;
+    public Timestamp lockTime() {
+        return lockTime;
     }
 
     /**
-     * Sets the lock id.
+     * @return {@code True} if locked.
      */
-    public void setLockId(long lockId) {
-        this.lockId = lockId;
+    public boolean locked() {
+        return lockTime == null;
     }
 
     /**
-     * Gets the lock time.
+     * Set lock info.
+     *
+     * @param lock Lock.
      */
-    public Timestamp getLockTime() {
-        return lockTime;
+    public void lock(LockInfo lock) {
+        assert !locked();
+
+        lockId = lock.id();
+        lockNodeId = lock.nodeId();
+        lockTime = lock.time();
     }
 
     /**
-     * Sets the lock time.
+     * Clear lock info.
      */
-    public void setLockTime(Timestamp lockTime) {
-        this.lockTime = lockTime;
+    public void unlock() {
+        assert locked();
+
+        lockId = 0;
+        lockNodeId = null;
+        lockTime = null;
     }
 
     /** {@inheritDoc} */
@@ -131,4 +142,9 @@ public class SessionStateData implements Binarylizable {
         staticObjects = other.staticObjects;
         items.applyChanges(other.items);
     }
+
+    /** {@inheritDoc} */
+    @Override public String toString() {
+        return S.toString(SessionStateData.class, this);
+    }
 }

http://git-wip-us.apache.org/repos/asf/ignite/blob/5543901d/modules/core/src/main/java/org/apache/ignite/internal/processors/platform/websession/SetAndUnlockEntryProcessor.java
----------------------------------------------------------------------
diff --git a/modules/core/src/main/java/org/apache/ignite/internal/processors/platform/websession/SetAndUnlockEntryProcessor.java b/modules/core/src/main/java/org/apache/ignite/internal/processors/platform/websession/SetAndUnlockEntryProcessor.java
index c973256..6ac8ed1 100644
--- a/modules/core/src/main/java/org/apache/ignite/internal/processors/platform/websession/SetAndUnlockEntryProcessor.java
+++ b/modules/core/src/main/java/org/apache/ignite/internal/processors/platform/websession/SetAndUnlockEntryProcessor.java
@@ -37,18 +37,18 @@ public class SetAndUnlockEntryProcessor implements CacheEntryProcessor<String, S
         SessionStateData data = entry.getValue();
 
         assert data != null;
-        assert data.getLockNodeId() != null;
+        assert data.lockNodeId() != null;
 
         SessionStateData newData = (SessionStateData)objects[0];
 
-        if (!data.getLockNodeId().equals(newData.getLockNodeId()))
+        if (!data.lockNodeId().equals(newData.lockNodeId()))
             throw new IllegalStateException("Can not unlock session data: lock node id check failed.");
 
-        if (data.getLockId() != newData.getLockId())
+        if (data.lockId() != newData.lockId())
             throw new IllegalStateException("Can not unlock session data: lock id check failed.");
 
         // Unlock.
-        data.setLockNodeId(null);
+        data.unlock();
 
         // Update values.
         data.applyChanges(newData);

http://git-wip-us.apache.org/repos/asf/ignite/blob/5543901d/modules/core/src/main/java/org/apache/ignite/internal/processors/platform/websession/UnlockEntryProcessor.java
----------------------------------------------------------------------
diff --git a/modules/core/src/main/java/org/apache/ignite/internal/processors/platform/websession/UnlockEntryProcessor.java b/modules/core/src/main/java/org/apache/ignite/internal/processors/platform/websession/UnlockEntryProcessor.java
index 5554026..f6aa798 100644
--- a/modules/core/src/main/java/org/apache/ignite/internal/processors/platform/websession/UnlockEntryProcessor.java
+++ b/modules/core/src/main/java/org/apache/ignite/internal/processors/platform/websession/UnlockEntryProcessor.java
@@ -37,18 +37,18 @@ public class UnlockEntryProcessor implements CacheEntryProcessor<String, Session
         SessionStateData data = entry.getValue();
 
         assert data != null;
-        assert data.getLockNodeId() != null;
+        assert data.lockNodeId() != null;
 
         LockInfo lockInfo = (LockInfo)objects[0];
 
-        if (!data.getLockNodeId().equals(lockInfo.nodeId()))
+        if (!data.lockNodeId().equals(lockInfo.nodeId()))
             throw new IllegalStateException("Can not unlock session data: lock node id check failed.");
 
-        if (data.getLockId() != lockInfo.id())
+        if (data.lockId() != lockInfo.id())
             throw new IllegalStateException("Can not unlock session data: lock id check failed.");
 
         // Unlock.
-        data.setLockNodeId(null);
+        data.unlock();
 
         entry.setValue(data);