@SuppressWarnings("unchecked") private Object extractListFromScriptObjectMirror(final String path, final Object value, final Class<?> typeCheck) { if (value instanceof ScriptObjectMirror) { final ScriptObjectMirror mirror = ((ScriptObjectMirror) value); if (!mirror.isArray()) { throw new IllegalArgumentException("Path must resolve to a JS array or java.util.List path = " + path); } List<Object> list = new ArrayList(mirror.size()); for (int index = 0; index < mirror.size(); index++) { final Object item = mirror.getSlot(index); if (item == null) { throw new IllegalArgumentException("Path must resolve to a list of " + typeCheck.getName() + " issue at index " + index + " but item is null path is " + path); } if (!typeCheck.isAssignableFrom(item.getClass())) { throw new IllegalArgumentException("Path must resolve to a list of " + typeCheck.getName() + " issue at index " + index + "but item is " + item.getClass().getName() + " path is " + path); } list.add(item); } return list; } else if (value instanceof List) { return value; } else { throw new IllegalArgumentException("Path must resolve to a JS array or java.util.List path = " + path); } }
Object[] array = new Object[scriptObjectMirror.size()];
return SerializableJsFunction.toSerializableForm(scriptObjectMirror); } else if (scriptObjectMirror.isArray()) { List<Serializable> arrayItems = new ArrayList<>(scriptObjectMirror.size()); scriptObjectMirror.values().forEach(v -> { Object serializedObj = toJsSerializable(v);
return SerializableJsFunction.toSerializableForm(scriptObjectMirror); } else if (scriptObjectMirror.isArray()) { List<Serializable> arrayItems = new ArrayList<>(scriptObjectMirror.size()); scriptObjectMirror.values().forEach(v -> { Object serializedObj = toJsSerializable(v);
final List<String> commands; if (jsCommands != null) { commands = new ArrayList<>(jsCommands.size()); ScriptUtils.fillStringCollection(jsCommands, commands); } else
public JsonArray unwrapJsonArray(ScriptObjectMirror obj) { JsonArray unwrapped = new JsonArray(); long len = (long) obj.size(); for (int i = 0;i < len;i++) { Object value = obj.get("" + i); if (value instanceof ScriptObjectMirror) { value = unwrapJsonElement((ScriptObjectMirror) value); } unwrapped.add(value); } return unwrapped; }
@Test public void testListNew() { runGroovy("collection/ListApi", "newArrayList"); assertEquals(Collections.emptyList(), o); o = null; runJavaScript("collection/ListApi", "newArrayList"); ScriptObjectMirror so = (ScriptObjectMirror) o; assertEquals(0, so.size()); o = null; runRuby("collection/ListApi", "newArrayList"); assertEquals(Collections.emptyList(), o); o = null; // runScala("collection/ListApi", "newArrayList"); // assertEquals(Collections.emptyList(), o); // o = null; }
@Test public void testListAdd() { runGroovy("collection/ListApi", "add"); assertEquals(Collections.singletonList("foo"), o); o = null; runJavaScript("collection/ListApi", "add"); ScriptObjectMirror so = (ScriptObjectMirror) o; assertEquals(1, so.size()); assertEquals("foo", so.get("0")); o = null; runRuby("collection/ListApi", "add"); assertEquals(Collections.singletonList("foo"), o); o = null; // runScala("collection/ListApi", "add"); // assertEquals(Collections.singletonList("foo"), o); // o = null; }
@Test public void testAsList() { runGroovy("collection/ListApi", "asList"); assertEquals(Arrays.asList("foo", "bar", "juu"), o); o = null; runJavaScript("collection/ListApi", "asList"); ScriptObjectMirror so = (ScriptObjectMirror) o; assertEquals(3, so.size()); assertEquals("foo", so.get("0")); assertEquals("bar", so.get("1")); assertEquals("juu", so.get("2")); o = null; runRuby("collection/ListApi", "asList"); assertEquals(Arrays.asList("foo", "bar", "juu"), o); o = null; } }