List of usage examples for jdk.nashorn.api.scripting ScriptObjectMirror isUndefined
public static boolean isUndefined(final Object obj)
From source file:com.baasbox.service.scripting.js.NashornMapper.java
License:Apache License
private JsonNode convertMirror(ScriptObjectMirror mirror) throws ScriptEvalException { if (mirror == null) { return NullNode.getInstance(); } else if (ScriptObjectMirror.isUndefined(mirror)) { return MissingNode.getInstance(); } else if (mirror.isFunction()) { return MissingNode.getInstance(); } else if (mirror.isArray()) { Collection<Object> values = mirror.values(); ArrayNode node = Json.mapper().createArrayNode(); for (Object o : values) { JsonNode e = convertDeepJson(o); if (e.isMissingNode()) { continue; }/*w w w . j a v a 2 s .c o m*/ node.add(e); } return node; } else if (mirror.hasMember("toJSON")) { Object toJSON = mirror.callMember("toJSON"); return convertDeepJson(toJSON); } else { ObjectNode obj = Json.mapper().createObjectNode(); Set<Map.Entry<String, Object>> entries = mirror.entrySet(); for (Map.Entry<String, Object> e : entries) { Object obv = e.getValue(); JsonNode jsonNode = convertDeepJson(obv); if (jsonNode.isMissingNode()) { continue; } obj.put(e.getKey(), jsonNode); } return obj; } }
From source file:com.bytelightning.opensource.pokerface.ScriptResponseProducer.java
License:Open Source License
/** * {@inheritDoc}/*from w w w . j a v a2s. c o m*/ * This method actually does all the work of this class by invoking the endpoint, and processing it's result. */ @SuppressWarnings("unchecked") @Override public HttpResponse generateResponse() { Object result; ScriptObjectMirror som; // First call the endpoint to obtain a result which will be either an HttpResponse (in which case our work is done), or a ScriptObjectMirror with properties to create an HttpResponse ourselves. try { result = endpoint.callMember("generateResponse", request, context); if (result instanceof HttpResponse) { this.setResponse((HttpResponse) result); return response; } som = (ScriptObjectMirror) result; } catch (Exception ex) { setException(ex); return response; } Object obj; // Interpret the http statusCode int statusCode; obj = som.getMember("statusCode"); if ((obj == null) || ScriptObjectMirror.isUndefined(obj)) statusCode = HttpStatus.SC_OK; else if (obj instanceof Number) statusCode = ((Number) obj).intValue(); else if (obj instanceof ScriptObjectMirror) statusCode = (int) (((ScriptObjectMirror) obj).toNumber() + Double.MIN_VALUE); else statusCode = Integer.parseInt(obj.toString()); // Interpret the http reasonPhrase String reasonPhrase; obj = som.getMember("reasonPhrase"); if ((obj == null) || ScriptObjectMirror.isUndefined(obj)) reasonPhrase = EnglishReasonPhraseCatalog.INSTANCE.getReason(statusCode, Locale.US); else reasonPhrase = obj.toString(); // Create a basic response BasicHttpResponse response = new BasicHttpResponse(request.getProtocolVersion(), statusCode, reasonPhrase); // Interpret the headers supplied by the endpoint. obj = som.getMember("headers"); if ((obj != null) && (!ScriptObjectMirror.isUndefined(obj))) { List<ScriptObjectMirror> headers; if (obj instanceof List<?>) headers = (List<ScriptObjectMirror>) obj; else { headers = new ArrayList<ScriptObjectMirror>(); if ((obj instanceof ScriptObjectMirror) && ((ScriptObjectMirror) obj).isArray()) { for (Object sobj : ((ScriptObjectMirror) obj).values()) headers.add((ScriptObjectMirror) sobj); } else Logger.error("The endpoint at " + request.getRequestLine().getUri() + " returned an illegal headers list [class=" + obj.getClass().getName() + "]"); } for (ScriptObjectMirror hdr : headers) { for (String key : hdr.keySet()) { Object value = hdr.getMember(key); response.addHeader(key, ConvertHeaderToString(value)); } } } // Interpret the content type of the response data. ContentType ct = ContentType.DEFAULT_TEXT; if (response.getFirstHeader("Content-Type") != null) ct = ContentType.parse(response.getFirstHeader("content-type").getValue()); obj = som.getMember("mimeType"); if ((obj != null) && (!ScriptObjectMirror.isUndefined(obj))) ct = ContentType.create(obj.toString(), ct.getCharset()); obj = som.getMember("charset"); if ((obj != null) && (!ScriptObjectMirror.isUndefined(obj))) ct = ContentType.create(ct.getMimeType(), obj.toString()); obj = som.getMember("completion"); if ((obj != null) && (!ScriptObjectMirror.isUndefined(obj))) if (((ScriptObjectMirror) obj).isFunction()) completionCallback = (ScriptObjectMirror) obj; // Create an HttpEntity to represent the content. obj = som.getMember("content"); if ((obj != null) && (!ScriptObjectMirror.isUndefined(obj))) { HttpEntity entity; if ((obj instanceof ScriptObjectMirror) && ((ScriptObjectMirror) obj).isFunction()) entity = new NJavascriptFunctionEntity(request.getRequestLine().getUri(), endpoint, (ScriptObjectMirror) obj, ct, response, context); else { entity = Utils.WrapObjWithHttpEntity(obj, ct); if (entity == null) Logger.error("The endpoint at " + request.getRequestLine().getUri() + " returned an unknown content type [class=" + obj.getClass().getName() + "]"); } if (entity != null) response.setEntity(entity); } else // Normally setting the HttpEntity into the response would set the content-type, but we will have to specify it ourselves in this case. response.setHeader("Content-Type", ct.toString()); // Let our superclass know what the endpoint has provided. this.setResponse(response); String id = (String) context.getAttribute("pokerface.txId"); Logger.info("[client<-endpoint] " + id + " " + response.getStatusLine()); return response; }
From source file:de.axelfaust.alfresco.nashorn.repo.utils.SpecialModuleHandler.java
License:Open Source License
/** * {@inheritDoc}//from w w w. ja v a 2 s. c o m */ @Override public Object getMember(final String name) { LOGGER.debug("Handling getMember {} on {}", name, this.delegate.isFunction() ? this.delegate.getMember("name") : new NativeLogMessageArgumentWrapper(this.delegate)); // can't handle callerProvided for getMember final AtomicReference<Object> resultRef = new AtomicReference<>(); if (this.callerTagged) { LOGGER.debug("Tagging callerUrl {}", this.callerUrl); this.withTaggedCallerFn.withTaggedCaller(() -> { resultRef.set(this.delegate.getMember(name)); }, this.callerUrl); } else { resultRef.set(this.delegate.getMember(name)); } Object result = resultRef.get(); LOGGER.debug("getMember {} yielded {}", name, result instanceof JSObject ? (((JSObject) result).isFunction() ? ((JSObject) result).getMember("name") : new NativeLogMessageArgumentWrapper((JSObject) result)) : result); if (result instanceof JSObject) { final JSObject scriptResult = (JSObject) result; if (scriptResult.isFunction() || (!scriptResult.isArray() && !ScriptObjectMirror.isUndefined(scriptResult))) { LOGGER.debug("Wrapping function result {} of getMember in special module handler", scriptResult.isFunction() ? scriptResult.getMember("name") : new NativeLogMessageArgumentWrapper(scriptResult)); result = new SpecialModuleHandler(scriptResult, this.callerProvided, this.callerTagged, this.callerUrl, this.withTaggedCallerFn); if (scriptResult.isFunction()) { ((SpecialModuleHandler) result).setThis(this.delegate, this); } } } return result; }
From source file:de.axelfaust.alfresco.nashorn.repo.utils.SpecialModuleHandler.java
License:Open Source License
/** * {@inheritDoc}/*from www . j ava 2s. co m*/ */ @Override public Object getSlot(final int slot) { LOGGER.debug("Handling getSlot {} on {}", slot, this.delegate.isFunction() ? this.delegate.getMember("name") : new NativeLogMessageArgumentWrapper(this.delegate)); // can't handle callerProvided for getSlot final AtomicReference<Object> resultRef = new AtomicReference<>(); if (this.callerTagged) { LOGGER.debug("Tagging callerUrl {}", this.callerUrl); this.withTaggedCallerFn.withTaggedCaller(() -> { resultRef.set(this.delegate.getSlot(slot)); }, this.callerUrl); } else { resultRef.set(this.delegate.getSlot(slot)); } Object result = resultRef.get(); LOGGER.debug("getSlot {} yielded {}", slot, result instanceof JSObject ? (((JSObject) result).isFunction() ? ((JSObject) result).getMember("name") : new NativeLogMessageArgumentWrapper((JSObject) result)) : result); if (result instanceof JSObject) { final JSObject scriptResult = (JSObject) result; if (scriptResult.isFunction() || (!scriptResult.isArray() && !ScriptObjectMirror.isUndefined(scriptResult))) { LOGGER.debug("Wrapping function result {} of getSlot in special module handler", scriptResult.isFunction() ? scriptResult.getMember("name") : new NativeLogMessageArgumentWrapper(scriptResult)); result = new SpecialModuleHandler(scriptResult, this.callerProvided, this.callerTagged, this.callerUrl, this.withTaggedCallerFn); if (scriptResult.isFunction()) { ((SpecialModuleHandler) result).setThis(this.delegate, this); } } } return result; }
From source file:de.axelfaust.alfresco.nashorn.repo.utils.SpecialModuleHandler.java
License:Open Source License
/** * {@inheritDoc}//w ww.ja v a2s . co m */ @Override public Collection<Object> values() { LOGGER.debug("Handling values on {}", this.delegate.isFunction() ? this.delegate.getMember("name") : new NativeLogMessageArgumentWrapper(this.delegate)); // can't handle callerProvided for values final AtomicReference<Collection<Object>> resultRef = new AtomicReference<>(); if (this.callerTagged) { LOGGER.debug("Tagging callerUrl {}", this.callerUrl); this.withTaggedCallerFn.withTaggedCaller(() -> { resultRef.set(this.delegate.values()); }, this.callerUrl); } else { resultRef.set(this.delegate.values()); } final Collection<Object> result = resultRef.get(); LOGGER.debug("values yielded {}", result); final List<Object> resultList = new ArrayList<>(); for (final Object resultElement : result) { if (resultElement instanceof JSObject) { final JSObject scriptResult = (JSObject) resultElement; if (scriptResult.isFunction() || (!scriptResult.isArray() && !ScriptObjectMirror.isUndefined(scriptResult))) { LOGGER.debug("Wrapping function result {} of values in special module handler", scriptResult.isFunction() ? scriptResult.getMember("name") : new NativeLogMessageArgumentWrapper(scriptResult)); final Object resultElementMod = new SpecialModuleHandler(scriptResult, this.callerProvided, this.callerTagged, this.callerUrl, this.withTaggedCallerFn); if (scriptResult.isFunction()) { ((SpecialModuleHandler) resultElementMod).setThis(this.delegate, this); } resultList.add(resultElementMod); } else { resultList.add(resultElement); } } else { resultList.add(resultElement); } } return resultList; }
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 w w w.jav a 2s .c o m 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.DOMASTConverter.java
License:Open Source License
private JSdoc buildJSDoc(ScriptObjectMirror object) { if (!object.hasMember("leadingComments")) //$NON-NLS-1$ return null; Object commentObj = object.getMember("leadingComments"); //$NON-NLS-1$ if (ScriptObjectMirror.isUndefined(commentObj)) return null; ScriptObjectMirror comments = (ScriptObjectMirror) commentObj; Object[] arrayElements = comments.entrySet().toArray(); for (int i = 0; i < arrayElements.length; ++i) { Map.Entry<String, Object> entry = (java.util.Map.Entry<String, Object>) arrayElements[i]; Comment comment = EsprimaParser.createComment((ScriptObjectMirror) entry.getValue(), this.ast); if (comment.isDocComment()) return (JSdoc) comment; }/*from ww w. j a v a2 s . c o m*/ return null; }
From source file:org.siphon.common.js.JsTypeUtil.java
License:Open Source License
public static boolean isNull(Object object) { if (object == null) return true; if (object instanceof ScriptObjectMirror) { ScriptObjectMirror m = (ScriptObjectMirror) object; if (m.isInstanceOf(NativeString.class) && m.isEmpty()) return true; // isEmpty() true) if (ScriptObjectMirror.isUndefined(m)) { // null? // undefined return true; }//w ww. j av a 2 s. c o m } if (object instanceof String && ((String) object).length() == 0) // ? // sobj // // NativeString // // SOM return true; if (object instanceof Undefined) { return true; } return false; }
From source file:org.wso2.carbon.uuf.renderablecreator.hbs.internal.serialize.ScriptObjectMirrorSerializer.java
License:Open Source License
/** * {@inheritDoc}/* w w w .j a v a 2 s . c o m*/ */ @Override public JsonElement serialize(ScriptObjectMirror jsObj, Type type, JsonSerializationContext context) { if ((jsObj == null) || ScriptObjectMirror.isUndefined(jsObj) || jsObj.isFunction()) { return JsonNull.INSTANCE; } if (jsObj.isArray()) { JsonArray jsonArray = new JsonArray(); for (Object item : jsObj.values()) { jsonArray.add(serializeFurther(context.serialize(item), context)); } return jsonArray; } if (jsObj.isEmpty()) { return new JsonObject(); } JsonObject jsonObject = new JsonObject(); for (String key : jsObj.getOwnKeys(false)) { jsonObject.add(key, serializeFurther(jsObj.getMember(key), context)); } return jsonObject; }
From source file:org.wso2.carbon.uuf.renderablecreator.hbs.internal.serialize.ScriptObjectMirrorSerializer.java
License:Open Source License
private JsonElement serializeFurther(Object src, JsonSerializationContext context) { return ScriptObjectMirror.isUndefined(src) ? JsonNull.INSTANCE : context.serialize(src); }