Search in sources :

Example 11 with XPath

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);
}
Also used : XPath(javax.xml.xpath.XPath) DocumentBuilderFactory(javax.xml.parsers.DocumentBuilderFactory) DocumentBuilder(javax.xml.parsers.DocumentBuilder) ByteArrayInputStream(java.io.ByteArrayInputStream) SimpleNamespaceResolver(org.glassfish.jersey.internal.util.SimpleNamespaceResolver) Document(org.w3c.dom.Document)

Example 12 with XPath

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);
}
Also used : Response(javax.ws.rs.core.Response) XPath(javax.xml.xpath.XPath) DocumentBuilderFactory(javax.xml.parsers.DocumentBuilderFactory) DocumentBuilder(javax.xml.parsers.DocumentBuilder) WebTarget(javax.ws.rs.client.WebTarget) SimpleNamespaceResolver(org.glassfish.jersey.internal.util.SimpleNamespaceResolver) Document(org.w3c.dom.Document) File(java.io.File) Test(org.junit.Test) JerseyTest(org.glassfish.jersey.test.JerseyTest)

Example 13 with XPath

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);
}
Also used : Response(javax.ws.rs.core.Response) XPath(javax.xml.xpath.XPath) Diff(org.custommonkey.xmlunit.Diff) SimpleNamespaceResolver(org.glassfish.jersey.internal.util.SimpleNamespaceResolver) SimpleNamespaceContext(org.custommonkey.xmlunit.SimpleNamespaceContext) Document(org.w3c.dom.Document)

Example 14 with XPath

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;
}
Also used : XPath(javax.xml.xpath.XPath) NodeList(org.w3c.dom.NodeList) Node(org.w3c.dom.Node) ArrayList(java.util.ArrayList) Document(org.w3c.dom.Document)

Example 15 with XPath

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);
    }
}
Also used : XPath(javax.xml.xpath.XPath) XPathExpressionException(javax.xml.xpath.XPathExpressionException) NodeList(org.w3c.dom.NodeList) Node(org.w3c.dom.Node) Document(org.w3c.dom.Document)

Aggregations

XPath (javax.xml.xpath.XPath)197 Document (org.w3c.dom.Document)107 NodeList (org.w3c.dom.NodeList)99 XPathExpressionException (javax.xml.xpath.XPathExpressionException)70 Node (org.w3c.dom.Node)70 XPathExpression (javax.xml.xpath.XPathExpression)69 XPathFactory (javax.xml.xpath.XPathFactory)59 DocumentBuilder (javax.xml.parsers.DocumentBuilder)45 DocumentBuilderFactory (javax.xml.parsers.DocumentBuilderFactory)37 IOException (java.io.IOException)32 Element (org.w3c.dom.Element)32 Test (org.junit.Test)25 InputSource (org.xml.sax.InputSource)23 SAXException (org.xml.sax.SAXException)21 File (java.io.File)19 ArrayList (java.util.ArrayList)19 ParserConfigurationException (javax.xml.parsers.ParserConfigurationException)18 HashMap (java.util.HashMap)16 InputStream (java.io.InputStream)12 PBXNativeTarget (com.facebook.buck.apple.xcode.xcodeproj.PBXNativeTarget)11