package org.eclipse.persistence.testing.oxm.xmlmarshaller; import org.eclipse.persistence.internal.oxm.QNameInheritancePolicy; import org.eclipse.persistence.oxm.NamespaceResolver; import org.eclipse.persistence.oxm.XMLDescriptor; import org.eclipse.persistence.oxm.XMLField; import org.eclipse.persistence.oxm.mappings.XMLDirectMapping; import org.eclipse.persistence.oxm.schema.XMLSchemaClassPathReference; import org.eclipse.persistence.sessions.Project; public class MotorcycleProject extends Project { NamespaceResolver nsr; public MotorcycleProject() { nsr = new NamespaceResolver(); nsr.put("ns2", "http://www.example.com"); nsr.put("xsi", "http://www.w3.org/2001/XMLSchema-instance"); addDescriptor(getMotorcycleDescriptor()); addDescriptor(getSportBikeDescriptor()); } private XMLDescriptor getMotorcycleDescriptor() { XMLDescriptor descriptor = new XMLDescriptor(); descriptor.setJavaClass(Motorcycle.class); descriptor.setDefaultRootElement("ns2:Motorcycle"); XMLField classIndicatorField = new XMLField("@xsi:type"); descriptor.getInheritancePolicy().setClassIndicatorField(classIndicatorField); descriptor.getInheritancePolicy().addClassIndicator(SportBike.class, "ns2:SportBike"); descriptor.getInheritancePolicy().addClassIndicator(Motorcycle.class, "ns2:Motorcycle"); descriptor.getInheritancePolicy().setShouldReadSubclasses(true); descriptor.setNamespaceResolver(nsr); XMLDirectMapping licenseMapping = new XMLDirectMapping(); licenseMapping.setAttributeName("license"); licenseMapping.setXPath("license-number/text()"); descriptor.addMapping(licenseMapping); return descriptor; } private XMLDescriptor getSportBikeDescriptor() { XMLDescriptor descriptor = new XMLDescriptor(); descriptor.setJavaClass(SportBike.class); descriptor.getInheritancePolicy().setParentClass(Motorcycle.class); descriptor.setDefaultRootElement("ns2:Motorcycle"); descriptor.setNamespaceResolver(nsr); XMLDirectMapping displacementMapping = new XMLDirectMapping(); displacementMapping.setAttributeName("displacement"); displacementMapping.setXPath("engine-size/text()"); descriptor.addMapping(displacementMapping); return descriptor; } }