private void debugPDPResponse(Element response) { StringBuilder text = new StringBuilder(); String resourceId = XMLPathCtx.createNew().findIn(response).text("//*[local-name() = 'Result']/@ResourceId").get(); String decision = XMLPathCtx.createNew().findIn(response).text("//*[local-name() = 'Result']/*[local-name() = 'Decision']/text()").get(); text.append("Resource: \t").append(resourceId ).append("\n"); text.append("Decision: \t").append(decision).append("\n"); NodeList obligationNodes = XMLPathCtx.createNew().findIn(response).all("//*[local-name() = 'Obligation']").get(); for (int i = 0; i < obligationNodes.getLength(); i++) { Element obligationElem = (Element) obligationNodes.item(i); String oblId = obligationElem.getAttribute("ObligationId"); String fulfillOn = obligationElem.getAttribute("FulfillOn"); text.append("Obligation: \t").append(oblId ).append("(fulfillOn:").append(fulfillOn).append(")\n"); appendAttributeAssignments(text, XMLPathCtx.createNew().findIn(obligationElem).all(".//*[local-name()='AttributeAssignment']").get()); } LOG.debug("PDP response\n" + text); }
private List<AuthenticationMethod> getSupportedAuthenticationMethods() { List<AuthenticationMethod> supportedAuthNMethods = new ArrayList<AuthenticationMethod>(); NodeList authenticationMethodList = m_xPathCtx.findIn(m_capsDoc).all("//authn:AuthenticationMethod").get(); for (int i = 0; i < authenticationMethodList.getLength(); i++) { org.w3c.dom.Node currentAuthMethod = authenticationMethodList.item(i); String type = m_xPathCtx.findIn(currentAuthMethod).text("@xsi:type").get(); type = type.substring(type.lastIndexOf(":") + 1); String method = m_xPathCtx.findIn(currentAuthMethod).text("@method").get(); AuthenticationMethod supportedAuthMethod; if (type.equals("WASType")) { org.w3c.dom.Node accAuthNServiceNode = m_xPathCtx.findIn(currentAuthMethod).node("//authn:AuthenticationService").get(); String wasName = m_xPathCtx.findIn(accAuthNServiceNode).text("authn:Name/text()").get(); String wasUrl = m_xPathCtx.findIn(accAuthNServiceNode).text("authn:OnlineResource/@xlink:href").get(); supportedAuthMethod = new org.n52.security.authentication.WASAuthenticationMethod(wasName, wasUrl, ""); } else { supportedAuthMethod = AuthenticationMethodFactory.getDefault().create(method); } supportedAuthNMethods.add(supportedAuthMethod); } return supportedAuthNMethods; } }
if (XPathConstants.STRING == m_previous.getReturnType()) { + "this works only if the string is wellformed xml"); return m_xPath.evaluate(new InputSource(new StringReader((String) m_previous.eval())), getReturnType()); } else if (XPathConstants.NODE == m_previous.getReturnType()) { return m_xPath.evaluate(m_previous.eval(), getReturnType()); } else if (XPathConstants.NODESET == m_previous.getReturnType()) { return evalNodeList((NodeList) m_previous.eval()); } else if (m_previous.getReturnType() == null) { return m_xPath.evaluate((InputSource) m_previous.eval(), getReturnType()); } else if (XPathConstants.NUMBER == m_previous.getReturnType()) { } else if (XPathConstants.BOOLEAN == m_previous.getReturnType()) { "return type of unknown format expected <" + m_previous.getReturnType() + ">");
public String getTemplateFor(Document document) { Node rootNode = context.findIn(document).node("/*[1]").get(); String serviceType = getServiceTypeFrom(rootNode); String version = context.findIn(rootNode).text("@version").get(); return version.equals("") ? templateMap.get(serviceType) : templateMap.get(serviceType + "_" + version); }
public void debugPDPRequest(final Element request) { StringBuilder text = new StringBuilder(); NodeList requestChildNodes = XMLPathCtx.createNew().findIn(request).all("/*[local-name() = 'Request']/*").get(); for (int i = 0; i < requestChildNodes.getLength(); i++) { Element requestChild = (Element) requestChildNodes.item(i); text.append(requestChild.getLocalName()).append("\n"); appendAttributes(text, XMLPathCtx.createNew().findIn(requestChild).all(".//*[local-name()='AttributeValue']").get()); } LOG.debug("PDP request\n" + text); }
public String getValue(Node rootNode, XMLPathCtx context) { String nameSpaceURI = getNamespaceURI(rootNode); if (startsWith ? nameSpaceURI.startsWith(namespace) : nameSpaceURI.equals(namespace)) { if (nodeExists != null && context.findIn(rootNode).node(nodeExists).get() != null) { return value; } else { return value; } } return null; } }
private void buildExtentTemplate(Document document, Map<String, String> hashMap, XMLPathCtx xmlPathCtx) { hashMap.put("west", xmlPathCtx.findIn(document).text("//gmd:westBoundLongitude/*/text()").get()); hashMap.put("east", xmlPathCtx.findIn(document).text("//gmd:eastBoundLongitude/*/text()").get()); hashMap.put("north", xmlPathCtx.findIn(document).text("//gmd:northBoundLatitude/*/text()").get()); hashMap.put("south", xmlPathCtx.findIn(document).text("//gmd:southBoundLatitude/*/text()").get()); }
/** * Method evals a path on a NodeList. * * @param nodeList the nodeList. * @return Object. * @throws XPathExpressionException if error occurs. */ private Object evalNodeList(final NodeList nodeList) throws XPathExpressionException { if (getReturnType() != XPathConstants.NODESET) { for (int i = 0, l = nodeList.getLength(); i < l; ++i) { Object result = m_xPath.evaluate(nodeList.item(i), getReturnType()); if (result != null) { return result; } } return null; } else { SimpleNodeList resultNodes = new SimpleNodeList(); for (int i = 0, l = nodeList.getLength(); i < l; ++i) { resultNodes.addAll((NodeList) m_xPath.evaluate(nodeList.item(i), getReturnType())); } return resultNodes; } }
/** * Get position from feature node. * * @param node * feature * @return position as text */ private String getPositionFromSamplingPoint(Node node) { NodeList nl = ctxResponse .findIn(node) .all("./" + SOSInterceptorGlobals.ELEMENT_SA_POSITION + "/" + SOSInterceptorGlobals.ELEMENT_GML_POINT + "/" + SOSInterceptorGlobals.ELEMENT_GML_POS).get(); for (int i = 0; i < nl.getLength();) { return nl.item(i).getTextContent(); } return "0 0"; }
ctx.findIn(doc).all("//*/sos:ObservationOfferingList/sos:ObservationOffering").get(); NodeList procedureList = ctx.findIn(doc) .all("//*/sos:ObservationOfferingList/sos:ObservationOffering[@gml:id='" + offeringID + "']/sos:procedure").get(); NodeList observedPropertyList = ctx.findIn(doc) .all("//*/sos:ObservationOfferingList/sos:ObservationOffering[@gml:id='" + offeringID + "']/sos:observedProperty").get(); NodeList featureOfInterestList = ctx.findIn(doc) .all("//*/sos:ObservationOfferingList/sos:ObservationOffering[@gml:id='" + offeringID + "']/sos:featureOfInterest").get(); .node("//*/ows:OperationsMetadata/ows:Operation/ows:Parameter[@name='eventTime']/ows:AllowedValues/ows:Range/ows:MinimumValue") .get(); Node maximumValue = ctx.findIn(doc) .node("//*/ows:OperationsMetadata/ows:Operation/ows:Parameter[@name='eventTime']/ows:AllowedValues/ows:Range/ows:MaximumValue") .get();
private Node getSecuredServiceTypeNode() { Node securedServiceTypeNode = m_xPathCtx.findIn(m_capsDoc).node("//wss:SecuredServiceType").get(); return securedServiceTypeNode; }
private void buildPartyTemplate(Document document, Map<String, String> hashMap, XMLPathCtx xmlPathCtx) { hashMap.put("IndividualName", xmlPathCtx.findIn(document).text("//gmd:individualName/*/text()").get()); hashMap.put("PositionName", xmlPathCtx.findIn(document).text("//gmd:positionName/*/text()").get()); hashMap.put("OrganisationName", xmlPathCtx.findIn(document).text("//gmd:organisationName/*/text()").get()); hashMap.put("Voice", xmlPathCtx.findIn(document).text("//gmd:contactInfo/*/gmd:phone/*/gmd:voice/*/text()").get()); hashMap.put("Fax", xmlPathCtx.findIn(document).text("//gmd:contactInfo/*/gmd:phone/*/gmd:facsimile/*/text()").get()); hashMap.put("DeliveryPoint", xmlPathCtx.findIn(document).text("//gmd:contactInfo/*/gmd:address/*/gmd:deliveryPoint/*/text()").get()); hashMap.put("City", xmlPathCtx.findIn(document).text("//gmd:contactInfo/*/gmd:address/*/gmd:city/*/text()").get()); hashMap.put("AdministrativeArea", xmlPathCtx.findIn(document).text("//gmd:contactInfo/*/gmd:address/*/gmd:administrativeArea/*/text()").get()); hashMap.put("PostalCode", xmlPathCtx.findIn(document).text("//gmd:contactInfo/*/gmd:address/*/gmd:postalCode/*/text()").get()); hashMap.put("Country", xmlPathCtx.findIn(document).text("//gmd:contactInfo/*/gmd:address/*/gmd:country/*/text()").get()); hashMap.put("MailAddress", xmlPathCtx.findIn(document).text("//gmd:contactInfo/*/gmd:address/*/gmd:electronicMailAddress/*/text()").get()); hashMap.put("Role", xmlPathCtx.findIn(document).text("//gmd:role/*/@codeListValue").get()); hashMap.put("Url", xmlPathCtx.findIn(document).text("//gmd:contactInfo/*/gmd:onlineResource/*/gmd:linkage/gmd:URL").get()); }
/** * @return */ public LicensePrecondition getLicensePrecondition() { org.w3c.dom.Node licBroClientElement = m_xPathCtx.findIn(m_capsDoc).node("/wss:WSS_Capabilities/wss:Capability/licb:LicensePrecondition/licb:LicenseBrokerClient").get(); if (licBroClientElement == null) { return null; } String licenseRedirectURL = m_xPathCtx.findIn(licBroClientElement).text("licb:RedirectURL/text()").get(); String ssoGetURL = m_xPathCtx.findIn(licBroClientElement).text("licb:SSOGetURL").get(); if (licenseRedirectURL == null && ssoGetURL == null) { String baseUrl = m_xPathCtx.findIn(licBroClientElement).text("ows:DCP/ows:HTTP/ows:Post/text()").get(); if (baseUrl == null) { return null; } baseUrl = ensureSingleEndingSlash(baseUrl); licenseRedirectURL = baseUrl + "getOrCreateLicenseToken.faces"; ssoGetURL = baseUrl + "getLicenseToken.faces"; } LicensePrecondition licensePrecondition = new LicensePrecondition(ssoGetURL.trim(), licenseRedirectURL.trim(), null); return licensePrecondition; }
for (Document record : records) { Map<String, Object> innerMap = new HashMap<>(); String fileIdentifier = context.findIn(record).text("//gmd:fileIdentifier[1]/*/text()").get(); String title = context.findIn(record).text("//gmd:identificationInfo[1]/*/gmd:citation/*/gmd:title/*/text()").get(); String lResourceType = context.findIn(record).text("//gmd:hierarchyLevel[1]/*/@codeListValue").get(); innerMap.put("title", title); innerMap.put("resourceType", lResourceType); NodeList identifiers = context.findIn(record).all("//gmd:identificationInfo[1]/*/gmd:citation/*/gmd:identifier/*").get(); List<String> resourceIdList = new ArrayList<>(); for (int i = 0; i < identifiers.getLength(); i++) { Node node = identifiers.item(i); String code = context.findIn(node).text("gmd:code/*/text()").get(); String codeSpace = context.findIn(node).text("gmd:codeSpace/*/text()").get(); StringBuilder stringBuilder = new StringBuilder(); if (!StringUtils.isEmpty(codeSpace)) {
/** * Get position from feature node. * * @param node * feature * @return position as text */ private String getPositionFromSamplingPoint(Node node) { NodeList nl = ctx.findIn(node) .all("./" + SOSInterceptorGlobals.ELEMENT_SA_POSITION + "/" + SOSInterceptorGlobals.ELEMENT_GML_POINT + "/" + SOSInterceptorGlobals.ELEMENT_GML_POS).get(); for (int i = 0; i < nl.getLength();) { return nl.item(i).getTextContent(); } return "0 0"; }
ctx.findIn(doc).all("//*/sos:Contents/sos:ObservationOfferingList/sos:ObservationOffering").get(); .node("//*/sos:Contents/sos:ObservationOfferingList/sos:ObservationOffering[@gml:id='" + offeringID + "']/sos:time/gml:TimePeriod/gml:beginPosition").get(); .node("//*/sos:Contents/sos:ObservationOfferingList/sos:ObservationOffering[@gml:id='" + offeringID + "']/sos:time/gml:TimePeriod/gml:endPosition").get();
public static SAML2IdPMetadata createFrom(Element idpSsoDescrElement) throws MalformedURLException { XMLPathCtx xpathCtx = XMLPathCtx.createNew().addNamespace("md", "urn:oasis:names:tc:SAML:2.0:metadata"); NodeList nodeList = xpathCtx.findIn(idpSsoDescrElement).all("md:SingleSignOnService").get(); SAML2IdPMetadata metadata = new SAML2IdPMetadata(); for (int i = 0; i < nodeList.getLength(); i++) { Element ssoService = (Element) nodeList.item(i); String binding = ssoService.getAttribute("Binding"); String location = ssoService.getAttribute("Location"); metadata.addSSOBinding(binding, new URL(location)); } Element organizationElem = (Element) xpathCtx.findIn(idpSsoDescrElement).node("./../md:Organization").get(); if (organizationElem == null) { String entityID = xpathCtx.findIn(idpSsoDescrElement).text("./../@entityID").get(); metadata.setOrganisationDisplayName(entityID); } else { String idpDisplayName = xpathCtx.findIn(organizationElem).text("md:OrganizationDisplayName/text()").get(); metadata.setOrganisationDisplayName(idpDisplayName); } return metadata; }
public void setAuthenticationMethods(Collection<AuthenticationMethod> methods) { Node newSuppAuthMethodsElem = m_capsDoc.createElementNS("http://www.gdi-nrw.org/wss", "SupportedAuthenticationMethodList"); Node capabilityElement = m_xPathCtx.findIn(m_capsDoc).node("//wss:Capability").get(); Node lOldSuppAuthMethodsElem = m_xPathCtx.findIn(capabilityElement).node("//wss:Capability/wss:SupportedAuthenticationMethodList").get(); if (lOldSuppAuthMethodsElem != null) { capabilityElement.removeChild(lOldSuppAuthMethodsElem); } AuthenticationMethodDOMRenderer renderer = new AuthenticationMethodDOMRenderer(); for (AuthenticationMethod method : methods) { Element authMethodElem = renderer.render(method); Node importedNode = m_capsDoc.importNode(authMethodElem, true); newSuppAuthMethodsElem.appendChild(importedNode); } capabilityElement.appendChild(newSuppAuthMethodsElem); }
/** * Load a builder class defined in '/catalog_api_factory.xml' * * @param pType xml or kvp is standard, any other type might be given also * @param pName Name of the REquest (GetRecords, GetCapabilities, ect) * @return Class or null, if not loaded */ protected Class loadClass(String pType, String pName) { String lExpression = "//api:BuilderFactory/api:Group[@type='" + pType + "']/api:Builder[@name='" + pName + "']/api:class"; LOG.debug("Evaluating expression: {} ", lExpression); String className = xmlPathCtx.findIn(mRoot).text(lExpression).get(); if (className == null) { LOG.warn(lExpression + " could not be evaluated. Result is null."); return null; } try { return Class.forName(className); } catch (ClassNotFoundException e) { LOG.error(e.getMessage()); return null; } }