You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@ignite.apache.org by sb...@apache.org on 2016/01/11 11:13:21 UTC
[50/50] [abbrv] ignite git commit: ignite-961
ignite-961
Project: http://git-wip-us.apache.org/repos/asf/ignite/repo
Commit: http://git-wip-us.apache.org/repos/asf/ignite/commit/c2a18232
Tree: http://git-wip-us.apache.org/repos/asf/ignite/tree/c2a18232
Diff: http://git-wip-us.apache.org/repos/asf/ignite/diff/c2a18232
Branch: refs/heads/ignite-961
Commit: c2a18232427a80a9efecc1184aeab80d58a0b1d4
Parents: 3cdf064
Author: sboikov <sb...@gridgain.com>
Authored: Mon Jan 11 09:22:24 2016 +0300
Committer: sboikov <sb...@gridgain.com>
Committed: Mon Jan 11 13:05:50 2016 +0300
----------------------------------------------------------------------
.../JettyRestProcessorAbstractSelfTest.java | 89 +++++++++++---
.../scripting/IgniteScriptingProcessor.java | 1 +
.../processors/scripting/ScriptingJsCache.java | 3 +-
modules/json/pom.xml | 9 +-
modules/nodejs/pom.xml | 2 +-
.../ignite/internal/NodeJsComputeSelfTest.java | 5 +-
modules/nodejs/src/test/js/test-compute.js | 37 ++++--
modules/rest-http/pom.xml | 6 -
.../http/jetty/GridJettyRestHandler.java | 117 +++++++++++++------
.../http/jetty/ScriptingConverter.java | 64 +++++++---
10 files changed, 241 insertions(+), 92 deletions(-)
----------------------------------------------------------------------
http://git-wip-us.apache.org/repos/asf/ignite/blob/c2a18232/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 7d70e91..0272370 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
@@ -36,6 +36,8 @@ import java.util.UUID;
import java.util.concurrent.ConcurrentHashMap;
import java.util.regex.Pattern;
import javax.json.JsonObject;
+import javax.json.JsonObjectBuilder;
+import javax.json.spi.JsonProvider;
import net.sf.json.JSONNull;
import net.sf.json.JSONObject;
import org.apache.ignite.Ignite;
@@ -49,11 +51,11 @@ import org.apache.ignite.configuration.CacheConfiguration;
import org.apache.ignite.internal.processors.cache.IgniteCacheProxy;
import org.apache.ignite.internal.processors.cache.query.GridCacheSqlIndexMetadata;
import org.apache.ignite.internal.processors.cache.query.GridCacheSqlMetadata;
-import org.apache.ignite.internal.processors.json.IgniteJsonString;
import org.apache.ignite.internal.processors.rest.handlers.GridRestCommandHandler;
import org.apache.ignite.internal.util.typedef.F;
import org.apache.ignite.internal.util.typedef.internal.U;
import org.apache.ignite.internal.util.typedef.P1;
+import org.apache.ignite.json.IgniteJson;
import org.apache.ignite.lang.IgniteBiPredicate;
import org.apache.ignite.lang.IgnitePredicate;
import org.apache.ignite.testframework.GridTestUtils;
@@ -413,7 +415,7 @@ public abstract class JettyRestProcessorAbstractSelfTest extends AbstractRestPro
* @throws Exception If failed.
*/
public void testGetPost() throws Exception {
- jcache().put(new IgniteJsonString("key0"), new IgniteJsonString("val0"));
+ jcache().put("key0", "val0");
String val = "{\"key\":\"key0\"}";
String ret = makePostRequest(F.asMap("cmd", GridRestCommand.CACHE_GET.key()), val);
@@ -430,7 +432,7 @@ public abstract class JettyRestProcessorAbstractSelfTest extends AbstractRestPro
* @throws Exception If failed.
*/
public void testReplacePost() throws Exception {
- jcache().put(new IgniteJsonString("key0"), new IgniteJsonString("val0"));
+ jcache().put("key0", "val0");
String val = "{\"key\":\"key0\", \"val\":\"val2\", \"oldVal\":\"val1\"}";
String ret = makePostRequest(F.asMap("cmd", GridRestCommand.CACHE_REPLACE_VALUE.key()), val);
@@ -448,7 +450,7 @@ public abstract class JettyRestProcessorAbstractSelfTest extends AbstractRestPro
jsonEquals(ret, cachePattern("val0", true));
- assertEquals(new IgniteJsonString("val2"), grid(0).cache(null).get(new IgniteJsonString("key0")));
+ assertEquals("val2", grid(0).cache(null).get("key0"));
val = "{\"key\":\"key0\", \"val\":\"val3\"}";
ret = makePostRequest(F.asMap("cmd", GridRestCommand.CACHE_REPLACE.key()), val);
@@ -458,14 +460,14 @@ public abstract class JettyRestProcessorAbstractSelfTest extends AbstractRestPro
info("Get command result: " + ret);
- assertEquals(new IgniteJsonString("val3"), grid(0).cache(null).get(new IgniteJsonString("key0")));
+ assertEquals("val3", grid(0).cache(null).get("key0"));
}
/**
* @throws Exception If failed.
*/
public void testRemovePost() throws Exception {
- jcache().put(new IgniteJsonString("key0"), new IgniteJsonString("val0"));
+ jcache().put("key0", "val0");
String val = "{\"key\":\"key0\", \"val\":\"val2\"}";
String ret = makePostRequest(F.asMap("cmd", GridRestCommand.CACHE_REMOVE_VALUE.key()), val);
@@ -477,22 +479,22 @@ public abstract class JettyRestProcessorAbstractSelfTest extends AbstractRestPro
jsonEquals(ret, cachePattern(false, true));
- assertEquals(new IgniteJsonString("val0"), grid(0).cache(null).get(new IgniteJsonString("key0")));
+ assertEquals("val0", grid(0).cache(null).get("key0"));
val = "{\"key\":\"key0\"}";
ret = makePostRequest(F.asMap("cmd", GridRestCommand.CACHE_GET_AND_REMOVE.key()), val);
jsonEquals(ret, cachePattern("val0", true));
- assertNull(grid(0).cache(null).get(new IgniteJsonString("key0")));
+ assertNull(grid(0).cache(null).get("key0"));
}
/**
* @throws Exception If failed.
*/
public void testRemoveAllPost() throws Exception {
- jcache().put(new IgniteJsonString("key0"), new IgniteJsonString("val0"));
- jcache().put(new IgniteJsonString("key1"), new IgniteJsonString("val1"));
+ jcache().put("key0", "val0");
+ jcache().put("key1", "val1");
String val = "{\"keys\": [\"key0\", \"key1\"]}";
String ret = makePostRequest(F.asMap("cmd", GridRestCommand.CACHE_REMOVE_ALL.key()), val);
@@ -516,7 +518,7 @@ public abstract class JettyRestProcessorAbstractSelfTest extends AbstractRestPro
info("Result: " + ret);
assertEquals(1, grid(0).cache(null).size());
- assertNotNull(grid(0).cache(null).get(new IgniteJsonString("key0")));
+ assertNotNull(grid(0).cache(null).get("key0"));
val = "{\"key\":\"key0\"}";
ret = makePostRequest(F.asMap("cmd", GridRestCommand.CACHE_CONTAINS_KEY.key()), val);
@@ -530,6 +532,54 @@ public abstract class JettyRestProcessorAbstractSelfTest extends AbstractRestPro
/**
* @throws Exception If failed.
*/
+ public void testPutJsonKey() throws Exception {
+ String val = "{\"key\":{\"id\": \"1\"},\"val\":\"val0\"}";
+ String ret = makePostRequest(F.asMap("cmd", GridRestCommand.CACHE_PUT.key()), val);
+
+ assertNotNull(ret);
+ assertTrue(!ret.isEmpty());
+
+ info("Result: " + ret);
+
+ JsonProvider provider = IgniteJson.jsonProvider(ignite(0));
+
+ JsonObjectBuilder builder = provider.createObjectBuilder();
+
+ builder.add("id", "1");
+
+ JsonObject key = builder.build();
+
+ assertEquals("val0", grid(0).cache(null).get(key));
+
+ val = "{\"key\":{\"id\": \"1\"}}";
+ ret = makePostRequest(F.asMap("cmd", GridRestCommand.CACHE_CONTAINS_KEY.key()), val);
+
+ assertNotNull(ret);
+ assertTrue(!ret.isEmpty());
+
+ jsonEquals(ret, cachePattern(true, true));
+ }
+
+ /**
+ * @throws Exception If failed.
+ */
+ public void testPutJsonValue() throws Exception {
+ String cmd = "{\"key\":\"key0\",\"val\":{\"id\": \"1\"}}";
+ String ret = makePostRequest(F.asMap("cmd", GridRestCommand.CACHE_PUT.key()), cmd);
+
+ assertNotNull(ret);
+ assertTrue(!ret.isEmpty());
+
+ info("Result: " + ret);
+
+ JsonObject val = (JsonObject)grid(0).cache(null).get("key0");
+
+ assertEquals("1", val.getString("id"));
+ }
+
+ /**
+ * @throws Exception If failed.
+ */
public void testIncorrectPutPost() throws Exception {
String val = "{\"key\":\"key0\"}";
String ret = makePostRequest(F.asMap("cmd", GridRestCommand.CACHE_PUT.key()), val);
@@ -551,7 +601,7 @@ public abstract class JettyRestProcessorAbstractSelfTest extends AbstractRestPro
jsonEquals(ret, cacheNullPattern(true));
- assertNotNull(grid(0).cache(null).get(new IgniteJsonString("key0")));
+ assertNotNull(grid(0).cache(null).get("key0"));
val = "{\"key\": \"key0\", \"val\":\"val1\"}";
ret = makePostRequest(F.asMap("cmd", GridRestCommand.CACHE_GET_AND_PUT_IF_ABSENT.key()), val);
@@ -561,7 +611,7 @@ public abstract class JettyRestProcessorAbstractSelfTest extends AbstractRestPro
jsonEquals(ret, cachePattern("val0", true));
- assertEquals(new IgniteJsonString("val0"), grid(0).cache(null).get(new IgniteJsonString("key0")));
+ assertEquals("val0", grid(0).cache(null).get("key0"));
val = "{\"key\": \"key0\"}";
ret = makePostRequest(F.asMap("cmd", GridRestCommand.CACHE_REMOVE.key()), val);
@@ -569,7 +619,7 @@ public abstract class JettyRestProcessorAbstractSelfTest extends AbstractRestPro
assertNotNull(ret);
assertTrue(!ret.isEmpty());
- assertNull(grid(0).cache(null).get(new IgniteJsonString("key0")));
+ assertNull(grid(0).cache(null).get("key0"));
val = "{\"key\": \"key0\", \"val\":\"val1\"}";
ret = makePostRequest(F.asMap("cmd", GridRestCommand.CACHE_PUT_IF_ABSENT.key()), val);
@@ -579,7 +629,7 @@ public abstract class JettyRestProcessorAbstractSelfTest extends AbstractRestPro
jsonEquals(ret, cachePattern(true, true));
- assertEquals(new IgniteJsonString("val1"), grid(0).cache(null).get(new IgniteJsonString("key0")));
+ assertEquals("val1", grid(0).cache(null).get("key0"));
}
/**
@@ -592,7 +642,7 @@ public abstract class JettyRestProcessorAbstractSelfTest extends AbstractRestPro
assertNotNull(ret);
assertTrue(!ret.isEmpty());
- assertNotNull(grid(0).cache(null).get(new IgniteJsonString("key0")));
+ assertNotNull(grid(0).cache(null).get("key0"));
val = "{\"keys\": [\"key0\",\"key1\"]}";
ret = makePostRequest(F.asMap("cmd", GridRestCommand.CACHE_CONTAINS_KEYS.key()), val);
@@ -1781,7 +1831,10 @@ public abstract class JettyRestProcessorAbstractSelfTest extends AbstractRestPro
*/
public void testRunScriptPost() throws Exception {
String f = "function(param){return param;}";
- String ret = makePostRequest(F.asMap("cmd", GridRestCommand.RUN_SCRIPT.key(), "func", URLEncoder.encode(f)), "{\"arg\":\"hello\"}");
+
+ String ret = makePostRequest(F.asMap("cmd", GridRestCommand.RUN_SCRIPT.key(),
+ "func", URLEncoder.encode(f)),
+ "{\"arg\":\"hello\"}");
assertNotNull(ret);
assertTrue(!ret.isEmpty());
@@ -1851,7 +1904,7 @@ public abstract class JettyRestProcessorAbstractSelfTest extends AbstractRestPro
* @throws Exception If failed.
*/
public void testRunAffinityScriptPost() throws Exception {
- ClusterNode node = grid(0).affinity(null).mapKeyToNode(new IgniteJsonString("key0"));
+ ClusterNode node = grid(0).affinity(null).mapKeyToNode("key0");
Ignite ignite = null;
http://git-wip-us.apache.org/repos/asf/ignite/blob/c2a18232/modules/core/src/main/java/org/apache/ignite/internal/processors/scripting/IgniteScriptingProcessor.java
----------------------------------------------------------------------
diff --git a/modules/core/src/main/java/org/apache/ignite/internal/processors/scripting/IgniteScriptingProcessor.java b/modules/core/src/main/java/org/apache/ignite/internal/processors/scripting/IgniteScriptingProcessor.java
index 44a5af7..47f5681 100644
--- a/modules/core/src/main/java/org/apache/ignite/internal/processors/scripting/IgniteScriptingProcessor.java
+++ b/modules/core/src/main/java/org/apache/ignite/internal/processors/scripting/IgniteScriptingProcessor.java
@@ -140,6 +140,7 @@ public class IgniteScriptingProcessor extends GridProcessorAdapter {
/**
* @param src Script src.
* @param arg Argument.
+ * @param arg2 Second argument.
* @return Result of the function.
* @throws IgniteCheckedException If script failed.
*/
http://git-wip-us.apache.org/repos/asf/ignite/blob/c2a18232/modules/core/src/main/java/org/apache/ignite/internal/processors/scripting/ScriptingJsCache.java
----------------------------------------------------------------------
diff --git a/modules/core/src/main/java/org/apache/ignite/internal/processors/scripting/ScriptingJsCache.java b/modules/core/src/main/java/org/apache/ignite/internal/processors/scripting/ScriptingJsCache.java
index be5a7f0..883b2f7 100644
--- a/modules/core/src/main/java/org/apache/ignite/internal/processors/scripting/ScriptingJsCache.java
+++ b/modules/core/src/main/java/org/apache/ignite/internal/processors/scripting/ScriptingJsCache.java
@@ -18,6 +18,7 @@
package org.apache.ignite.internal.processors.scripting;
import java.util.ArrayList;
+import java.util.Collection;
import java.util.HashSet;
import java.util.List;
import java.util.Map;
@@ -115,7 +116,7 @@ public class ScriptingJsCache {
* @param entries Entries.
*/
public void putAll(List entries) {
- List cacheKeys = (List)proc.toJavaObject(entries);
+ Collection cacheKeys = (Collection)proc.toJavaObject(entries);
Map<Object, Object> cacheEntries = U.newHashMap(entries.size());
http://git-wip-us.apache.org/repos/asf/ignite/blob/c2a18232/modules/json/pom.xml
----------------------------------------------------------------------
diff --git a/modules/json/pom.xml b/modules/json/pom.xml
index 33788d0..77f890c 100644
--- a/modules/json/pom.xml
+++ b/modules/json/pom.xml
@@ -31,7 +31,7 @@
</parent>
<artifactId>ignite-json</artifactId>
- <version>1.5.0.final-SNAPSHOT</version>
+ <version>1.5.1.final-SNAPSHOT</version>
<url>http://ignite.apache.org</url>
<dependencies>
@@ -66,13 +66,6 @@
</dependency>
<dependency>
- <groupId>junit</groupId>
- <artifactId>junit</artifactId>
- <version>4.11</version>
- <scope>test</scope>
- </dependency>
-
- <dependency>
<groupId>org.apache.ignite</groupId>
<artifactId>ignite-core</artifactId>
<version>${project.version}</version>
http://git-wip-us.apache.org/repos/asf/ignite/blob/c2a18232/modules/nodejs/pom.xml
----------------------------------------------------------------------
diff --git a/modules/nodejs/pom.xml b/modules/nodejs/pom.xml
index abfa333..02ef15b 100644
--- a/modules/nodejs/pom.xml
+++ b/modules/nodejs/pom.xml
@@ -31,7 +31,7 @@
</parent>
<artifactId>ignite-nodejs</artifactId>
- <version>1.5.0.final-SNAPSHOT</version>
+ <version>1.5.1.final-SNAPSHOT</version>
<dependencies>
<dependency>
http://git-wip-us.apache.org/repos/asf/ignite/blob/c2a18232/modules/nodejs/src/test/java/org/apache/ignite/internal/NodeJsComputeSelfTest.java
----------------------------------------------------------------------
diff --git a/modules/nodejs/src/test/java/org/apache/ignite/internal/NodeJsComputeSelfTest.java b/modules/nodejs/src/test/java/org/apache/ignite/internal/NodeJsComputeSelfTest.java
index 70f4050..006af78 100644
--- a/modules/nodejs/src/test/java/org/apache/ignite/internal/NodeJsComputeSelfTest.java
+++ b/modules/nodejs/src/test/java/org/apache/ignite/internal/NodeJsComputeSelfTest.java
@@ -20,11 +20,12 @@ package org.apache.ignite.internal;
import java.util.ArrayList;
import java.util.concurrent.Callable;
import java.util.concurrent.atomic.AtomicInteger;
-import org.apache.ignite.cache.CacheAtomicityMode;
import org.apache.ignite.configuration.CacheConfiguration;
import org.apache.ignite.internal.util.typedef.internal.U;
import org.apache.ignite.testframework.GridTestUtils;
+import static org.apache.ignite.cache.CacheAtomicityMode.ATOMIC;
+
/**
* Test compute node js.
*/
@@ -56,7 +57,7 @@ public class NodeJsComputeSelfTest extends NodeJsAbstractTest {
CacheConfiguration ccfg = new CacheConfiguration();
ccfg.setName(CACHE_NAME);
- ccfg.setAtomicityMode(CacheAtomicityMode.ATOMIC);
+ ccfg.setAtomicityMode(ATOMIC);
return ccfg;
}
http://git-wip-us.apache.org/repos/asf/ignite/blob/c2a18232/modules/nodejs/src/test/js/test-compute.js
----------------------------------------------------------------------
diff --git a/modules/nodejs/src/test/js/test-compute.js b/modules/nodejs/src/test/js/test-compute.js
index 20acd0a..d6381d7 100644
--- a/modules/nodejs/src/test/js/test-compute.js
+++ b/modules/nodejs/src/test/js/test-compute.js
@@ -188,6 +188,9 @@ testComputeCacheExecute = function() {
var val1 = ignite.cache("mycache").get(args1.get(0));
+ if (!val1)
+ throw "Unexpected null value [key=" + args1.get(0) + "]";
+
if (val1["age"] !== 12) {
throw "Incorrect age [expected=12, val=" + val + "]";
}
@@ -221,12 +224,12 @@ testComputeCacheExecute = function() {
return ignite.compute().mapReduce(map, reduce, [key1, val1]);
}).then(function(res) {
- assert(TestUtils.compareObject({"1": 1}, res),
- "Incorrect result [exp= {1:1}, val=" + res);
+ assert(TestUtils.compareObject({"1": 1}, res), "Incorrect result [exp= {1:1}, val=" + res);
return cache.size();
}).then(function(size){
assert(size === 3, "Incorrect size [size=" + 3 + ", res=" + size + "]");
+
TestUtils.testDone();
}).catch(function (err) {
assert(err === null, err);
@@ -388,11 +391,11 @@ testComputeRunScriptRemoveOperations = function() {
cache.put(key0, val0);
if (cache.removeValue(key0, val1) === true) {
- throw "Incorrect removeValue from empty map [key=" + JSON.stringify(key0) + "]";
+ throw "Incorrect removeValue result [key=" + JSON.stringify(key0) + "]";
}
if (cache.remove(key0) === false) {
- throw "Incorrect remove from empty map [key=" + JSON.stringify(key0) + "]";
+ throw "Incorrect remove result [key=" + JSON.stringify(key0) + "]";
}
cache.put(key0, val0);
@@ -403,7 +406,7 @@ testComputeRunScriptRemoveOperations = function() {
var prevVal = cache.getAndReplace(key0, val1);
- if (prevVal.valName !== val0.valName) {
+ if (prevVal.valName != val0.valName) {
throw "Incorrect getAndReplace result [key=" + JSON.stringify(key0) +
", prevVal=" + prevVal.valName +
", expected=" + val0.valName + "]";
@@ -411,8 +414,10 @@ testComputeRunScriptRemoveOperations = function() {
prevVal = cache.get(key0);
- if (prevVal.valName !== val1.valName) {
- throw "Incorrect getAndReplace result [key=" + JSON.stringify(key0) + "]";
+ if (prevVal.valName != val1.valName) {
+ throw "Incorrect value after getAndReplace [key=" + JSON.stringify(key0) +
+ ", val=" + prevVal.valName +
+ ", expected=" + val1.valName + "]";
}
cache.removeAllFromCache();
@@ -423,14 +428,28 @@ testComputeRunScriptRemoveOperations = function() {
cache.putAll(entries);
+ prevVal = cache.get(key0);
+
+ if (!prevVal)
+ throw "No value after putAll [key=" + JSON.stringify(key0) + "]";
+
+ if (prevVal.valName != val0.valName) {
+ throw "Incorrect value after putAll [key=" +
+ JSON.stringify(key1) +
+ ", val=" + prevVal.valName +
+ ", expected=" + val0.valName + "]";
+ }
+
if (cache.replace(key1, val0) !== true) {
throw "Incorrect replace result";
}
prevVal = cache.get(key1);
- if (prevVal.valName !== val0.valName) {
- throw "Incorrect replace [key=" + JSON.stringify(key1) + "]";
+ if (prevVal.valName != val0.valName) {
+ throw "Incorrect value after replace [key=" + JSON.stringify(key1) +
+ ", val=" + prevVal.valName +
+ ", expected=" + val0.valName + "]";
}
cache.removeAll(keys);
http://git-wip-us.apache.org/repos/asf/ignite/blob/c2a18232/modules/rest-http/pom.xml
----------------------------------------------------------------------
diff --git a/modules/rest-http/pom.xml b/modules/rest-http/pom.xml
index 3d22c77..6c4c00b 100644
--- a/modules/rest-http/pom.xml
+++ b/modules/rest-http/pom.xml
@@ -43,12 +43,6 @@
<dependencies>
<dependency>
- <groupId>org.glassfish</groupId>
- <artifactId>javax.json</artifactId>
- <version>1.0.4</version>
- </dependency>
-
- <dependency>
<groupId>org.apache.ignite</groupId>
<artifactId>ignite-core</artifactId>
<version>${project.version}</version>
http://git-wip-us.apache.org/repos/asf/ignite/blob/c2a18232/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 9b03a66..a20f969 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
@@ -18,6 +18,7 @@
package org.apache.ignite.internal.processors.rest.protocols.http.jetty;
import java.io.BufferedInputStream;
+import java.io.BufferedReader;
import java.io.ByteArrayOutputStream;
import java.io.IOException;
import java.io.InputStream;
@@ -25,8 +26,8 @@ import java.io.InputStreamReader;
import java.io.LineNumberReader;
import java.net.InetSocketAddress;
import java.util.ArrayList;
+import java.util.Collection;
import java.util.Collections;
-import java.util.HashMap;
import java.util.Iterator;
import java.util.LinkedList;
import java.util.List;
@@ -38,6 +39,7 @@ import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import net.sf.json.JSON;
import net.sf.json.JSONException;
+import net.sf.json.JSONObject;
import net.sf.json.JSONSerializer;
import net.sf.json.JsonConfig;
import net.sf.json.processors.JsonValueProcessor;
@@ -63,7 +65,6 @@ import org.apache.ignite.lang.IgniteClosure;
import org.apache.ignite.plugin.security.SecurityCredentials;
import org.eclipse.jetty.server.Request;
import org.eclipse.jetty.server.handler.AbstractHandler;
-import org.glassfish.json.JsonProviderImpl;
import org.jetbrains.annotations.Nullable;
import static org.apache.ignite.internal.processors.rest.GridRestCommand.CACHE_CONTAINS_KEYS;
@@ -433,22 +434,14 @@ public class GridJettyRestHandler extends AbstractHandler {
return;
if (cmd == CACHE_GET_ALL) {
- Map o = (Map)cmdRes.getResponse();
+ Map<?, ?> o = (Map)cmdRes.getResponse();
- List<Object> res = new ArrayList<>();
+ List<Object> res = new ArrayList<>(o.size());
- for (Object k : o.keySet()) {
- res.add(ctx.scripting().createScriptingEntry(ctx.scripting().toScriptObject(k),
- ctx.scripting().toScriptObject(o.get(k))));
- }
+ for (Map.Entry<?, ?> entry : o.entrySet())
+ res.add(new CacheEntry(entry.getKey(), entry.getValue()));
cmdRes.setResponse(res);
-
- }
- else {
- Object o = cmdRes.getResponse();
-
- cmdRes.setResponse(ctx.scripting().toScriptObject(o));
}
}
@@ -518,17 +511,17 @@ public class GridJettyRestHandler extends AbstractHandler {
String cacheName = (String)params.get("cacheName");
if (jsonRequest(req)) {
- Object o = ctx.scripting().toJavaObject(parseRequest(req));
+ Map<String, Object> reqMap = parseRequest(req);
switch (cmd) {
case CACHE_PUT_ALL: {
- List entries = (List)ctx.scripting().getField("entries", o);
+ Collection entries = (Collection)reqMap.get("entries");
Map<Object, Object> map = U.newHashMap(entries.size());
for (Object entry : entries) {
- Object key = ctx.scripting().getField("key", entry);
- Object val = ctx.scripting().getField("value", entry);
+ Object key = ((Map)entry).get("key");
+ Object val = ((Map)entry).get("value");
map.put(key, val);
}
@@ -543,9 +536,7 @@ public class GridJettyRestHandler extends AbstractHandler {
case CACHE_GET_ALL:
case CACHE_REMOVE_ALL:
case CACHE_CONTAINS_KEYS: {
- Object cacheObj = ctx.scripting().toJavaObject(o);
-
- List keys = (List)ctx.scripting().getField("keys", cacheObj);
+ Collection keys = (Collection)reqMap.get("keys");
Map<Object, Object> map = U.newHashMap(keys.size());
@@ -571,13 +562,11 @@ public class GridJettyRestHandler extends AbstractHandler {
case CACHE_REPLACE:
case CACHE_GET_AND_REPLACE:
case CACHE_REPLACE_VALUE: {
- Object cacheObj = ctx.scripting().toJavaObject(o);
-
restReq0.cacheName(F.isEmpty(cacheName) ? null : cacheName);
- restReq0.key(ctx.scripting().getField("key", cacheObj));
- restReq0.value(ctx.scripting().getField("val", cacheObj));
- restReq0.value2(ctx.scripting().getField("oldVal", cacheObj));
+ restReq0.key(reqMap.get("key"));
+ restReq0.value(reqMap.get("val"));
+ restReq0.value2(reqMap.get("oldVal"));
break;
}
@@ -687,7 +676,8 @@ public class GridJettyRestHandler extends AbstractHandler {
if (jsonRequest(req)) {
Map o = parseRequest(req);
- restReq0.argument(ctx.scripting().toScriptObject(o.get("arg")));
+
+ restReq0.argument(o.get("arg"));
}
else
restReq0.argument(params.get("arg"));
@@ -705,10 +695,9 @@ public class GridJettyRestHandler extends AbstractHandler {
if (jsonRequest(req)) {
Map o = parseRequest(req);
- restReq0.argument(ctx.scripting().toScriptObject(o.get("arg")));
- Object cacheObj = ctx.scripting().toJavaObject(o.get("key"));
- restReq0.affinityKey(cacheObj);
+ restReq0.argument(o.get("arg"));
+ restReq0.affinityKey(o.get("key"));
}
else {
restReq0.argument(params.get("arg"));
@@ -727,7 +716,8 @@ public class GridJettyRestHandler extends AbstractHandler {
if (jsonRequest(req)) {
Map o = parseRequest(req);
- restReq0.argument(ctx.scripting().toScriptObject(o.get("arg")));
+
+ restReq0.argument(o.get("arg"));
}
else
restReq0.argument(params.get("arg"));
@@ -747,7 +737,9 @@ public class GridJettyRestHandler extends AbstractHandler {
if (jsonRequest(req)) {
Map o = parseRequest(req);
- List args = (List)ctx.scripting().toScriptObject(o.get("arg"));
+
+ Collection args = (Collection)o.get("arg");
+
restReq0.arguments(args.toArray());
}
else
@@ -956,16 +948,75 @@ public class GridJettyRestHandler extends AbstractHandler {
}
/**
+ * TODO IGNITE-961: move to JsonProcessor.
+ *
* @param req Request.
* @return JSON object.
* @throws IgniteCheckedException If failed.
*/
private Map parseRequest(HttpServletRequest req) throws IgniteCheckedException {
try {
- return new JsonProviderImpl().createReader(req.getInputStream()).readObject();
+ BufferedReader reader = req.getReader();
+
+ StringBuilder str = new StringBuilder();
+
+ String line;
+
+ while ((line = reader.readLine()) != null)
+ str.append(line);
+
+ return JSONObject.fromObject(str.toString());
}
catch (IOException e) {
throw new IgniteCheckedException(e);
}
}
+
+ /**
+ * Scripting cache entry.
+ */
+ public static class CacheEntry {
+ /** Key. */
+ private Object key;
+
+ /** Value. */
+ private Object val;
+
+ /**
+ * @param key Key.
+ * @param val Value.
+ */
+ public CacheEntry(Object key, Object val) {
+ this.key = key;
+ this.val = val;
+ }
+
+ /**
+ * @return Key.
+ */
+ public Object getKey() {
+ return key;
+ }
+
+ /**
+ * @param key Key.
+ */
+ public void setKey(Object key) {
+ this.key = key;
+ }
+
+ /**
+ * @return Value.
+ */
+ public Object getValue() {
+ return val;
+ }
+
+ /**
+ * @param val Value.
+ */
+ public void setValue(Object val) {
+ this.val = val;
+ }
+ }
}
http://git-wip-us.apache.org/repos/asf/ignite/blob/c2a18232/modules/rest-http/src/main/java/org/apache/ignite/internal/processors/rest/protocols/http/jetty/ScriptingConverter.java
----------------------------------------------------------------------
diff --git a/modules/rest-http/src/main/java/org/apache/ignite/internal/processors/rest/protocols/http/jetty/ScriptingConverter.java b/modules/rest-http/src/main/java/org/apache/ignite/internal/processors/rest/protocols/http/jetty/ScriptingConverter.java
index 8b18d18..68faac1 100644
--- a/modules/rest-http/src/main/java/org/apache/ignite/internal/processors/rest/protocols/http/jetty/ScriptingConverter.java
+++ b/modules/rest-http/src/main/java/org/apache/ignite/internal/processors/rest/protocols/http/jetty/ScriptingConverter.java
@@ -18,6 +18,7 @@
package org.apache.ignite.internal.processors.rest.protocols.http.jetty;
import java.util.ArrayList;
+import java.util.Collection;
import java.util.HashMap;
import java.util.List;
import java.util.Map;
@@ -50,33 +51,68 @@ public class ScriptingConverter extends IgniteScriptingConverter {
provider = IgniteJson.jsonProvider(ctx.grid());
try {
- scriptObjCls = Class.forName("sun.org.mozilla.javascript.internal.NativeObject");
+ scriptObjCls = Class.forName("jdk.nashorn.api.scripting.ScriptObjectMirror");
}
- catch(ClassNotFoundException e) {
- // Ignore.
+ catch(ClassNotFoundException e1) {
+ try {
+ scriptObjCls = Class.forName("sun.org.mozilla.javascript.internal.NativeObject");
+ }
+ catch (ClassNotFoundException e2) {
+ // Ignore.
+ }
}
}
+ /**
+ * @param o Object.
+ * @return {@code True} if object is script engine wrapper.
+ */
+ private boolean scriptObject(Object o) {
+ return o.getClass() == scriptObjCls && (o instanceof Map);
+ }
+
+ /**
+ * @param o Object.
+ * @return Builder.
+ */
+ private JsonObjectBuilder toBuilder(Object o) {
+ assert scriptObject(o) : o;
+
+ JsonObjectBuilder bld = provider.createObjectBuilder();
+
+ Map<Object, Object> map = (Map<Object, Object>)o;
+
+ for (Map.Entry<Object, Object> e : map.entrySet()) {
+ String name = e.getKey().toString();
+
+ Object val = e.getValue();
+
+ if (scriptObject(val))
+ bld.add(name, toBuilder(val));
+ else
+ bld.add(name, val.toString());
+ }
+
+ return bld;
+ }
+
/** {@inheritDoc} */
@Override public Object toJavaObject(Object o) {
if (o == null)
return null;
// TODO IGNITE-961.
- if (o.getClass() == scriptObjCls && (o instanceof Map)) {
- JsonObjectBuilder bld = provider.createObjectBuilder();
+ if (scriptObject(o))
+ return toBuilder(o).build();
+ else if (o instanceof Collection) {
+ Collection col = (Collection)o;
- Map<Object, Object> map = (Map<Object, Object>)o;
+ List<Object> res = new ArrayList<>(col.size());
- for (Map.Entry<Object, Object> e : map.entrySet()) {
- String name = e.getKey().toString();
+ for (Object o1 : col)
+ res.add(toJavaObject(o1));
- Object val = e.getValue();
-
- bld.add(name, val.toString());
- }
-
- return bld.build();
+ return res;
}
return o;