/** * Creates and initializes an XStream facade, ready to (de)serialize Data Conservancy model entities. * * Currently this factory does not allow the XStream {@link com.thoughtworks.xstream.io.HierarchicalStreamDriver driver} * to be injected, because this implementation requires a custom, namespace aware StAX driver. * * @return a new, initialized XStream instance, ready to (de)serialize DC entities */ public static XStream newInstance() { // QName Map final QNameMap qnames = new QNameMap(); final String defaultnsUri = DcpModelVersion.VERSION_1_0.getXmlns(); qnames.setDefaultNamespace(defaultnsUri); final DcsPullDriver driver = new DcsPullDriver(qnames); // The XStream Driver final XStream x = new XStream(driver); x.alias(DcsEventListConverter.E_EVENTS, List.class); x.registerConverter(new DcsEventListConverter()); qnames.registerMapping(new QName(defaultnsUri, DcsEventListConverter.E_EVENTS), List.class); x.alias(EventConverter.E_EVENT, DcsEvent.class); x.registerConverter(new EventConverter()); qnames.registerMapping(new QName(defaultnsUri, EventConverter.E_EVENT), DcsEvent.class); return x; }
@Override public void marshal(Object source, HierarchicalStreamWriter writer, MarshallingContext context) { // The only real purpose for this method is to create the // start and end nodes so that the DCS DU converter will // not need to change. writer.startNode("Events"); writer.startNode(source.getClass().getName()); super.marshal(source, writer, context); writer.endNode(); writer.endNode(); }
final String name = getElementName(reader);//reader.getNodeName();
final String name = getElementName(reader);//reader.getNodeName();
x.registerConverter(new EventConverter()); qnames.registerMapping(new QName(defaultnsUri, EventConverter.E_EVENT), DcsEvent.class);
x.registerConverter(new EventConverter()); qnames.registerMapping(new QName(defaultnsUri, EventConverter.E_EVENT), DcsEvent.class);
x.registerConverter(new EventConverter()); qnames.registerMapping(new QName(defaultnsUri, EventConverter.E_EVENT), DcsEvent.class);
x.registerConverter(new EventConverter()); qnames.registerMapping(new QName(defaultnsUri, EventConverter.E_EVENT), DcsEvent.class);