You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@ignite.apache.org by iv...@apache.org on 2015/07/21 13:25:11 UTC

[17/29] incubator-ignite git commit: #ignite-961: wip.

#ignite-961: wip.


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

Branch: refs/heads/ignite-961
Commit: 268f30acb0493bc0ec5ce9b76bdaeb85aa68bf68
Parents: 09d598e
Author: ivasilinets <iv...@gridgain.com>
Authored: Mon Jul 20 16:16:38 2015 +0300
Committer: ivasilinets <iv...@gridgain.com>
Committed: Mon Jul 20 16:16:38 2015 +0300

----------------------------------------------------------------------
 .../apache/ignite/internal/IgniteKernal.java    | 46 +++++++++++++----
 .../handlers/cache/GridCacheCommandHandler.java | 53 +++++++++-----------
 2 files changed, 60 insertions(+), 39 deletions(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/incubator-ignite/blob/268f30ac/modules/core/src/main/java/org/apache/ignite/internal/IgniteKernal.java
----------------------------------------------------------------------
diff --git a/modules/core/src/main/java/org/apache/ignite/internal/IgniteKernal.java b/modules/core/src/main/java/org/apache/ignite/internal/IgniteKernal.java
index c411f2e..7fd75ce 100644
--- a/modules/core/src/main/java/org/apache/ignite/internal/IgniteKernal.java
+++ b/modules/core/src/main/java/org/apache/ignite/internal/IgniteKernal.java
@@ -439,7 +439,8 @@ public class IgniteKernal implements IgniteEx, IgniteMXBean, Externalizable {
         assert cfg != null;
 
         return F.transform(cfg.getUserAttributes().entrySet(), new C1<Map.Entry<String, ?>, String>() {
-            @Override public String apply(Map.Entry<String, ?> e) {
+            @Override
+            public String apply(Map.Entry<String, ?> e) {
                 return e.getKey() + ", " + e.getValue().toString();
             }
         });
@@ -2440,25 +2441,32 @@ public class IgniteKernal implements IgniteEx, IgniteMXBean, Externalizable {
 
     /** {@inheritDoc} */
     @Override public void destroyCache(String cacheName) {
-        guard();
-
-        IgniteInternalFuture<?> stopFut;
+        IgniteInternalFuture stopFut = destroyCacheAsync(cacheName);
 
         try {
-            stopFut = ctx.cache().dynamicDestroyCache(cacheName);
+            stopFut.get();
         }
-        finally {
-            unguard();
+        catch (IgniteCheckedException e) {
+            throw CU.convertToCacheException(e);
         }
+    }
+
+    /**
+     * @param cacheName Cache name.
+     * @return Ignite future.
+     */
+    public IgniteInternalFuture destroyCacheAsync(String cacheName) {
+        guard();
 
         try {
-            stopFut.get();
+            return ctx.cache().dynamicDestroyCache(cacheName);
         }
-        catch (IgniteCheckedException e) {
-            throw CU.convertToCacheException(e);
+        finally {
+            unguard();
         }
     }
 
+
     /** {@inheritDoc} */
     @Override public <K, V> IgniteCache<K, V> getOrCreateCache(String cacheName) {
         guard();
@@ -2477,6 +2485,24 @@ public class IgniteKernal implements IgniteEx, IgniteMXBean, Externalizable {
         }
     }
 
+    /**
+     * @param cacheName Cache name.
+     * @return Future that will be completed when cache is deployed.
+     */
+    public IgniteInternalFuture getOrCreateCacheAsync(String cacheName) {
+        guard();
+
+        try {
+            if (ctx.cache().cache(cacheName) == null)
+                ctx.cache().getOrCreateFromTemplate(cacheName);
+
+            return ctx.cache().dynamicStartCache(null, cacheName, null, false, true);
+        }
+        finally {
+            unguard();
+        }
+    }
+
     /** {@inheritDoc} */
     @Override public <K, V> void addCacheConfiguration(CacheConfiguration<K, V> cacheCfg) {
         A.notNull(cacheCfg, "cacheCfg");

http://git-wip-us.apache.org/repos/asf/incubator-ignite/blob/268f30ac/modules/core/src/main/java/org/apache/ignite/internal/processors/rest/handlers/cache/GridCacheCommandHandler.java
----------------------------------------------------------------------
diff --git a/modules/core/src/main/java/org/apache/ignite/internal/processors/rest/handlers/cache/GridCacheCommandHandler.java b/modules/core/src/main/java/org/apache/ignite/internal/processors/rest/handlers/cache/GridCacheCommandHandler.java
index c20360a..883a2bf 100644
--- a/modules/core/src/main/java/org/apache/ignite/internal/processors/rest/handlers/cache/GridCacheCommandHandler.java
+++ b/modules/core/src/main/java/org/apache/ignite/internal/processors/rest/handlers/cache/GridCacheCommandHandler.java
@@ -158,13 +158,25 @@ public class GridCacheCommandHandler extends GridRestCommandHandlerAdapter {
 
             switch (cmd) {
                 case DESTROY_CACHE: {
-                    fut = ctx.closure().callLocalSafe(new DestroyCacheCommand(ctx, cacheName));
+                    fut = new DestroyCacheCommand(cacheName).apply(ctx).chain(
+                        new CX1<IgniteInternalFuture<?>, GridRestResponse>() {
+                            @Override public GridRestResponse applyx(IgniteInternalFuture<?> f)
+                                throws IgniteCheckedException {
+                                return new GridRestResponse(f.get());
+                            }
+                        });
 
                     break;
                 }
 
                 case GET_OR_CREATE_CACHE: {
-                    fut = ctx.closure().callLocalSafe(new GetOrCreateCacheCallable(ctx, cacheName));
+                    fut = new GetOrCreateCacheClosure(cacheName).apply(ctx).chain(
+                        new CX1<IgniteInternalFuture<?>, GridRestResponse>() {
+                        @Override public GridRestResponse applyx(IgniteInternalFuture<?> f)
+                            throws IgniteCheckedException {
+                            return new GridRestResponse(f.get());
+                        }
+                    });
 
                     break;
                 }
@@ -1340,54 +1352,37 @@ public class GridCacheCommandHandler extends GridRestCommandHandlerAdapter {
     /**
      * Destroy cache callable.
      */
-    private static class DestroyCacheCommand extends GetOrCreateCacheCallable {
+    private static class DestroyCacheCommand extends GetOrCreateCacheClosure {
 
-        public DestroyCacheCommand(GridKernalContext ctx, String cacheName) {
-            super(ctx, cacheName);
+        public DestroyCacheCommand(String cacheName) {
+            super(cacheName);
         }
 
         /** {@inheritDoc} */
-        @Override public GridRestResponse call() throws Exception {
-            try {
-                ctx.grid().destroyCache(cacheName);
-
-                return new GridRestResponse();
-            }
-            catch (Exception e) {
-                return new GridRestResponse(GridRestResponse.STATUS_FAILED, e.getMessage());
-            }
+        @Override public IgniteInternalFuture<?> apply(GridKernalContext ctx) {
+            return ((IgniteKernal)ctx.grid()).destroyCacheAsync(cacheName);
         }
     }
 
     /**
      * Get or create cache callable.
      */
-    private static class GetOrCreateCacheCallable implements Callable<GridRestResponse> {
-        /** Kernal context. */
-        protected GridKernalContext ctx;
+    private static class GetOrCreateCacheClosure implements
+        IgniteClosure<GridKernalContext, IgniteInternalFuture<?>> {
 
         /** Cache name. */
         protected String cacheName;
 
         /**
-         * @param ctx Kernal context.
          * @param cacheName Cache name.
          */
-        public GetOrCreateCacheCallable(GridKernalContext ctx, String cacheName) {
-            this.ctx = ctx;
+        public GetOrCreateCacheClosure(String cacheName) {
             this.cacheName = cacheName;
         }
 
         /** {@inheritDoc} */
-        @Override public GridRestResponse call() throws Exception {
-            try {
-                ctx.grid().getOrCreateCache(cacheName);
-
-                return new GridRestResponse();
-            }
-            catch (Exception e) {
-                return new GridRestResponse(GridRestResponse.STATUS_FAILED, e.getMessage());
-            }
+        @Override public IgniteInternalFuture<?> apply(GridKernalContext ctx) {
+            return ((IgniteKernal)ctx.grid()).getOrCreateCacheAsync(cacheName);
         }
     }
 }