private QName getPayloadElementName(Element ele) { XMLStreamReader xmlreader = StaxUtils.createXMLStreamReader(ele); DepthXMLStreamReader reader = new DepthXMLStreamReader(xmlreader); try { if (this.mode == Service.Mode.PAYLOAD) { StaxUtils.skipToStartOfElement(reader); return reader.getName(); } if (this.mode == Service.Mode.MESSAGE) { StaxUtils.skipToStartOfElement(reader); StaxUtils.toNextTag(reader, new QName(ele.getNamespaceURI(), "Body")); reader.nextTag(); return reader.getName(); } } catch (XMLStreamException e) { // ignore } return null; }
private QName readCurrentElement() { if (currentEvent != null) { return currentEvent.getName(); } String ns = super.getNamespaceURI(); String name = super.getLocalName(); String prefix = super.getPrefix(); return new QName(ns, name, prefix == null ? "" : prefix); }
public static boolean toNextTag(DepthXMLStreamReader reader, QName endTag) { try { int depth = reader.getDepth(); int event = reader.getEventType(); while (reader.getDepth() >= depth && reader.hasNext()) { if (event == XMLStreamConstants.START_ELEMENT && reader.getName().equals(endTag) && reader.getDepth() == depth + 1) { return true; } event = reader.next(); } return false; } catch (XMLStreamException e) { throw new RuntimeException("Couldn't parse stream.", e); } }
private QName getPayloadElementName(Object object) { JAXBDataBinding dataBinding = new JAXBDataBinding(); dataBinding.setContext(context); DataWriter<XMLStreamWriter> dbwriter = dataBinding.createWriter(XMLStreamWriter.class); StringWriter stringWriter = new StringWriter(); XMLStreamWriter resultWriter = StaxUtils.createXMLStreamWriter(stringWriter); DepthXMLStreamReader reader = null; try { dbwriter.write(object, resultWriter); resultWriter.flush(); if (!StringUtils.isEmpty(stringWriter.toString())) { ByteArrayInputStream binput = new ByteArrayInputStream(stringWriter.getBuffer().toString() .getBytes()); XMLStreamReader xmlreader = StaxUtils.createXMLStreamReader(binput); reader = new DepthXMLStreamReader(xmlreader); StaxUtils.skipToStartOfElement(reader); return reader.getName(); } } catch (XMLStreamException e) { // ignore } finally { try { StaxUtils.close(reader); } catch (XMLStreamException e) { // ignore } StaxUtils.close(resultWriter); } return null; }
public static boolean skipToStartOfElement(DepthXMLStreamReader in) throws XMLStreamException { for (int code = in.getEventType(); code != XMLStreamConstants.END_DOCUMENT; code = in.next()) { if (code == XMLStreamConstants.START_ELEMENT) { return true; } } return false; } public static void copy(Source source, OutputStream os) throws XMLStreamException {
if (!StaxUtils.toNextElement(xmlReader)) { message.setContent(Exception.class, new RuntimeException("There must be a method name element.")); String opName = xmlReader.getLocalName(); if (isRequestor(message) && opName.endsWith("Response")) { opName = opName.substring(0, opName.length() - 8); if (message.getExchange().getBindingOperationInfo() == null) { operation = getOperation(message, new QName(xmlReader.getNamespaceURI(), opName)); if (operation == null) { operation = message.getExchange().getBindingOperationInfo(); StaxUtils.nextEvent(xmlReader); QName qn = xmlReader.getName(); if (qn.equals(SOAP12_RESULT)) { while (xmlReader.getEventType() != XMLStreamConstants.END_ELEMENT) { xmlReader.next(); xmlReader.next(); } catch (XMLStreamException e) { qn = xmlReader.getName();
@Override public void handleMessage(Message message) throws Fault { DepthXMLStreamReader xmlReader = getXMLStreamReader(message); if (!StaxUtils.toNextElement(xmlReader)) { message.setContent(Exception.class, new RuntimeException("There must be a method name element.")); } String opName = xmlReader.getLocalName(); if (isRequestor(message) && opName.endsWith("Response")) { opName = opName.substring(0, opName.length() - 8); } BindingOperationInfo operation = getOperation(message, new QName(xmlReader.getNamespaceURI(), opName)); message.getExchange().put(BindingOperationInfo.class, operation); } }
public String getLocalName() { if (currentEvent != null) { return currentEvent.getName().getLocalPart(); } return super.getLocalName(); }
private BindingOperationInfo getBindingOperationInfo(DepthXMLStreamReader xmlReader, Exchange exchange, BindingOperationInfo bop, boolean client) { //bop might be a unwrapped, wrap it back so that we can get correct info if (bop != null && bop.isUnwrapped()) { bop = bop.getWrappedOperation(); } if (bop == null) { QName startQName = xmlReader == null ? new QName("http://cxf.apache.org/jaxws/provider", "invoke") : xmlReader.getName(); bop = getBindingOperationInfo(exchange, startQName, client); } return bop; }
public MessageReader getAttributeReader(QName qName) { String attribute = root.getAttributeValue(qName.getNamespaceURI(), qName.getLocalPart()); if (attribute == null && "".equals(qName.getNamespaceURI())) { // The qName namespaceURI of the attribute seems to be null // rather than "" when using the ibmjdk. // The MtomTest systest fails unless we do this. attribute = root.getAttributeValue(null, qName.getLocalPart()); } return new AttributeReader(qName, attribute); }
return; Endpoint ep = message.getExchange().getEndpoint(); XMLStreamReader xsr = message.getContent(XMLStreamReader.class); if (xsr == null) { return; DepthXMLStreamReader reader = new DepthXMLStreamReader(xsr); if (!StaxUtils.toNextElement(reader)) { throw new Fault(new org.apache.cxf.common.i18n.Message("NO_OPERATION_ELEMENT", LOG)); Exchange ex = message.getExchange(); QName startQName = reader.getName(); if (startQName.getLocalPart().equals(XMLFault.XML_FAULT_ROOT)) { message.getInterceptorChain().abort(); xsr.nextTag(); } catch (XMLStreamException xse) { throw new Fault(new org.apache.cxf.common.i18n.Message("STAX_READ_EXC", LOG));
public String getNamespaceURI() { if (currentEvent != null) { return currentEvent.getName().getNamespaceURI(); } else { return super.getNamespaceURI(); } }
private void readJBIWrapper(DepthXMLStreamReader reader) throws XMLStreamException { QName startQName; if (!StaxUtils.skipToStartOfElement(reader)) { throw new Fault(new org.apache.cxf.common.i18n.Message( "NOT_ENOUGH_PARTS", BUNDLE)); } startQName = reader.getName(); if (!startQName.equals(JBIConstants.JBI_WRAPPER_PART)) { throw new Fault(new org.apache.cxf.common.i18n.Message( "NO_JBI_PART_ELEMENT", BUNDLE)); } }
public void handleMessage(Message message) throws Fault { XMLStreamReader xsr = message.getContent(XMLStreamReader.class); DepthXMLStreamReader reader = new DepthXMLStreamReader(xsr); try { reader.nextTag(); if (!StaxUtils.toNextElement(reader)) { throw new Fault(new org.apache.cxf.common.i18n.Message("ILLEGAL_XMLFAULT_FORMAT", BUNDLE)); } String exMessage = reader.getElementText(); Fault fault = new XMLFault(exMessage); reader.nextTag(); if (StaxUtils.toNextElement(reader)) { // handling detail Element detail = StaxUtils.read(new FragmentStreamReader(reader)).getDocumentElement(); fault.setDetail(detail); } message.setContent(Exception.class, fault); } catch (XMLStreamException xse) { throw new Fault(new org.apache.cxf.common.i18n.Message("STAX_READ_EXC", BUNDLE)); } } }
public void handleMessage(Message message) { if (isGET(message) && message.getContent(List.class) != null) { LOG.fine("BareInInterceptor skipped in HTTP GET method"); return; Exchange exchange = message.getExchange(); ops = new ArrayList<>(); ops.addAll(si.getInterface().getOperations()); if (xmlReader.getEventType() == XMLStreamConstants.END_ELEMENT && !client) { while (StaxUtils.toNextElement(xmlReader)) { QName elName = xmlReader.getName(); Object o = null; throw new Fault(new org.apache.cxf.common.i18n.Message("NO_PART_FOUND", LOG, elName), Fault.FAULT_CODE_CLIENT); } catch (Fault fault) { if (!isRequestor(message)) { fault.setFaultCode(Fault.FAULT_CODE_CLIENT); message.setContent(List.class, parameters);
protected DepthXMLStreamReader getXMLStreamReader(Message message) { XMLStreamReader xr = message.getContent(XMLStreamReader.class); if (xr == null) { return null; } if (xr instanceof DepthXMLStreamReader) { return (DepthXMLStreamReader) xr; } DepthXMLStreamReader dr = new DepthXMLStreamReader(xr); message.setContent(XMLStreamReader.class, dr); return dr; }
public DOMSource read(XMLStreamReader reader) { // Use a DOMSource for now, we should really use a StaxSource/SAXSource though for // performance reasons try { XMLStreamReader reader2 = reader; if (reader2 instanceof DepthXMLStreamReader) { reader2 = ((DepthXMLStreamReader)reader2).getReader(); } if (reader2 instanceof W3CDOMStreamReader) { W3CDOMStreamReader domreader = (W3CDOMStreamReader)reader2; DOMSource o = new DOMSource(domreader.getCurrentElement()); domreader.consumeFrame(); return o; } Document document = StaxUtils.read(reader); if (reader.hasNext()) { //need to actually consume the END_ELEMENT reader.next(); } return new DOMSource(document); } catch (XMLStreamException e) { throw new Fault("COULD_NOT_READ_XML_STREAM_CAUSED_BY", LOG, e, e.getClass().getCanonicalName(), e.getMessage()); } }
public void handleMessage(JBIMessage message) throws Fault { XMLStreamReader xsr = message.getContent(XMLStreamReader.class); DepthXMLStreamReader reader = new DepthXMLStreamReader(xsr); try { if (!StaxUtils.toNextElement(reader)) { throw new Fault(new org.apache.cxf.common.i18n.Message("ILLEGAL_JBIFAULT_FORMAT", BUNDLE)); } Fault fault = new JBIFault(new org.apache.cxf.common.i18n.Message(JBIFault.JBI_FAULT_STRING, (ResourceBundle) null)); if (StaxUtils.toNextElement(reader)) { // handling detail Element detail = StaxUtils.read(new FragmentStreamReader(reader)).getDocumentElement(); fault.setDetail(detail); } message.setContent(Exception.class, fault); } catch (XMLStreamException xse) { throw new Fault(new org.apache.cxf.common.i18n.Message("STAX_READ_EXC", BUNDLE)); } } }
DataReader<XMLStreamReader> dr = getDataReader(message); boolean client = isRequestor(message); Exchange exchange = message.getExchange(); BindingOperationInfo bop = null; Service service = ServiceModelUtil.getService(message.getExchange()); QName elName = xmlReader.getName(); bop = findMessagePart(exchange, operations, elName, client, message); f.setFaultCode(Fault.FAULT_CODE_CLIENT);
/** * @param is * @throws XMLStreamException */ public ElementReader(InputStream is) throws XMLStreamException { // XMLInputFactory factory = XMLInputFactory.newInstance(); // XMLStreamReader xmlReader = factory.createXMLStreamReader(is); XMLStreamReader xmlReader = StaxUtils.createXMLStreamReader(is, null); xmlReader.nextTag(); this.root = new DepthXMLStreamReader(xmlReader); this.localName = root.getLocalName(); this.name = root.getName(); this.namespace = root.getNamespaceURI(); extractXsiType(); depth = root.getDepth(); }