@@ -92,7 +92,7 @@ protected[core] class Parameters protected[entity] (private val params: Map[Para
9292 }
9393 val encrypt = p._2.encryption match {
9494 case (JsNull ) => None
95- case _ => Some (" encryption" -> p._2.encryption.toJson )
95+ case _ => Some (" encryption" -> p._2.encryption)
9696 }
9797 // Have do use this slightly strange construction to get the json object order identical.
9898 JsObject (ListMap () ++ encrypt ++ init ++ Map (" key" -> p._1.name.toJson, " value" -> p._2.value.toJson))
@@ -105,7 +105,7 @@ protected[core] class Parameters protected[entity] (private val params: Map[Para
105105 if (p._2.encryption == JsNull )
106106 p._2.value.toJson
107107 else
108- JsObject (" value" -> p._2.value.toJson, " encryption" -> p._2.encryption.toJson , " init" -> p._2.init.toJson)
108+ JsObject (" value" -> p._2.value.toJson, " encryption" -> p._2.encryption, " init" -> p._2.init.toJson)
109109 (p._1.name, newValue)
110110 }))
111111
@@ -148,7 +148,7 @@ protected[core] class Parameters protected[entity] (private val params: Map[Para
148148
149149/**
150150 * A ParameterName is a parameter name for an action or trigger to bind to its environment.
151- * It wraps a normalized string as a valueread type.
151+ * It wraps a normalized string as a value type.
152152 *
153153 * It is a value type (hence == is .equals, immutable and cannot be assigned null).
154154 * The constructor is private so that argument requirements are checked and normalized
@@ -175,10 +175,11 @@ protected[entity] class ParameterName protected[entity] (val name: String) exten
175175 *
176176 * @param v the value of the parameter, may be null
177177 * @param init if true, this parameter value is only offered to the action during initialization
178+ * @param encryptionDetails the name of the encrypter used to store the parameter.
178179 */
179180protected [entity] case class ParameterValue protected [entity] (private val v : JsValue ,
180181 val init : Boolean ,
181- val e : JsValue = JsNull ) {
182+ val encryptionDetails : Option [ JsString ] = None ) {
182183
183184 /** @return JsValue if defined else JsNull. */
184185 protected [entity] def value = Option (v) getOrElse JsNull
@@ -187,7 +188,7 @@ protected[entity] case class ParameterValue protected[entity] (private val v: Js
187188 protected [entity] def isDefined = value != JsNull
188189
189190 /** @return JsValue if defined else JsNull. */
190- protected [entity] def encryption = Option (e). getOrElse( JsNull )
191+ protected [entity] def encryption = encryptionDetails getOrElse JsNull
191192
192193 /**
193194 * The size of the ParameterValue entity as ByteSize.
@@ -217,7 +218,7 @@ protected[core] object Parameters extends ArgNormalizer[Parameters] {
217218 protected [core] def apply (p : String , v : String , init : Boolean = false ): Parameters = {
218219 require(p != null && p.trim.nonEmpty, " key undefined" )
219220 Parameters () + (new ParameterName (ArgNormalizer .trim(p)),
220- ParameterValue (Option (v).map(_.trim.toJson).getOrElse(JsNull ), init, JsNull ))
221+ ParameterValue (Option (v).map(_.trim.toJson).getOrElse(JsNull ), init, None ))
221222 }
222223
223224 /**
@@ -233,7 +234,7 @@ protected[core] object Parameters extends ArgNormalizer[Parameters] {
233234 protected [core] def apply (p : String , v : JsValue , init : Boolean ): Parameters = {
234235 require(p != null && p.trim.nonEmpty, " key undefined" )
235236 Parameters () + (new ParameterName (ArgNormalizer .trim(p)),
236- ParameterValue (Option (v).getOrElse(JsNull ), init, JsNull ))
237+ ParameterValue (Option (v).getOrElse(JsNull ), init, None ))
237238 }
238239
239240 /**
@@ -248,7 +249,7 @@ protected[core] object Parameters extends ArgNormalizer[Parameters] {
248249 protected [core] def apply (p : String , v : JsValue ): Parameters = {
249250 require(p != null && p.trim.nonEmpty, " key undefined" )
250251 Parameters () + (new ParameterName (ArgNormalizer .trim(p)),
251- ParameterValue (Option (v).getOrElse(JsNull ), false , JsNull ))
252+ ParameterValue (Option (v).getOrElse(JsNull ), false , None ))
252253 }
253254
254255 def readMergedList (value : JsValue ): Parameters =
@@ -261,11 +262,11 @@ protected[core] object Parameters extends ArgNormalizer[Parameters] {
261262 val paramVal : ParameterValue = tuple._2 match {
262263 case o : JsObject =>
263264 o.getFields(" value" , " init" , " encryption" ) match {
264- case Seq (v : JsValue , JsBoolean (i), e : JsValue ) =>
265- ParameterValue (v, i, e )
266- case _ => ParameterValue (o, false , JsNull )
265+ case Seq (v : JsValue , JsBoolean (i), e : JsString ) =>
266+ ParameterValue (v, i, Some (e) )
267+ case _ => ParameterValue (o, false , None )
267268 }
268- case v : JsValue => ParameterValue (v, false , JsNull )
269+ case v : JsValue => ParameterValue (v, false , None )
269270 }
270271 (key, paramVal)
271272 })
@@ -295,9 +296,13 @@ protected[core] object Parameters extends ArgNormalizer[Parameters] {
295296 val JsObject (o) = value
296297 o.foreach(i =>
297298 i._2.asJsObject.getFields(" value" , " init" , " encryption" ) match {
299+ case Seq (v : JsValue , JsBoolean (init), e : JsValue ) if e != JsNull =>
300+ val key = new ParameterName (i._1)
301+ val value = ParameterValue (v, init, Some (JsString (e.toString())))
302+ converted = converted + (key -> value)
298303 case Seq (v : JsValue , JsBoolean (init), e : JsValue ) =>
299304 val key = new ParameterName (i._1)
300- val value = ParameterValue (v, init, e )
305+ val value = ParameterValue (v, init, None )
301306 converted = converted + (key -> value)
302307 })
303308 if (converted.size == 0 ) {
@@ -325,17 +330,17 @@ protected[core] object Parameters extends ArgNormalizer[Parameters] {
325330 val key = new ParameterName (k)
326331 val value = ParameterValue (v, false )
327332 (key, value)
328- case Seq (JsString (k), v : JsValue , JsBoolean (i), e : JsValue ) =>
333+ case Seq (JsString (k), v : JsValue , JsBoolean (i), e : JsString ) =>
329334 val key = new ParameterName (k)
330- val value = ParameterValue (v, i, e )
335+ val value = ParameterValue (v, i, Some (e) )
331336 (key, value)
332337 case Seq (JsString (k), v : JsValue , JsBoolean (i)) =>
333338 val key = new ParameterName (k)
334339 val value = ParameterValue (v, i)
335340 (key, value)
336- case Seq (JsString (k), v : JsValue , e : JsValue ) if (i.asJsObject.fields.contains(" encryption" )) =>
341+ case Seq (JsString (k), v : JsValue , e : JsString ) if (i.asJsObject.fields.contains(" encryption" )) =>
337342 val key = new ParameterName (k)
338- val value = ParameterValue (v, false , e )
343+ val value = ParameterValue (v, false , None )
339344 (key, value)
340345 }
341346 })
0 commit comments