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
31
32
33 public PomXpathValidator() {
34
35 }
36
37 @Override
38 public void validate(final MavenEnvironment env)
39 throws ValidationException {
40 PomXpathValidator.validate(PomXpathValidator.pom(env), env.asserts());
41 }
42
43
44
45
46
47
48
49 private static void validate(final XML pom, final Iterable<String> xpaths)
50 throws ValidationException {
51 for (final String xpath : xpaths) {
52 if (pom.xpath(xpath).isEmpty()) {
53 throw new ValidationException(
54 String.format(
55 "pom.xml don't match the xpath query [%s]", xpath
56 )
57 );
58 }
59 }
60 }
61
62
63
64
65
66
67 private static XML pom(final Environment env) {
68 try {
69 return new XMLDocument(
70 FileUtils.readFileToString(
71 new File(
72 String.format(
73 "%s%s%s",
74 env.basedir(),
75 File.separator,
76 "pom.xml"
77 )
78 ),
79 StandardCharsets.UTF_8
80 )
81 ).registerNs("pom", "http://maven.apache.org/POM/4.0.0");
82 } catch (final IOException exc) {
83 throw new IllegalArgumentException(exc);
84 }
85 }
86 }