[
https://issues.apache.org/jira/browse/DAFFODIL-2049?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=17541076#comment-17541076
]
Mike Beckerle commented on DAFFODIL-2049:
-----------------------------------------
As of git hash c81b213b02ac414a39290787cf2eea14d83fdc26 charsets are now
pluggable and can be defined outside of Daffodil.
There are small changes to the charset definition classes, and a
META-INF/services file needs a line in it so that the charset will be detected
and loaded.
This charset should probably come with daffodil, no need for it to be packaged
separately, but minor changes will be needed.
The PR for this charset is https://github.com/apache/daffodil/pull/490
> UnsupportedCharsetException: X-IBM-1047-S390
> --------------------------------------------
>
> Key: DAFFODIL-2049
> URL: https://issues.apache.org/jira/browse/DAFFODIL-2049
> Project: Daffodil
> Issue Type: Bug
> Components: CLI
> Affects Versions: 2.0.0, 2.1.0, 2.2.0
> Reporter: Ed Jordan
> Assignee: Alexander Revello
> Priority: Major
> Labels: beginner
> Fix For: 3.4.0
>
> Attachments: DaffodilCharsetProvider.scala, IBM1047.scala
>
>
> In the old Daffodil bug reporting system, I was asked to transfer this
> problem forward here, which I have not done until now (sorry).
> My sub-command in this case was _save-parser_, but in the past the exception
> has occurred with _parse_ and _unparse_ as well.
> The DFDL schema contains the following dfdl-format tag:
> {quote}<dfdl:format xmlns:dfdl="http://www.ogf.org/dfdl/dfdl-1.0/"
> textStringPadCharacter="%SP;" textTrimKind="padChar" textPadKind="padChar"
> encoding="x-ibm-1047-s390" nilKind="literalCharacter" nilValue="%NUL;"
> ref="tpfbase:tpfBaseFmt"/>
> {quote}
> I received the following exception in the output:
> {quote}!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!! !! An
> unexpected exception occurred. This is a bug! !!
> !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!! Please report this
> bug and help us fix it:
> https://opensource.ncsa.illinois.edu/confluence/display/DFDL/How+to+Report+a+Bug
> Please include the following exception, the command you ran, and any input,
> schema, or tdml files used that led to this bug.
> java.nio.charset.UnsupportedCharsetException: X-IBM-1047-S390 at
> java.nio.charset.Charset.forName(Unknown Source) at
> edu.illinois.ncsa.daffodil.processors.charset.CharsetUtils$.getCharset(CharsetUtils.scala:85)
> at
> edu.illinois.ncsa.daffodil.processors.CharsetEv.compute(EvEncoding.scala:99)
> at
> edu.illinois.ncsa.daffodil.processors.CharsetEv.compute(EvEncoding.scala:91)
> at
> edu.illinois.ncsa.daffodil.processors.Evaluatable.apply(Evaluatable.scala:330)
> at
> edu.illinois.ncsa.daffodil.processors.EvaluatableBase$class.compile(Evaluatable.scala:170)
> at
> edu.illinois.ncsa.daffodil.processors.Evaluatable.compile(Evaluatable.scala:358)
> at
> edu.illinois.ncsa.daffodil.processors.EvaluatableBase$class.compile(Evaluatable.scala:143)
> at
> edu.illinois.ncsa.daffodil.processors.Evaluatable.compile(Evaluatable.scala:301)
> at
> edu.illinois.ncsa.daffodil.dsom.TermRuntimeValuedPropertiesMixin$class.maybeCharsetEv(RuntimePropertyMixins.scala:130)
> at
> edu.illinois.ncsa.daffodil.dsom.Term.maybeCharsetEv$lzycompute(Term.scala:51)
> at edu.illinois.ncsa.daffodil.dsom.Term.maybeCharsetEv(Term.scala:51) at
> edu.illinois.ncsa.daffodil.dsom.TermRuntimeValuedPropertiesMixin$class.charsetEv(RuntimePropertyMixins.scala:121)
> at edu.illinois.ncsa.daffodil.dsom.Term.charsetEv$lzycompute(Term.scala:51)
> at edu.illinois.ncsa.daffodil.dsom.Term.charsetEv(Term.scala:51) at
> edu.illinois.ncsa.daffodil.processors.KnownEncodingMixin$class.knownEncodingName(EncodingRuntimeData.scala:78)
> at
> edu.illinois.ncsa.daffodil.dsom.Term.knownEncodingName$lzycompute(Term.scala:51)
> at edu.illinois.ncsa.daffodil.dsom.Term.knownEncodingName(Term.scala:51) at
> edu.illinois.ncsa.daffodil.dsom.TermEncodingMixin$class.knownEncodingAlignmentInBits(TermEncodingMixin.scala:84)
> at
> edu.illinois.ncsa.daffodil.dsom.Term.knownEncodingAlignmentInBits$lzycompute(Term.scala:51)
> at
> edu.illinois.ncsa.daffodil.dsom.Term.knownEncodingAlignmentInBits(Term.scala:51)
> at
> edu.illinois.ncsa.daffodil.dsom.TermEncodingMixin$class.hasTextAlignment(TermEncodingMixin.scala:226)
> at
> edu.illinois.ncsa.daffodil.dsom.Term.hasTextAlignment$lzycompute(Term.scala:51)
> at edu.illinois.ncsa.daffodil.dsom.Term.hasTextAlignment(Term.scala:51) at
> edu.illinois.ncsa.daffodil.dsom.TermEncodingMixin$class.isLocallyTextOnly(TermEncodingMixin.scala:109)
> at
> edu.illinois.ncsa.daffodil.dsom.Term.isLocallyTextOnly$lzycompute(Term.scala:51)
> at edu.illinois.ncsa.daffodil.dsom.Term.isLocallyTextOnly(Term.scala:51) at
> edu.illinois.ncsa.daffodil.dsom.TermEncodingMixin$class.summaryEncoding(TermEncodingMixin.scala:198)
> at
> edu.illinois.ncsa.daffodil.dsom.Term.summaryEncoding$lzycompute(Term.scala:51)
> at edu.illinois.ncsa.daffodil.dsom.Term.summaryEncoding(Term.scala:51) at
> edu.illinois.ncsa.daffodil.dsom.TermEncodingMixin$class.encodingInfo(TermEncodingMixin.scala:97)
> at
> edu.illinois.ncsa.daffodil.dsom.Term.encodingInfo$lzycompute(Term.scala:51)
> at edu.illinois.ncsa.daffodil.dsom.Term.encodingInfo(Term.scala:51) at
> edu.illinois.ncsa.daffodil.dsom.ElementBase$$anonfun$41.apply(ElementBase.scala:533)
> at
> edu.illinois.ncsa.daffodil.dsom.ElementBase$$anonfun$41.apply(ElementBase.scala:533)
> at
> edu.illinois.ncsa.daffodil.processors.TermRuntimeData.encodingInfo$lzycompute(RuntimeData.scala:161)
> at
> edu.illinois.ncsa.daffodil.processors.TermRuntimeData.encodingInfo(RuntimeData.scala:161)
> at
> edu.illinois.ncsa.daffodil.processors.TermRuntimeData.preSerialization(RuntimeData.scala:174)
> at
> edu.illinois.ncsa.daffodil.processors.ElementRuntimeData.preSerialization(RuntimeData.scala:712)
> at
> edu.illinois.ncsa.daffodil.dsom.ElementBase$$anonfun$2.apply$mcV$sp(ElementBase.scala:110)
> at
> edu.illinois.ncsa.daffodil.dsom.ElementBase$$anonfun$2.apply(ElementBase.scala:110)
> at
> edu.illinois.ncsa.daffodil.dsom.ElementBase$$anonfun$2.apply(ElementBase.scala:110)
> at
> edu.illinois.ncsa.daffodil.oolag.OOLAG$OOLAGValue.liftedTree1$1(OOLAG.scala:579)
> at
> edu.illinois.ncsa.daffodil.oolag.OOLAG$OOLAGValue.value$lzycompute(OOLAG.scala:577)
> at edu.illinois.ncsa.daffodil.oolag.OOLAG$OOLAGValue.value(OOLAG.scala:575)
> at
> edu.illinois.ncsa.daffodil.oolag.OOLAG$OOLAGValue.valueAsAny(OOLAG.scala:573)
> at
> edu.illinois.ncsa.daffodil.oolag.OOLAG$OOLAGHost$$anonfun$checkErrors$2.apply$mcV$sp(OOLAG.scala:281)
> at
> edu.illinois.ncsa.daffodil.oolag.OOLAG$OOLAGHost$$anonfun$checkErrors$2.apply(OOLAG.scala:281)
> at
> edu.illinois.ncsa.daffodil.oolag.OOLAG$OOLAGHost$$anonfun$checkErrors$2.apply(OOLAG.scala:281)
> at edu.illinois.ncsa.daffodil.oolag.OOLAG$.keepGoing(OOLAG.scala:74) at
> edu.illinois.ncsa.daffodil.oolag.OOLAG$OOLAGHost.checkErrors(OOLAG.scala:281)
> at edu.illinois.ncsa.daffodil.oolag.OOLAG$OOLAGHost.isError(OOLAG.scala:340)
> at
> edu.illinois.ncsa.daffodil.compiler.ProcessorFactory.edu$illinois$ncsa$daffodil$compiler$ProcessorFactory$$super$isError(Compiler.scala:150)
> at
> edu.illinois.ncsa.daffodil.compiler.ProcessorFactory$$anonfun$isError$1$$anonfun$apply$mcZ$sp$2.apply$mcZ$sp(Compiler.scala:150)
> at
> edu.illinois.ncsa.daffodil.compiler.ProcessorFactory$$anonfun$isError$1$$anonfun$apply$mcZ$sp$2.apply(Compiler.scala:141)
> at
> edu.illinois.ncsa.daffodil.compiler.ProcessorFactory$$anonfun$isError$1$$anonfun$apply$mcZ$sp$2.apply(Compiler.scala:141)
> at edu.illinois.ncsa.daffodil.oolag.OOLAG$.keepGoing(OOLAG.scala:74) at
> edu.illinois.ncsa.daffodil.compiler.ProcessorFactory$$anonfun$isError$1.apply$mcZ$sp(Compiler.scala:141)
> at
> edu.illinois.ncsa.daffodil.compiler.ProcessorFactory$$anonfun$isError$1.apply(Compiler.scala:141)
> at
> edu.illinois.ncsa.daffodil.compiler.ProcessorFactory$$anonfun$isError$1.apply(Compiler.scala:141)
> at scala.util.DynamicVariable.withValue(DynamicVariable.scala:58) at
> edu.illinois.ncsa.daffodil.ExecutionMode$$anonfun$usingCompilerMode$1.apply(ExecutionMode.scala:79)
> at
> edu.illinois.ncsa.daffodil.ExecutionMode$$anonfun$usingCompilerMode$1.apply(ExecutionMode.scala:79)
> at
> edu.illinois.ncsa.daffodil.compiler.ProcessorFactory.isError(Compiler.scala:141)
> at
> edu.illinois.ncsa.daffodil.compiler.Compiler.compileSource(Compiler.scala:332)
> at edu.illinois.ncsa.daffodil.Main$$anonfun$71.apply(Main.scala:728) at
> edu.illinois.ncsa.daffodil.Main$$anonfun$71.apply(Main.scala:727) at
> edu.illinois.ncsa.daffodil.util.Timer$.getTimeResult(Timer.scala:91) at
> edu.illinois.ncsa.daffodil.util.Timer$.getResult(Timer.scala:50) at
> edu.illinois.ncsa.daffodil.Main$.createProcessorFromSchema(Main.scala:727) at
> edu.illinois.ncsa.daffodil.Main$.run(Main.scala:1140) at
> edu.illinois.ncsa.daffodil.Main$.main(Main.scala:1316) at
> edu.illinois.ncsa.daffodil.Main.main(Main.scala)
> {quote}
> My workaround to the exception has been to substitute "ebcdic-cp-us" for
> "x-ibm-1047-s390", but this will no longer work for users.
> Thanks for your help.
--
This message was sent by Atlassian Jira
(v8.20.7#820007)