From 1b975d40610cec2085f4be6cd6caf82c8b76770b Mon Sep 17 00:00:00 2001
From: Mark Craig <mark.craig@forgerock.com>
Date: Thu, 28 May 2015 14:15:42 +0000
Subject: [PATCH] CR-7072 OPENDJ-2060 Build config reference again
---
opendj-doc-maven-plugin/src/main/resources/config-ref/tab_selected.gif | 0
opendj-doc-maven-plugin/src/main/java/org/forgerock/opendj/maven/doc/GenerateRefEntriesMojo.java | 128 ++------------
opendj-server-legacy/pom.xml | 20 ++
opendj-doc-maven-plugin/src/main/java/org/forgerock/opendj/maven/doc/Utils.java | 177 +++++++++++++++++++
opendj-doc-maven-plugin/src/main/resources/config-ref/opendj_logo_sm.png | 0
opendj-doc-maven-plugin/src/main/resources/config-ref/tab_deselected.jpg | 0
opendj-doc-maven-plugin/src/main/resources/config-ref/opendj-config.css | 0
opendj-server-legacy/build.xml | 5
opendj-server-legacy/src/main/java/org/opends/server/admin/doc/ConfigGuideGeneration.java | 18 +
opendj-doc-maven-plugin/src/main/java/org/forgerock/opendj/maven/doc/GenerateConfigurationReferenceMojo.java | 164 ++++++++++++++++++
opendj-doc-maven-plugin/src/main/resources/config-ref/pageaction.gif | 0
opendj-doc-maven-plugin/src/main/resources/config-ref/duration-syntax.html | 0
12 files changed, 398 insertions(+), 114 deletions(-)
diff --git a/opendj-doc-maven-plugin/src/main/java/org/forgerock/opendj/maven/doc/GenerateConfigurationReferenceMojo.java b/opendj-doc-maven-plugin/src/main/java/org/forgerock/opendj/maven/doc/GenerateConfigurationReferenceMojo.java
new file mode 100644
index 0000000..1498ae5
--- /dev/null
+++ b/opendj-doc-maven-plugin/src/main/java/org/forgerock/opendj/maven/doc/GenerateConfigurationReferenceMojo.java
@@ -0,0 +1,164 @@
+/*
+ * CDDL HEADER START
+ *
+ * The contents of this file are subject to the terms of the
+ * Common Development and Distribution License, Version 1.0 only
+ * (the "License"). You may not use this file except in compliance
+ * with the License.
+ *
+ * You can obtain a copy of the license at legal-notices/CDDLv1_0.txt
+ * or http://forgerock.org/license/CDDLv1.0.html.
+ * See the License for the specific language governing permissions
+ * and limitations under the License.
+ *
+ * When distributing Covered Code, include this CDDL HEADER in each
+ * file and include the License file at legal-notices/CDDLv1_0.txt.
+ * If applicable, add the following below this CDDL HEADER, with the
+ * fields enclosed by brackets "[]" replaced with your own identifying
+ * information:
+ * Portions Copyright [yyyy] [name of copyright owner]
+ *
+ * CDDL HEADER END
+ *
+ *
+ * Copyright 2015 ForgeRock AS.
+ */
+package org.forgerock.opendj.maven.doc;
+
+import static org.forgerock.opendj.maven.doc.Utils.*;
+
+import org.apache.maven.plugin.AbstractMojo;
+import org.apache.maven.plugin.MojoExecutionException;
+import org.apache.maven.plugin.MojoFailureException;
+import org.apache.maven.plugins.annotations.LifecyclePhase;
+import org.apache.maven.plugins.annotations.Mojo;
+import org.apache.maven.plugins.annotations.Parameter;
+import org.apache.maven.project.MavenProject;
+
+import java.io.File;
+import java.io.IOException;
+import java.io.InputStream;
+import java.util.LinkedList;
+import java.util.List;
+
+/**
+ * Generates the configuration reference, a set of HTML documents describing the server configuration.
+ */
+@Mojo(name = "generate-config-ref", defaultPhase = LifecyclePhase.PRE_SITE)
+public class GenerateConfigurationReferenceMojo extends AbstractMojo {
+ /**
+ * The Maven Project.
+ */
+ @Parameter(property = "project", readonly = true, required = true)
+ private MavenProject project;
+
+ /**
+ * The path to the directory where the configuration reference should be written.
+ * This path must be under {@code ${project.build.directory} }.
+ */
+ @Parameter(defaultValue = "${project.build.directory}/site/configref")
+ private String outputDirectory;
+
+ /**
+ * Generates the configuration reference under the output directory.
+ * @throws MojoExecutionException Generation failed
+ * @throws MojoFailureException Not used
+ */
+ @Override
+ public void execute() throws MojoExecutionException, MojoFailureException {
+ createOutputDirectory();
+ generateConfigRef();
+ try {
+ copyResources();
+ } catch (IOException e) {
+ throw new MojoExecutionException("Failed to copy resource files.", e);
+ }
+ }
+
+ /**
+ * Creates the output directory where the configuration reference is written.
+ * @throws MojoExecutionException The output directory is not under {@code ${project.build.directory} }
+ * or could not be created.
+ */
+ private void createOutputDirectory() throws MojoExecutionException {
+ String projectBuildDir = project.getBuild().getDirectory();
+
+ if (!outputDirectory.contains(projectBuildDir)) {
+ String errorMsg = String.format(
+ "The outputDirectory (%s) must be under the ${project.build.directory} (%s).",
+ outputDirectory,
+ projectBuildDir);
+ getLog().error(errorMsg);
+ throw new MojoExecutionException(errorMsg);
+ }
+
+ try {
+ createDirectory(outputDirectory);
+ } catch (IOException e) {
+ getLog().error(e.getMessage());
+ throw new MojoExecutionException(e.getMessage(), e);
+ }
+ }
+
+ /**
+ * Runs the configuration reference generator class.
+ * @throws MojoExecutionException Failed to run the generator
+ */
+ private void generateConfigRef() throws MojoExecutionException {
+ String generatorClass = "org.opends.server.admin.doc.ConfigGuideGeneration";
+ List<String> commands = new LinkedList<>();
+ try {
+ commands.add(getJavaCommand());
+ commands.add("-classpath");
+ commands.add(getClassPath(getRuntimeClassLoader(project, getLog())));
+ commands.add("-DGenerationDir=" + outputDirectory);
+ commands.add(generatorClass);
+ } catch (Exception e) {
+ throw new MojoExecutionException("Failed to set the classpath.", e);
+ }
+
+ try {
+ ProcessBuilder builder = new ProcessBuilder(commands);
+ Process process = builder.start();
+ process.waitFor();
+ final int result = process.exitValue();
+ if (result != 0) {
+ final StringBuilder message = new StringBuilder();
+ message.append("Failed to generate the config ref. Exit code: ").append(result).append(EOL)
+ .append("To debug the problem, run the following command and connect your IDE:").append(EOL);
+ commands.add(1, "-agentlib:jdwp=transport=dt_socket,server=y,suspend=y,address=8000");
+ for (String arg: commands) {
+ message.append(arg).append(' ');
+ }
+ message.append(EOL);
+ throw new MojoExecutionException(message.toString());
+ }
+ } catch (InterruptedException e) {
+ throw new MojoExecutionException(generatorClass + " interrupted", e);
+ } catch (IOException e) {
+ throw new MojoExecutionException(generatorClass + " not found", e);
+ }
+ }
+
+ /** List of static file resources needed by the configuration reference. */
+ private static String[] resourceFiles = {
+ "duration-syntax.html",
+ "opendj-config.css",
+ "opendj_logo_sm.png",
+ "pageaction.gif",
+ "tab_deselected.jpg",
+ "tab_selected.gif"
+ };
+
+ /**
+ * Copies static files needed by the configuration reference.
+ * @throws IOException Failed to read a resource or to write a file
+ */
+ private void copyResources() throws IOException {
+ for (String file : resourceFiles) {
+ InputStream original = this.getClass().getResourceAsStream("/config-ref/" + file);
+ File copy = new File(outputDirectory, file);
+ copyInputStreamToFile(original, copy);
+ }
+ }
+}
diff --git a/opendj-doc-maven-plugin/src/main/java/org/forgerock/opendj/maven/doc/GenerateRefEntriesMojo.java b/opendj-doc-maven-plugin/src/main/java/org/forgerock/opendj/maven/doc/GenerateRefEntriesMojo.java
index 8807a3b..510b4af 100644
--- a/opendj-doc-maven-plugin/src/main/java/org/forgerock/opendj/maven/doc/GenerateRefEntriesMojo.java
+++ b/opendj-doc-maven-plugin/src/main/java/org/forgerock/opendj/maven/doc/GenerateRefEntriesMojo.java
@@ -25,7 +25,9 @@
*/
package org.forgerock.opendj.maven.doc;
-import org.apache.maven.artifact.DependencyResolutionRequiredException;
+import static org.forgerock.opendj.maven.doc.Utils.*;
+import static org.forgerock.util.Utils.*;
+
import org.apache.maven.plugin.AbstractMojo;
import org.apache.maven.plugin.MojoExecutionException;
import org.apache.maven.plugin.MojoFailureException;
@@ -34,28 +36,20 @@
import org.apache.maven.plugins.annotations.Parameter;
import org.apache.maven.plugins.annotations.ResolutionScope;
import org.apache.maven.project.MavenProject;
-import org.forgerock.util.Utils;
import java.io.BufferedReader;
import java.io.ByteArrayInputStream;
import java.io.File;
-import java.io.FileInputStream;
-import java.io.FileOutputStream;
import java.io.FileReader;
import java.io.FileWriter;
import java.io.IOException;
import java.io.InputStream;
import java.io.InputStreamReader;
-import java.net.MalformedURLException;
import java.net.URISyntaxException;
-import java.net.URL;
import java.net.URLClassLoader;
-import java.nio.channels.FileChannel;
import java.nio.charset.Charset;
-import java.util.LinkedHashSet;
import java.util.LinkedList;
import java.util.List;
-import java.util.Set;
import java.util.regex.Matcher;
import java.util.regex.Pattern;
@@ -96,7 +90,12 @@
// A Maven plugin classpath does not include project files.
// Prepare a ClassLoader capable of loading the command-line tools.
- final URLClassLoader toolsClassLoader = getBootToolsClassLoader();
+ final URLClassLoader toolsClassLoader;
+ try {
+ toolsClassLoader = getRuntimeClassLoader(project, getLog());
+ } catch (Exception e) {
+ throw new MojoExecutionException("Failed to get class loader.", e);
+ }
for (CommandLineTool tool : tools) {
if (tool.isEnabled()) {
generateManPageForTool(toolsClassLoader, tool);
@@ -105,31 +104,6 @@
}
/**
- * Returns a ClassLoader capable of loading the command-line tools.
- * @return A ClassLoader capable of loading the command-line tools.
- * @throws MojoFailureException Failed to build classpath.
- */
- private URLClassLoader getBootToolsClassLoader() throws MojoFailureException {
- try {
- List<String> runtimeClasspathElements = project.getRuntimeClasspathElements();
- Set<URL> runtimeUrls = new LinkedHashSet<>();
- for (String element : runtimeClasspathElements) {
- runtimeUrls.add(new File(element).toURI().toURL());
- }
-
- final URLClassLoader toolsClassLoader = new URLClassLoader(
- runtimeUrls.toArray(new URL[runtimeClasspathElements.size()]),
- Thread.currentThread().getContextClassLoader());
- debugClassPathElements(toolsClassLoader);
- return toolsClassLoader;
- } catch (DependencyResolutionRequiredException e) {
- throw new MojoFailureException("Failed to access the runtime classpath.", e);
- } catch (MalformedURLException e) {
- throw new MojoFailureException("Failed to add element to classpath.", e);
- }
- }
-
- /**
* Generate a RefEntry file to the output directory for a tool.
* The files name corresponds to the tool name: {@code man-<name>.xml}.
* @param toolsClassLoader The ClassLoader to run the tool.
@@ -147,7 +121,11 @@
commands.add(getJavaCommand());
commands.addAll(getJavaArgs(toolScript, toolSects));
commands.add("-classpath");
- commands.add(getClassPath(toolsClassLoader));
+ try {
+ commands.add(getClassPath(toolsClassLoader));
+ } catch (URISyntaxException e) {
+ throw new MojoExecutionException("Failed to set the classpath.", e);
+ }
commands.add(toolClass);
commands.add(getUsageArgument(toolScript));
@@ -161,8 +139,8 @@
final int result = process.exitValue();
if (result != 0) {
final StringBuilder message = new StringBuilder();
- message.append("Failed to write page. Tool exit code: ").append(result).append(EOL);
- message.append("To debug the problem, run the following command and connect your IDE:").append(EOL);
+ message.append("Failed to write page. Tool exit code: ").append(result).append(EOL)
+ .append("To debug the problem, run the following command and connect your IDE:").append(EOL);
commands.add(1, "-agentlib:jdwp=transport=dt_socket,server=y,suspend=y,address=8000");
for (String arg: commands) {
// Surround with quotes to handle trailing sections.
@@ -196,14 +174,6 @@
}
/**
- * Returns the path to the current Java executable.
- * @return The path to the current Java executable.
- */
- private String getJavaCommand() {
- return System.getProperty("java.home") + File.separator + "bin" + File.separator + "java";
- }
-
- /**
* Returns the Java args for running a tool.
* @param scriptName The name of the tool.
* @param trailingSections The man page sections to Xinclude.
@@ -219,47 +189,6 @@
}
/**
- * Returns the classpath for the class loader.
- * @param classLoader Contains the URLs of the class path to return.
- * @return The classpath for the class loader.
- */
- private String getClassPath(final URLClassLoader classLoader) {
- final StringBuilder stringBuilder = new StringBuilder();
- final URL[] urls = classLoader.getURLs();
- for (int i = 0; i < urls.length; i++) {
- if (i > 0) {
- stringBuilder.append(File.pathSeparator);
- }
- try {
- stringBuilder.append(new File(urls[i].toURI()).getPath());
- } catch (URISyntaxException e) {
- getLog().info("Failed to add classpath element", e);
- }
- }
- return stringBuilder.toString();
- }
-
- /**
- * Logs what is on the classpath for debugging.
- * @param classLoader The ClassLoader with the classpath.
- */
- private void debugClassPathElements(ClassLoader classLoader) {
- if (null == classLoader) {
- return;
- }
- getLog().debug("--------------------");
- getLog().debug(classLoader.toString());
- if (classLoader instanceof URLClassLoader) {
- final URLClassLoader ucl = (URLClassLoader) classLoader;
- int i = 0;
- for (URL url : ucl.getURLs()) {
- getLog().debug("url[" + (i++) + "]=" + url);
- }
- }
- debugClassPathElements(classLoader.getParent());
- }
-
- /**
* Translates relative paths to XML files into XInclude elements.
*
* @param paths Paths to XInclude'd files, relative to the RefEntry.
@@ -306,7 +235,7 @@
writer.write(EOL);
}
} finally {
- Utils.closeSilently(writer);
+ closeSilently(writer);
}
}
@@ -347,7 +276,7 @@
throw new IOException("Failed to delete " + pageCopy.getName());
}
} finally {
- Utils.closeSilently(reader);
+ closeSilently(reader);
}
}
@@ -361,25 +290,4 @@
InputStream is = new ByteArrayInputStream(input.getBytes(Charset.forName("UTF-8")));
writeToFile(is, output);
}
-
- /**
- * Copies the content of the original file to the copy.
- * @param original The original file.
- * @param copy The copy.
- * @throws IOException Failed to make the copy.
- */
- private void copyFile(File original, File copy) throws IOException {
- if (!copy.exists() && !copy.createNewFile()) {
- throw new IOException("Failed to create " + copy);
- }
- FileChannel in = null;
- FileChannel out = null;
- try {
- in = new FileInputStream(original).getChannel();
- out = new FileOutputStream(copy).getChannel();
- out.transferFrom(in, 0, in.size());
- } finally {
- Utils.closeSilently(in, out);
- }
- }
}
diff --git a/opendj-doc-maven-plugin/src/main/java/org/forgerock/opendj/maven/doc/Utils.java b/opendj-doc-maven-plugin/src/main/java/org/forgerock/opendj/maven/doc/Utils.java
new file mode 100644
index 0000000..7d23e0b
--- /dev/null
+++ b/opendj-doc-maven-plugin/src/main/java/org/forgerock/opendj/maven/doc/Utils.java
@@ -0,0 +1,177 @@
+/*
+ * CDDL HEADER START
+ *
+ * The contents of this file are subject to the terms of the
+ * Common Development and Distribution License, Version 1.0 only
+ * (the "License"). You may not use this file except in compliance
+ * with the License.
+ *
+ * You can obtain a copy of the license at legal-notices/CDDLv1_0.txt
+ * or http://forgerock.org/license/CDDLv1.0.html.
+ * See the License for the specific language governing permissions
+ * and limitations under the License.
+ *
+ * When distributing Covered Code, include this CDDL HEADER in each
+ * file and include the License file at legal-notices/CDDLv1_0.txt.
+ * If applicable, add the following below this CDDL HEADER, with the
+ * fields enclosed by brackets "[]" replaced with your own identifying
+ * information:
+ * Portions Copyright [yyyy] [name of copyright owner]
+ *
+ * CDDL HEADER END
+ *
+ *
+ * Copyright 2015 ForgeRock AS.
+ */
+package org.forgerock.opendj.maven.doc;
+
+import static org.forgerock.util.Utils.*;
+
+import org.apache.maven.artifact.DependencyResolutionRequiredException;
+import org.apache.maven.plugin.logging.Log;
+import org.apache.maven.project.MavenProject;
+
+import java.io.File;
+import java.io.FileInputStream;
+import java.io.FileOutputStream;
+import java.io.IOException;
+import java.io.InputStream;
+import java.io.OutputStream;
+import java.net.MalformedURLException;
+import java.net.URISyntaxException;
+import java.net.URL;
+import java.net.URLClassLoader;
+import java.util.Collections;
+import java.util.LinkedHashSet;
+import java.util.List;
+import java.util.Set;
+
+/**
+ * Provides utility methods for generating documentation.
+ */
+public final class Utils {
+
+ /** Line separator. */
+ static final String EOL = System.getProperty("line.separator");
+
+ /**
+ * Creates a directory unless it already exists.
+ * @param directory The directory to create.
+ * @throws IOException Failed to create directory.
+ */
+ static void createDirectory(final String directory) throws IOException {
+ File dir = new File(directory);
+ if (!dir.exists()) {
+ if (!dir.mkdirs()) {
+ throw new IOException("Failed to create directory: " + directory);
+ }
+ }
+ }
+
+ /**
+ * Returns the path to the current Java executable.
+ * @return The path to the current Java executable.
+ */
+ static String getJavaCommand() {
+ return System.getProperty("java.home") + File.separator + "bin" + File.separator + "java";
+ }
+
+ /**
+ * Copies the content of the original file to the copy.
+ * @param original The original file.
+ * @param copy The copy.
+ * @throws IOException Failed to make the copy.
+ */
+ static void copyFile(File original, File copy) throws IOException {
+ copyInputStreamToFile(new FileInputStream(original), copy);
+ }
+
+ /**
+ * Copies the content of the original input stream to the copy.
+ * @param original The original input stream.
+ * @param copy The copy.
+ * @throws IOException Failed to make the copy.
+ */
+ static void copyInputStreamToFile(InputStream original, File copy) throws IOException {
+ if (original == null) {
+ throw new IOException("Could not read input to copy.");
+ }
+ if (!copy.exists() && !copy.createNewFile()) {
+ throw new IOException("Failed to create " + copy);
+ }
+ OutputStream outputStream = new FileOutputStream(copy);
+ int bytesRead;
+ byte[] buffer = new byte[4096];
+ while ((bytesRead = original.read(buffer)) > 0) {
+ outputStream.write(buffer, 0, bytesRead);
+ }
+ closeSilently(original, outputStream);
+ }
+
+
+ /**
+ * Returns the classpath for the class loader and its parent.
+ * @param classLoader Contains the URLs of the class path to return.
+ * @return The classpath for the class loader and its parent.
+ */
+ static String getClassPath(URLClassLoader classLoader) throws URISyntaxException {
+ Set<URL> urls = new LinkedHashSet<>();
+ Collections.addAll(urls, classLoader.getURLs());
+ Collections.addAll(urls, ((URLClassLoader) classLoader.getParent()).getURLs());
+ Set<String> paths = new LinkedHashSet<>();
+ for (URL url: urls) {
+ paths.add(new File(url.toURI()).getPath());
+ }
+ return joinAsString(File.pathSeparator, paths);
+ }
+
+ /**
+ * Returns a ClassLoader including the project's runtime classpath elements.
+ * This is useful when running a Java command from inside a Maven plugin.
+ *
+ * @param project The Maven project holding runtime classpath elements.
+ * @param log A plugin log to use for debugging.
+ * @return A ClassLoader including the project's runtime classpath elements.
+ * @throws DependencyResolutionRequiredException Failed to access the runtime classpath
+ * @throws MalformedURLException Failed to add an element to the classpath
+ */
+ static URLClassLoader getRuntimeClassLoader(MavenProject project, Log log)
+ throws DependencyResolutionRequiredException, MalformedURLException {
+ List<String> runtimeClasspathElements = project.getRuntimeClasspathElements();
+ Set<URL> runtimeUrls = new LinkedHashSet<>();
+ for (String element : runtimeClasspathElements) {
+ runtimeUrls.add(new File(element).toURI().toURL());
+ }
+
+ final URLClassLoader urlClassLoader = new URLClassLoader(
+ runtimeUrls.toArray(new URL[runtimeClasspathElements.size()]),
+ Thread.currentThread().getContextClassLoader());
+ debugClassPathElements(urlClassLoader, log);
+ return urlClassLoader;
+ }
+
+ /**
+ * Logs what is on the classpath for debugging.
+ * @param classLoader The ClassLoader with the classpath.
+ * @param log The Maven plugin log in which to write debug messages.
+ */
+ static void debugClassPathElements(ClassLoader classLoader, Log log) {
+ if (null == classLoader) {
+ return;
+ }
+ log.debug("--------------------");
+ log.debug(classLoader.toString());
+ if (classLoader instanceof URLClassLoader) {
+ final URLClassLoader ucl = (URLClassLoader) classLoader;
+ int i = 0;
+ for (URL url : ucl.getURLs()) {
+ log.debug("url[" + (i++) + "]=" + url);
+ }
+ }
+ debugClassPathElements(classLoader.getParent(), log);
+ }
+
+ private Utils() {
+ // Not used.
+ }
+}
diff --git a/opendj-server-legacy/resource/admin/config-guide/duration-syntax.html b/opendj-doc-maven-plugin/src/main/resources/config-ref/duration-syntax.html
similarity index 100%
rename from opendj-server-legacy/resource/admin/config-guide/duration-syntax.html
rename to opendj-doc-maven-plugin/src/main/resources/config-ref/duration-syntax.html
diff --git a/opendj-server-legacy/resource/admin/config-guide/opendj-config.css b/opendj-doc-maven-plugin/src/main/resources/config-ref/opendj-config.css
similarity index 100%
rename from opendj-server-legacy/resource/admin/config-guide/opendj-config.css
rename to opendj-doc-maven-plugin/src/main/resources/config-ref/opendj-config.css
diff --git a/opendj-server-legacy/resource/admin/config-guide/opendj_logo_sm.png b/opendj-doc-maven-plugin/src/main/resources/config-ref/opendj_logo_sm.png
similarity index 100%
rename from opendj-server-legacy/resource/admin/config-guide/opendj_logo_sm.png
rename to opendj-doc-maven-plugin/src/main/resources/config-ref/opendj_logo_sm.png
Binary files differ
diff --git a/opendj-server-legacy/resource/admin/config-guide/pageaction.gif b/opendj-doc-maven-plugin/src/main/resources/config-ref/pageaction.gif
similarity index 100%
rename from opendj-server-legacy/resource/admin/config-guide/pageaction.gif
rename to opendj-doc-maven-plugin/src/main/resources/config-ref/pageaction.gif
Binary files differ
diff --git a/opendj-server-legacy/resource/admin/config-guide/tab_deselected.jpg b/opendj-doc-maven-plugin/src/main/resources/config-ref/tab_deselected.jpg
similarity index 100%
rename from opendj-server-legacy/resource/admin/config-guide/tab_deselected.jpg
rename to opendj-doc-maven-plugin/src/main/resources/config-ref/tab_deselected.jpg
Binary files differ
diff --git a/opendj-server-legacy/resource/admin/config-guide/tab_selected.gif b/opendj-doc-maven-plugin/src/main/resources/config-ref/tab_selected.gif
similarity index 100%
rename from opendj-server-legacy/resource/admin/config-guide/tab_selected.gif
rename to opendj-doc-maven-plugin/src/main/resources/config-ref/tab_selected.gif
Binary files differ
diff --git a/opendj-server-legacy/build.xml b/opendj-server-legacy/build.xml
index e2ac773..c51f7f0 100644
--- a/opendj-server-legacy/build.xml
+++ b/opendj-server-legacy/build.xml
@@ -22,7 +22,7 @@
!
!
! Copyright 2006-2010 Sun Microsystems, Inc.
- ! Portions Copyright 2011-2015 ForgeRock AS
+ ! Portions Copyright 2011-2015 ForgeRock AS.
! Portions Copyright 2012 Delta Victor Consultants
! -->
@@ -155,7 +155,8 @@
<property name="admin.defn.dir" location="${build.dir}/config/admin/defn" />
<property name="admin.src.dir" location="src/admin/generated" />
<property name="admin.rules.dir" location="resource/admin" />
- <property name="configguide.resource.dir" location="resource/admin/config-guide" />
+ <property name="configguide.resource.dir"
+ location="../opendj-doc-maven-plugin/src/main/resources/config-ref" />
<!-- Properties for generating messages. -->
<property name="msg.dir" location="src/messages" />
diff --git a/opendj-server-legacy/pom.xml b/opendj-server-legacy/pom.xml
index f9eb43d..ea765a2 100644
--- a/opendj-server-legacy/pom.xml
+++ b/opendj-server-legacy/pom.xml
@@ -1886,8 +1886,28 @@
<groupId>org.forgerock.opendj</groupId>
<artifactId>opendj-doc-maven-plugin</artifactId>
<version>${project.version}</version>
+ <!--
+ Configuration reference generation requires
+ that opendj-config be on the runtime classpath for the plugin.
+ It is not enough to declare it as a dependency of this module.
+ -->
+ <dependencies>
+ <dependency>
+ <groupId>org.forgerock.opendj</groupId>
+ <artifactId>opendj-config</artifactId>
+ <version>${project.version}</version>
+ </dependency>
+ </dependencies>
<executions>
<execution>
+ <id>generate-configuration-reference-doc</id>
+ <phase>compile</phase>
+ <goals>
+ <goal>generate-config-ref</goal>
+ </goals>
+ </execution>
+
+ <execution>
<id>generate-schema-reference-doc</id>
<phase>prepare-package</phase>
<goals>
diff --git a/opendj-server-legacy/src/main/java/org/opends/server/admin/doc/ConfigGuideGeneration.java b/opendj-server-legacy/src/main/java/org/opends/server/admin/doc/ConfigGuideGeneration.java
index a322e51..27a4bdd 100644
--- a/opendj-server-legacy/src/main/java/org/opends/server/admin/doc/ConfigGuideGeneration.java
+++ b/opendj-server-legacy/src/main/java/org/opends/server/admin/doc/ConfigGuideGeneration.java
@@ -22,7 +22,7 @@
*
*
* Copyright 2007-2010 Sun Microsystems, Inc.
- * Portions Copyright 2011-2015 ForgeRock AS
+ * Portions Copyright 2011-2015 ForgeRock AS.
*/
package org.opends.server.admin.doc;
@@ -988,21 +988,31 @@
private void genMainTopPage() {
htmlHeader(DynamicConstants.PRODUCT_NAME +
" Configuration Reference - Main Top");
+ // "Home" might be depend on where this is published.
+ /*
htmlBuff.append("<div class=\"breadcrumb\"><span class=\"pageactions\">" +
"<a href=\"" + OpenDJHome + "\" target=\"_parent\">" +
"<span style=\"font-size: 12px;\">« </span>" +
"Back to " +
DynamicConstants.PRODUCT_NAME + " Home</a></span> </div>\n");
+ */
+ htmlBuff.append("<div class=\"breadcrumb\"><span class=\"pageactions\">" +
+ " </span> </div>\n");
htmlBuff.append("<table class=\"titletable\" cellspacing=\"0\" " +
"width=\"100%\">\n");
htmlBuff.append("<tbody><tr>\n");
htmlBuff.append(" <td><h2>"+
DynamicConstants.PRODUCT_NAME +
" Configuration Reference</h2></td>\n");
+ /*
htmlBuff.append(" <td valign=\"bottom\" width=\"10%\">" +
"<a href=\"" + OpenDJHome + "\" target=\"_parent\">" +
"<img src=\"opendj_logo_sm.png\" alt=\"OpenDJ Logo\" align=\"bottom\" " +
"border=\"0\" height=\"33\" width=\"114\"></a></td>\n");
+ */
+ htmlBuff.append(" <td valign=\"bottom\" width=\"10%\">" +
+ "<img src=\"opendj_logo_sm.png\" alt=\"OpenDJ Logo\" align=\"bottom\" " +
+ "border=\"0\" height=\"33\" width=\"114\"></td>\n");
htmlBuff.append("</tr>\n");
htmlBuff.append("</tbody></table>\n");
@@ -1067,7 +1077,11 @@
@Override
public String visitACI(ACIPropertyDefinition prop, Void p) {
- return getLink("An ACI Syntax", aciSyntaxPage);
+ // Rather than return a link that is coupled to a site location,
+ // assume that readers can find ACI syntax in the documentation.
+ // ACI syntax being difficult to understand and to explain,
+ // it is better not to have to maintain a separate page, either.
+ return "An ACI syntax"; // getLink("An ACI Syntax", aciSyntaxPage);
}
@Override
--
Gitblit v1.10.0