List of usage examples for jdk.nashorn.api.scripting ScriptObjectMirror getSlot
@Override public Object getSlot(final int index)
From source file:JavaScriptTest.java
public static String serialize(Object obj) { StringBuilder ret = new StringBuilder(); if (obj instanceof ScriptObjectMirror) { ScriptObjectMirror om = (ScriptObjectMirror) obj; //System.out.println(om+" isArray "+om.isArray()); //System.out.println(om+" isEmpty "+om.isEmpty()); //System.out.println(om+" isExtensible "+om.isExtensible()); //System.out.println(om+" isFrozen "+om.isFrozen()); //System.out.println(om+" isFunction "+om.isFunction()); //System.out.println(om+" isSealed "+om.isSealed()); //System.out.println(om+" isStrictFunction "+om.isStrictFunction()); //System.out.println(om+" getOwnKeys "+Arrays.asList(om.getOwnKeys(true))); if (om.isFunction()) { ret.append(om.toString());//from www .j a va2s . c om } else if (om.isArray()) { ret.append("["); //ret.append("isArray:"+om.toString()); for (int x = 0; x < om.size(); x++) { Object o = om.getSlot(x); ret.append(serialize(o)); if (x + 1 < om.size()) { ret.append(","); } } ret.append("]"); } else if (om.toString().indexOf("global") > -1) { Iterator<Map.Entry<String, Object>> it = om.entrySet().iterator(); while (it.hasNext()) { Map.Entry<String, Object> entry = it.next(); ret.append("var " + entry.getKey() + "=" + serialize(entry.getValue()) + ";\n"); } } else { ret.append("{"); Iterator<Map.Entry<String, Object>> it = om.entrySet().iterator(); while (it.hasNext()) { Map.Entry<String, Object> entry = it.next(); ret.append(entry.getKey() + ":" + serialize(entry.getValue())); if (it.hasNext()) { ret.append(","); } } ret.append("}"); } } else if (obj instanceof String) { ret.append("\"" + obj + "\""); } else { ret.append(obj); } return ret.toString(); }
From source file:com.threecrickets.jvm.json.nashorn.ScriptObjectMirrorEncoder.java
License:Mozilla Public License
public void encode(Object object, JsonContext context) throws IOException { ScriptObjectMirror scriptObjectMirror = (ScriptObjectMirror) object; Object wrapped = ScriptObjectMirror.unwrap(scriptObjectMirror, Context.getGlobal()); if (!(wrapped instanceof ScriptObjectMirror)) { context.encode(wrapped);//from ww w . j a v a2 s . co m return; } if (scriptObjectMirror.isArray()) { context.out.append('['); int length = scriptObjectMirror.size(); if (length > 0) { context.newline(); for (int i = 0; i < length; i++) { Object value = scriptObjectMirror.getSlot(i); context.indentNested(); context.nest().encode(value); if (i < length - 1) context.comma(); } context.newline(); context.indent(); } context.out.append(']'); } else { context.out.append('{'); String[] keys = scriptObjectMirror.getOwnKeys(true); int length = keys.length; if (length > 0) { context.newline(); for (int i = 0; i < length; i++) { String key = keys[i]; Object value = scriptObjectMirror.get(key); context.indentNested(); context.quoted(key); context.colon(); context.nest().encode(value); if (i < length - 1) context.comma(); } context.newline(); context.indent(); } context.out.append('}'); } }
From source file:org.bson.jvm.nashorn.ScriptObjectMirrorCodec.java
License:Apache License
@SuppressWarnings("unchecked") public void encode(BsonWriter writer, ScriptObjectMirror scriptObjectMirror, EncoderContext encoderContext) { Object wrapped = ScriptObjectMirror.unwrap(scriptObjectMirror, Context.getGlobal()); if (!(wrapped instanceof ScriptObjectMirror)) { // Attempt to encode the wrapped object Codec<Object> codec = null; try {//from w w w .j a v a 2s . com codec = (Codec<Object>) codecRegistry.get(wrapped.getClass()); } catch (CodecConfigurationException x) { } if (codec != null) { codec.encode(writer, wrapped, encoderContext); return; } } if (scriptObjectMirror.isArray()) { writer.writeStartArray(); for (int i = 0, length = scriptObjectMirror.size(); i < length; i++) { Object item = scriptObjectMirror.getSlot(i); BsonUtil.writeChild(item, writer, encoderContext, codecRegistry); } writer.writeEndArray(); } else { writer.writeStartDocument(); for (String key : scriptObjectMirror.getOwnKeys(true)) { Object value = scriptObjectMirror.get(key); writer.writeName(key); BsonUtil.writeChild(value, writer, encoderContext, codecRegistry); } writer.writeEndDocument(); } }
From source file:org.eclipse.wst.jsdt.internal.esprima.DOMASTConverter.java
License:Open Source License
private void setRange(final ScriptObjectMirror object, final ASTNode node) { Object o = object.getMember("range"); //$NON-NLS-1$ if (ScriptObjectMirror.isUndefined(o)) return;/*from www .jav a 2 s.c om*/ ScriptObjectMirror range = (ScriptObjectMirror) o; Number x = (Number) range.getSlot(0); Number y = (Number) range.getSlot(1); final int startPosition = x.intValue(); final int length = y.intValue() - x.intValue(); node.setSourceRange(startPosition, length); switch (node.getNodeType()) { case ASTNode.FUNCTION_DECLARATION_STATEMENT: FunctionDeclarationStatement fd = (FunctionDeclarationStatement) node; if (fd.getDeclaration().getJavadoc() == null) fd.getDeclaration().setSourceRange(startPosition, length); else { final int jsdocStart = fd.getDeclaration().getJavadoc().getStartPosition(); fd.getDeclaration().setSourceRange(jsdocStart, length + startPosition - jsdocStart); } break; case ASTNode.FUNCTION_EXPRESSION: FunctionExpression fe = (FunctionExpression) node; if (fe.getMethod().getJavadoc() == null) fe.getMethod().setSourceRange(startPosition, length); else { final int jsdocStart = fe.getMethod().getJavadoc().getStartPosition(); fe.getMethod().setSourceRange(jsdocStart, length + startPosition - jsdocStart); } break; case ASTNode.FUNCTION_DECLARATION: FunctionDeclaration fdec = (FunctionDeclaration) node; if (fdec.getJavadoc() != null) { final int jsdocStart = fdec.getJavadoc().getStartPosition(); fdec.setSourceRange(jsdocStart, length + startPosition - jsdocStart); } break; case ASTNode.VARIABLE_DECLARATION_STATEMENT: VariableDeclarationStatement vds = (VariableDeclarationStatement) node; if (vds.getJavadoc() != null) { final int jsdocStart = vds.getJavadoc().getStartPosition(); vds.setSourceRange(jsdocStart, length + startPosition - jsdocStart); } break; } }
From source file:org.eclipse.wst.jsdt.internal.esprima.EsprimaParser.java
License:Open Source License
/** * Add the errors reported on the "errors" array to * result.//from w w w .j a v a2s . co m * * @param jsObject * @param result */ private void reportErrors(final ScriptObjectMirror jsObject, final JavaScriptUnit result) { ScriptObjectMirror errors = (ScriptObjectMirror) jsObject.getMember("errors"); //$NON-NLS-1$ if (errors == null || errors.size() < 1) return; DefaultProblem[] problems = new DefaultProblem[errors.size()]; for (int i = 0; i < errors.size(); ++i) problems[i] = createProblem(((ScriptObjectMirror) errors.getSlot(i))); result.setFlags(ASTNode.MALFORMED); result.setProblems(problems); }
From source file:org.eclipse.wst.jsdt.internal.esprima.EsprimaParser.java
License:Open Source License
/** * @param jsObject// w ww .j a v a 2 s.c o m * @param result */ private void buildComments(ScriptObjectMirror jsObject, JavaScriptUnit result, AST t) { ScriptObjectMirror comments = (ScriptObjectMirror) jsObject.getMember("comments"); //$NON-NLS-1$ int commentSize = comments.size(); Comment[] resultComments = new Comment[commentSize]; for (int i = 0; i < commentSize; ++i) { ScriptObjectMirror obj = (ScriptObjectMirror) comments.getSlot(i); Comment newComment = createComment(obj, t); newComment.setAlternateRoot(result); resultComments[i] = newComment; } result.setCommentTable(resultComments); }
From source file:org.eclipse.wst.jsdt.internal.esprima.EsprimaParser.java
License:Open Source License
/** * @param m/* ww w . ja v a2 s.c o m*/ * @return */ static Comment createComment(ScriptObjectMirror m, AST t) { String type = (String) m.getMember("type"); //$NON-NLS-1$ String value = (String) m.getMember("value"); //$NON-NLS-1$ Comment $ = "Line".equals(type) ? t.newLineComment() //$NON-NLS-1$ : !value.startsWith("*") ? t.newBlockComment() : t.newJSdoc(); //$NON-NLS-1$ if ($.isDocComment()) ((JSdoc) $).setComment("/*" + value + "*/"); //$NON-NLS-1$//$NON-NLS-2$ ScriptObjectMirror r = (ScriptObjectMirror) m.getMember("range"); //$NON-NLS-1$ Number x = (Number) r.getSlot(0); Number y = (Number) r.getSlot(1); $.setSourceRange(x.intValue(), y.intValue() - x.intValue()); return $; }