@@ -294,28 +294,31 @@ protected[core] object Parameters extends ArgNormalizer[Parameters] {
294294 */
295295 def read (params : Vector [JsValue ]) = Try {
296296 new Parameters (params.map {
297- _.asJsObject.getFields(" key" , " value" , " init" , " encryption" ) match {
298- case Seq (JsString (k), v : JsValue ) =>
299- val key = new ParameterName (k)
300- val value = ParameterValue (v, false )
301- (key, value)
302- case Seq (JsString (k), v : JsValue , JsBoolean (i)) =>
303- val key = new ParameterName (k)
304- val value = ParameterValue (v, i)
305- (key, value)
306- case Seq (JsString (k), v : JsValue , JsBoolean (i), JsString (e)) =>
307- val key = new ParameterName (k)
308- val value = ParameterValue (v, i, Some (e))
309- (key, value)
310- case Seq (JsString (k), v : JsValue , JsBoolean (i), JsNull ) =>
311- val key = new ParameterName (k)
312- val value = ParameterValue (v, i, None )
313- (key, value)
314- case Seq (JsString (k), v : JsValue , JsString (e)) =>
315- val key = new ParameterName (k)
316- val value = ParameterValue (v, false , Some (e))
317- (key, value)
318- }
297+ case o @ JsObject (fields) =>
298+ o.getFields(" key" , " value" , " init" , " encryption" ) match {
299+ case Seq (JsString (k), v : JsValue ) if fields.contains(" value" ) =>
300+ val key = new ParameterName (k)
301+ val value = ParameterValue (v, false )
302+ (key, value)
303+ case Seq (JsString (k), v : JsValue , JsBoolean (i)) =>
304+ val key = new ParameterName (k)
305+ val value = ParameterValue (v, i)
306+ (key, value)
307+ case Seq (JsString (k), v : JsValue , JsBoolean (i), JsString (e)) =>
308+ val key = new ParameterName (k)
309+ val value = ParameterValue (v, i, Some (e))
310+ (key, value)
311+ case Seq (JsString (k), v : JsValue , JsBoolean (i), JsNull ) =>
312+ val key = new ParameterName (k)
313+ val value = ParameterValue (v, i, None )
314+ (key, value)
315+ case Seq (JsString (k), v : JsValue , JsString (e))
316+ if fields.contains(" value" ) && fields.contains(" encryption" ) =>
317+ val key = new ParameterName (k)
318+ val value = ParameterValue (v, false , Some (e))
319+ (key, value)
320+ }
321+ case _ => deserializationError(" invalid parameter" )
319322 }.toMap)
320323 }
321324 }
0 commit comments