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/13 08:35:37 UTC
[36/50] [abbrv] incubator-ignite git commit: #ignite-964: wip.
#ignite-964: 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/b19536b7
Tree: http://git-wip-us.apache.org/repos/asf/incubator-ignite/tree/b19536b7
Diff: http://git-wip-us.apache.org/repos/asf/incubator-ignite/diff/b19536b7
Branch: refs/heads/ignite-961
Commit: b19536b7397a25a42d38e3a6029c793c070d8592
Parents: 5390b67
Author: ivasilinets <iv...@gridgain.com>
Authored: Fri Jul 10 16:50:20 2015 +0300
Committer: ivasilinets <iv...@gridgain.com>
Committed: Fri Jul 10 16:50:20 2015 +0300
----------------------------------------------------------------------
.../scripting/IgniteScriptingProcessor.java | 37 ++++++++++-
.../scripting/ScriptingCacheEntry.java | 8 +--
.../processors/scripting/ScriptingJsCache.java | 70 ++++++++++----------
.../scripting/ScriptingObjectConverter.java | 19 ++++++
4 files changed, 93 insertions(+), 41 deletions(-)
----------------------------------------------------------------------
http://git-wip-us.apache.org/repos/asf/incubator-ignite/blob/b19536b7/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 cf380c0..9ff89e2 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
@@ -23,6 +23,8 @@ import org.apache.ignite.internal.processors.*;
import javax.script.*;
+import java.lang.reflect.*;
+
import static javax.script.ScriptContext.*;
/**
@@ -30,7 +32,14 @@ import static javax.script.ScriptContext.*;
*/
public class IgniteScriptingProcessor extends GridProcessorAdapter {
/** Javascript engine name. */
- public static final String JAVA_SCRIPT_ENGINE_NAME = "nashorn";
+ public static final String JAVA_SCRIPT_ENGINE_NAME = "javascript";
+
+ /** Java8 scripting converter class. */
+ private static final String CONV_CLS_JAVA8 =
+ "org.apache.ignite.internal.processors.scripting.ScriptingObjectConverter8";
+
+ /** Script object converter. */
+ private ScriptingObjectConverter converter;
/** Javascript engine. */
private ScriptEngine jsEngine;
@@ -44,6 +53,20 @@ public class IgniteScriptingProcessor extends GridProcessorAdapter {
/** {@inheritDoc} */
@Override public void start() throws IgniteCheckedException {
+ try {
+ Class<?> cls = Class.forName(CONV_CLS_JAVA8);
+
+ Constructor<?> ctor = cls.getConstructor(GridKernalContext.class);
+
+ converter = (ScriptingObjectConverter)ctor.newInstance(ctx);
+ }
+ catch (ClassNotFoundException ignored) {
+ converter = new ScriptingObjectConverter();
+ }
+ catch (NoSuchMethodException | InvocationTargetException | InstantiationException | IllegalAccessException e) {
+ throw new IgniteCheckedException("Failed to initialize HTTP REST protocol.", e);
+ }
+
ScriptEngineManager factory = new ScriptEngineManager();
jsEngine = factory.getEngineByName(JAVA_SCRIPT_ENGINE_NAME);
@@ -145,11 +168,19 @@ public class IgniteScriptingProcessor extends GridProcessorAdapter {
}
}
+ /**
+ * @param o Object.
+ * @return Object for script.
+ */
public Object toScriptingObject(Object o) {
-
+ return converter.toScriptingObject(o);
}
+ /**
+ * @param o Object.
+ * @return Object for Ignite cache.
+ */
public Object toJavaObject(Object o) {
-
+ return converter.toJavaObject(o);
}
}
http://git-wip-us.apache.org/repos/asf/incubator-ignite/blob/b19536b7/modules/core/src/main/java/org/apache/ignite/internal/processors/scripting/ScriptingCacheEntry.java
----------------------------------------------------------------------
diff --git a/modules/core/src/main/java/org/apache/ignite/internal/processors/scripting/ScriptingCacheEntry.java b/modules/core/src/main/java/org/apache/ignite/internal/processors/scripting/ScriptingCacheEntry.java
index bcb2458..adb43d1 100644
--- a/modules/core/src/main/java/org/apache/ignite/internal/processors/scripting/ScriptingCacheEntry.java
+++ b/modules/core/src/main/java/org/apache/ignite/internal/processors/scripting/ScriptingCacheEntry.java
@@ -16,13 +16,13 @@ public class ScriptingCacheEntry {
* @param val Value.
*/
public ScriptingCacheEntry(Object key, Object val) {
- if (key instanceof ScriptingObjectConverter8)
- this.key = ((ScriptingObjectConverter8)key).getFields();
+ if (key instanceof ScriptingObjectConverter)
+ this.key = ((ScriptingObjectConverter)key).getFields();
else
this.key = key;
- if (val instanceof ScriptingObjectConverter8)
- this.val = ((ScriptingObjectConverter8)val).getFields();
+ if (val instanceof ScriptingObjectConverter)
+ this.val = ((ScriptingObjectConverter)val).getFields();
else
this.val = val;
}
http://git-wip-us.apache.org/repos/asf/incubator-ignite/blob/b19536b7/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 9ab5e21..ce3975f 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
@@ -19,7 +19,6 @@ package org.apache.ignite.internal.processors.scripting;
import org.apache.ignite.*;
import org.apache.ignite.internal.util.typedef.internal.*;
-import org.apache.ignite.json.*;
import java.util.*;
@@ -30,10 +29,13 @@ public class ScriptingJsCache {
/** Ignite cache. */
private IgniteCache<Object, Object> cache;
+ /** Scripting processor. */
+ private IgniteScriptingProcessor proc;
+
/**
* @param cache Ignite cache.
*/
- public ScriptingJsCache(IgniteCache cache) {
+ public ScriptingJsCache(IgniteCache cache, IgniteScriptingProcessor proc) {
this.cache = cache;
}
@@ -42,8 +44,8 @@ public class ScriptingJsCache {
* @param val Value.
*/
public void put(Object key, Object val) {
- Object cacheKey = JSONCacheObject.toSimpleObject(key);
- Object cacheVal = JSONCacheObject.toSimpleObject(val);
+ Object cacheKey = proc.toJavaObject(key);
+ Object cacheVal = proc.toJavaObject(val);
cache.put(cacheKey, cacheVal);
}
@@ -52,9 +54,9 @@ public class ScriptingJsCache {
* @param key Key.
*/
public Object get(Object key) {
- Object cacheKey = JSONCacheObject.toSimpleObject(key);
+ Object cacheKey = proc.toJavaObject(key);
- return ScriptingObjectConverter8.convertToRestObject(cache.get(cacheKey));
+ return proc.toScriptingObject(cache.get(cacheKey));
}
/**
@@ -62,7 +64,7 @@ public class ScriptingJsCache {
* @return True if cache contains key.
*/
public boolean containsKey(Object key) {
- Object cacheKey = JSONCacheObject.toSimpleObject(key);
+ Object cacheKey = proc.toJavaObject(key);
return cache.containsKey(cacheKey);
}
@@ -72,7 +74,7 @@ public class ScriptingJsCache {
* @return True if cache contains key.
*/
public boolean containsKeys(List keys) {
- List<Object> cacheKeys = (List<Object>)JSONCacheObject.toSimpleObject(keys);
+ List<Object> cacheKeys = (List<Object>)proc.toJavaObject(keys);
return cache.containsKeys(new HashSet<>(cacheKeys));
}
@@ -82,7 +84,7 @@ public class ScriptingJsCache {
* @return Cache entries.
*/
public List<ScriptingCacheEntry> getAll(List keys) {
- List cacheKeys = (List)JSONCacheObject.toSimpleObject(keys);
+ List cacheKeys = (List)proc.toJavaObject(keys);
Map<Object, Object> entries = cache.getAll(new HashSet<>(cacheKeys));
@@ -90,8 +92,8 @@ public class ScriptingJsCache {
for (Map.Entry<Object, Object> e : entries.entrySet())
res.add(new ScriptingCacheEntry(
- ScriptingObjectConverter8.convertToRestObject(e.getKey()),
- ScriptingObjectConverter8.convertToRestObject(e.getValue())));
+ proc.toScriptingObject(e.getKey()),
+ proc.toScriptingObject(e.getValue())));
return res;
}
@@ -100,7 +102,7 @@ public class ScriptingJsCache {
* @param keys Keys.
*/
public void removeAll(List keys) {
- List cacheKeys = (List)JSONCacheObject.toSimpleObject(keys);
+ List cacheKeys = (List)proc.toJavaObject(keys);
cache.removeAll(new HashSet<>(cacheKeys));
}
@@ -109,7 +111,7 @@ public class ScriptingJsCache {
* @param entries Entries.
*/
public void putAll(List entries) {
- List cacheKeys = (List)JSONCacheObject.toSimpleObject(entries);
+ List cacheKeys = (List)proc.toJavaObject(entries);
Map<Object, Object> cacheEntries = U.newHashMap(entries.size());
@@ -127,10 +129,10 @@ public class ScriptingJsCache {
* @return Previous value.
*/
public Object getAndPut(Object key, Object val) {
- Object cacheKey = JSONCacheObject.toSimpleObject(key);
- Object cacheVal = JSONCacheObject.toSimpleObject(val);
+ Object cacheKey = proc.toJavaObject(key);
+ Object cacheVal = proc.toJavaObject(val);
- return ScriptingObjectConverter8.convertToRestObject(cache.getAndPut(cacheKey, cacheVal));
+ return proc.toScriptingObject(cache.getAndPut(cacheKey, cacheVal));
}
/**
@@ -139,10 +141,10 @@ public class ScriptingJsCache {
* @return Previous value.
*/
public Object getAndReplace(Object key, Object val) {
- Object cacheKey = JSONCacheObject.toSimpleObject(key);
- Object cacheVal = JSONCacheObject.toSimpleObject(val);
+ Object cacheKey = proc.toJavaObject(key);
+ Object cacheVal = proc.toJavaObject(val);
- Object o = ScriptingObjectConverter8.convertToRestObject(cache.getAndReplace(cacheKey, cacheVal));
+ Object o = proc.toScriptingObject(cache.getAndReplace(cacheKey, cacheVal));
return o;
}
@@ -153,10 +155,10 @@ public class ScriptingJsCache {
* @return Previous value.
*/
public Object getAndPutIfAbsent(Object key, Object val) {
- Object cacheKey = JSONCacheObject.toSimpleObject(key);
- Object cacheVal = JSONCacheObject.toSimpleObject(val);
+ Object cacheKey = proc.toJavaObject(key);
+ Object cacheVal = proc.toJavaObject(val);
- return ScriptingObjectConverter8.convertToRestObject(cache.getAndPutIfAbsent(cacheKey, cacheVal));
+ return proc.toScriptingObject(cache.getAndPutIfAbsent(cacheKey, cacheVal));
}
/**
@@ -164,9 +166,9 @@ public class ScriptingJsCache {
* @return Previous value.
*/
public Object getAndRemove(Object key) {
- Object cacheKey = JSONCacheObject.toSimpleObject(key);
+ Object cacheKey = proc.toJavaObject(key);
- return ScriptingObjectConverter8.convertToRestObject(cache.getAndRemove(cacheKey));
+ return proc.toScriptingObject(cache.getAndRemove(cacheKey));
}
/**
@@ -174,7 +176,7 @@ public class ScriptingJsCache {
* @return If operation success.
*/
public boolean remove(Object key) {
- Object cacheKey = JSONCacheObject.toSimpleObject(key);
+ Object cacheKey = proc.toJavaObject(key);
return cache.remove(cacheKey);
}
@@ -185,8 +187,8 @@ public class ScriptingJsCache {
* @return If operation success.
*/
public boolean removeValue(Object key, Object val) {
- Object cacheKey = JSONCacheObject.toSimpleObject(key);
- Object cacheVal = JSONCacheObject.toSimpleObject(val);
+ Object cacheKey = proc.toJavaObject(key);
+ Object cacheVal = proc.toJavaObject(val);
return cache.remove(cacheKey, cacheVal);
}
@@ -197,8 +199,8 @@ public class ScriptingJsCache {
* @return If operation success.
*/
public boolean replace(Object key, Object val) {
- Object cacheKey = JSONCacheObject.toSimpleObject(key);
- Object cacheVal = JSONCacheObject.toSimpleObject(val);
+ Object cacheKey = proc.toJavaObject(key);
+ Object cacheVal = proc.toJavaObject(val);
return cache.replace(cacheKey, cacheVal);
}
@@ -210,9 +212,9 @@ public class ScriptingJsCache {
* @return If operation success.
*/
public boolean replaceValue(Object key, Object val, Object oldVal) {
- Object cacheKey = JSONCacheObject.toSimpleObject(key);
- Object cacheVal = JSONCacheObject.toSimpleObject(val);
- Object oldCacheVal = JSONCacheObject.toSimpleObject(oldVal);
+ Object cacheKey = proc.toJavaObject(key);
+ Object cacheVal = proc.toJavaObject(val);
+ Object oldCacheVal = proc.toJavaObject(oldVal);
return cache.replace(cacheKey, oldCacheVal, cacheVal);
}
@@ -230,8 +232,8 @@ public class ScriptingJsCache {
* @return Previous value.
*/
public Object putIfAbsent(Object key, Object val) {
- Object cacheKey = JSONCacheObject.toSimpleObject(key);
- Object cacheVal = JSONCacheObject.toSimpleObject(val);
+ Object cacheKey = proc.toJavaObject(key);
+ Object cacheVal = proc.toJavaObject(val);
return cache.putIfAbsent(cacheKey, cacheVal);
}
http://git-wip-us.apache.org/repos/asf/incubator-ignite/blob/b19536b7/modules/core/src/main/java/org/apache/ignite/internal/processors/scripting/ScriptingObjectConverter.java
----------------------------------------------------------------------
diff --git a/modules/core/src/main/java/org/apache/ignite/internal/processors/scripting/ScriptingObjectConverter.java b/modules/core/src/main/java/org/apache/ignite/internal/processors/scripting/ScriptingObjectConverter.java
index a02a762..7e2758b 100644
--- a/modules/core/src/main/java/org/apache/ignite/internal/processors/scripting/ScriptingObjectConverter.java
+++ b/modules/core/src/main/java/org/apache/ignite/internal/processors/scripting/ScriptingObjectConverter.java
@@ -37,4 +37,23 @@ public class ScriptingObjectConverter {
public Object toJavaObject(Object o) {
return JSONCacheObject.toSimpleObject(o);
}
+
+ /**
+ * @param o Object from script.
+ * @return Object to store in cache.
+ */
+ public Object getField(String key, Object o) {
+ if (o instanceof JSONCacheObject)
+ return ((JSONCacheObject)o).getField(key);
+
+ return null;
+ }
+
+ /**
+ * @param o Object from script.
+ * @return Object to store in cache.
+ */
+ public Object getFields(Object o) {
+ return JSONCacheObject.toSimpleObject(o);
+ }
}