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

Dave Thompson closed DAFFODIL-2588.
-----------------------------------

Closing as duplicate to 2480.

> abort when external variable has no namespace
> ---------------------------------------------
>
>                 Key: DAFFODIL-2588
>                 URL: https://issues.apache.org/jira/browse/DAFFODIL-2588
>             Project: Daffodil
>          Issue Type: Bug
>          Components: Front End
>    Affects Versions: 3.1.0
>            Reporter: Mike Beckerle
>            Priority: Major
>             Fix For: 3.2.0
>
>         Attachments: external_var_schema_error.xsd
>
>
> Reported by a user:
> I found a problem in Daffodil 3.1.0 using external and not-external variables 
> when specifying the external variable without namespace.
> Using attached schema:
> daffodil parse –s external_var_schema_error.xsd –Dexternalvar=1 dummyfile
> The below error is given.
> It does not happen when specifying namespace with the externalvar on the 
> command line.
> Though I don’t know Scala, looking at VariableMap1.scala:464, it seems to me 
> the “vTable.map” expects all items to be mapped, while the “if .. external” 
> only maps the external variables, causing the below error for non-external 
> variables. I guess it needs a filter operation before the “map” to first get 
> the external variables, then “map” to get the globalQName.
>  
> For us the use of the external variable name without namespace is useful, 
> because we use it in several schema in the same way, and pass in the value at 
> run-time. Not having to know the namespace of the schema being used makes it 
> much easier for the user and our code.
>  
> !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
> !!   An unexpected exception occurred. This is a bug!   !!
> !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
>  Please report this bug and help us fix it:
>   https://daffodil.apache.org/community/#issue-tracker
>  Please include the following exception, the command you
>  ran, and any input, schema, or tdml files used that led
>  to this bug.
> scala.MatchError: 
> ({urn:test:external-var}internalvar,ArrayBuffer(VariableInstance(VariableUndefined,NoValue,internalvar,Nope,VariableUndefined,NoValue)))
>  (of class scala.Tuple2)
> at 
> org.apache.daffodil.processors.VariableMap.$anonfun$externalVarGlobalQNames$1(VariableMap1.scala:464)
> at scala.collection.TraversableLike.$anonfun$map$1(TraversableLike.scala:286)
> at scala.collection.mutable.HashMap.$anonfun$foreach$1(HashMap.scala:149)
> at scala.collection.mutable.HashTable.foreachEntry(HashTable.scala:237)
> at scala.collection.mutable.HashTable.foreachEntry$(HashTable.scala:230)
> at scala.collection.mutable.HashMap.foreachEntry(HashMap.scala:44)
> at scala.collection.mutable.HashMap.foreach(HashMap.scala:149)
> at scala.collection.TraversableLike.map(TraversableLike.scala:286)
> at scala.collection.TraversableLike.map$(TraversableLike.scala:279)
> at scala.collection.AbstractTraversable.map(Traversable.scala:108)
> at 
> org.apache.daffodil.processors.VariableMap.externalVarGlobalQNames$lzycompute(VariableMap1.scala:464)
> at 
> org.apache.daffodil.processors.VariableMap.externalVarGlobalQNames(VariableMap1.scala:463)
> at 
> org.apache.daffodil.processors.VariableMap.setExtVariable(VariableMap1.scala:473)
> at 
> org.apache.daffodil.processors.VariableUtils$.$anonfun$setExternalVariables$1(VariableMap1.scala:162)
> at 
> org.apache.daffodil.processors.VariableUtils$.$anonfun$setExternalVariables$1$adapted(VariableMap1.scala:162)
> at scala.collection.Iterator.foreach(Iterator.scala:943)
> at scala.collection.Iterator.foreach$(Iterator.scala:943)
> at scala.collection.AbstractIterator.foreach(Iterator.scala:1431)
> at scala.collection.IterableLike.foreach(IterableLike.scala:74)
> at scala.collection.IterableLike.foreach$(IterableLike.scala:73)
> at scala.collection.AbstractIterable.foreach(Iterable.scala:56)
> at 
> org.apache.daffodil.processors.VariableUtils$.setExternalVariables(VariableMap1.scala:162)
> at 
> org.apache.daffodil.externalvars.ExternalVariablesLoader$.loadVariables(ExternalVariablesLoader.scala:46)
> at 
> org.apache.daffodil.processors.DataProcessor.loadExternalVariables(DataProcessor.scala:286)
> at 
> org.apache.daffodil.processors.DataProcessor.withExternalVariables(DataProcessor.scala:332)
> at 
> org.apache.daffodil.processors.DataProcessor.withExternalVariables(DataProcessor.scala:129)
> at org.apache.daffodil.Main$.$anonfun$run$1(Main.scala:902)
> at scala.Option.map(Option.scala:230)
> at org.apache.daffodil.Main$.run(Main.scala:902)
> at org.apache.daffodil.Main$.main(Main.scala:1569)
> at org.apache.daffodil.Main.main(Main.scala)



--
This message was sent by Atlassian Jira
(v8.20.1#820001)

Reply via email to