1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17 package org.forgerock.doc.maven.site;
18
19 import org.apache.maven.plugin.MojoExecutionException;
20 import org.forgerock.doc.maven.AbstractDocbkxMojo;
21 import org.twdata.maven.mojoexecutor.MojoExecutor;
22
23 import java.io.File;
24 import java.util.ArrayList;
25
26
27
28
29
30
31
32
33
34 public class LinkTest {
35
36
37
38
39 private AbstractDocbkxMojo m;
40
41
42
43
44 private final Executor executor;
45
46
47
48
49
50
51 public LinkTest(final AbstractDocbkxMojo mojo) {
52 m = mojo;
53 this.executor = new Executor();
54 }
55
56
57
58
59
60
61 public void execute() throws MojoExecutionException {
62 executor.test();
63 }
64
65
66
67
68 class Executor extends MojoExecutor {
69
70
71
72
73
74
75 public void test() throws MojoExecutionException {
76
77 if (m.runLinkTester().equalsIgnoreCase("false")) {
78 return;
79 }
80
81 final String log = m.path(new File(m.getDocbkxOutputDirectory(), "linktester.err"));
82
83
84 MojoExecutor.Element skipUrlPatterns = getSkipUrlPatterns();
85
86 executeMojo(
87 plugin(
88 groupId("org.forgerock.maven.plugins"),
89 artifactId("linktester-maven-plugin"),
90 version(m.getLinkTesterVersion())),
91 goal("check"),
92 configuration(
93 element(name("docSources"),
94 element(name("docSource"),
95 element(name("directory"),
96 m.getBuildDirectory().getPath()),
97 element(name("includes"),
98 element(name("include"),
99 "**/" + m.getDocumentSrcName())))),
100 element(name("validating"), "true"),
101 element(name("skipUrls"), m.skipLinkCheck()),
102 element(name("xIncludeAware"), "true"),
103 element(name("failOnError"), "false"),
104 element(name("outputFile"), log),
105 skipUrlPatterns),
106 executionEnvironment(m.getProject(), m.getSession(), m.getPluginManager()));
107 }
108
109
110
111
112
113
114 private MojoExecutor.Element getSkipUrlPatterns() {
115
116
117 final ArrayList<Element> patterns = new ArrayList<Element>();
118
119
120 patterns.add(element(name("skipUrlPattern"),
121 "^https://bugster.forgerock.org/jira/browse/.+$"));
122 patterns.add(element(name("skipUrlPattern"),
123 "^http://tools.ietf.org/html/rfc[0-9]+$"));
124 patterns.add(element(name("skipUrlPattern"),
125 "^http://tools.ietf.org/html/draft-.+$"));
126 patterns.add(element(name("skipUrlPattern"),
127 "^https?://[^/]*example.*$"));
128 patterns.add(element(name("skipUrlPattern"),
129 "^https?://localhost.*$"));
130 patterns.add(element(name("skipUrlPattern"),
131 "^\\.\\./\\Q" + m.getRelativeResourcesDirectoryPath() + "\\E.*$"));
132
133
134 if (m.getSkipUrlPatterns() != null) {
135 for (String pattern : m.getSkipUrlPatterns()) {
136 patterns.add(element("skipUrlPattern", pattern));
137 }
138 }
139 return element(name("skipUrlPatterns"), patterns.toArray(new Element[patterns.size()]));
140 }
141 }
142 }