Mscons SmooksException org.milyn.javabean.BeanInstanceCreator

66 Views Asked by At

I'm encountering a problem with the following (anonymized) mscons file, that I try to read with mylin-smooks:

UNB+UNOC:3+1111111111111:502+1111111111111:502+240102:1602+XXX12345678910++TL
'UNH+YYY12345678910+MSCONS:D:04B:UN:2.4b
'BGM+7+ZZZ12345678910+9
'DTM+137:202401021602?+00:303
'RFF+Z13:13008
'NAD+MS+2222222222222::332
'NAD+MR+3333333333333::332
'UNS+D
'NAD+DP
'LOC+172+ANO393945893439385754293290358932
'DTM+163:202301010445?+00:303
'DTM+164:202401010500?+00:303
'LIN+1
'PIA+5+7-20?:99.23.23:SRW
'QTY+220:29
'DTM+163:202301010000?+00:303
'DTM+164:202301010100?+00:303
'QTY+220:29
'DTM+163:202301010100?+00:303
'DTM+164:202301010200?+00:303
'QTY+220:29
'DTM+163:202301010200?+00:303
'DTM+164:202301010300?+00:303
'QTY+220:29
'DTM+163:202301010300?+00:303
'DTM+164:202301010400?+00:303
'QTY+220:29
'DTM+163:202301010400?+00:303
'DTM+164:202301010500?+00:303
'QTY+220:29
'DTM+163:202301010500?+00:303
'DTM+164:202301010600?+00:303
'QTY+220:29
'DTM+163:202301010600?+00:303
'DTM+164:202301010700?+00:303
'QTY+220:29
'DTM+163:202301010700?+00:303
'DTM+164:202301010800?+00:303
'QTY+220:29
'DTM+163:202301010800?+00:303
'DTM+164:202301010900?+00:303
'QTY+220:29
'DTM+163:202301010900?+00:303
'DTM+164:202301011000?+00:303
'QTY+220:29
'DTM+163:202301011000?+00:303
'DTM+164:202301011100?+00:303
'QTY+220:29
'DTM+163:202301011100?+00:303
'DTM+164:202301011200?+00:303
'QTY+220:29
'DTM+163:202301011200?+00:303
'DTM+164:202301011300?+00:303
'QTY+220:29
'DTM+163:202301011300?+00:303
'DTM+164:202301011400?+00:303
'QTY+220:29
'DTM+163:202301011400?+00:303
'DTM+164:202301011500?+00:303
'QTY+220:29
'DTM+163:202301011500?+00:303
'DTM+164:202301011600?+00:303
'QTY+220:29
'DTM+163:202301011600?+00:303
'DTM+164:202301011700?+00:303
'QTY+220:29
'DTM+163:202301011700?+00:303
'DTM+164:202301011800?+00:303
'QTY+220:29
'DTM+163:202301011800?+00:303
'DTM+164:202301011900?+00:303
'QTY+220:29
'DTM+163:202301011900?+00:303
'DTM+164:202301012000?+00:303
'QTY+220:29
'DTM+163:202301012000?+00:303
'DTM+164:202301012100?+00:303
'QTY+220:29
'DTM+163:202301012100?+00:303
'DTM+164:202301012200?+00:303
'QTY+220:29
'DTM+163:202301012200?+00:303
'DTM+164:202301012300?+00:303
'QTY+220:29
'DTM+163:202301012300?+00:303
'DTM+164:202301020000?+00:303
'QTY+220:29
'DTM+163:202301020000?+00:303
'DTM+164:202301020100?+00:303
'QTY+220:29
'DTM+163:202301020100?+00:303
'DTM+164:202301020200?+00:303
'UNT+92+ZZZ12345678910
'UNZ+1+XXX12345678910
'

Here you can see my calling function. In most cases it works fine.

   UNEdifactInterchange41 edi;
        D04BInterchangeFactory factory = D04BInterchangeFactory
                .getInstance();
        InputStream stream = new FileInputStream(msconsFile);
        edi = (UNEdifactInterchange41) factory.fromUNEdifact(stream);   //this line fails

But with the file above I get the following exception:

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 org.milyn.edi.unedifact.d04b.D04BInterchangeFactory.fromUNEdifact(D04BInterchangeFactory.java:67)
    at org.milyn.edi.unedifact.d04b.D04BInterchangeFactory.fromUNEdifact(D04BInterchangeFactory.java:43)
    at de.janitza.application.msconsim.external.MainClass.readMSCONSFile(MainClass.java:184)
    at de.janitza.application.msconsim.external.MainClass.main(MainClass.java:86)
Caused by: org.milyn.SmooksException: Error in 'org.milyn.javabean.BeanInstanceCreator' while processing the visitBefore event.
    at org.milyn.delivery.sax.SAXHandler.processVisitorException(SAXHandler.java:590)
    at org.milyn.delivery.sax.SAXHandler.processVisitorException(SAXHandler.java:576)
    at org.milyn.delivery.sax.SAXHandler.visitBefore(SAXHandler.java:319)
    at org.milyn.delivery.sax.SAXHandler.startElement(SAXHandler.java:177)
    at org.milyn.delivery.SmooksContentHandler.startElement(SmooksContentHandler.java:80)
    at org.milyn.edisax.EDIParser.startElement(EDIParser.java:873)
    at org.milyn.edisax.EDIParser.startElement(EDIParser.java:862)
    at org.milyn.edisax.EDIParser.startElement(EDIParser.java:857)
    at org.milyn.edisax.EDIParser.mapField(EDIParser.java:630)
    at org.milyn.edisax.EDIParser.mapFields(EDIParser.java:606)
    at org.milyn.edisax.EDIParser.mapSegment(EDIParser.java:564)
    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:538)
    at org.milyn.edisax.EDIParser.mapSegments(EDIParser.java:538)
    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:114)
    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)
    ... 7 more
Caused by: java.lang.VerifyError: (class: ASMAccessorImpl_123330872617050461061282, method: getKnownEgressType signature: ()Ljava/lang/Class;) Illegal type in constant pool
    at java.base/java.lang.Class.getDeclaredConstructors0(Native Method)
    at java.base/java.lang.Class.privateGetDeclaredConstructors(Class.java:3373)
    at java.base/java.lang.Class.getConstructor0(Class.java:3578)
    at java.base/java.lang.Class.newInstance(Class.java:626)
    at org.mvel2.optimizers.impl.asm.ASMAccessorOptimizer._initializeAccessor(ASMAccessorOptimizer.java:759)
    at org.mvel2.optimizers.impl.asm.ASMAccessorOptimizer.optimizeSetAccessor(ASMAccessorOptimizer.java:665)
    at org.mvel2.optimizers.dynamic.DynamicSetAccessor.optimize(DynamicSetAccessor.java:83)
    at org.mvel2.optimizers.dynamic.DynamicSetAccessor.setValue(DynamicSetAccessor.java:60)
    at org.mvel2.compiler.CompiledAccExpression.setValue(CompiledAccExpression.java:59)
    at org.mvel2.ast.DeepAssignmentNode.getReducedValueAccelerated(DeepAssignmentNode.java:90)
    at org.mvel2.MVELRuntime.execute(MVELRuntime.java:85)
    at org.mvel2.compiler.CompiledExpression.getDirectValue(CompiledExpression.java:123)
    at org.mvel2.compiler.CompiledExpression.getValue(CompiledExpression.java:119)
    at org.mvel2.MVEL.executeExpression(MVEL.java:929)
    at org.milyn.expression.MVELExpressionEvaluator.exec(MVELExpressionEvaluator.java:99)
    at org.milyn.expression.MVELExpressionEvaluator.exec(MVELExpressionEvaluator.java:115)
    at org.milyn.javabean.BeanInstanceCreator.createAndSetBean(BeanInstanceCreator.java:295)
    at org.milyn.javabean.BeanInstanceCreator.visitBefore(BeanInstanceCreator.java:240)
    at org.milyn.delivery.sax.SAXHandler.visitBefore(SAXHandler.java:307)
    ... 29 more

I'm using these dependencies in my project

       <dependency>
            <groupId>org.milyn</groupId>
            <artifactId>milyn-smooks-edi</artifactId>
            <version>1.7.1</version>
       </dependency>

        <dependency>
            <groupId>org.milyn</groupId>
            <artifactId>milyn-smooks-javabean</artifactId>
            <version>1.7.1</version>
        </dependency>

        <!-- Required Mapping Models -->
        <dependency>
            <groupId>org.milyn.edi.unedifact</groupId>
            <artifactId>d16b-mapping</artifactId>
            <version>1.7.1.0</version>
        </dependency>
        <dependency>
            <groupId>org.milyn.edi.unedifact</groupId>
            <artifactId>d16b-binding</artifactId>
            <version>1.7.1.0</version>
        </dependency>
        <dependency>
            <groupId>org.milyn.edi.unedifact</groupId>
            <artifactId>d04b-mapping</artifactId>
            <version>1.7.1.0</version>
        </dependency>
        <dependency>
            <groupId>org.milyn.edi.unedifact</groupId>
            <artifactId>d04b-binding</artifactId>
            <version>1.7.1.0</version>
        </dependency>
        <dependency>
            <groupId>org.milyn</groupId>
            <artifactId>milyn-smooks-core</artifactId>
            <version>1.7.1</version>
        </dependency>
        <dependency>
            <groupId>jaxen</groupId>
            <artifactId>jaxen</artifactId>
            <version>1.1.1</version>
        </dependency>
        <dependency>
            <groupId>org.milyn</groupId>
            <artifactId>milyn-edisax-parser</artifactId>
            <version>1.7.1</version>
        </dependency>
        <dependency>
            <groupId>org.milyn</groupId>
            <artifactId>milyn-commons</artifactId>
            <version>1.7.1</version>

        </dependency>
        <dependency>
            <groupId>org.mvel</groupId>
            <artifactId>mvel2</artifactId>
            <version>2.4.3.Final</version>
        </dependency>
        <dependency>
            <groupId>commons-logging</groupId>
            <artifactId>commons-logging</artifactId>
            <version>1.2</version>
            <scope>provided</scope>
        </dependency>

If I remove one of the datasets from the file, the parser works. But that's no solution. I imported larger files in the past. I have no clue, what's the reason for this.

Thanks for your support!

1

There are 1 best solutions below

0
Claude On

It seems like you are running a version of Java which Smooks 1 doesn't support. Officially, v1.7 can run on Java 7 and 8. It hasn't been rigorously tested on later versions of Java. Try upgrading to the latest version of Smooks. v2.0.0-RC3 can run on Java 8 or higher. Besides this, v2 addresses many security vulnerabilities uncovered in v1. Upgrading might not be trivial so check out the docs in the Smooks user guide about What's new in Smooks 2 and Migrating from Smooks 1.7 to 2.0 for guidance.