public static T GetOptions <T>(string optionsAsStringOrParameterName, ValueTokenType optionsType, BlittableJsonReaderObject parameters, JsonOperationContext context) { BlittableJsonReaderObject optionsJson; if (optionsType == ValueTokenType.Parameter) { if (parameters == null) { throw new ArgumentNullException(nameof(parameters)); } if (parameters.TryGetMember(optionsAsStringOrParameterName, out var optionsObject) == false) { throw new InvalidOperationException($"Parameter '{optionsAsStringOrParameterName}' containing '{typeof(T).Name}' was not present in the list of parameters."); } optionsJson = optionsObject as BlittableJsonReaderObject; if (optionsJson == null) { throw new InvalidOperationException($"Parameter '{optionsAsStringOrParameterName}' should contain JSON object."); } } else if (optionsType == ValueTokenType.String) { optionsJson = IndexReadOperation.ParseJsonStringIntoBlittable(optionsAsStringOrParameterName, context); } else { throw new InvalidOperationException($"Unknown options type '{optionsType}'."); } return(DocumentConventions.DefaultForServer.Serialization.DefaultConverter.FromBlittable <T>(optionsJson, "options")); }
public SuggestionOptions GetOptions(JsonOperationContext context, BlittableJsonReaderObject parameters) { if (_options != null) { return(_options); } if (_optionsAsStringOrParameterName == null) { return(null); } BlittableJsonReaderObject optionsJson; if (_optionsType == AST.ValueTokenType.Parameter) { if (parameters == null) { throw new ArgumentNullException(nameof(parameters)); } if (parameters.TryGetMember(_optionsAsStringOrParameterName, out var optionsObject) == false) { throw new InvalidOperationException($"Parameter '{_optionsAsStringOrParameterName}' containing '{nameof(SuggestionOptions)}' was not present in the list of parameters."); } optionsJson = optionsObject as BlittableJsonReaderObject; if (optionsJson == null) { throw new InvalidOperationException($"Parameter '{_optionsAsStringOrParameterName}' should contain JSON object."); } } else if (_optionsType == AST.ValueTokenType.String) { optionsJson = IndexReadOperation.ParseJsonStringIntoBlittable(_optionsAsStringOrParameterName, context); } else { throw new InvalidOperationException($"Unknown options type '{_optionsType}'."); } var options = (SuggestionOptions)EntityToBlittable.ConvertToEntity(typeof(SuggestionOptions), "suggestion/options", optionsJson, DocumentConventions.Default); if (_optionsType == AST.ValueTokenType.String) { _options = options; } return(options); }