1
2
3
4
5 package com.qulice.maven;
6
7 import com.jcabi.xml.XML;
8 import com.jcabi.xml.XMLDocument;
9 import com.qulice.spi.Environment;
10 import com.qulice.spi.ValidationException;
11 import java.io.File;
12 import java.io.IOException;
13 import java.nio.charset.StandardCharsets;
14 import org.apache.commons.io.FileUtils;
15
16
17
18
19
20
21
22
23
24
25
26
27
28 public final class PomXpathValidator implements MavenValidator {
29
30 @Override
31 public void validate(final MavenEnvironment env)
32 throws ValidationException {
33 PomXpathValidator.validate(PomXpathValidator.pom(env), env.asserts());
34 }
35
36
37
38
39
40
41
42 private static void validate(final XML pom, final Iterable<String> xpaths)
43 throws ValidationException {
44 for (final String xpath : xpaths) {
45 if (pom.xpath(xpath).isEmpty()) {
46 throw new ValidationException(
47 "pom.xml don't match the xpath query [%s]", xpath
48 );
49 }
50 }
51 }
52
53
54
55
56
57
58
59 private static XML pom(final Environment env) {
60 try {
61 return new XMLDocument(
62 FileUtils.readFileToString(
63 new File(
64 String.format(
65 "%s%s%s",
66 env.basedir(),
67 File.separator,
68 "pom.xml"
69 )
70 ),
71 StandardCharsets.UTF_8
72 )
73 ).registerNs("pom", "http://maven.apache.org/POM/4.0.0");
74 } catch (final IOException exc) {
75 throw new IllegalArgumentException(exc);
76 }
77 }
78 }