Coder Social home page Coder Social logo

Comments (3)

realdadfish avatar realdadfish commented on August 16, 2024

If I use JavaGen instead of KotlinGen as base class, the error is almost identical:

java.lang.NullPointerException: Cannot get property 'imports' on null object
        at com.javagen.schema.model.MSource$Imports.leftShift(MSource.groovy:83)
        at com.javagen.schema.model.MSource$Imports$leftShift.call(Unknown Source)
        at com.javagen.schema.java.JavaJacksonCallback$_gen_closure1.doCall(JavaJacksonCallback.groovy:108)
        at com.javagen.schema.java.JavaJacksonCallback.gen(JavaJacksonCallback.groovy:105)
        at com.javagen.schema.java.JavaJacksonCallback$gen.call(Unknown Source)
        at com.javagen.schema.java.JavaGen.visit(JavaGen.groovy:357)
        at com.javagen.schema.xml.XmlSchemaVisitor$visit$2.call(Unknown Source)
        at com.javagen.schema.xml.XmlSchemaVisitor$Trait$Helper.visit(XmlSchemaVisitor.groovy:37)
        at com.javagen.schema.xml.XmlSchemaVisitor$Trait$Helper$visit$1.call(Unknown Source)
        at com.javagen.schema.java.JavaGen.visit(JavaGen.groovy:143)
        at com.javagen.schema.java.JavaGen$visit.callCurrent(Unknown Source)
        at com.javagen.schema.java.JavaGen.gen(JavaGen.groovy:126)
        at com.javagen.schema.java.JavaGen$gen$3.call(Unknown Source)

from schema-gen.

realdadfish avatar realdadfish commented on August 16, 2024

I debugged to it and figured that it processes an enum type and then fails to get it's parent class (the left-shift operator on enumClass.imports internally accesses enumClass.parent and that is null):

screenshot

This is the XSD snippet it stumbles across:

    <xs:simpleType name="boolean">
        <xs:restriction base="xs:string">
            <xs:enumeration value="True" />
            <xs:enumeration value="False" />
        </xs:restriction>
    </xs:simpleType>

xjc creates the following Java POJO for this:

@XmlType(name = "boolean")
@XmlEnum
public enum Boolean {

    @XmlEnumValue("True")
    TRUE("True"),
    @XmlEnumValue("False")
    FALSE("False");
    private final String value;

    Boolean(String v) {
        value = v;
    }

    public String value() {
        return value;
    }

    public static Boolean fromValue(String v) {
        for (Boolean c: Boolean.values()) {
            if (c.value.equals(v)) {
                return c;
            }
        }
        throw new IllegalArgumentException(v);
    }

}

I'm not exactly sure what this "parent" is supposed to mean in this context. XSD-wise, this type (and others) are common types that reside in a separate CommonTypes.xsd and that are imported into the specific business XSD right after the xsd:schema root element (before the first xsd:element).

from schema-gen.

realdadfish avatar realdadfish commented on August 16, 2024

I wrote some code to flatten the import statement and include all the imported element definitions in the source file. Still, the code exits for the Boolean type just as before. I found another issue while testing a different XSD file, I'll open up a separate ticket for that.

from schema-gen.

Related Issues (20)

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.