Uploaded image for project: 'Daffodil'
  1. Daffodil
  2. DFDL-922

Invalid regular expression in lengthPattern should fail gracefully

XMLWordPrintableJSON

    • Icon: Bug Bug
    • Resolution: Fixed
    • Icon: Normal Normal
    • s14
    • None
    • None
    • None

      Right now, if you have an invalid regular expression for lengthPattern, like so

      dfdl:lengthPattern="[a-z]{1, 2}"

      (there's an illegal space before the 2), then Daffodil prints a back trace like so:

      edu.illinois.ncsa.daffodil.exceptions.Abort: Invariant broken. Runtime parsers should not throw exceptions: java.util.regex.PatternSyntaxException: Unclosed counted closure near index 8
      [a-z]{1, 2}
              ^
      edu.illinois.ncsa.daffodil.exceptions.Assert$.abort(Assert.scala:87)
      edu.illinois.ncsa.daffodil.exceptions.Assert$.invariantFailed(Assert.scala:128)
      edu.illinois.ncsa.daffodil.processors.AltCompParser$$anonfun$parse$4.apply(Parser.scala:400)
      edu.illinois.ncsa.daffodil.processors.AltCompParser$$anonfun$parse$4.apply(Parser.scala:392)
              at edu.illinois.ncsa.daffodil.exceptions.Assert$.abort(Assert.scala:87)
              at edu.illinois.ncsa.daffodil.exceptions.Assert$.invariantFailed(Assert.scala:128)
              at edu.illinois.ncsa.daffodil.processors.AltCompParser$$anonfun$parse$4.apply(Parser.scala:400)
              at edu.illinois.ncsa.daffodil.processors.AltCompParser$$anonfun$parse$4.apply(Parser.scala:392)
              at scala.collection.LinearSeqOptimized$class.foreach(LinearSeqOptimized.scala:59)
              at scala.collection.immutable.List.foreach(List.scala:76)
              at edu.illinois.ncsa.daffodil.processors.AltCompParser.parse(Parser.scala:392)
              at edu.illinois.ncsa.daffodil.processors.Parser.parse1(Parser.scala:164)
              at edu.illinois.ncsa.daffodil.processors.SeqCompParser$$anonfun$parse$3.apply(Parser.scala:365)
              at edu.illinois.ncsa.daffodil.processors.SeqCompParser$$anonfun$parse$3.apply(Parser.scala:363)
              at scala.collection.LinearSeqOptimized$class.foreach(LinearSeqOptimized.scala:59)
              at scala.collection.immutable.List.foreach(List.scala:76)
              at edu.illinois.ncsa.daffodil.processors.SeqCompParser.parse(Parser.scala:363)
              at edu.illinois.ncsa.daffodil.processors.Parser.parse1(Parser.scala:164)
              at edu.illinois.ncsa.daffodil.processors.SeqCompParser$$anonfun$parse$3.apply(Parser.scala:365)
              at edu.illinois.ncsa.daffodil.processors.SeqCompParser$$anonfun$parse$3.apply(Parser.scala:363)
              at scala.collection.LinearSeqOptimized$class.foreach(LinearSeqOptimized.scala:59)
              at scala.collection.immutable.List.foreach(List.scala:76)
              at edu.illinois.ncsa.daffodil.processors.SeqCompParser.parse(Parser.scala:363)
              at edu.illinois.ncsa.daffodil.processors.Parser.parse1(Parser.scala:164)
              at edu.illinois.ncsa.daffodil.processors.SeqCompParser$$anonfun$parse$3.apply(Parser.scala:365)
              at edu.illinois.ncsa.daffodil.processors.SeqCompParser$$anonfun$parse$3.apply(Parser.scala:363)
              at scala.collection.LinearSeqOptimized$class.foreach(LinearSeqOptimized.scala:59)
              at scala.collection.immutable.List.foreach(List.scala:76)
              at edu.illinois.ncsa.daffodil.processors.SeqCompParser.parse(Parser.scala:363)
              at edu.illinois.ncsa.daffodil.processors.Parser.parse1(Parser.scala:164)
              at edu.illinois.ncsa.daffodil.processors.DataProcessor$$anonfun$parse$3$$anon$1.liftedTree1$1(Runtime.scala:165)
              at edu.illinois.ncsa.daffodil.processors.DataProcessor$$anonfun$parse$3$$anon$1.<init>(Runtime.scala:164)
              at edu.illinois.ncsa.daffodil.processors.DataProcessor$$anonfun$parse$3.apply(Runtime.scala:161)
              at edu.illinois.ncsa.daffodil.processors.DataProcessor$$anonfun$parse$3.apply(Runtime.scala:160)
              at scala.util.DynamicVariable.withValue(DynamicVariable.scala:57)
              at edu.illinois.ncsa.daffodil.ExecutionMode$$anonfun$usingRuntimeMode$1.apply(ExecutionMode.scala:80)
              at edu.illinois.ncsa.daffodil.ExecutionMode$$anonfun$usingRuntimeMode$1.apply(ExecutionMode.scala:80)
              at edu.illinois.ncsa.daffodil.processors.DataProcessor.parse(Runtime.scala:160)
              at edu.illinois.ncsa.daffodil.processors.DataProcessor.parse(Runtime.scala:152)
              at edu.illinois.ncsa.daffodil.Main$$anonfun$88.apply(Main.scala:495)
              at edu.illinois.ncsa.daffodil.Main$$anonfun$88.apply(Main.scala:493)
              at edu.illinois.ncsa.daffodil.util.Timer$.getTimeResult(Timer.scala:92)
              at edu.illinois.ncsa.daffodil.util.Timer$.getResult(Timer.scala:50)
              at edu.illinois.ncsa.daffodil.Main$.run(Main.scala:492)
              at edu.illinois.ncsa.daffodil.Main$.main(Main.scala:776)
              at edu.illinois.ncsa.daffodil.Main.main(Main.scala)

      Invalid regular expressions should be treated as an SDE.

              jchab Jessie Chab
              slawrence Steve Lawrence
              Votes:
              0 Vote for this issue
              Watchers:
              2 Start watching this issue

                Created:
                Updated:
                Resolved:

                  Estimated:
                  Original Estimate - Not Specified
                  Not Specified
                  Remaining:
                  Remaining Estimate - Not Specified
                  Not Specified
                  Logged:
                  Time Spent - 1 minute
                  1m