use of javax.xml.stream.XMLStreamWriter in project cxf by apache.
the class NodeDataWriter method write.
public void write(Object obj, Node n) {
try {
Source s = (Source) obj;
if (s instanceof DOMSource && ((DOMSource) s).getNode() == null) {
return;
}
XMLStreamWriter writer = new W3CDOMStreamWriter((Element) n);
StaxUtils.copy(s, writer);
} catch (XMLStreamException e) {
throw new Fault("COULD_NOT_WRITE_XML_STREAM_CAUSED_BY", LOG, e, e.getClass().getCanonicalName(), e.getMessage());
}
}
use of javax.xml.stream.XMLStreamWriter in project cxf by apache.
the class XMLStreamDataReader method validate.
private Element validate(XMLStreamReader input) throws XMLStreamException, IOException {
DOMSource ds = read(input);
Element rootElement = null;
if (ds.getNode() instanceof Document) {
rootElement = ((Document) ds.getNode()).getDocumentElement();
} else {
rootElement = (Element) ds.getNode();
}
WoodstoxValidationImpl impl = new WoodstoxValidationImpl();
XMLStreamWriter nullWriter = null;
if (impl.canValidate()) {
nullWriter = StaxUtils.createXMLStreamWriter(new NUllOutputStream());
impl.setupValidation(nullWriter, message.getExchange().getEndpoint(), message.getExchange().getService().getServiceInfos().get(0));
}
// check if the impl can still validate after the setup, possible issue loading schemas or similar
if (impl.canValidate()) {
// Can use the MSV libs and woodstox to handle the schema validation during
// parsing and processing. Much faster and single traversal
// filter xop node
XMLStreamReader reader = StaxUtils.createXMLStreamReader(ds);
XMLStreamReader filteredReader = StaxUtils.createFilteredReader(reader, new StaxStreamFilter(new QName[] { XOP }));
StaxUtils.copy(filteredReader, nullWriter);
} else {
// MSV not available, use a slower method of cloning the data, replace the xop's, validate
LOG.fine("NO_MSV_AVAILABLE");
Element newElement = rootElement;
if (DOMUtils.hasElementWithName(rootElement, "http://www.w3.org/2004/08/xop/include", "Include")) {
newElement = (Element) rootElement.cloneNode(true);
List<Element> elems = DOMUtils.findAllElementsByTagNameNS(newElement, "http://www.w3.org/2004/08/xop/include", "Include");
for (Element include : elems) {
Node parentNode = include.getParentNode();
parentNode.removeChild(include);
String cid = DOMUtils.getAttribute(include, "href");
// set the fake base64Binary to validate instead of reading the attachment from message
parentNode.setTextContent(javax.xml.bind.DatatypeConverter.printBase64Binary(cid.getBytes()));
}
}
try {
schema.newValidator().validate(new DOMSource(newElement));
} catch (SAXException e) {
throw new XMLStreamException(e.getMessage(), e);
}
}
return rootElement;
}
use of javax.xml.stream.XMLStreamWriter in project cxf by apache.
the class ImportRepairTest method dumpSchema.
private void dumpSchema(Document document) throws Exception {
if (!dumpSchemas) {
return;
}
XMLStreamWriter xwriter = StaxUtils.createXMLStreamWriter(System.err);
xwriter = new PrettyPrintXMLStreamWriter(xwriter, 2);
StaxUtils.copy(new DOMSource(document), xwriter);
xwriter.close();
}
use of javax.xml.stream.XMLStreamWriter in project cxf by apache.
the class XSLTInterceptorsTest method outXMLStreamTest.
@Test
public void outXMLStreamTest() throws XMLStreamException, SAXException, IOException, ParserConfigurationException {
CachedWriter cWriter = new CachedWriter();
cWriter.holdTempFile();
XMLStreamWriter xWriter = StaxUtils.createXMLStreamWriter(cWriter);
message.setContent(XMLStreamWriter.class, xWriter);
outInterceptor.handleMessage(message);
XMLStreamWriter tXWriter = message.getContent(XMLStreamWriter.class);
StaxUtils.copy(new StreamSource(messageIS), tXWriter);
tXWriter.close();
cWriter.releaseTempFileHold();
Document doc = StaxUtils.read(cWriter.getReader());
Assert.assertTrue("Message was not transformed", checkTransformedXML(doc));
}
use of javax.xml.stream.XMLStreamWriter in project cxf by apache.
the class StaxUtilsTest method testCXF2468.
@Test
public void testCXF2468() throws Exception {
Document doc = DOMUtils.newDocument();
doc.appendChild(doc.createElementNS("http://blah.org/", "blah"));
Element foo = doc.createElementNS("http://blah.org/", "foo");
Attr attr = doc.createAttributeNS("http://www.w3.org/2001/XMLSchema-instance", "xsi:nil");
attr.setValue("true");
foo.setAttributeNodeNS(attr);
doc.getDocumentElement().appendChild(foo);
XMLStreamReader sreader = StaxUtils.createXMLStreamReader(doc);
StringWriter sw = new StringWriter();
XMLStreamWriter swriter = StaxUtils.createXMLStreamWriter(sw);
StaxUtils.copy(sreader, swriter, true);
swriter.flush();
assertTrue("No xsi namespace: " + sw.toString(), sw.toString().contains("XMLSchema-instance"));
}
Aggregations