You are viewing a plain text version of this content. The canonical link for it is here.
Posted to dev@daffodil.apache.org by "Josh Adams (JIRA)" <ji...@apache.org> on 2019/01/28 13:30:00 UTC

[jira] [Assigned] (DAFFODIL-2056) Implicit expression conversion from xs:string to xs:hexBinary causes exception

     [ https://issues.apache.org/jira/browse/DAFFODIL-2056?page=com.atlassian.jira.plugin.system.issuetabpanels:all-tabpanel ]

Josh Adams reassigned DAFFODIL-2056:
------------------------------------

    Assignee: Josh Adams

> Implicit expression conversion from xs:string to xs:hexBinary causes exception
> ------------------------------------------------------------------------------
>
>                 Key: DAFFODIL-2056
>                 URL: https://issues.apache.org/jira/browse/DAFFODIL-2056
>             Project: Daffodil
>          Issue Type: Bug
>          Components: Front End
>    Affects Versions: 2.2.0
>            Reporter: Steve Lawrence
>            Assignee: Josh Adams
>            Priority: Major
>
> Assume the following schema snippet:
> {code:xml}
> <xs:element name="xs:hexBinary" type="xs:hexBinary" dfdl:inputValueCalc="{ xs:string('DEADBEEF') }" />
> {code}
> As of Daffodil 2.3.0, we allow implicit conversions between the result of an expression and the expected type. So this should insert an implicit conversion from xs:string (the resulting type) to xs:hexBinary (the expected type). But this results in the following exception: 
> {code}
> java.lang.ClassCastException: org.apache.daffodil.dpath.XSHexBinary$ cannot be cast to org.apache.daffodil.dpath.RecipeOp
> 	at org.apache.daffodil.dpath.Conversion$.conversionOps(Conversions.scala:147)
> 	at org.apache.daffodil.dpath.Expression.conversions$lzycompute(Expression.scala:120)
> 	at org.apache.daffodil.dpath.Expression.conversions(Expression.scala:117)
> 	at org.apache.daffodil.dpath.FNOneArgExpr.compiledDPath$lzycompute(Expression.scala:1869)
> 	at org.apache.daffodil.dpath.FNOneArgExpr.compiledDPath(Expression.scala:1865)
> 	at org.apache.daffodil.dpath.FunctionCallExpression.compiledDPath$lzycompute(Expression.scala:1317)
> 	at org.apache.daffodil.dpath.FunctionCallExpression.compiledDPath(Expression.scala:1317)
> 	at org.apache.daffodil.dpath.WholeExpression.compiledDPath$lzycompute(Expression.scala:636)
> 	at org.apache.daffodil.dpath.WholeExpression.compiledDPath(Expression.scala:636)
> 	at org.apache.daffodil.dpath.DFDLPathExpressionParser.compile(DFDLExpressionParser.scala:54)
> {code}
> Eventually this implicit conversion will be disabled, but since it is allowed we should fix this.
> The workaround is to be explicit about the conversion, e.g.:
> {code:xml}
> <xs:element name="xs:hexBinary" type="xs:hexBinary" dfdl:inputValueCalc="{ xs:hexBinary(xs:string('DEADBEEF')) }" />
> {code}



--
This message was sent by Atlassian JIRA
(v7.6.3#76005)