You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@ignite.apache.org by ak...@apache.org on 2015/08/05 03:15:31 UTC

[40/50] incubator-ignite git commit: IGNITE-1168 REST API: type metadata for cache.

IGNITE-1168 REST API: type metadata for cache.


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

Branch: refs/heads/ignite-843
Commit: d0871610fb9224f02c2cd8b392a2276559797e9f
Parents: e85b2b4
Author: sevdokimov <se...@gridgain.com>
Authored: Tue Aug 4 18:51:28 2015 +0300
Committer: sevdokimov <se...@gridgain.com>
Committed: Tue Aug 4 18:51:45 2015 +0300

----------------------------------------------------------------------
 .../ignite/examples/ExampleNodeStartup.java     |  4 ++-
 .../JettyRestProcessorAbstractSelfTest.java     | 14 ++++++++
 .../cache/query/GridCacheQueryManager.java      | 37 ++++++++++++++++----
 .../cache/query/GridCacheSqlIndexMetadata.java  | 11 ++++--
 .../cache/query/GridCacheSqlMetadata.java       | 28 ++++++++++++---
 .../jdbc/GridCacheQueryJdbcMetadataTask.java    | 10 +++---
 .../processors/rest/GridRestCommand.java        |  3 ++
 .../processors/rest/GridRestProcessor.java      |  5 +--
 .../handlers/cache/GridCacheCommandHandler.java | 14 +++++++-
 .../IgniteCacheAbstractFieldsQuerySelfTest.java | 14 ++++----
 modules/nodejs/src/main/js/cache.js             |  9 +++++
 .../http/jetty/GridJettyRestHandler.java        |  1 +
 12 files changed, 121 insertions(+), 29 deletions(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/incubator-ignite/blob/d0871610/examples/src/main/java/org/apache/ignite/examples/ExampleNodeStartup.java
----------------------------------------------------------------------
diff --git a/examples/src/main/java/org/apache/ignite/examples/ExampleNodeStartup.java b/examples/src/main/java/org/apache/ignite/examples/ExampleNodeStartup.java
index f972b53..7bcd4f7 100644
--- a/examples/src/main/java/org/apache/ignite/examples/ExampleNodeStartup.java
+++ b/examples/src/main/java/org/apache/ignite/examples/ExampleNodeStartup.java
@@ -30,6 +30,8 @@ public class ExampleNodeStartup {
      * @throws IgniteException If failed.
      */
     public static void main(String[] args) throws IgniteException {
-        Ignition.start("examples/config/example-ignite.xml");
+        Ignite start = Ignition.start("examples/config/example-ignite.xml");
+
+        start.createCache("ccc");
     }
 }

http://git-wip-us.apache.org/repos/asf/incubator-ignite/blob/d0871610/modules/clients/src/test/java/org/apache/ignite/internal/processors/rest/JettyRestProcessorAbstractSelfTest.java
----------------------------------------------------------------------
diff --git a/modules/clients/src/test/java/org/apache/ignite/internal/processors/rest/JettyRestProcessorAbstractSelfTest.java b/modules/clients/src/test/java/org/apache/ignite/internal/processors/rest/JettyRestProcessorAbstractSelfTest.java
index 5f3d15e..661ed85 100644
--- a/modules/clients/src/test/java/org/apache/ignite/internal/processors/rest/JettyRestProcessorAbstractSelfTest.java
+++ b/modules/clients/src/test/java/org/apache/ignite/internal/processors/rest/JettyRestProcessorAbstractSelfTest.java
@@ -1172,6 +1172,20 @@ public abstract class JettyRestProcessorAbstractSelfTest extends AbstractRestPro
     /**
      * @throws Exception If failed.
      */
+    public void testMetadata() throws Exception {
+        String ret = content(F.asMap("cmd", GridRestCommand.CACHE_METADATA.key()));
+
+        assertNotNull(ret);
+        assertTrue(!ret.isEmpty());
+
+        info("Cache metadata result: " + ret);
+
+        jsonEquals(ret, pattern("\\{.+\\}", true));
+    }
+
+    /**
+     * @throws Exception If failed.
+     */
     public void testTopology() throws Exception {
         String ret = content(F.asMap("cmd", GridRestCommand.TOPOLOGY.key(), "attr", "false", "mtr", "false"));
 

http://git-wip-us.apache.org/repos/asf/incubator-ignite/blob/d0871610/modules/core/src/main/java/org/apache/ignite/internal/processors/cache/query/GridCacheQueryManager.java
----------------------------------------------------------------------
diff --git a/modules/core/src/main/java/org/apache/ignite/internal/processors/cache/query/GridCacheQueryManager.java b/modules/core/src/main/java/org/apache/ignite/internal/processors/cache/query/GridCacheQueryManager.java
index 5d3f6a3..006e0d6 100644
--- a/modules/core/src/main/java/org/apache/ignite/internal/processors/cache/query/GridCacheQueryManager.java
+++ b/modules/core/src/main/java/org/apache/ignite/internal/processors/cache/query/GridCacheQueryManager.java
@@ -1839,7 +1839,7 @@ public abstract class GridCacheQueryManager<K, V> extends GridCacheManagerAdapte
 
             for (Collection<CacheSqlMetadata> col : res) {
                 for (CacheSqlMetadata meta : col) {
-                    String name = meta.cacheName();
+                    String name = meta.getCacheName();
 
                     Collection<CacheSqlMetadata> cacheMetas = map.get(name);
 
@@ -2093,12 +2093,12 @@ public abstract class GridCacheQueryManager<K, V> extends GridCacheManagerAdapte
         }
 
         /** {@inheritDoc} */
-        @Override public String cacheName() {
+        @Override public String getCacheName() {
             return cacheName;
         }
 
         /** {@inheritDoc} */
-        @Override public Collection<String> types() {
+        @Override public Collection<String> getTypes() {
             return types;
         }
 
@@ -2118,6 +2118,26 @@ public abstract class GridCacheQueryManager<K, V> extends GridCacheManagerAdapte
         }
 
         /** {@inheritDoc} */
+        @Override public Map<String, String> getKeyClasses() {
+            return keyClasses;
+        }
+
+        /** {@inheritDoc} */
+        @Override public Map<String, String> getValClasses() {
+            return valClasses;
+        }
+
+        /** {@inheritDoc} */
+        @Override public Map<String, Map<String, String>> getFields() {
+            return fields;
+        }
+
+        /** {@inheritDoc} */
+        @Override public Map<String, Collection<GridCacheSqlIndexMetadata>> getIndexes() {
+            return indexes;
+        }
+
+        /** {@inheritDoc} */
         @Override public Collection<GridCacheSqlIndexMetadata> indexes(String type) {
             return indexes.get(type);
         }
@@ -2193,12 +2213,12 @@ public abstract class GridCacheQueryManager<K, V> extends GridCacheManagerAdapte
         }
 
         /** {@inheritDoc} */
-        @Override public String name() {
+        @Override public String getName() {
             return name;
         }
 
         /** {@inheritDoc} */
-        @Override public Collection<String> fields() {
+        @Override public Collection<String> getFields() {
             return fields;
         }
 
@@ -2208,7 +2228,12 @@ public abstract class GridCacheQueryManager<K, V> extends GridCacheManagerAdapte
         }
 
         /** {@inheritDoc} */
-        @Override public boolean unique() {
+        @Override public Collection<String> getDescendings() {
+            return descendings;
+        }
+
+        /** {@inheritDoc} */
+        @Override public boolean isUnique() {
             return unique;
         }
 

http://git-wip-us.apache.org/repos/asf/incubator-ignite/blob/d0871610/modules/core/src/main/java/org/apache/ignite/internal/processors/cache/query/GridCacheSqlIndexMetadata.java
----------------------------------------------------------------------
diff --git a/modules/core/src/main/java/org/apache/ignite/internal/processors/cache/query/GridCacheSqlIndexMetadata.java b/modules/core/src/main/java/org/apache/ignite/internal/processors/cache/query/GridCacheSqlIndexMetadata.java
index c9ab0e4..996e4b6 100644
--- a/modules/core/src/main/java/org/apache/ignite/internal/processors/cache/query/GridCacheSqlIndexMetadata.java
+++ b/modules/core/src/main/java/org/apache/ignite/internal/processors/cache/query/GridCacheSqlIndexMetadata.java
@@ -33,14 +33,14 @@ public interface GridCacheSqlIndexMetadata extends Externalizable {
      *
      * @return Index name.
      */
-    public String name();
+    public String getName();
 
     /**
      * Gets names of fields indexed by this index.
      *
      * @return Indexed fields names.
      */
-    public Collection<String> fields();
+    public Collection<String> getFields();
 
     /**
      * Gets order of the index for each indexed field.
@@ -51,9 +51,14 @@ public interface GridCacheSqlIndexMetadata extends Externalizable {
     public boolean descending(String field);
 
     /**
+     * @return Descendings.
+     */
+    public Collection<String> getDescendings();
+
+    /**
      * Gets whether this is a unique index.
      *
      * @return {@code True} if index is unique, {@code false} otherwise.
      */
-    public boolean unique();
+    public boolean isUnique();
 }

http://git-wip-us.apache.org/repos/asf/incubator-ignite/blob/d0871610/modules/core/src/main/java/org/apache/ignite/internal/processors/cache/query/GridCacheSqlMetadata.java
----------------------------------------------------------------------
diff --git a/modules/core/src/main/java/org/apache/ignite/internal/processors/cache/query/GridCacheSqlMetadata.java b/modules/core/src/main/java/org/apache/ignite/internal/processors/cache/query/GridCacheSqlMetadata.java
index 7f25490..3a55ccf 100644
--- a/modules/core/src/main/java/org/apache/ignite/internal/processors/cache/query/GridCacheSqlMetadata.java
+++ b/modules/core/src/main/java/org/apache/ignite/internal/processors/cache/query/GridCacheSqlMetadata.java
@@ -36,7 +36,7 @@ public interface GridCacheSqlMetadata extends Externalizable {
      *
      * @return Cache name.
      */
-    public String cacheName();
+    public String getCacheName();
 
     /**
      * Gets the collection of types stored in cache.
@@ -47,12 +47,12 @@ public interface GridCacheSqlMetadata extends Externalizable {
      *
      * @return Collection of available types.
      */
-    public Collection<String> types();
+    public Collection<String> getTypes();
 
     /**
      * Gets key class name for provided type.
      * <p>
-     * Use {@link #types()} method to get available types.
+     * Use {@link #getTypes()} method to get available types.
      *
      * @param type Type name.
      * @return Key class name or {@code null} if type name is unknown.
@@ -62,7 +62,7 @@ public interface GridCacheSqlMetadata extends Externalizable {
     /**
      * Gets value class name for provided type.
      * <p>
-     * Use {@link #types()} method to get available types.
+     * Use {@link #getTypes()} method to get available types.
      *
      * @param type Type name.
      * @return Value class name or {@code null} if type name is unknown.
@@ -78,6 +78,26 @@ public interface GridCacheSqlMetadata extends Externalizable {
     @Nullable public Map<String, String> fields(String type);
 
     /**
+     * @return Key classes.
+     */
+    public Map<String, String> getKeyClasses();
+
+    /**
+     * @return Value classes.
+     */
+    public Map<String, String> getValClasses();
+
+    /**
+     * @return Fields.
+     */
+    public Map<String, Map<String, String>> getFields();
+
+    /**
+     * @return Indexes.
+     */
+    public Map<String, Collection<GridCacheSqlIndexMetadata>> getIndexes();
+
+    /**
      * Gets descriptors of indexes created for provided type.
      * See {@link GridCacheSqlIndexMetadata} javadoc for more information.
      *

http://git-wip-us.apache.org/repos/asf/incubator-ignite/blob/d0871610/modules/core/src/main/java/org/apache/ignite/internal/processors/cache/query/jdbc/GridCacheQueryJdbcMetadataTask.java
----------------------------------------------------------------------
diff --git a/modules/core/src/main/java/org/apache/ignite/internal/processors/cache/query/jdbc/GridCacheQueryJdbcMetadataTask.java b/modules/core/src/main/java/org/apache/ignite/internal/processors/cache/query/jdbc/GridCacheQueryJdbcMetadataTask.java
index 6111acd..90cd8c0 100644
--- a/modules/core/src/main/java/org/apache/ignite/internal/processors/cache/query/jdbc/GridCacheQueryJdbcMetadataTask.java
+++ b/modules/core/src/main/java/org/apache/ignite/internal/processors/cache/query/jdbc/GridCacheQueryJdbcMetadataTask.java
@@ -114,12 +114,12 @@ public class GridCacheQueryJdbcMetadataTask extends ComputeTaskAdapter<String, b
                 Collection<List<Object>> indexesInfo = new LinkedList<>();
 
                 for (GridCacheSqlMetadata meta : metas) {
-                    String name = meta.cacheName();
+                    String name = meta.getCacheName();
 
                     if (name == null)
                         name = "PUBLIC";
 
-                    Collection<String> types = meta.types();
+                    Collection<String> types = meta.getTypes();
 
                     Map<String, Map<String, String>> typesMap = U.newHashMap(types.size());
 
@@ -129,9 +129,9 @@ public class GridCacheQueryJdbcMetadataTask extends ComputeTaskAdapter<String, b
                         for (GridCacheSqlIndexMetadata idx : meta.indexes(type)) {
                             int cnt = 0;
 
-                            for (String field : idx.fields()) {
-                                indexesInfo.add(F.<Object>asList(name, type.toUpperCase(), !idx.unique(),
-                                    idx.name().toUpperCase(), ++cnt, field, idx.descending(field)));
+                            for (String field : idx.getFields()) {
+                                indexesInfo.add(F.<Object>asList(name, type.toUpperCase(), !idx.isUnique(),
+                                    idx.getName().toUpperCase(), ++cnt, field, idx.descending(field)));
                             }
                         }
                     }

http://git-wip-us.apache.org/repos/asf/incubator-ignite/blob/d0871610/modules/core/src/main/java/org/apache/ignite/internal/processors/rest/GridRestCommand.java
----------------------------------------------------------------------
diff --git a/modules/core/src/main/java/org/apache/ignite/internal/processors/rest/GridRestCommand.java b/modules/core/src/main/java/org/apache/ignite/internal/processors/rest/GridRestCommand.java
index 44dec65..d28119a 100644
--- a/modules/core/src/main/java/org/apache/ignite/internal/processors/rest/GridRestCommand.java
+++ b/modules/core/src/main/java/org/apache/ignite/internal/processors/rest/GridRestCommand.java
@@ -96,6 +96,9 @@ public enum GridRestCommand {
     /** Cache size. */
     CACHE_SIZE("size"),
 
+    /** Cache metadata. */
+    CACHE_METADATA("metadata"),
+
     /** Increment. */
     ATOMIC_INCREMENT("incr"),
 

http://git-wip-us.apache.org/repos/asf/incubator-ignite/blob/d0871610/modules/core/src/main/java/org/apache/ignite/internal/processors/rest/GridRestProcessor.java
----------------------------------------------------------------------
diff --git a/modules/core/src/main/java/org/apache/ignite/internal/processors/rest/GridRestProcessor.java b/modules/core/src/main/java/org/apache/ignite/internal/processors/rest/GridRestProcessor.java
index f8ccf8b..5937c14 100644
--- a/modules/core/src/main/java/org/apache/ignite/internal/processors/rest/GridRestProcessor.java
+++ b/modules/core/src/main/java/org/apache/ignite/internal/processors/rest/GridRestProcessor.java
@@ -24,9 +24,9 @@ import org.apache.ignite.internal.processors.*;
 import org.apache.ignite.internal.processors.rest.client.message.*;
 import org.apache.ignite.internal.processors.rest.handlers.*;
 import org.apache.ignite.internal.processors.rest.handlers.cache.*;
-import org.apache.ignite.internal.processors.rest.handlers.query.*;
 import org.apache.ignite.internal.processors.rest.handlers.datastructures.*;
-import org.apache.ignite.internal.processors.rest.handlers.scripting.IgniteScriptingCommandHandler;
+import org.apache.ignite.internal.processors.rest.handlers.query.*;
+import org.apache.ignite.internal.processors.rest.handlers.scripting.*;
 import org.apache.ignite.internal.processors.rest.handlers.task.*;
 import org.apache.ignite.internal.processors.rest.handlers.top.*;
 import org.apache.ignite.internal.processors.rest.handlers.version.*;
@@ -597,6 +597,7 @@ public class GridRestProcessor extends GridProcessorAdapter {
 
             case CACHE_METRICS:
             case CACHE_SIZE:
+            case CACHE_METADATA:
             case TOPOLOGY:
             case NODE:
             case VERSION:

http://git-wip-us.apache.org/repos/asf/incubator-ignite/blob/d0871610/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 64f595d..21ed401 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
@@ -22,6 +22,7 @@ import org.apache.ignite.cache.*;
 import org.apache.ignite.cluster.*;
 import org.apache.ignite.internal.*;
 import org.apache.ignite.internal.processors.cache.*;
+import org.apache.ignite.internal.processors.cache.query.*;
 import org.apache.ignite.internal.processors.cache.transactions.*;
 import org.apache.ignite.internal.processors.rest.*;
 import org.apache.ignite.internal.processors.rest.handlers.*;
@@ -76,7 +77,8 @@ public class GridCacheCommandHandler extends GridRestCommandHandlerAdapter {
         CACHE_APPEND,
         CACHE_PREPEND,
         CACHE_METRICS,
-        CACHE_SIZE
+        CACHE_SIZE,
+        CACHE_METADATA
     );
 
     /** Requests with required parameter {@code key}. */
@@ -181,6 +183,16 @@ public class GridCacheCommandHandler extends GridRestCommandHandlerAdapter {
                     break;
                 }
 
+                case CACHE_METADATA: {
+                    IgniteInternalCache<Object, Object> cache = localCache(cacheName);
+
+                    GridCacheSqlMetadata res = F.first(cache.context().queries().sqlMetadata());
+
+                    fut = new GridFinishedFuture<>(new GridRestResponse(res));
+
+                    break;
+                }
+
                 case CACHE_CONTAINS_KEYS: {
                     fut = executeCommand(req.destinationId(), req.clientId(), cacheName, skipStore, key,
                         new ContainsKeysCommand(getKeys(req0)));

http://git-wip-us.apache.org/repos/asf/incubator-ignite/blob/d0871610/modules/indexing/src/test/java/org/apache/ignite/internal/processors/cache/IgniteCacheAbstractFieldsQuerySelfTest.java
----------------------------------------------------------------------
diff --git a/modules/indexing/src/test/java/org/apache/ignite/internal/processors/cache/IgniteCacheAbstractFieldsQuerySelfTest.java b/modules/indexing/src/test/java/org/apache/ignite/internal/processors/cache/IgniteCacheAbstractFieldsQuerySelfTest.java
index ccb3115..ee607a6 100644
--- a/modules/indexing/src/test/java/org/apache/ignite/internal/processors/cache/IgniteCacheAbstractFieldsQuerySelfTest.java
+++ b/modules/indexing/src/test/java/org/apache/ignite/internal/processors/cache/IgniteCacheAbstractFieldsQuerySelfTest.java
@@ -221,8 +221,8 @@ public abstract class IgniteCacheAbstractFieldsQuerySelfTest extends GridCommonA
             boolean wasComplexKeys = false;
 
             for (GridCacheSqlMetadata meta : metas) {
-                if (meta.cacheName() == null) {
-                    Collection<String> types = meta.types();
+                if (meta.getCacheName() == null) {
+                    Collection<String> types = meta.getTypes();
 
                     assert types != null;
                     assert types.size() == 4;
@@ -278,16 +278,16 @@ public abstract class IgniteCacheAbstractFieldsQuerySelfTest extends GridCommonA
 
                     wasNull = true;
                 }
-                else if (CACHE.equals(meta.cacheName()))
+                else if (CACHE.equals(meta.getCacheName()))
                     wasNamed = true;
-                else if (EMPTY_CACHE.equals(meta.cacheName())) {
-                    assert meta.types().isEmpty();
+                else if (EMPTY_CACHE.equals(meta.getCacheName())) {
+                    assert meta.getTypes().isEmpty();
 
                     wasEmpty = true;
                 }
-                else if (CACHE_NO_PRIMITIVES.equals(meta.cacheName()))
+                else if (CACHE_NO_PRIMITIVES.equals(meta.getCacheName()))
                     wasNoPrimitives = true;
-                else if (CACHE_COMPLEX_KEYS.equals(meta.cacheName()))
+                else if (CACHE_COMPLEX_KEYS.equals(meta.getCacheName()))
                     wasComplexKeys = true;
             }
 

http://git-wip-us.apache.org/repos/asf/incubator-ignite/blob/d0871610/modules/nodejs/src/main/js/cache.js
----------------------------------------------------------------------
diff --git a/modules/nodejs/src/main/js/cache.js b/modules/nodejs/src/main/js/cache.js
index e9db1b3..7c04843 100644
--- a/modules/nodejs/src/main/js/cache.js
+++ b/modules/nodejs/src/main/js/cache.js
@@ -263,6 +263,15 @@ Cache.prototype.size = function(callback) {
 }
 
 /**
+ * Returns cache metadata.
+ *
+ * @this {Cache}
+ */
+Cache.prototype.metadata = function(callback) {
+    return this.__createPromise(this._createCommand("metadata"));
+}
+
+/**
  * Execute sql query
  *
  * @param {SqlQuery|SqlFieldsQuery} qry Query

http://git-wip-us.apache.org/repos/asf/incubator-ignite/blob/d0871610/modules/rest-http/src/main/java/org/apache/ignite/internal/processors/rest/protocols/http/jetty/GridJettyRestHandler.java
----------------------------------------------------------------------
diff --git a/modules/rest-http/src/main/java/org/apache/ignite/internal/processors/rest/protocols/http/jetty/GridJettyRestHandler.java b/modules/rest-http/src/main/java/org/apache/ignite/internal/processors/rest/protocols/http/jetty/GridJettyRestHandler.java
index 2cf9988..4d5e14a 100644
--- a/modules/rest-http/src/main/java/org/apache/ignite/internal/processors/rest/protocols/http/jetty/GridJettyRestHandler.java
+++ b/modules/rest-http/src/main/java/org/apache/ignite/internal/processors/rest/protocols/http/jetty/GridJettyRestHandler.java
@@ -410,6 +410,7 @@ public class GridJettyRestHandler extends AbstractHandler {
             case CACHE_CAS:
             case CACHE_METRICS:
             case CACHE_SIZE:
+            case CACHE_METADATA:
             case CACHE_REPLACE:
             case CACHE_APPEND:
             case CACHE_PREPEND: {