use of javax.xml.xpath.XPath in project jersey by jersey.
the class ExtendedWadlWebappTest method checkWadl.
private void checkWadl(String wadl, URI baseUri) throws Exception {
DocumentBuilderFactory bf = DocumentBuilderFactory.newInstance();
bf.setNamespaceAware(true);
bf.setValidating(false);
// if (!SaxHelper.isXdkDocumentBuilderFactory(bf)) {
// bf.setXIncludeAware(false);
// }
DocumentBuilder b = bf.newDocumentBuilder();
Document document = b.parse(new ByteArrayInputStream(wadl.getBytes(Charset.forName("UTF-8"))));
XPath xp = XPathFactory.newInstance().newXPath();
xp.setNamespaceContext(new SimpleNamespaceResolver("wadl", "http://wadl.dev.java.net/2009/02"));
String val = (String) xp.evaluate("/wadl:application/wadl:resources/@base", document, XPathConstants.STRING);
assertEquals(baseUri.toString(), val.endsWith("/") ? val.substring(0, val.length() - 1) : val);
val = (String) xp.evaluate("count(//wadl:resource)", document, XPathConstants.STRING);
assertEquals("Unexpected number of resource elements.", val, "4");
val = (String) xp.evaluate("count(//wadl:resource[@path='items'])", document, XPathConstants.STRING);
assertEquals("Unexpected number of resource elements with 'items' path.", "1", val);
val = (String) xp.evaluate("count(//wadl:resource[@path='{id}'])", document, XPathConstants.STRING);
assertEquals("Unexpected number of resource elements with '{id}' path.", "1", val);
val = (String) xp.evaluate("count(//wadl:resource[@path='try-hard'])", document, XPathConstants.STRING);
assertEquals("Unexpected number of resource elements with 'try-hard' path.", "1", val);
val = (String) xp.evaluate("count(//wadl:resource[@path='value/{value}'])", document, XPathConstants.STRING);
assertEquals("Unexpected number of resource elements with 'value/{value}' path.", "1", val);
val = (String) xp.evaluate("count(//wadl:resource[@path='{id}']/wadl:method)", document, XPathConstants.STRING);
assertEquals("Unexpected number of methods in resource element with '{id}' path.", "2", val);
val = (String) xp.evaluate("count(//wadl:resource[@path='{id}']/wadl:method[@id='getItem']" + "/wadl:doc[contains(., 'Typically returns the item if it exists.')])", document, XPathConstants.STRING);
assertEquals("Unexpected documentation of getItem resource method at '{id}' path", "1", val);
val = (String) xp.evaluate("count(//wadl:resource[@path='try-hard']/wadl:method)", document, XPathConstants.STRING);
assertEquals("Unexpected number of methods in resource element with 'try-hard' path.", "1", val);
val = (String) xp.evaluate("count(//wadl:resource[@path='try-hard']/wadl:method[@id='getItem']" + "/wadl:doc[contains(., 'Tries hard to return the item if it exists.')])", document, XPathConstants.STRING);
assertEquals("Unexpected documentation of getItem resource method at 'try-hard' path", "1", val);
val = (String) xp.evaluate("count(//wadl:resource[@path='items']/wadl:method)", document, XPathConstants.STRING);
assertEquals("Unexpected number of methods in resource element with 'items' path.", "4", val);
val = (String) xp.evaluate("count(//wadl:resource[@path='value/{value}']/wadl:method)", document, XPathConstants.STRING);
assertEquals("Unexpected number of methods in resource element with 'value/{value}' path.", "1", val);
val = (String) xp.evaluate("count(//wadl:application/wadl:doc)", document, XPathConstants.STRING);
assertEquals("Unexpected number of doc elements in application element.", "3", val);
}
use of javax.xml.xpath.XPath in project jersey by jersey.
the class MultiPartWebAppTest method testApplicationWadl.
@Test
public void testApplicationWadl() throws Exception {
final WebTarget target = target().path("application.wadl");
final Response response = target.request().get();
assertEquals(200, response.getStatus());
final File tmpFile = response.readEntity(File.class);
final DocumentBuilderFactory bf = DocumentBuilderFactory.newInstance();
bf.setNamespaceAware(true);
bf.setValidating(false);
if (!SaxHelper.isXdkDocumentBuilderFactory(bf)) {
bf.setXIncludeAware(false);
}
final DocumentBuilder b = bf.newDocumentBuilder();
final Document d = b.parse(tmpFile);
final XPath xp = XPathFactory.newInstance().newXPath();
xp.setNamespaceContext(new SimpleNamespaceResolver("wadl", "http://wadl.dev.java.net/2009/02"));
String val = (String) xp.evaluate("//wadl:resource[@path='part']/wadl:method[@name='POST']/wadl:request/wadl:representation/@mediaType", d, XPathConstants.STRING);
assertEquals("multipart/form-data", val);
}
use of javax.xml.xpath.XPath in project jersey by jersey.
the class WadlBeanParamTest method testBeanParamConstructorInitializedBean.
private void testBeanParamConstructorInitializedBean(String resource) throws Exception {
final Response response = target("/application.wadl").request().get();
final Document d = WadlResourceTest.extractWadlAsDocument(response);
final XPath xp = XPathFactory.newInstance().newXPath();
final SimpleNamespaceResolver nsContext = new SimpleNamespaceResolver("wadl", "http://wadl.dev.java.net/2009/02");
xp.setNamespaceContext(nsContext);
final Diff diff = XMLUnit.compareXML(nodeAsString(xp.evaluate("//wadl:resource[@path='wadlBeanParamReference']/wadl:resource", d, XPathConstants.NODE)), nodeAsString(xp.evaluate("//wadl:resource[@path='" + resource + "']/wadl:resource", d, XPathConstants.NODE)));
XMLUnit.setXpathNamespaceContext(new SimpleNamespaceContext(ImmutableMap.of("wadl", "http://wadl.dev.java.net/2009/02")));
diff.overrideElementQualifier(elementQualifier);
XMLAssert.assertXMLEqual(diff, true);
}
use of javax.xml.xpath.XPath in project languagetool by languagetool-org.
the class AfterTheDeadlineChecker method getMatches.
private List<String> getMatches(String resultXml) throws XPathExpressionException {
List<String> matches = new ArrayList<>();
Document document = getDocument(resultXml);
XPath xPath = XPathFactory.newInstance().newXPath();
NodeList errors = (NodeList) xPath.evaluate("//error", document, XPathConstants.NODESET);
for (int i = 0; i < errors.getLength(); i++) {
Node error = errors.item(i);
String string = xPath.evaluate("string", error);
String description = xPath.evaluate("description", error);
matches.add(description + ": " + string);
}
return matches;
}
use of javax.xml.xpath.XPath in project openhab1-addons by openhab.
the class Tr064Comm method readAllServices.
/***
* Connects to fbox service xml to get a list of all services
* which are offered by TR064. Saves it into local list
*/
private void readAllServices() {
Document xml = getFboxXmlResponse(_url + "/" + TR064DOWNLOADFILE);
if (xml == null) {
logger.error("Could not read xml response services");
return;
}
// get all service nodes
NodeList nlServices = xml.getElementsByTagName("service");
Node currentNode = null;
XPath xPath = XPathFactory.newInstance().newXPath();
for (int i = 0; i < nlServices.getLength(); i++) {
// iterate over all services fbox offered us
currentNode = nlServices.item(i);
Tr064Service trS = new Tr064Service();
try {
trS.setControlUrl((String) xPath.evaluate("controlURL", currentNode, XPathConstants.STRING));
trS.setEventSubUrl((String) xPath.evaluate("eventSubURL", currentNode, XPathConstants.STRING));
trS.setScpdurl((String) xPath.evaluate("SCPDURL", currentNode, XPathConstants.STRING));
trS.setServiceId((String) xPath.evaluate("serviceId", currentNode, XPathConstants.STRING));
trS.setServiceType((String) xPath.evaluate("serviceType", currentNode, XPathConstants.STRING));
} catch (XPathExpressionException e) {
logger.debug("Could not parse service {}", currentNode.getTextContent());
e.printStackTrace();
}
_alServices.add(trS);
}
}
Aggregations