Skip to content

Commit 34be53a

Browse files
committed
Fix #6919: add token to ADT, parsing, serialization
1 parent fc4e2e3 commit 34be53a

File tree

4 files changed

+31
-15
lines changed

4 files changed

+31
-15
lines changed

form-runner/shared/src/main/scala/org/orbeon/oxf/fr/email/EmailMetadata.scala

+9-9
Original file line numberDiff line numberDiff line change
@@ -75,15 +75,15 @@ object EmailMetadata {
7575
object Param extends Enum[Param] {
7676
case class ControlValueParam (name: String, controlName: String) extends Param
7777
case class ExpressionParam (name: String, expression : String) extends Param
78-
case class AllControlValuesParam (name: String) extends Param
79-
case class LinkToEditPageParam (name: String) extends Param
80-
case class LinkToViewPageParam (name: String) extends Param
81-
case class LinkToNewPageParam (name: String) extends Param
82-
case class LinkToSummaryPageParam(name: String) extends Param
83-
case class LinkToHomePageParam (name: String) extends Param
84-
case class LinkToFormsPageParam (name: String) extends Param
85-
case class LinkToAdminPageParam (name: String) extends Param
86-
case class LinkToPdfParam (name: String) extends Param
78+
case class AllControlValuesParam (name: String ) extends Param
79+
case class LinkToEditPageParam (name: String, token: Boolean ) extends Param
80+
case class LinkToViewPageParam (name: String, token: Boolean ) extends Param
81+
case class LinkToNewPageParam (name: String ) extends Param
82+
case class LinkToSummaryPageParam(name: String ) extends Param
83+
case class LinkToHomePageParam (name: String ) extends Param
84+
case class LinkToFormsPageParam (name: String ) extends Param
85+
case class LinkToAdminPageParam (name: String ) extends Param
86+
case class LinkToPdfParam (name: String, token: Boolean ) extends Param
8787
override def values: immutable.IndexedSeq[Param] = super.findValues
8888
}
8989

form-runner/shared/src/main/scala/org/orbeon/oxf/fr/email/EmailMetadataConversion.scala

+3-3
Original file line numberDiff line numberDiff line change
@@ -59,14 +59,14 @@ object EmailMetadataConversion {
5959
case p @ EmailMetadata.Param.ControlValueParam (_, _) => p.copy(name = newName)
6060
case p @ EmailMetadata.Param.ExpressionParam (_, _) => p.copy(name = newName)
6161
case p @ EmailMetadata.Param.AllControlValuesParam (_) => p.copy(name = newName)
62-
case p @ EmailMetadata.Param.LinkToEditPageParam (_) => p.copy(name = newName)
63-
case p @ EmailMetadata.Param.LinkToViewPageParam (_) => p.copy(name = newName)
62+
case p @ EmailMetadata.Param.LinkToEditPageParam (_, _) => p.copy(name = newName)
63+
case p @ EmailMetadata.Param.LinkToViewPageParam (_, _) => p.copy(name = newName)
6464
case p @ EmailMetadata.Param.LinkToNewPageParam (_) => p.copy(name = newName)
6565
case p @ EmailMetadata.Param.LinkToSummaryPageParam(_) => p.copy(name = newName)
6666
case p @ EmailMetadata.Param.LinkToHomePageParam (_) => p.copy(name = newName)
6767
case p @ EmailMetadata.Param.LinkToFormsPageParam (_) => p.copy(name = newName)
6868
case p @ EmailMetadata.Param.LinkToAdminPageParam (_) => p.copy(name = newName)
69-
case p @ EmailMetadata.Param.LinkToPdfParam (_) => p.copy(name = newName)
69+
case p @ EmailMetadata.Param.LinkToPdfParam (_, _) => p.copy(name = newName)
7070
}
7171
} else
7272
param

form-runner/shared/src/main/scala/org/orbeon/oxf/fr/email/EmailMetadataParsing.scala

+5-3
Original file line numberDiff line numberDiff line change
@@ -219,18 +219,20 @@ object EmailMetadataParsing {
219219
val paramTypeSource = paramNodeInfo.attValue("type")
220220
// Fix possible incorrect serialization on migration, done between 2022.1 and 2022.1.4 (fixed in 2022.1.5 per #5923)
221221
val paramTypeFixed = paramTypeSource.split("\\(")(0)
222+
def hasToken = paramNodeInfo.child("token").exists(_.stringValue == "true")
223+
222224
paramTypeFixed match {
223225
case "ControlValueParam" => EmailMetadata.Param.ControlValueParam (name, paramNodeInfo.child("controlName").stringValue)
224226
case "ExpressionParam" => EmailMetadata.Param.ExpressionParam (name, paramNodeInfo.child("expr" ).stringValue)
225227
case "AllControlValuesParam" => EmailMetadata.Param.AllControlValuesParam (name)
226-
case "LinkToEditPageParam" => EmailMetadata.Param.LinkToEditPageParam (name)
227-
case "LinkToViewPageParam" => EmailMetadata.Param.LinkToViewPageParam (name)
228+
case "LinkToEditPageParam" => EmailMetadata.Param.LinkToEditPageParam (name, hasToken)
229+
case "LinkToViewPageParam" => EmailMetadata.Param.LinkToViewPageParam (name, hasToken)
228230
case "LinkToNewPageParam" => EmailMetadata.Param.LinkToNewPageParam (name)
229231
case "LinkToSummaryPageParam" => EmailMetadata.Param.LinkToSummaryPageParam(name)
230232
case "LinkToHomePageParam" => EmailMetadata.Param.LinkToHomePageParam (name)
231233
case "LinkToFormsPageParam" => EmailMetadata.Param.LinkToFormsPageParam (name)
232234
case "LinkToAdminPageParam" => EmailMetadata.Param.LinkToAdminPageParam (name)
233-
case "LinkToPdfParam" => EmailMetadata.Param.LinkToPdfParam (name)
235+
case "LinkToPdfParam" => EmailMetadata.Param.LinkToPdfParam (name, hasToken)
234236
}
235237
}
236238

form-runner/shared/src/main/scala/org/orbeon/oxf/fr/email/EmailMetadataSerialization.scala

+14
Original file line numberDiff line numberDiff line change
@@ -132,6 +132,9 @@ object EmailMetadataSerialization {
132132
NodeInfoFactory.elementInfo (QName("expr"), List(StringValue.makeStringValue(expression))),
133133
)
134134
)
135+
case EmailMetadata.Param.LinkToEditPageParam(name, token) => serializeParamWithToken(param.entryName, name, token)
136+
case EmailMetadata.Param.LinkToViewPageParam(name, token) => serializeParamWithToken(param.entryName, name, token)
137+
case EmailMetadata.Param.LinkToPdfParam (name, token) => serializeParamWithToken(param.entryName, name, token)
135138
case _ =>
136139
NodeInfoFactory.elementInfo(
137140
QName("param"),
@@ -141,4 +144,15 @@ object EmailMetadataSerialization {
141144
)
142145
)
143146
}
147+
148+
private def serializeParamWithToken(paramType: String, name: String, token: Boolean): NodeInfo =
149+
NodeInfoFactory.elementInfo(
150+
QName("param"),
151+
List(
152+
NodeInfoFactory.attributeInfo(QName("type"), paramType),
153+
NodeInfoFactory.elementInfo (QName("name"), List(StringValue.makeStringValue(name))),
154+
) ::: (if (token)
155+
List(NodeInfoFactory.elementInfo(QName("token"), List(StringValue.makeStringValue("true"))))
156+
else Nil)
157+
)
144158
}

0 commit comments

Comments
 (0)