Jsonix Defining Complex Types By Extension

HTML

<script src="https://rawgithub.com/highsource/jsonix/master/dist/Jsonix-all.js"></script>

JavaScript 1.7

var MyModule = {
    name: 'MyModule',
    typeInfos: [{
        type: 'classInfo',
        localName: 'BaseType',
        propertyInfos: [{
            type: 'element',
            name: 'alpha',
            elementName: 'Alpha',
            typeInfo: 'String'
        }, {
            type: 'element',
            name: 'beta',
            elementName: 'Beta',
            collection: true,
            typeInfo: 'Integer'
        }]
    }, {
        type: 'classInfo',
        localName: 'ExtendedType',
        baseTypeInfo: 'MyModule.BaseType',
        propertyInfos: [{
            type: 'element',
            name: 'gamma',
            elementName: 'Gamma',
            typeInfo: 'AnyURI'
        }, {
            type: 'element',
            name: 'delta',
            elementName: 'Delta',
            collection: true,
            typeInfo: 'Date'
        }]
    }],
    elementInfos: [{
        elementName: 'Base',
        typeInfo: 'MyModule.BaseType'
    }, {
        elementName: 'Extended',
        typeInfo: 'MyModule.ExtendedType'
    }]
};
var context = new Jsonix.Context([MyModule]);
var unmarshaller = context.createUnmarshaller();
var unmarshalledBase = unmarshaller.unmarshalString('<Base><Alpha>one</Alpha><Beta>2</Beta><Beta>3</Beta></Base>');
debugger;
console.log(unmarshalledBase);
var unmarshalledExtended = unmarshaller.unmarshalString('<Extended><Alpha>one</Alpha><Beta>2</Beta><Beta>3</Beta><Gamma>urn:four</Gamma><Delta>2005-06-07</Delta><Delta>2008-09-10</Delta></Extended>');

console.log(unmarshalledExtended);