Repository: ignite
Updated Branches:
  refs/heads/master 9a1a830a8 -> 272858dbc


http://git-wip-us.apache.org/repos/asf/ignite/blob/272858db/modules/hibernate-core/src/main/java/org/apache/ignite/cache/hibernate/HibernateCacheProxy.java
----------------------------------------------------------------------
diff --git 
a/modules/hibernate-core/src/main/java/org/apache/ignite/cache/hibernate/HibernateCacheProxy.java
 
b/modules/hibernate-core/src/main/java/org/apache/ignite/cache/hibernate/HibernateCacheProxy.java
index 1752313..f53a14c 100644
--- 
a/modules/hibernate-core/src/main/java/org/apache/ignite/cache/hibernate/HibernateCacheProxy.java
+++ 
b/modules/hibernate-core/src/main/java/org/apache/ignite/cache/hibernate/HibernateCacheProxy.java
@@ -24,6 +24,7 @@ import java.util.LinkedList;
 import java.util.Map;
 import java.util.Set;
 import java.util.UUID;
+import java.util.function.Supplier;
 import javax.cache.Cache;
 import javax.cache.expiry.ExpiryPolicy;
 import javax.cache.processor.EntryProcessor;
@@ -51,23 +52,30 @@ import org.jetbrains.annotations.Nullable;
  * Hibernate cache proxy used to substitute hibernate keys with ignite keys.
  */
 public class HibernateCacheProxy implements IgniteInternalCache<Object, 
Object> {
-    /** Delegate. */
-    private final IgniteInternalCache<Object, Object> delegate;
+    /** Delegate is lazily loaded which allows for creation of caches after 
the SPI is bootstrapped */
+    private final Supplier<IgniteInternalCache<Object, Object>> delegate;
 
     /** Transformer. */
     private final HibernateKeyTransformer keyTransformer;
 
+    /** */
+    private String cacheName;
+
     /**
+     * @param cacheName Cache name. Should match delegate.get().name(). Needed 
for lazy loading.
      * @param delegate Delegate.
      * @param keyTransformer Key keyTransformer.
      */
     HibernateCacheProxy(
-        IgniteInternalCache<Object, Object> delegate,
+        String cacheName,
+        Supplier<IgniteInternalCache<Object, Object>> delegate,
         HibernateKeyTransformer keyTransformer
     ) {
+        assert cacheName != null;
         assert delegate != null;
         assert keyTransformer != null;
 
+        this.cacheName = cacheName;
         this.delegate = delegate;
         this.keyTransformer = keyTransformer;
     }
@@ -81,42 +89,42 @@ public class HibernateCacheProxy implements 
IgniteInternalCache<Object, Object>
 
     /** {@inheritDoc} */
     @Override public String name() {
-        return delegate.name();
+        return cacheName;
     }
 
     /** {@inheritDoc} */
     @Override public boolean skipStore() {
-        return delegate.skipStore();
+        return delegate.get().skipStore();
     }
 
     /** {@inheritDoc} */
     @Override public IgniteInternalCache setSkipStore(boolean skipStore) {
-        return delegate.setSkipStore(skipStore);
+        return delegate.get().setSkipStore(skipStore);
     }
 
     /** {@inheritDoc} */
     @Override public boolean isEmpty() {
-        return delegate.isEmpty();
+        return delegate.get().isEmpty();
     }
 
     /** {@inheritDoc} */
     @Override public boolean containsKey(Object key) {
-        return delegate.containsKey(keyTransformer.transform(key));
+        return delegate.get().containsKey(keyTransformer.transform(key));
     }
 
     /** {@inheritDoc} */
     @Override public IgniteInternalFuture<Boolean> containsKeyAsync(Object 
key) {
-        return delegate.containsKeyAsync(keyTransformer.transform(key));
+        return delegate.get().containsKeyAsync(keyTransformer.transform(key));
     }
 
     /** {@inheritDoc} */
     @Override public boolean containsKeys(Collection keys) {
-        return delegate.containsKey(transform(keys));
+        return delegate.get().containsKey(transform(keys));
     }
 
     /** {@inheritDoc} */
     @Override public IgniteInternalFuture<Boolean> 
containsKeysAsync(Collection keys) {
-        return delegate.containsKeysAsync(transform(keys));
+        return delegate.get().containsKeysAsync(transform(keys));
     }
 
     /** {@inheritDoc} */
@@ -124,147 +132,147 @@ public class HibernateCacheProxy implements 
IgniteInternalCache<Object, Object>
         Object key,
         CachePeekMode[] peekModes
     ) throws IgniteCheckedException {
-        return delegate.localPeek(keyTransformer.transform(key), peekModes);
+        return delegate.get().localPeek(keyTransformer.transform(key), 
peekModes);
     }
 
     /** {@inheritDoc} */
     @Override public Iterable<Cache.Entry<Object, Object>> localEntries(
         CachePeekMode[] peekModes
     ) throws IgniteCheckedException {
-        return delegate.localEntries(peekModes);
+        return delegate.get().localEntries(peekModes);
     }
 
     /** {@inheritDoc} */
     @Nullable @Override public Object get(Object key) throws 
IgniteCheckedException {
-        return delegate.get(keyTransformer.transform(key));
+        return delegate.get().get(keyTransformer.transform(key));
     }
 
     /** {@inheritDoc} */
     @Nullable @Override public CacheEntry getEntry(Object key) throws 
IgniteCheckedException {
-        return delegate.getEntry(keyTransformer.transform(key));
+        return delegate.get().getEntry(keyTransformer.transform(key));
     }
 
     /** {@inheritDoc} */
     @Override public IgniteInternalFuture getAsync(Object key) {
-        return delegate.getAsync(keyTransformer.transform(key));
+        return delegate.get().getAsync(keyTransformer.transform(key));
     }
 
     /** {@inheritDoc} */
     @Override public IgniteInternalFuture<CacheEntry<Object, Object>> 
getEntryAsync(Object key) {
-        return delegate.getEntryAsync(keyTransformer.transform(key));
+        return delegate.get().getEntryAsync(keyTransformer.transform(key));
     }
 
     /** {@inheritDoc} */
     @Override public Map getAll(@Nullable Collection keys) throws 
IgniteCheckedException {
-        return delegate.getAll(transform(keys));
+        return delegate.get().getAll(transform(keys));
     }
 
     /** {@inheritDoc} */
     @Override public Collection<CacheEntry<Object, Object>> getEntries(
         @Nullable Collection keys) throws IgniteCheckedException {
-        return delegate.getEntries(transform(keys));
+        return delegate.get().getEntries(transform(keys));
     }
 
     /** {@inheritDoc} */
     @Override public IgniteInternalFuture<Map<Object, Object>> 
getAllAsync(@Nullable Collection keys) {
-        return delegate.getAllAsync(transform(keys));
+        return delegate.get().getAllAsync(transform(keys));
     }
 
     /** {@inheritDoc} */
     @Override public 
IgniteInternalFuture<Collection<CacheEntry<Object,Object>>> getEntriesAsync(
         @Nullable Collection keys
     ) {
-        return delegate.getEntriesAsync(transform(keys));
+        return delegate.get().getEntriesAsync(transform(keys));
     }
 
     /** {@inheritDoc} */
     @Nullable @Override public Object getAndPut(Object key, Object val) throws 
IgniteCheckedException {
-        return delegate.getAndPut(keyTransformer.transform(key), val);
+        return delegate.get().getAndPut(keyTransformer.transform(key), val);
     }
 
     /** {@inheritDoc} */
     @Override public IgniteInternalFuture getAndPutAsync(Object key, Object 
val) {
-        return delegate.getAndPutAsync(keyTransformer.transform(key), val);
+        return delegate.get().getAndPutAsync(keyTransformer.transform(key), 
val);
     }
 
     /** {@inheritDoc} */
     @Override public boolean put(Object key, Object val) throws 
IgniteCheckedException {
-        return delegate.put(keyTransformer.transform(key), val);
+        return delegate.get().put(keyTransformer.transform(key), val);
     }
 
     /** {@inheritDoc} */
     @Override public IgniteInternalFuture<Boolean> putAsync(Object key, Object 
val) {
-        return delegate.putAsync(keyTransformer.transform(key), val);
+        return delegate.get().putAsync(keyTransformer.transform(key), val);
     }
 
     /** {@inheritDoc} */
     @Nullable @Override public Object getAndPutIfAbsent(Object key, Object 
val) throws IgniteCheckedException {
-        return delegate.getAndPutIfAbsent(keyTransformer.transform(key), val);
+        return delegate.get().getAndPutIfAbsent(keyTransformer.transform(key), 
val);
     }
 
     /** {@inheritDoc} */
     @Override public IgniteInternalFuture getAndPutIfAbsentAsync(Object key, 
Object val) {
-        return delegate.getAndPutIfAbsentAsync(keyTransformer.transform(key), 
val);
+        return 
delegate.get().getAndPutIfAbsentAsync(keyTransformer.transform(key), val);
     }
 
     /** {@inheritDoc} */
     @Override public boolean putIfAbsent(Object key, Object val) throws 
IgniteCheckedException {
-        return delegate.putIfAbsent(keyTransformer.transform(key), val);
+        return delegate.get().putIfAbsent(keyTransformer.transform(key), val);
     }
 
     /** {@inheritDoc} */
     @Override public IgniteInternalFuture<Boolean> putIfAbsentAsync(Object 
key, Object val) {
-        return delegate.putIfAbsentAsync(keyTransformer.transform(key), val);
+        return delegate.get().putIfAbsentAsync(keyTransformer.transform(key), 
val);
     }
 
     /** {@inheritDoc} */
     @Nullable @Override public Object getAndReplace(Object key, Object val) 
throws IgniteCheckedException {
-        return delegate.getAndReplace(keyTransformer.transform(key), val);
+        return delegate.get().getAndReplace(keyTransformer.transform(key), 
val);
     }
 
     /** {@inheritDoc} */
     @Override public IgniteInternalFuture getAndReplaceAsync(Object key, 
Object val) {
-        return delegate.getAndReplaceAsync(keyTransformer.transform(key), val);
+        return 
delegate.get().getAndReplaceAsync(keyTransformer.transform(key), val);
     }
 
     /** {@inheritDoc} */
     @Override public boolean replace(Object key, Object val) throws 
IgniteCheckedException {
-        return delegate.replace(keyTransformer.transform(key), val);
+        return delegate.get().replace(keyTransformer.transform(key), val);
     }
 
     /** {@inheritDoc} */
     @Override public IgniteInternalFuture<Boolean> replaceAsync(Object key, 
Object val) {
-        return delegate.replaceAsync(keyTransformer.transform(key), val);
+        return delegate.get().replaceAsync(keyTransformer.transform(key), val);
     }
 
     /** {@inheritDoc} */
     @Override public boolean replace(Object key, Object oldVal, Object newVal) 
throws IgniteCheckedException {
-        return delegate.replace(keyTransformer.transform(key), oldVal, newVal);
+        return delegate.get().replace(keyTransformer.transform(key), oldVal, 
newVal);
     }
 
     /** {@inheritDoc} */
     @Override public IgniteInternalFuture<Boolean> replaceAsync(Object key, 
Object oldVal, Object newVal) {
-        return delegate.replaceAsync(keyTransformer.transform(key), oldVal, 
newVal);
+        return delegate.get().replaceAsync(keyTransformer.transform(key), 
oldVal, newVal);
     }
 
     /** {@inheritDoc} */
     @Override public void putAll(@Nullable Map m) throws 
IgniteCheckedException {
-        delegate.putAll(transform(m));
+        delegate.get().putAll(transform(m));
     }
 
     /** {@inheritDoc} */
     @Override public IgniteInternalFuture<?> putAllAsync(@Nullable Map m) {
-        return delegate.putAllAsync(transform(m));
+        return delegate.get().putAllAsync(transform(m));
     }
 
     /** {@inheritDoc} */
     @Override public Set keySet() {
-        return delegate.keySet();
+        return delegate.get().keySet();
     }
 
     /** {@inheritDoc} */
     @Override public Set<Cache.Entry<Object, Object>> entrySet() {
-        return delegate.entrySet();
+        return delegate.get().entrySet();
     }
 
     /** {@inheritDoc} */
@@ -272,7 +280,7 @@ public class HibernateCacheProxy implements 
IgniteInternalCache<Object, Object>
         TransactionConcurrency concurrency,
         TransactionIsolation isolation
     ) {
-        return delegate.txStart(concurrency, isolation);
+        return delegate.get().txStart(concurrency, isolation);
     }
 
     /** {@inheritDoc} */
@@ -280,7 +288,7 @@ public class HibernateCacheProxy implements 
IgniteInternalCache<Object, Object>
         TransactionConcurrency concurrency,
         TransactionIsolation isolation
     ) {
-        return delegate.txStartEx(concurrency, isolation);
+        return delegate.get().txStartEx(concurrency, isolation);
     }
 
     /** {@inheritDoc} */
@@ -290,337 +298,337 @@ public class HibernateCacheProxy implements 
IgniteInternalCache<Object, Object>
         long timeout,
         int txSize
     ) {
-        return delegate.txStart(concurrency, isolation, timeout, txSize);
+        return delegate.get().txStart(concurrency, isolation, timeout, txSize);
     }
 
     /** {@inheritDoc} */
     @Nullable @Override public GridNearTxLocal tx() {
-        return delegate.tx();
+        return delegate.get().tx();
     }
 
     /** {@inheritDoc} */
     @Override public boolean evict(Object key) {
-        return delegate.evict(keyTransformer.transform(key));
+        return delegate.get().evict(keyTransformer.transform(key));
     }
 
     /** {@inheritDoc} */
     @Override public void evictAll(@Nullable Collection keys) {
-        delegate.evictAll(transform(keys));
+        delegate.get().evictAll(transform(keys));
     }
 
     /** {@inheritDoc} */
     @Override public void clearLocally(boolean srv, boolean near, boolean 
readers) {
-        delegate.clearLocally(srv, near, readers);
+        delegate.get().clearLocally(srv, near, readers);
     }
 
     /** {@inheritDoc} */
     @Override public boolean clearLocally(Object key) {
-        return delegate.clearLocally(keyTransformer.transform(key));
+        return delegate.get().clearLocally(keyTransformer.transform(key));
     }
 
     /** {@inheritDoc} */
     @Override public void clearLocallyAll(Set keys, boolean srv, boolean near, 
boolean readers) {
-        delegate.clearLocallyAll((Set<?>)transform(keys), srv, near, readers);
+        delegate.get().clearLocallyAll((Set<?>)transform(keys), srv, near, 
readers);
     }
 
     /** {@inheritDoc} */
     @Override public void clear(Object key) throws IgniteCheckedException {
-        delegate.clear(keyTransformer.transform(key));
+        delegate.get().clear(keyTransformer.transform(key));
     }
 
     /** {@inheritDoc} */
     @Override public void clearAll(Set keys) throws IgniteCheckedException {
-        delegate.clearAll((Set<?>)transform(keys));
+        delegate.get().clearAll((Set<?>)transform(keys));
     }
 
     /** {@inheritDoc} */
     @Override public void clear() throws IgniteCheckedException {
-        delegate.clear();
+        delegate.get().clear();
     }
 
     /** {@inheritDoc} */
     @Override public IgniteInternalFuture<?> clearAsync() {
-        return delegate.clearAsync();
+        return delegate.get().clearAsync();
     }
 
     /** {@inheritDoc} */
     @Override public IgniteInternalFuture<?> clearAsync(Object key) {
-        return delegate.clearAsync(keyTransformer.transform(key));
+        return delegate.get().clearAsync(keyTransformer.transform(key));
     }
 
     /** {@inheritDoc} */
     @Override public IgniteInternalFuture<?> clearAllAsync(Set keys) {
-        return delegate.clearAllAsync((Set<?>)transform(keys));
+        return delegate.get().clearAllAsync((Set<?>)transform(keys));
     }
 
     /** {@inheritDoc} */
     @Nullable @Override public Object getAndRemove(Object key) throws 
IgniteCheckedException {
-        return delegate.getAndRemove(keyTransformer.transform(key));
+        return delegate.get().getAndRemove(keyTransformer.transform(key));
     }
 
     /** {@inheritDoc} */
     @Override public IgniteInternalFuture getAndRemoveAsync(Object key) {
-        return delegate.getAndRemoveAsync(keyTransformer.transform(key));
+        return delegate.get().getAndRemoveAsync(keyTransformer.transform(key));
     }
 
     /** {@inheritDoc} */
     @Override public boolean remove(Object key) throws IgniteCheckedException {
-        return delegate.remove(keyTransformer.transform(key));
+        return delegate.get().remove(keyTransformer.transform(key));
     }
 
     /** {@inheritDoc} */
     @Override public IgniteInternalFuture<Boolean> removeAsync(Object key) {
-        return delegate.removeAsync(keyTransformer.transform(key));
+        return delegate.get().removeAsync(keyTransformer.transform(key));
     }
 
     /** {@inheritDoc} */
     @Override public boolean remove(Object key, Object val) throws 
IgniteCheckedException {
-        return delegate.remove(keyTransformer.transform(key), val);
+        return delegate.get().remove(keyTransformer.transform(key), val);
     }
 
     /** {@inheritDoc} */
     @Override public IgniteInternalFuture<Boolean> removeAsync(Object key, 
Object val) {
-        return delegate.removeAsync(keyTransformer.transform(key), val);
+        return delegate.get().removeAsync(keyTransformer.transform(key), val);
     }
 
     /** {@inheritDoc} */
     @Override public void removeAll(@Nullable Collection keys) throws 
IgniteCheckedException {
-        delegate.removeAll(transform(keys));
+        delegate.get().removeAll(transform(keys));
     }
 
     /** {@inheritDoc} */
     @Override public IgniteInternalFuture<?> removeAllAsync(@Nullable 
Collection keys) {
-        return delegate.removeAllAsync(transform(keys));
+        return delegate.get().removeAllAsync(transform(keys));
     }
 
     /** {@inheritDoc} */
     @Override public void removeAll() throws IgniteCheckedException {
-        delegate.removeAll();
+        delegate.get().removeAll();
     }
 
     /** {@inheritDoc} */
     @Override public IgniteInternalFuture<?> removeAllAsync() {
-        return delegate.removeAllAsync();
+        return delegate.get().removeAllAsync();
     }
 
     /** {@inheritDoc} */
     @Override public boolean lock(Object key, long timeout) throws 
IgniteCheckedException {
-        return delegate.lock(keyTransformer.transform(key), timeout);
+        return delegate.get().lock(keyTransformer.transform(key), timeout);
     }
 
     /** {@inheritDoc} */
     @Override public IgniteInternalFuture<Boolean> lockAsync(Object key, long 
timeout) {
-        return delegate.lockAsync(keyTransformer.transform(key), timeout);
+        return delegate.get().lockAsync(keyTransformer.transform(key), 
timeout);
     }
 
     /** {@inheritDoc} */
     @Override public boolean lockAll(@Nullable Collection keys, long timeout) 
throws IgniteCheckedException {
-        return delegate.lockAll(transform(keys), timeout);
+        return delegate.get().lockAll(transform(keys), timeout);
     }
 
     /** {@inheritDoc} */
     @Override public IgniteInternalFuture<Boolean> lockAllAsync(@Nullable 
Collection keys, long timeout) {
-        return delegate.lockAllAsync(transform(keys), timeout);
+        return delegate.get().lockAllAsync(transform(keys), timeout);
     }
 
     /** {@inheritDoc} */
     @Override public void unlock(Object key) throws IgniteCheckedException {
-        delegate.unlock(keyTransformer.transform(key));
+        delegate.get().unlock(keyTransformer.transform(key));
     }
 
     /** {@inheritDoc} */
     @Override public void unlockAll(@Nullable Collection keys) throws 
IgniteCheckedException {
-        delegate.unlockAll(transform(keys));
+        delegate.get().unlockAll(transform(keys));
     }
 
     /** {@inheritDoc} */
     @Override public boolean isLocked(Object key) {
-        return delegate.isLocked(keyTransformer.transform(key));
+        return delegate.get().isLocked(keyTransformer.transform(key));
     }
 
     /** {@inheritDoc} */
     @Override public boolean isLockedByThread(Object key) {
-        return delegate.isLockedByThread(keyTransformer.transform(key));
+        return delegate.get().isLockedByThread(keyTransformer.transform(key));
     }
 
     /** {@inheritDoc} */
     @Override public int size() {
-        return delegate.size();
+        return delegate.get().size();
     }
 
     /** {@inheritDoc} */
     @Override public long sizeLong() {
-        return delegate.sizeLong();
+        return delegate.get().sizeLong();
     }
 
     /** {@inheritDoc} */
     @Override public int localSize(CachePeekMode[] peekModes) throws 
IgniteCheckedException {
-        return delegate.localSize(peekModes);
+        return delegate.get().localSize(peekModes);
     }
 
     /** {@inheritDoc} */
     @Override public long localSizeLong(CachePeekMode[] peekModes) throws 
IgniteCheckedException {
-        return delegate.localSizeLong(peekModes);
+        return delegate.get().localSizeLong(peekModes);
     }
 
     /** {@inheritDoc} */
     @Override public long localSizeLong(int partition, CachePeekMode[] 
peekModes) throws IgniteCheckedException {
-        return delegate.localSizeLong(partition, peekModes);
+        return delegate.get().localSizeLong(partition, peekModes);
     }
 
     /** {@inheritDoc} */
     @Override public int size(CachePeekMode[] peekModes) throws 
IgniteCheckedException {
-        return delegate.size(peekModes);
+        return delegate.get().size(peekModes);
     }
 
     /** {@inheritDoc} */
     @Override public long sizeLong(CachePeekMode[] peekModes) throws 
IgniteCheckedException {
-        return delegate.sizeLong(peekModes);
+        return delegate.get().sizeLong(peekModes);
     }
 
     /** {@inheritDoc} */
     @Override public long sizeLong(int partition, CachePeekMode[] peekModes) 
throws IgniteCheckedException {
-        return delegate.sizeLong(partition, peekModes);
+        return delegate.get().sizeLong(partition, peekModes);
     }
 
     /** {@inheritDoc} */
     @Override public IgniteInternalFuture<Integer> sizeAsync(CachePeekMode[] 
peekModes) {
-        return delegate.sizeAsync(peekModes);
+        return delegate.get().sizeAsync(peekModes);
     }
 
     /** {@inheritDoc} */
     @Override public IgniteInternalFuture<Long> sizeLongAsync(CachePeekMode[] 
peekModes) {
-        return delegate.sizeLongAsync(peekModes);
+        return delegate.get().sizeLongAsync(peekModes);
     }
 
     /** {@inheritDoc} */
     @Override public IgniteInternalFuture<Long> sizeLongAsync(int partition, 
CachePeekMode[] peekModes) {
-        return delegate.sizeLongAsync(partition, peekModes);
+        return delegate.get().sizeLongAsync(partition, peekModes);
     }
 
     /** {@inheritDoc} */
     @Override public int nearSize() {
-        return delegate.nearSize();
+        return delegate.get().nearSize();
     }
 
     /** {@inheritDoc} */
     @Override public int primarySize() {
-        return delegate.primarySize();
+        return delegate.get().primarySize();
     }
 
     /** {@inheritDoc} */
     @Override public long primarySizeLong() {
-        return delegate.primarySizeLong();
+        return delegate.get().primarySizeLong();
     }
 
     /** {@inheritDoc} */
     @Override public CacheConfiguration configuration() {
-        return delegate.configuration();
+        return delegate.get().configuration();
     }
 
     /** {@inheritDoc} */
     @Override public Affinity affinity() {
-        return delegate.affinity();
+        return delegate.get().affinity();
     }
 
     /** {@inheritDoc} */
     @Override public CacheMetrics clusterMetrics() {
-        return delegate.clusterMetrics();
+        return delegate.get().clusterMetrics();
     }
 
     /** {@inheritDoc} */
     @Override public CacheMetrics clusterMetrics(ClusterGroup grp) {
-        return delegate.clusterMetrics(grp);
+        return delegate.get().clusterMetrics(grp);
     }
 
     /** {@inheritDoc} */
     @Override public CacheMetrics localMetrics() {
-        return delegate.localMetrics();
+        return delegate.get().localMetrics();
     }
 
     /** {@inheritDoc} */
     @Override public CacheMetricsMXBean clusterMxBean() {
-        return delegate.clusterMxBean();
+        return delegate.get().clusterMxBean();
     }
 
     /** {@inheritDoc} */
     @Override public CacheMetricsMXBean localMxBean() {
-        return delegate.localMxBean();
+        return delegate.get().localMxBean();
     }
 
     /** {@inheritDoc} */
     @Override public long offHeapEntriesCount() {
-        return delegate.offHeapEntriesCount();
+        return delegate.get().offHeapEntriesCount();
     }
 
     /** {@inheritDoc} */
     @Override public long offHeapAllocatedSize() {
-        return delegate.offHeapAllocatedSize();
+        return delegate.get().offHeapAllocatedSize();
     }
 
     /** {@inheritDoc} */
     @Override public IgniteInternalFuture<?> rebalance() {
-        return delegate.rebalance();
+        return delegate.get().rebalance();
     }
 
     /** {@inheritDoc} */
     @Override public IgniteInternalCache forSubjectId(UUID subjId) {
-        return delegate.forSubjectId(subjId);
+        return delegate.get().forSubjectId(subjId);
     }
 
     /** {@inheritDoc} */
     @Nullable @Override public Object getForcePrimary(Object key) throws 
IgniteCheckedException {
-        return delegate.getForcePrimary(keyTransformer.transform(key));
+        return delegate.get().getForcePrimary(keyTransformer.transform(key));
     }
 
     /** {@inheritDoc} */
     @Override public IgniteInternalFuture getForcePrimaryAsync(Object key) {
-        return delegate.getForcePrimaryAsync(keyTransformer.transform(key));
+        return 
delegate.get().getForcePrimaryAsync(keyTransformer.transform(key));
     }
 
     /** {@inheritDoc} */
     @Override public Map getAllOutTx(Set keys) throws IgniteCheckedException {
-        return delegate.getAllOutTx((Set<?>)transform(keys));
+        return delegate.get().getAllOutTx((Set<?>)transform(keys));
     }
 
     /** {@inheritDoc} */
     @Override public IgniteInternalFuture<Map<Object, Object>> 
getAllOutTxAsync(Set keys) {
-        return delegate.getAllOutTxAsync((Set<?>)transform(keys));
+        return delegate.get().getAllOutTxAsync((Set<?>)transform(keys));
     }
 
     /** {@inheritDoc} */
     @Override public boolean isIgfsDataCache() {
-        return delegate.isIgfsDataCache();
+        return delegate.get().isIgfsDataCache();
     }
 
     /** {@inheritDoc} */
     @Override public long igfsDataSpaceUsed() {
-        return delegate.igfsDataSpaceUsed();
+        return delegate.get().igfsDataSpaceUsed();
     }
 
     /** {@inheritDoc} */
     @Nullable @Override public ExpiryPolicy expiry() {
-        return delegate.expiry();
+        return delegate.get().expiry();
     }
 
     /** {@inheritDoc} */
     @Override public IgniteInternalCache withExpiryPolicy(ExpiryPolicy plc) {
-        return delegate.withExpiryPolicy(plc);
+        return delegate.get().withExpiryPolicy(plc);
     }
 
     /** {@inheritDoc} */
     @Override public IgniteInternalCache withNoRetries() {
-        return delegate.withNoRetries();
+        return delegate.get().withNoRetries();
     }
 
     /** {@inheritDoc} */
     @Override public <K1, V1> IgniteInternalCache<K1, V1> 
withAllowAtomicOpsInTx() {
-        return delegate.withAllowAtomicOpsInTx();
+        return delegate.get().withAllowAtomicOpsInTx();
     }
 
     /** {@inheritDoc} */
     @Override public GridCacheContext context() {
-        return delegate.context();
+        return delegate.get().context();
     }
 
     /** {@inheritDoc} */
@@ -628,7 +636,7 @@ public class HibernateCacheProxy implements 
IgniteInternalCache<Object, Object>
         @Nullable IgniteBiPredicate p,
         @Nullable Object... args
     ) throws IgniteCheckedException {
-        delegate.localLoadCache(p, args);
+        delegate.get().localLoadCache(p, args);
     }
 
     /** {@inheritDoc} */
@@ -636,27 +644,27 @@ public class HibernateCacheProxy implements 
IgniteInternalCache<Object, Object>
         @Nullable IgniteBiPredicate p,
         @Nullable Object... args
     ) {
-        return delegate.localLoadCacheAsync(p, args);
+        return delegate.get().localLoadCacheAsync(p, args);
     }
 
     /** {@inheritDoc} */
     @Override public Collection<Integer> lostPartitions() {
-        return delegate.lostPartitions();
+        return delegate.get().lostPartitions();
     }
 
     /** {@inheritDoc} */
     @Override public void preloadPartition(int part) throws 
IgniteCheckedException {
-        delegate.preloadPartition(part);
+        delegate.get().preloadPartition(part);
     }
 
     /** {@inheritDoc} */
     @Override public IgniteInternalFuture<?> preloadPartitionAsync(int part) 
throws IgniteCheckedException {
-        return delegate.preloadPartitionAsync(part);
+        return delegate.get().preloadPartitionAsync(part);
     }
 
     /** {@inheritDoc} */
     @Override public boolean localPreloadPartition(int part) throws 
IgniteCheckedException {
-        return delegate.localPreloadPartition(part);
+        return delegate.get().localPreloadPartition(part);
     }
 
     /** {@inheritDoc} */
@@ -666,27 +674,27 @@ public class HibernateCacheProxy implements 
IgniteInternalCache<Object, Object>
         EntryProcessor entryProcessor,
         Object... args
     ) throws IgniteCheckedException {
-        return delegate.invoke(topVer, key, entryProcessor, args);
+        return delegate.get().invoke(topVer, key, entryProcessor, args);
     }
 
     /** {@inheritDoc} */
     @Override public IgniteInternalFuture<Map> invokeAllAsync(Map map, 
Object... args) {
-        return delegate.invokeAllAsync(map, args);
+        return delegate.get().invokeAllAsync(map, args);
     }
 
     /** {@inheritDoc} */
     @Override public Map invokeAll(Map map, Object... args) throws 
IgniteCheckedException {
-        return delegate.invokeAll(map, args);
+        return delegate.get().invokeAll(map, args);
     }
 
     /** {@inheritDoc} */
     @Override public IgniteInternalFuture<Map> invokeAllAsync(Set keys, 
EntryProcessor entryProcessor, Object... args) {
-        return delegate.invokeAllAsync((Set<?>)transform(keys), 
entryProcessor, args);
+        return delegate.get().invokeAllAsync((Set<?>)transform(keys), 
entryProcessor, args);
     }
 
     /** {@inheritDoc} */
     @Override public Map invokeAll(Set keys, EntryProcessor entryProcessor, 
Object... args) throws IgniteCheckedException {
-        return delegate.invokeAll((Set<?>)transform(keys), entryProcessor, 
args);
+        return delegate.get().invokeAll((Set<?>)transform(keys), 
entryProcessor, args);
     }
 
     /** {@inheritDoc} */
@@ -695,7 +703,7 @@ public class HibernateCacheProxy implements 
IgniteInternalCache<Object, Object>
         EntryProcessor entryProcessor,
         Object... args
     ) {
-        return delegate.invokeAsync(keyTransformer.transform(key), 
entryProcessor, args);
+        return delegate.get().invokeAsync(keyTransformer.transform(key), 
entryProcessor, args);
     }
 
     /** {@inheritDoc} */
@@ -704,7 +712,7 @@ public class HibernateCacheProxy implements 
IgniteInternalCache<Object, Object>
         EntryProcessor entryProcessor,
         Object... args
     ) throws IgniteCheckedException {
-        return delegate.invoke(keyTransformer.transform(key), entryProcessor, 
args);
+        return delegate.get().invoke(keyTransformer.transform(key), 
entryProcessor, args);
     }
 
     /** {@inheritDoc} */
@@ -712,42 +720,42 @@ public class HibernateCacheProxy implements 
IgniteInternalCache<Object, Object>
         boolean keepBinary,
         @Nullable IgniteBiPredicate p
     ) throws IgniteCheckedException {
-        return delegate.scanIterator(keepBinary, p);
+        return delegate.get().scanIterator(keepBinary, p);
     }
 
     /** {@inheritDoc} */
     @Override public IgniteInternalFuture<?> removeAllConflictAsync(Map drMap) 
throws IgniteCheckedException {
-        return delegate.removeAllConflictAsync(drMap);
+        return delegate.get().removeAllConflictAsync(drMap);
     }
 
     /** {@inheritDoc} */
     @Override public void removeAllConflict(Map drMap) throws 
IgniteCheckedException {
-        delegate.removeAllConflictAsync(drMap);
+        delegate.get().removeAllConflictAsync(drMap);
     }
 
     /** {@inheritDoc} */
     @Override public IgniteInternalFuture<?> putAllConflictAsync(Map drMap) 
throws IgniteCheckedException {
-        return delegate.putAllConflictAsync(drMap);
+        return delegate.get().putAllConflictAsync(drMap);
     }
 
     /** {@inheritDoc} */
     @Override public void putAllConflict(Map drMap) throws 
IgniteCheckedException {
-        delegate.putAllConflict(drMap);
+        delegate.get().putAllConflict(drMap);
     }
 
     /** {@inheritDoc} */
     @Override public IgniteInternalCache keepBinary() {
-        return delegate.keepBinary();
+        return delegate.get().keepBinary();
     }
 
     /** {@inheritDoc} */
     @Override public IgniteInternalCache cache() {
-        return delegate.cache();
+        return delegate.get().cache();
     }
 
     /** {@inheritDoc} */
     @Override public Iterator iterator() {
-        return delegate.iterator();
+        return delegate.get().iterator();
     }
 
     /**

http://git-wip-us.apache.org/repos/asf/ignite/blob/272858db/modules/hibernate-core/src/main/java/org/apache/ignite/cache/hibernate/HibernateNonStrictAccessStrategy.java
----------------------------------------------------------------------
diff --git 
a/modules/hibernate-core/src/main/java/org/apache/ignite/cache/hibernate/HibernateNonStrictAccessStrategy.java
 
b/modules/hibernate-core/src/main/java/org/apache/ignite/cache/hibernate/HibernateNonStrictAccessStrategy.java
index 06c6f3d..b7d27fe 100644
--- 
a/modules/hibernate-core/src/main/java/org/apache/ignite/cache/hibernate/HibernateNonStrictAccessStrategy.java
+++ 
b/modules/hibernate-core/src/main/java/org/apache/ignite/cache/hibernate/HibernateNonStrictAccessStrategy.java
@@ -109,6 +109,9 @@ public class HibernateNonStrictAccessStrategy extends 
HibernateAccessStrategyAda
     @Override public boolean afterUpdate(Object key, Object val) {
         WriteContext ctx = writeCtx.get();
 
+        if (log.isDebugEnabled())
+            log.debug("Put after update [cache=" + cache.name() + ", key=" + 
key + ", val=" + val + ']');
+
         if (ctx != null) {
             ctx.updated(key, val);
 
@@ -127,6 +130,9 @@ public class HibernateNonStrictAccessStrategy extends 
HibernateAccessStrategyAda
 
     /** {@inheritDoc} */
     @Override public boolean afterInsert(Object key, Object val) {
+        if (log.isDebugEnabled())
+            log.debug("Put after insert [cache=" + cache.name() + ", key=" + 
key + ", val=" + val + ']');
+
         try {
             cache.put(key, val);
 
@@ -227,4 +233,4 @@ public class HibernateNonStrictAccessStrategy extends 
HibernateAccessStrategyAda
             return S.toString(WriteContext.class, this);
         }
     }
-}
\ No newline at end of file
+}

http://git-wip-us.apache.org/repos/asf/ignite/blob/272858db/modules/hibernate-core/src/main/java/org/apache/ignite/cache/hibernate/HibernateReadOnlyAccessStrategy.java
----------------------------------------------------------------------
diff --git 
a/modules/hibernate-core/src/main/java/org/apache/ignite/cache/hibernate/HibernateReadOnlyAccessStrategy.java
 
b/modules/hibernate-core/src/main/java/org/apache/ignite/cache/hibernate/HibernateReadOnlyAccessStrategy.java
index a0957fd..07570ba 100644
--- 
a/modules/hibernate-core/src/main/java/org/apache/ignite/cache/hibernate/HibernateReadOnlyAccessStrategy.java
+++ 
b/modules/hibernate-core/src/main/java/org/apache/ignite/cache/hibernate/HibernateReadOnlyAccessStrategy.java
@@ -55,7 +55,8 @@ public class HibernateReadOnlyAccessStrategy extends 
HibernateAccessStrategyAdap
      * @param cache Cache.
      * @param eConverter Exception converter.
      */
-    public HibernateReadOnlyAccessStrategy(Ignite ignite,
+    public HibernateReadOnlyAccessStrategy(
+        Ignite ignite,
         HibernateCacheProxy cache,
         HibernateExceptionConverter eConverter) {
         super(ignite, cache, eConverter);
@@ -68,6 +69,9 @@ public class HibernateReadOnlyAccessStrategy extends 
HibernateAccessStrategyAdap
 
     /** {@inheritDoc} */
     @Override public boolean afterInsert(Object key, Object val) {
+        if (log.isDebugEnabled())
+            log.debug("Put [cache=" + cache.name() + ", key=" + key + ']');
+
         try {
             cache.put(key, val);
 
@@ -102,4 +106,4 @@ public class HibernateReadOnlyAccessStrategy extends 
HibernateAccessStrategyAdap
     @Override public boolean afterUpdate(Object key, Object val) {
         throw new UnsupportedOperationException("Updates are not supported for 
read-only access strategy.");
     }
-}
\ No newline at end of file
+}

http://git-wip-us.apache.org/repos/asf/ignite/blob/272858db/modules/hibernate-core/src/main/java/org/apache/ignite/cache/hibernate/HibernateReadWriteAccessStrategy.java
----------------------------------------------------------------------
diff --git 
a/modules/hibernate-core/src/main/java/org/apache/ignite/cache/hibernate/HibernateReadWriteAccessStrategy.java
 
b/modules/hibernate-core/src/main/java/org/apache/ignite/cache/hibernate/HibernateReadWriteAccessStrategy.java
index 491553d..c3fba41 100644
--- 
a/modules/hibernate-core/src/main/java/org/apache/ignite/cache/hibernate/HibernateReadWriteAccessStrategy.java
+++ 
b/modules/hibernate-core/src/main/java/org/apache/ignite/cache/hibernate/HibernateReadWriteAccessStrategy.java
@@ -65,7 +65,8 @@ public class HibernateReadWriteAccessStrategy extends 
HibernateAccessStrategyAda
      * @param txCtx Thread local instance used to track updates done during 
one Hibernate transaction.
      * @param eConverter Exception converter.
      */
-    protected HibernateReadWriteAccessStrategy(Ignite ignite,
+    protected HibernateReadWriteAccessStrategy(
+        Ignite ignite,
         HibernateCacheProxy cache,
         ThreadLocal txCtx,
         HibernateExceptionConverter eConverter) {
@@ -78,12 +79,14 @@ public class HibernateReadWriteAccessStrategy extends 
HibernateAccessStrategyAda
     @Override public Object get(Object key) {
         boolean success = false;
 
+        Object val = null;
+
         try {
-            Object o = cache.get(key);
+            val = cache.get(key);
 
             success = true;
 
-            return o;
+            return val;
         }
         catch (IgniteCheckedException e) {
             throw convertException(e);
@@ -91,6 +94,11 @@ public class HibernateReadWriteAccessStrategy extends 
HibernateAccessStrategyAda
         finally {
             if (!success)
                 rollbackCurrentTx();
+
+            if (log.isDebugEnabled()) {
+                log.debug("Get [cache=" + cache.name() + ", key=" + key + ", 
val=" + val +
+                    ", success=" + success + ']');
+            }
         }
     }
 
@@ -109,6 +117,11 @@ public class HibernateReadWriteAccessStrategy extends 
HibernateAccessStrategyAda
         finally {
             if (!success)
                 rollbackCurrentTx();
+
+            if (log.isDebugEnabled()) {
+                log.debug("Put from load [cache=" + cache.name() + ", key=" + 
key + ", val=" + val +
+                    ", success=" + success + ']');
+            }
         }
     }
 
@@ -134,6 +147,9 @@ public class HibernateReadWriteAccessStrategy extends 
HibernateAccessStrategyAda
         finally {
             if (!success)
                 rollbackCurrentTx();
+
+            if (log.isDebugEnabled())
+                log.debug("Lock [cache=" + cache.name() + ", key=" + key + ", 
success=" + success + ']');
         }
     }
 
@@ -155,6 +171,9 @@ public class HibernateReadWriteAccessStrategy extends 
HibernateAccessStrategyAda
         finally {
             if (!success)
                 rollbackCurrentTx();
+
+            if (log.isDebugEnabled())
+                log.debug("Unlock [cache=" + cache.name() + ", key=" + key + 
", success=" + success + ']');
         }
     }
 
@@ -189,6 +208,11 @@ public class HibernateReadWriteAccessStrategy extends 
HibernateAccessStrategyAda
         finally {
             if (!success)
                 rollbackCurrentTx();
+
+            if (log.isDebugEnabled()) {
+                log.debug("Put after update [cache=" + cache.name() + ", key=" 
+ key + ", val=" + val +
+                    ", success=" + success + ']');
+            }
         }
     }
 
@@ -214,6 +238,11 @@ public class HibernateReadWriteAccessStrategy extends 
HibernateAccessStrategyAda
         finally {
             if (!success)
                 rollbackCurrentTx();
+
+            if (log.isDebugEnabled()) {
+                log.debug("Put after insert [cache=" + cache.name() + ", key=" 
+ key + ", val=" + val +
+                    ", success=" + success + ']');
+            }
         }
     }
 
@@ -235,6 +264,9 @@ public class HibernateReadWriteAccessStrategy extends 
HibernateAccessStrategyAda
         finally {
             if (!success)
                 rollbackCurrentTx();
+
+            if (log.isDebugEnabled())
+                log.debug("Remove [cache=" + cache.name() + ", key=" + key + 
", success=" + success + ']');
         }
     }
 
@@ -323,4 +355,4 @@ public class HibernateReadWriteAccessStrategy extends 
HibernateAccessStrategyAda
             return locked.isEmpty();
         }
     }
-}
\ No newline at end of file
+}

http://git-wip-us.apache.org/repos/asf/ignite/blob/272858db/modules/hibernate-core/src/main/java/org/apache/ignite/cache/hibernate/HibernateTransactionalAccessStrategy.java
----------------------------------------------------------------------
diff --git 
a/modules/hibernate-core/src/main/java/org/apache/ignite/cache/hibernate/HibernateTransactionalAccessStrategy.java
 
b/modules/hibernate-core/src/main/java/org/apache/ignite/cache/hibernate/HibernateTransactionalAccessStrategy.java
index 6f4935b..259c6a8 100644
--- 
a/modules/hibernate-core/src/main/java/org/apache/ignite/cache/hibernate/HibernateTransactionalAccessStrategy.java
+++ 
b/modules/hibernate-core/src/main/java/org/apache/ignite/cache/hibernate/HibernateTransactionalAccessStrategy.java
@@ -68,7 +68,12 @@ public class HibernateTransactionalAccessStrategy extends 
HibernateAccessStrateg
     /** {@inheritDoc} */
     @Nullable @Override public Object get(Object key) {
         try {
-            return cache.get(key);
+            Object val = cache.get(key);
+
+            if (log.isDebugEnabled())
+                log.debug("Get [cache=" + cache.name() + ", key=" + key + ", 
val=" + val + ']');
+
+            return val;
         }
         catch (IgniteCheckedException e) {
             throw convertException(e);
@@ -79,6 +84,9 @@ public class HibernateTransactionalAccessStrategy extends 
HibernateAccessStrateg
     @Override public void putFromLoad(Object key, Object val) {
         try {
             cache.put(key, val);
+
+            if (log.isDebugEnabled())
+                log.debug("Put [cache=" + cache.name() + ", key=" + key + ", 
val=" + val + ']');
         }
         catch (IgniteCheckedException e) {
             throw convertException(e);
@@ -98,9 +106,12 @@ public class HibernateTransactionalAccessStrategy extends 
HibernateAccessStrateg
     /** {@inheritDoc} */
     @Override public boolean update(Object key, Object val) {
         try {
-            cache.put(key, val);
+            boolean res = cache.put(key, val);
 
-            return true;
+            if (log.isDebugEnabled())
+                log.debug("Update [cache=" + cache.name() + ", key=" + key + 
", val=" + val + ", res=" + res + ']');
+
+            return res;
         }
         catch (IgniteCheckedException e) {
             throw convertException(e);
@@ -115,9 +126,12 @@ public class HibernateTransactionalAccessStrategy extends 
HibernateAccessStrateg
     /** {@inheritDoc} */
     @Override public boolean insert(Object key, Object val) {
         try {
-            cache.put(key, val);
+            boolean res = cache.put(key, val);
+
+            if (log.isDebugEnabled())
+                log.debug("Insert [cache=" + cache.name() + ", key=" + key + 
", val=" + val + ", res=" + res + ']');
 
-            return true;
+            return res;
         }
         catch (IgniteCheckedException e) {
             throw convertException(e);
@@ -138,4 +152,4 @@ public class HibernateTransactionalAccessStrategy extends 
HibernateAccessStrateg
             throw convertException(e);
         }
     }
-}
\ No newline at end of file
+}

http://git-wip-us.apache.org/repos/asf/ignite/blob/272858db/pom.xml
----------------------------------------------------------------------
diff --git a/pom.xml b/pom.xml
index 2bcdf16..fc71761 100644
--- a/pom.xml
+++ b/pom.xml
@@ -108,6 +108,7 @@
                 <module>modules/geospatial</module>
                 <module>modules/hibernate-4.2</module>
                 <module>modules/hibernate-5.1</module>
+                <module>modules/hibernate-5.3</module>
                 <module>modules/schedule</module>
                 <module>modules/web-console/web-agent</module>
                 <module>modules/yardstick</module>
@@ -245,6 +246,7 @@
             <modules>
                 <module>modules/hibernate-4.2</module>
                 <module>modules/hibernate-5.1</module>
+                <module>modules/hibernate-5.3</module>
                 <module>modules/geospatial</module>
                 <module>modules/schedule</module>
             </modules>

Reply via email to