opensubscriber
   Find in this group all groups
 
Unknown more information…

j : jibx-users@lists.sourceforge.net 10 October 2009 • 8:33AM -0400

[jibx-users] IllegalArgumentException with CodeGen of imported schema including enumeration
by jibx-users

REPLY TO AUTHOR
 
REPLY TO GROUP






Hello,

I'm not sure if this is another variant of JIBX-263, or a completely
separate problem???  However, when I run CodeGen on Intuit's QuickBooks
schemas, I get the following stack trace and the operation fails.

     [java] Exception in thread "main" java.lang.IllegalArgumentException
     [java]     at
org.eclipse.jdt.core.dom.SimpleName.setIdentifier(SimpleName.java:196)
     [java]     at org.eclipse.jdt.core.dom.AST.newSimpleName(AST.java:1251)
     [java]     at
org.jibx.schema.codegen.ClassBuilder.addEnumConstant(ClassBuilder.java:351)
     [java]     at
org.jibx.schema.codegen.EnumerationClassHolder.buildJava5Enumeration(Enumera
tionClassHolder.java:353)
     [java]     at
org.jibx.schema.codegen.EnumerationClassHolder.generate(EnumerationClassHold
er.java:162)
     [java]     at
org.jibx.schema.codegen.ClassHolder.generateInner(ClassHolder.java:702)
     [java]     at
org.jibx.schema.codegen.StructureClassHolder.generate(StructureClassHolder.j
ava:2026)
     [java]     at
org.jibx.schema.codegen.PackageHolder.generate(PackageHolder.java:203)
     [java]     at
org.jibx.schema.codegen.PackageHolder.generate(PackageHolder.java:218)
     [java]     at
org.jibx.schema.codegen.CodeGen.generate(CodeGen.java:1402)
     [java]     at org.jibx.schema.codegen.CodeGen.main(CodeGen.java:1652)

Here is the ant invocation I am using....

    <target name="qbXML" depends="prepare" description="Generates Code for
qbXML requests">
        <path id="codegen_classpath">
            <fileset dir="${JIBX_HOME}/lib" includes="*.jar" />
            <pathelement location="bin" />
        </path>

        <java classname="org.jibx.schema.codegen.CodeGen" fork="yes"
                classpathref="codegen_classpath" failonerror="true">
            <arg value="-n"/>
            <arg value="com.foo.bar"/>
            <arg value="-s"/>
            <arg value="${srcDir}/xsd"/>
            <arg value="-t"/>
            <arg value="${srcDir}/generated/${srcDir}"/>
            <arg value="-v"/>
            <arg value="qbxmlops70.xsd"/>
        </java>
    </target>

I am using JiBX 1_2_1.

line 18 of the qbxmlops70.xsd includes the qbxml70.xsd file.  



<xsd:include schemaLocation="qbxml70.xsd"/>



The stack trace seems to stem from around line 1446 of the included
qbxml70.xsd file which defines the GeneralSummaryReportType as a restricted
SimpleType made of an enumeration.  



<xsd:element name="GeneralSummaryReportType">

            <xsd:simpleType>

                        <xsd:restriction base="ENUMTYPE">

                                    <xsd:enumeration
value="BalanceSheetPrevYearComp"/>

                                    <xsd:enumeration
value="BalanceSheetStandard"/>

                                    <xsd:enumeration
value="BalanceSheetSummary"/>

                                    <xsd:enumeration
value="CustomerBalanceSummary"/>

                                    <xsd:enumeration
value="ExpenseByVendorSummary"/>

                                    <xsd:enumeration
value="IncomeByCustomerSummary"/>

                                    <xsd:enumeration
value="InventoryStockStatusByItem"/>

                                    <xsd:enumeration
value="InventoryStockStatusByVendor"/>

                                    <xsd:enumeration
value="IncomeTaxSummary"/>

                                    <xsd:enumeration
value="InventoryValuationSummary"/>

                                    <xsd:enumeration
value="PhysicalInventoryWorksheet"/>

                                    <xsd:enumeration
value="ProfitAndLossByClass"/>

                                    <xsd:enumeration
value="ProfitAndLossByJob"/>

                                    <xsd:enumeration
value="ProfitAndLossPrevYearComp"/>

                                    <xsd:enumeration
value="ProfitAndLossStandard"/>

                                    <xsd:enumeration
value="ProfitAndLossYTDComp"/>

                                    <xsd:enumeration
value="PurchaseByItemSummary"/>

                                    <xsd:enumeration
value="PurchaseByVendorSummary"/>

                                    <xsd:enumeration
value="SalesByCustomerSummary"/>

                                    <xsd:enumeration
value="SalesByItemSummary"/>

                                    <xsd:enumeration
value="SalesByRepSummary"/>

                                    <xsd:enumeration
value="SalesTaxLiability"/>

                                    <xsd:enumeration
value="SalesTaxRevenueSummary"/>

                                    <xsd:enumeration value="TrialBalance"/>

                                    <xsd:enumeration
value="VendorBalanceSummary"/>

                        </xsd:restriction>

            </xsd:simpleType>

</xsd:element>



Note that ENUMTYPE restriction is defined in the qbxmltypes70.xsd included
by qbxml70.xsd on line 17.  qbxmltypes70.xsd defines ENUMTYPE as



<xsd:simpleType name="ENUMTYPE">

  <xsd:restriction base="xsd:string">

  </xsd:restriction>

</xsd:simpleType>



I will happily forward the entire XSDs if needed, but they are a bit large.



Unfortunately, as these XSDs are defined by Intuit, I cannot change them.



I have had significant previous positive experience with JiBX, so this comes
somewhat as a surprise to me.  Therefore, only as a data point to rule out
structural problems with the QuickBooks schemas; I offer that the same xsds
complete without errors when using XML-BEANS.  I would, of course, prefer to
stick with JIBX if this can be resolved or worked around, however, this is
presently a show stopper for us.

Any and all help will be greatly appreciated!

Thanks in advance for your help!

Todd


Bookmark with:

Delicious   Digg   reddit   Facebook   StumbleUpon

Related Messages

opensubscriber is not affiliated with the authors of this message nor responsible for its content.