private void setupDebugObject(final V8 runtime) { V8Object outerDebug = runtime.getObject(DEBUG_OBJECT_NAME); try { debugObject = outerDebug.getObject(V8_DEBUG_OBJECT); } finally { outerDebug.close(); } }
debugObject = debugScope.getObject(V8_DEBUG_OBJECT); } finally { debugScope.close();
/** * Returns the version of Node.js that is runtime is built against. * This uses process.versions.node to get the version. * * @return The version of Node.js. */ public String getNodeVersion() { if (nodeVersion != null) { return nodeVersion; } V8Object process = null; V8Object versions = null; try { process = v8.getObject(PROCESS); versions = process.getObject(VERSIONS); nodeVersion = versions.getString(NODE); } finally { safeRelease(process); safeRelease(versions); } return nodeVersion; }
private void sendCompileEvent(final V8Object eventData) throws IOException { if (!isConnected()) { return; } //send event to debugger int type = eventData.getInteger("type_"); V8Object script = eventData.getObject("script_"); V8Object event = null; V8Array params = new V8Array(runtime); try { params.push(script); params.push(type); event = debugObject.executeObjectFunction(MAKE_COMPILE_EVENT, params); String json = event.executeStringFunction("toJSONProtocol", null); if (traceCommunication) { System.out.println("Sending event (CompileEvent):\n" + json.substring(0, Math.min(json.length(), 1000))); } if (json.length() > 0) { sendJson(json); } } finally { params.close(); script.close(); if (event != null) { event.close(); } } }
private void setupBreakpointHandler() { BreakpointHandler handler = new BreakpointHandler(); debugObject.registerJavaMethod(handler, DEBUG_BREAK_HANDLER); V8Function debugHandler = null; V8Array parameters = null; try { debugHandler = (V8Function) debugObject.getObject(DEBUG_BREAK_HANDLER); parameters = new V8Array(runtime); parameters.push(debugHandler); debugObject.executeFunction(SET_LISTENER, parameters); } finally { if ((debugHandler != null) && !debugHandler.isReleased()) { debugHandler.close(); } if ((parameters != null) && !parameters.isReleased()) { parameters.close(); } } }
private void setupEventHandler() { EventHandler handler = new EventHandler(); debugObject.registerJavaMethod(handler, DEBUG_BREAK_HANDLER); V8Function debugHandler = null; V8Array parameters = null; try { debugHandler = (V8Function) debugObject.getObject(DEBUG_BREAK_HANDLER); parameters = new V8Array(runtime); parameters.push(debugHandler); debugObject.executeFunction(SET_LISTENER, parameters); } finally { if ((debugHandler != null) && !debugHandler.isReleased()) { debugHandler.close(); } if ((parameters != null) && !parameters.isReleased()) { parameters.close(); } } }
private void setupDebugObject(final V8 runtime) { V8Object outerDebug = runtime.getObject(DEBUG_OBJECT_NAME); try { debugObject = outerDebug.getObject(V8_DEBUG_OBJECT); } finally { outerDebug.close(); } }
@Test(expected = UnsupportedOperationException.class) public void testGetObjectUndefined() { V8Object undefined = v8.getObject("object"); undefined.getObject("foo"); }
@Test(expected = IllegalArgumentException.class) public void testGetNullKey_Object() { V8Object v8Object = new V8Object(v8); try { v8Object.getObject(null); } finally { v8Object.close(); } }
@Test public void testGetNull() { V8Object v8Object = v8.executeObjectScript("x = {a : null}; x;"); assertNull(v8Object.getObject("a")); v8Object.close(); }
@Test(expected = V8ResultUndefined.class) public void testGetObjectNotObject() { V8Object v8Object = new V8Object(v8); v8Object.add("hello", 7); try { v8Object.getObject("hello"); } finally { v8Object.close(); } }
@Test public void testAddNullAsString() { V8Object object = new V8Object(v8); object.add("foo", (String) null); assertNull(object.getObject("foo")); object.close(); }
@Test public void testAddNullAsObject() { V8Object object = new V8Object(v8); object.add("foo", (V8Object) null); assertNull(object.getObject("foo")); object.close(); }
@Test public void testNestedInteger() { v8.executeVoidScript("foo = {bar: {key:6}}"); V8Object foo = v8.getObject("foo"); V8Object bar = foo.getObject("bar"); assertEquals(6, bar.getInteger("key")); foo.close(); bar.close(); }
@Test public void testAddUndefinedAsObject() { V8Object object = new V8Object(v8); object.add("foo", V8.getUndefined()); assertEquals(V8.getUndefined(), object.getObject("foo")); object.close(); }
@Test public void testNestedBoolean() { v8.executeVoidScript("foo = {bar: {key:true}}"); V8Object foo = v8.getObject("foo"); V8Object bar = foo.getObject("bar"); assertTrue(bar.getBoolean("key")); foo.close(); bar.close(); }
@Test public void testNestedString() { v8.executeVoidScript("foo = {bar: {key:'string'}}"); V8Object foo = v8.getObject("foo"); V8Object bar = foo.getObject("bar"); assertEquals("string", bar.getString("key")); foo.close(); bar.close(); }
@Test public void testNestedDouble() { v8.executeVoidScript("foo = {bar: {key:6.1}}"); V8Object foo = v8.getObject("foo"); V8Object bar = foo.getObject("bar"); assertEquals(6.1, bar.getDouble("key"), 0.0001); foo.close(); bar.close(); }
@Test public void testNestedObjectScript() { V8Object result = v8.executeObjectScript("person = {name : {first : 'john', last:'smith'} }; person;"); V8Object name = result.getObject("name"); assertEquals("john", name.getString("first")); assertEquals("smith", name.getString("last")); result.close(); name.close(); }
@Test public void testAddNull() { V8Object v8Object = new V8Object(v8); v8Object.addNull("foo"); assertEquals("foo", v8Object.getKeys()[0]); assertEquals(NULL, v8Object.getType("foo")); assertNull(v8Object.getObject("foo")); v8Object.close(); }