Search in sources :

Example 1 with BIGlobalBinding

use of com.sun.tools.xjc.reader.xmlschema.bindinfo.BIGlobalBinding in project jaxb-ri by eclipse-ee4j.

the class BGMBuilder method promoteGlobalBindings.

/**
 * List up all the global bindings.
 */
private void promoteGlobalBindings() {
    // promote any global bindings in the schema
    XSSchemaSet schemas = Ring.get(XSSchemaSet.class);
    for (XSSchema s : schemas.getSchemas()) {
        BindInfo bi = getBindInfo(s);
        // collect all global customizations
        model.getCustomizations().addAll(bi.toCustomizationList());
        BIGlobalBinding gb = bi.get(BIGlobalBinding.class);
        if (gb == null)
            continue;
        gb.markAsAcknowledged();
        if (globalBinding == null) {
            globalBinding = gb;
        } else {
            if (!globalBinding.isEqual(gb)) {
                // see Issue 687 - this may happen with syntactically imported documents
                // acknowledge this customization and report an error
                // otherwise the user will see "customization is attached to a wrong place" error,
                // which is incorrect
                getErrorReporter().error(gb.getLocation(), Messages.ERR_MULTIPLE_GLOBAL_BINDINGS);
                getErrorReporter().error(globalBinding.getLocation(), Messages.ERR_MULTIPLE_GLOBAL_BINDINGS_OTHER);
            }
        }
    }
    if (globalBinding == null) {
        // no global customization is present.
        // use the default one
        globalBinding = new BIGlobalBinding();
        BindInfo big = new BindInfo();
        big.addDecl(globalBinding);
        big.setOwner(this, null);
    }
    // code generation mode
    model.strategy = globalBinding.getCodeGenerationStrategy();
    model.rootClass = globalBinding.getSuperClass();
    model.rootInterface = globalBinding.getSuperInterface();
    particleBinder = globalBinding.isSimpleMode() ? new ExpressionParticleBinder() : new DefaultParticleBinder();
    // check XJC extensions and realize them
    BISerializable serial = globalBinding.getSerializable();
    if (serial != null) {
        model.serializable = true;
        model.serialVersionUID = serial.uid;
    }
    // obtain the name conversion mode
    if (globalBinding.nameConverter != null)
        model.setNameConverter(globalBinding.nameConverter);
    // attach global conversions to the appropriate simple types
    globalBinding.dispatchGlobalConversions(schemas);
    globalBinding.errorCheck();
}
Also used : XSSchemaSet(com.sun.xml.xsom.XSSchemaSet) BIGlobalBinding(com.sun.tools.xjc.reader.xmlschema.bindinfo.BIGlobalBinding) XSSchema(com.sun.xml.xsom.XSSchema) BISerializable(com.sun.tools.xjc.reader.xmlschema.bindinfo.BISerializable) BindInfo(com.sun.tools.xjc.reader.xmlschema.bindinfo.BindInfo)

Aggregations

BIGlobalBinding (com.sun.tools.xjc.reader.xmlschema.bindinfo.BIGlobalBinding)1 BISerializable (com.sun.tools.xjc.reader.xmlschema.bindinfo.BISerializable)1 BindInfo (com.sun.tools.xjc.reader.xmlschema.bindinfo.BindInfo)1 XSSchema (com.sun.xml.xsom.XSSchema)1 XSSchemaSet (com.sun.xml.xsom.XSSchemaSet)1