# Implement Cache.Entry#unwrap() correctly.

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

Branch: refs/heads/ignite-189
Commit: a4f9375f808cab9e3f8f8ea666fe38e5da38d141
Parents: da54496
Author: sevdokimov <sevdoki...@gridgain.com>
Authored: Wed Feb 11 18:30:39 2015 +0300
Committer: sevdokimov <sevdoki...@gridgain.com>
Committed: Wed Feb 11 18:30:56 2015 +0300

----------------------------------------------------------------------
 .../ignite/internal/processors/cache/CacheEntryEvent.java    | 5 ++++-
 .../ignite/internal/processors/cache/CacheEntryImpl0.java    | 6 +++---
 .../ignite/internal/processors/cache/CacheInvokeEntry.java   | 8 ++++----
 3 files changed, 11 insertions(+), 8 deletions(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/incubator-ignite/blob/a4f9375f/modules/core/src/main/java/org/apache/ignite/internal/processors/cache/CacheEntryEvent.java
----------------------------------------------------------------------
diff --git 
a/modules/core/src/main/java/org/apache/ignite/internal/processors/cache/CacheEntryEvent.java
 
b/modules/core/src/main/java/org/apache/ignite/internal/processors/cache/CacheEntryEvent.java
index 1ff4be8..ffbc85b 100644
--- 
a/modules/core/src/main/java/org/apache/ignite/internal/processors/cache/CacheEntryEvent.java
+++ 
b/modules/core/src/main/java/org/apache/ignite/internal/processors/cache/CacheEntryEvent.java
@@ -62,7 +62,10 @@ public class CacheEntryEvent<K, V> extends 
javax.cache.event.CacheEntryEvent<K,
 
     /** {@inheritDoc} */
     @Override public <T> T unwrap(Class<T> cls) {
-        throw new IllegalArgumentException();
+        if(cls.isAssignableFrom(getClass()))
+            return cls.cast(this);
+
+        throw new IllegalArgumentException("Unwrapping to class is not 
supported: " + cls);
     }
 
     /** {@inheritDoc} */

http://git-wip-us.apache.org/repos/asf/incubator-ignite/blob/a4f9375f/modules/core/src/main/java/org/apache/ignite/internal/processors/cache/CacheEntryImpl0.java
----------------------------------------------------------------------
diff --git 
a/modules/core/src/main/java/org/apache/ignite/internal/processors/cache/CacheEntryImpl0.java
 
b/modules/core/src/main/java/org/apache/ignite/internal/processors/cache/CacheEntryImpl0.java
index 05c30c3..d2b1923 100644
--- 
a/modules/core/src/main/java/org/apache/ignite/internal/processors/cache/CacheEntryImpl0.java
+++ 
b/modules/core/src/main/java/org/apache/ignite/internal/processors/cache/CacheEntryImpl0.java
@@ -47,10 +47,10 @@ public class CacheEntryImpl0<K, V> implements 
Cache.Entry<K, V> {
     /** {@inheritDoc} */
     @SuppressWarnings("unchecked")
     @Override public <T> T unwrap(Class<T> cls) {
-        if (!cls.equals(getClass()))
-            throw new IllegalArgumentException("Unwrapping to class is not 
supported: " + cls);
+        if(cls.isAssignableFrom(getClass()))
+            return cls.cast(this);
 
-        return (T)this;
+        throw new IllegalArgumentException("Unwrapping to class is not 
supported: " + cls);
     }
 
     /** {@inheritDoc} */

http://git-wip-us.apache.org/repos/asf/incubator-ignite/blob/a4f9375f/modules/core/src/main/java/org/apache/ignite/internal/processors/cache/CacheInvokeEntry.java
----------------------------------------------------------------------
diff --git 
a/modules/core/src/main/java/org/apache/ignite/internal/processors/cache/CacheInvokeEntry.java
 
b/modules/core/src/main/java/org/apache/ignite/internal/processors/cache/CacheInvokeEntry.java
index f1781bb..829c6a0 100644
--- 
a/modules/core/src/main/java/org/apache/ignite/internal/processors/cache/CacheInvokeEntry.java
+++ 
b/modules/core/src/main/java/org/apache/ignite/internal/processors/cache/CacheInvokeEntry.java
@@ -89,11 +89,11 @@ public class CacheInvokeEntry<K, V> implements 
MutableEntry<K, V> {
 
     /** {@inheritDoc} */
     @SuppressWarnings("unchecked")
-    @Override public <T> T unwrap(Class<T> clazz) {
-        if (clazz.equals(Ignite.class))
-            return (T)cctx.kernalContext().grid();
+    @Override public <T> T unwrap(Class<T> cls) {
+        if(cls.isAssignableFrom(getClass()))
+            return cls.cast(this);
 
-        throw new IllegalArgumentException();
+        throw new IllegalArgumentException("Unwrapping to class is not 
supported: " + cls);
     }
 
     /**

Reply via email to