Smooks EDIFACT: Экстренный сегментатор вызвал исключение - Как добавить вместо результатов? - PullRequest
0 голосов
/ 17 февраля 2019

Я пытаюсь использовать Smooks (1.7) для проверки файлов EDIFACT.

Однако, если файл содержит дополнительный терминатор сегмента ('): LOC+9+DEANR'', возникает исключение:

Exception in thread "main" org.milyn.SmooksException: Failed to filter source.
            at org.milyn.delivery.sax.SmooksSAXFilter.doFilter(SmooksSAXFilter.java:97)
            at org.milyn.delivery.sax.SmooksSAXFilter.doFilter(SmooksSAXFilter.java:64)
            at org.milyn.Smooks._filter(Smooks.java:526)
            at org.milyn.Smooks.filterSource(Smooks.java:482)
            at Main.runSmooks(Main.java:96)
            at Main.main(Main.java:62)

Caused by: java.lang.IllegalStateException: No current segment available.  Possible conditions:
                        1. A call to moveToNextSegment() was not made, or
                        2. The last call to moveToNextSegment() returned false.
            at org.milyn.edisax.BufferedSegmentReader.assertCurrentSegmentExists(BufferedSegmentReader.java:468)
            at org.milyn.edisax.BufferedSegmentReader.getCurrentSegmentFields(BufferedSegmentReader.java:410)
            at org.milyn.edisax.unedifact.handlers.UNHHandler$UNTSegmentListener.onSegment(UNHHandler.java:119)
            at org.milyn.edisax.BufferedSegmentReader.moveToNextSegment(BufferedSegmentReader.java:378)
            at org.milyn.edisax.BufferedSegmentReader.moveToNextSegment(BufferedSegmentReader.java:282)
            at org.milyn.edisax.EDIParser.mapSegment(EDIParser.java:565)
            at org.milyn.edisax.EDIParser.mapSegments(EDIParser.java:535)
            at org.milyn.edisax.EDIParser.mapSegments(EDIParser.java:538)
            at org.milyn.edisax.EDIParser.mapSegments(EDIParser.java:453)
            at org.milyn.edisax.EDIParser.parse(EDIParser.java:428)
            at org.milyn.edisax.EDIParser.parse(EDIParser.java:410)
            at org.milyn.edisax.unedifact.handlers.UNHHandler.process(UNHHandler.java:97)
            at org.milyn.edisax.unedifact.handlers.UNBHandler.process(UNBHandler.java:75)
            at org.milyn.edisax.unedifact.UNEdifactInterchangeParser.parse(UNEdifactInterchangeParser.java:113)
            at org.milyn.smooks.edi.unedifact.UNEdifactReader.parse(UNEdifactReader.java:75)
            at org.milyn.delivery.sax.SAXParser.parse(SAXParser.java:76)
            at org.milyn.delivery.sax.SmooksSAXFilter.doFilter(SmooksSAXFilter.java:86)
            ... 5 more

Могу ли я узнать, как настроить Smooks таким образом, чтобы вместо выдачи исключений добавить эту ошибку EDIFACT в результаты?Спасибо !!

...