public bool MatchCriteria(ScriptRunner.SingleRun run, DocumentsOperationContext context, object document, JsBlittableBridge.IResultModifier modifier, ref BlittableJsonReaderObject transformResult)
        {
            using (var result = run.Run(context, context, "execute", new[] { document }))
            {
                var resultAsBool = result.BooleanValue;
                if (resultAsBool != null)
                {
                    return(resultAsBool.Value);
                }

                transformResult = result.TranslateToObject(context, modifier);
                return(transformResult != null);
            }
        }
Example #2
0
            public object Translate(ScriptRunnerResult result, JsonOperationContext context, JsBlittableBridge.IResultModifier modifier = null, BlittableJsonDocumentBuilder.UsageMode usageMode = BlittableJsonDocumentBuilder.UsageMode.None)
            {
                var val = result.RawJsValue;

                if (val.IsString())
                {
                    return(val.AsString());
                }
                if (val.IsBoolean())
                {
                    return(val.AsBoolean());
                }
                if (val.IsObject())
                {
                    return(result.TranslateToObject(context, modifier, usageMode));
                }
                if (val.IsNumber())
                {
                    return(val.AsNumber());
                }
                if (val.IsNull() || val.IsUndefined())
                {
                    return(null);
                }
                if (val.IsArray())
                {
                    throw new InvalidOperationException("Returning arrays from scripts is not supported, only objects or primitves");
                }
                throw new NotSupportedException("Unable to translate " + val.Type);
            }
Example #3
0
        public BlittableJsonReaderObject TranslateToObject(JsonOperationContext context, JsBlittableBridge.IResultModifier modifier = null, BlittableJsonDocumentBuilder.UsageMode usageMode = BlittableJsonDocumentBuilder.UsageMode.None)
        {
            if (IsNull)
            {
                return(null);
            }
            var obj = _instance.AsObject();

            return(JsBlittableBridge.Translate(context, _parent.ScriptEngine, obj, modifier, usageMode));
        }