boolean isAbstract = false; boolean publish = true; NamedNodeMap atts = element.getAttributes(); String bus = element.getAttribute("bus"); if (StringUtils.isEmpty(bus)) { addBusWiringAttribute(bean, BusWiringType.CONSTRUCTOR); } else { Element elem = DOMUtils.getFirstElement(element); while (elem != null) { String name = elem.getLocalName(); if ("properties".equals(name)) { Map<?, ?> map = ctx.getDelegate().parseMapElement(elem, bean.getBeanDefinition()); setFirstChildAsProperty(elem, ctx, bean, name); elem = DOMUtils.getNextElement(elem);
private static void findAllElementsByTagNameNS(Element el, String nameSpaceURI, String localName, List<Element> elementList) { if (el.getNamespaceURI() != null && localName.equals(el.getLocalName()) && nameSpaceURI.contains(el.getNamespaceURI())) { elementList.add(el); } Element elem = getFirstElement(el); while (elem != null) { findAllElementsByTagNameNS(elem, nameSpaceURI, localName, elementList); elem = getNextElement(elem); } }
Node node = SAAJUtils.getBody(msg).getFirstChild(); while (node != null && !(node instanceof Element)) { node = node.getNextSibling(); reader = StaxUtils.createXMLStreamReader(source); } catch (SOAPException e) { throw new Fault(e); DocumentFragment doc = DOMUtils.getEmptyDocument().createDocumentFragment(); W3CDOMStreamWriter writer = new W3CDOMStreamWriter(doc); reader = message.getContent(XMLStreamReader.class); StaxUtils.toNextTag(reader); StaxUtils.copy(reader, writer, true); doc.appendChild(DOMUtils.getFirstElement(writer.getCurrentFragment())); source = new DOMSource(DOMUtils.getFirstElement(doc)); reader = StaxUtils.createXMLStreamReader(DOMUtils.getFirstElement(doc)); } catch (XMLStreamException e) { throw new Fault(e); source = new DOMSource(writer.getDocument().getDocumentElement()); reader = StaxUtils.createXMLStreamReader(writer.getDocument());
private QName getPayloadElementName(SOAPMessage soapMessage) { try { // we only care about the first element node, not text nodes Element element = DOMUtils.getFirstElement(SAAJUtils.getBody(soapMessage)); if (element != null) { return DOMUtils.getElementQName(element); } } catch (Exception e) { //ignore } return null; }
private void validateFaultDetail(Element detail, Schema schema, BindingOperationInfo bop) throws Exception { if (detail != null) { Element el = DOMUtils.getFirstElement(detail); while (el != null) { QName qn = DOMUtils.getElementQName(el); for (BindingFaultInfo bfi : bop.getFaults()) { if (bfi.getFaultInfo().getMessagePartByIndex(0).getConcreteName().equals(qn)) { //Found a fault with the correct QName, we can validate it schema.newValidator().validate(new DOMSource(DOMUtils.getDomElement(el))); } } el = DOMUtils.getNextElement(el); } } } private void validateFault(SoapMessage message, SOAPFault fault, BindingOperationInfo bop) {
private void validatePossibleFault(Message message, BindingOperationInfo bop, Node ds) { Element el = DOMUtils.getFirstElement(ds); if (!"Fault".equals(el.getLocalName())) { return; } message.put(Message.RESPONSE_CODE, 500); el = DOMUtils.getFirstElement(el); while (el != null && !"detail".equals(el.getLocalName())) { el = DOMUtils.getNextElement(el); } if (el != null) { Schema schema = EndpointReferenceUtils.getSchema(message.getExchange().getService() .getServiceInfos().get(0), message.getExchange().getBus()); try { validateFaultDetail(el, schema, bop); } catch (Exception e) { throw new Fault(e); } //We validated what we can from a fault standpoint message.put(Message.SCHEMA_VALIDATION_ENABLED, Boolean.FALSE); } } private void validateFaultDetail(Element detail, Schema schema, BindingOperationInfo bop) throws Exception {
private Document doEmptyNamespaceHack(Document d) { boolean hasStuffToRemove = false; Element el = DOMUtils.getFirstElement(d.getDocumentElement()); while (el != null) { if ("import".equals(el.getLocalName()) && StringUtils.isEmpty(el.getAttribute("targetNamespace"))) { hasStuffToRemove = true; break; } el = DOMUtils.getNextElement(el); } if (hasStuffToRemove) { // create a copy of the dom so we // can modify it. d = copy(d); el = DOMUtils.getFirstElement(d.getDocumentElement()); while (el != null) { if ("import".equals(el.getLocalName()) && StringUtils.isEmpty(el.getAttribute("targetNamespace"))) { d.getDocumentElement().removeChild(el); el = DOMUtils.getFirstElement(d.getDocumentElement()); } else { el = DOMUtils.getNextElement(el); } } } return d; }
public boolean addSchemaDocument(SchemaCollection col, List<String> tnsList, Document d, String systemId, boolean hackAroundEmptyNamespaceIssue) { String ns = d.getDocumentElement().getAttribute("targetNamespace"); if (StringUtils.isEmpty(ns)) { if (DOMUtils.getFirstElement(d.getDocumentElement()) == null) { hackAroundEmptyNamespaceIssue = true; return hackAroundEmptyNamespaceIssue; d.getDocumentElement().setAttribute("targetNamespace", ns); Node n = d.getDocumentElement().getFirstChild(); while (n != null) { if (n instanceof Element) { n = n.getNextSibling();
private XMLSignature prepareDetachedSignature(Document doc, String id, String referenceId, String sigAlgo, String digestAlgo) throws Exception { Element docEl = doc.getDocumentElement(); Document newDoc = DOMUtils.createDocument(); doc.removeChild(docEl); newDoc.adoptNode(docEl); docEl.setAttributeNS(null, "Id", id); docEl.setIdAttributeNS(null, "Id", true); Element root = newDoc.createElementNS(envelopeQName.getNamespaceURI(), envelopeQName.getPrefix() + ":" + envelopeQName.getLocalPart()); root.appendChild(docEl); newDoc.appendChild(root); XMLSignature sig = new XMLSignature(newDoc, "", sigAlgo); root.appendChild(sig.getElement()); Transforms transforms = new Transforms(newDoc); transforms.addTransform(Transforms.TRANSFORM_C14N_EXCL_OMIT_COMMENTS); sig.addDocument(referenceId, transforms, digestAlgo); return sig; }
@Test public void testWadlPublishedEndpointUrl() throws Exception { String requestURI = "http://localhost:" + PORT + "/webapp/resources2"; WebClient client = WebClient.create(requestURI + "?_wadl&_type=xml"); Document doc = StaxUtils.read(new InputStreamReader(client.get(InputStream.class), StandardCharsets.UTF_8)); Element root = doc.getDocumentElement(); assertEquals(WadlGenerator.WADL_NS, root.getNamespaceURI()); assertEquals("application", root.getLocalName()); List<Element> resourcesEls = DOMUtils.getChildrenWithName(root, WadlGenerator.WADL_NS, "resources"); assertEquals(1, resourcesEls.size()); Element resourcesEl = resourcesEls.get(0); assertEquals("http://proxy", resourcesEl.getAttribute("base")); }
private void createFaultDetail(Document faultData, FaultInfo faultInfo, Fault faultEx) { MessagePartInfo partInfo = faultInfo.getMessageParts().get(0); QName partInfoName = partInfo.getElementQName(); Document faultDoc = DOMUtils.getEmptyDocument(); Element faultElement = faultDoc.createElement("detail"); Element partElement = faultDoc.createElementNS(partInfoName.getNamespaceURI(), partInfoName.getLocalPart()); Element faultDataElement = (Element) faultData.getFirstChild(); Node node = faultDataElement.getFirstChild(); while (node != null) { Node importedFaultData = faultDoc.importNode(node, true); partElement.appendChild(importedFaultData); node = node.getNextSibling(); } faultElement.appendChild(partElement); faultEx.setDetail(faultElement); }
private Object extractPartsInfoFromDetail(Element faultDetail, RaisesType exType) { Document faultDoc = DOMUtils.createDocument(); Element faultElement = faultDoc.createElement(exType.getException().getLocalPart()); faultDoc.appendChild(faultElement); Node node = faultDetail.getFirstChild(); while (node != null) { Node importedFaultData = faultDoc.importNode(node, true); faultElement.appendChild(importedFaultData); node = node.getNextSibling(); } if (LOG.isLoggable(Level.FINE)) { LOG.fine("Exception DOM: " + StaxUtils.toString(faultElement)); } return faultDoc; }
XmlSchema addSchemaElement(SchemaTypeSystem sts, Document doc, Element elem, String file) throws URISyntaxException { doc.appendChild(elem); elem = DOMUtils.getFirstElement(elem); while (elem != null) { if (elem.getLocalName().equals("import")) { URI uri = new URI(file); String loc = elem.getAttribute("schemaLocation"); if (!StringUtils.isEmpty(loc)) { URI locUri = uri.resolve(loc); String newLoc = locUri.toString(); getSchema(sts, newLoc); } } elem = DOMUtils.getNextElement(elem); } XmlSchema schema = dataBinding.addSchemaDocument(serviceInfo, schemas, doc, file); doc.removeChild(doc.getDocumentElement()); schemaMap.put(file, schema); return schema; } protected XmlSchema getSchema(SchemaTypeSystem sts, String file) {
private void updateWSDLImports(Element el, Map<String, String> wsdlSourceMap) { List<Element> imps = DOMUtils.getChildrenWithName(el, WSDLConstants.QNAME_IMPORT.getNamespaceURI(), "import"); for (Element e : imps) { String ns = e.getAttribute("namespace"); e.setAttribute("location", wsdlSourceMap.get(ns)); } } }
private void fixSchema(Schema sc, String pfx) throws ParserConfigurationException { Document doc = DOMUtils.getEmptyDocument(); Element el = doc.createElementNS(sc.getElementType().getNamespaceURI(), pfx + ":" + sc.getElementType().getLocalPart()); sc.setElement(el); Map<String, List<String>> mp = CastUtils.cast(sc.getImports()); for (Map.Entry<String, List<String>> ent : mp.entrySet()) { Element imp = doc.createElementNS(sc.getElementType().getNamespaceURI(), pfx + ":import"); el.appendChild(imp); imp.setAttribute("namespace", ent.getKey()); } }
public static String getIdFromSTR(Element str) { Element child = DOMUtils.getFirstElement(str); if (child == null) { return null; } if ("KeyInfo".equals(child.getLocalName()) && WSS4JConstants.SIG_NS.equals(child.getNamespaceURI())) { return DOMUtils.getContent(child); } else if (Reference.TOKEN.getLocalPart().equals(child.getLocalName()) && Reference.TOKEN.getNamespaceURI().equals(child.getNamespaceURI())) { return child.getAttributeNS(null, "URI").substring(1); } return null; }
private void updateImports(Element el, Map<String, String> sourceMap) { List<Element> imps = DOMUtils.getChildrenWithName(el, WSDLConstants.NS_SCHEMA_XSD, "import"); for (Element e : imps) { String ns = e.getAttribute("namespace"); e.setAttribute("schemaLocation", sourceMap.get(ns)); } }
protected Header findSecurityHeader(SoapMessage message, boolean create) { for (Header h : message.getHeaders()) { QName n = h.getName(); if ("Security".equals(n.getLocalPart()) && (n.getNamespaceURI().equals(WSS4JConstants.WSSE_NS) || n.getNamespaceURI().equals(WSS4JConstants.WSSE11_NS))) { return h; } } if (!create) { return null; } Document doc = DOMUtils.getEmptyDocument(); Element el = doc.createElementNS(WSS4JConstants.WSSE_NS, "wsse:Security"); el.setAttributeNS(WSS4JConstants.XMLNS_NS, "xmlns:wsse", WSS4JConstants.WSSE_NS); SoapHeader sh = new SoapHeader(new QName(WSS4JConstants.WSSE_NS, "Security"), el); sh.setMustUnderstand(true); message.getHeaders().add(sh); return sh; }
private void addPolicyRef(Extensible ext, Policy p) { Document doc = DOMUtils.getEmptyDocument(); Element el = doc.createElementNS(p.getNamespace(), Constants.ELEM_POLICY_REF); el.setPrefix(Constants.ATTR_WSP); el.setAttribute(Constants.ATTR_URI, "#" + p.getId()); UnknownExtensibilityElement uee = new UnknownExtensibilityElement(); uee.setElementType(new QName(p.getNamespace(), Constants.ELEM_POLICY_REF)); uee.setElement(el); uee.setRequired(true); ext.addExtensor(uee); }
public String getPrimarySwitch() { //NodeList switches = element.getElementsByTagNameNS(Tool.TOOL_SPEC_PUBLIC_ID, "switch"); List<Element> switches = DOMUtils.findAllElementsByTagNameNS(element, Tool.TOOL_SPEC_PUBLIC_ID, "switch"); // options must have atleast one switch, as enforced by schema, so no // need for defensive coding. return switches.get(0).getFirstChild().getNodeValue(); }