From 620de65c1b249b38c0549398fb65756fa6235163 Mon Sep 17 00:00:00 2001
From: Jean-Noel Rouvignac <jean-noel.rouvignac@forgerock.com>
Date: Fri, 06 Feb 2015 10:00:11 +0000
Subject: [PATCH] OPENDJ-1242 (CR-5982) Enable dsconfig to generate doc for properties changed through subcommand options
---
opendj-config/src/main/java/org/forgerock/opendj/config/dsconfig/DSConfig.java | 101 ++++++++++++++++++++++++++++++++++++--------------
1 files changed, 72 insertions(+), 29 deletions(-)
diff --git a/opendj-config/src/main/java/org/forgerock/opendj/config/dsconfig/DSConfig.java b/opendj-config/src/main/java/org/forgerock/opendj/config/dsconfig/DSConfig.java
index b9594ed..397ee94 100644
--- a/opendj-config/src/main/java/org/forgerock/opendj/config/dsconfig/DSConfig.java
+++ b/opendj-config/src/main/java/org/forgerock/opendj/config/dsconfig/DSConfig.java
@@ -307,7 +307,7 @@
b.append(" <listitem>").append(EOL);
b.append(" <variablelist>").append(EOL);
appendVarlistentry(b, "Description", getDescriptionString(prop), indent);
- appendVarlistentry(b, "Default Value", getDefaultBehaviorString(prop), indent);
+ appendDefaultBehavior(b, indent, prop);
appendAllowedValues(b, prop, indent);
appendVarlistentry(b, "Multi-valued", getYN(prop, MULTI_VALUED), indent);
appendVarlistentry(b, "Required", getYN(prop, MANDATORY), indent);
@@ -331,22 +331,20 @@
return b;
}
+ private void appendDefaultBehavior(StringBuilder b, final String indent, PropertyDefinition<?> prop) {
+ b.append(indent).append("<varlistentry>").append(EOL);
+ b.append(indent).append(" <term>").append("Default Value").append("</term>").append(EOL);
+ b.append(indent).append(" <listitem>").append(EOL);
+ appendDefaultBehaviorString(b, indent + " ", prop);
+ b.append(indent).append(" </listitem>").append(EOL);
+ b.append(indent).append("</varlistentry>").append(EOL);
+ }
+
private void appendAllowedValues(StringBuilder b, PropertyDefinition<?> prop, String indent) {
b.append(indent).append("<varlistentry>").append(EOL);
b.append(indent).append(" <term>").append("Allowed Values").append("</term>").append(EOL);
b.append(indent).append(" <listitem>").append(EOL);
- if (prop instanceof EnumPropertyDefinition) {
- b.append(indent).append(" <variablelist>").append(EOL);
- appendSyntax(b, prop, indent + " ");
- b.append(indent).append(" </variablelist>").append(EOL);
- } else if (prop instanceof BooleanPropertyDefinition) {
- b.append(indent).append(" <para>true</para>").append(EOL);
- b.append(indent).append(" <para>false</para>").append(EOL);
- } else {
- b.append(indent).append(" <para>");
- appendSyntax(b, prop, indent);
- b.append("</para>").append(EOL);
- }
+ appendSyntax(b, prop, indent + " ");
b.append(indent).append(" </listitem>").append(EOL);
b.append(indent).append("</varlistentry>").append(EOL);
}
@@ -389,33 +387,48 @@
return prop.hasOption(option) ? "Yes (Use --advanced in interactive mode.)" : "No";
}
- private String getDefaultBehaviorString(PropertyDefinition<?> prop) {
- DefaultBehaviorProvider<?> defaultBehavior = prop.getDefaultBehaviorProvider();
+ private void appendDefaultBehaviorString(StringBuilder b, String indent, PropertyDefinition<?> prop) {
+ b.append(indent);
+ final DefaultBehaviorProvider<?> defaultBehavior = prop.getDefaultBehaviorProvider();
if (defaultBehavior instanceof UndefinedDefaultBehaviorProvider) {
- return "None";
+ b.append("<para>None</para>").append(EOL);
+ return;
} else if (defaultBehavior instanceof DefinedDefaultBehaviorProvider) {
DefinedDefaultBehaviorProvider<?> behavior = (DefinedDefaultBehaviorProvider<?>) defaultBehavior;
- final StringBuilder res = new StringBuilder();
- for (Iterator<String> it = behavior.getDefaultValues().iterator(); it.hasNext();) {
- String str = it.next();
- res.append(str).append(it.hasNext() ? "\n" : ""); // TODO JNR refactor
+ final Collection<String> defaultValues = behavior.getDefaultValues();
+ if (defaultValues.size() == 0) {
+ b.append("<para>None</para>").append(EOL);
+ return;
+ } else if (defaultValues.size() == 1) {
+ b.append("<para>").append(defaultValues.iterator().next()).append("</para>").append(EOL);
+ return;
+ } else {
+ final Iterator<String> it = defaultValues.iterator();
+ b.append("<para>").append(it.next()).append("</para>");
+ for (; it.hasNext();) {
+ final String str = it.next();
+ b.append(EOL).append(indent).append("<para>").append(str).append("</para>");
+ }
+ b.append(EOL);
+ return;
}
- return res.toString();
} else if (defaultBehavior instanceof AliasDefaultBehaviorProvider) {
AliasDefaultBehaviorProvider<?> behavior = (AliasDefaultBehaviorProvider<?>) defaultBehavior;
- return behavior.getSynopsis().toString();
+ b.append("<para>").append(behavior.getSynopsis().toString()).append("</para>").append(EOL);
+ return;
} else if (defaultBehavior instanceof RelativeInheritedDefaultBehaviorProvider) {
final RelativeInheritedDefaultBehaviorProvider<?> behavior =
(RelativeInheritedDefaultBehaviorProvider<?>) defaultBehavior;
- return getDefaultBehaviorString(
+ appendDefaultBehaviorString(b, indent,
behavior.getManagedObjectDefinition().getPropertyDefinition(behavior.getPropertyName()));
+ return;
} else if (defaultBehavior instanceof AbsoluteInheritedDefaultBehaviorProvider) {
final AbsoluteInheritedDefaultBehaviorProvider<?> behavior =
(AbsoluteInheritedDefaultBehaviorProvider<?>) defaultBehavior;
- return getDefaultBehaviorString(
+ appendDefaultBehaviorString(b, indent,
behavior.getManagedObjectDefinition().getPropertyDefinition(behavior.getPropertyName()));
+ return;
}
- return "";
}
private void appendSyntax(final StringBuilder b, PropertyDefinition<?> prop, final String indent) {
@@ -424,12 +437,15 @@
@Override
public String visitACI(ACIPropertyDefinition prop, Void p) {
+ b.append(indent).append("<para>");
b.append(ACI_SYNTAX_REL_URL);
+ b.append("</para>").append(EOL);
return null;
}
@Override
public String visitAggregation(AggregationPropertyDefinition prop, Void p) {
+ b.append(indent).append("<para>");
final RelationDefinition<?, ?> rel = prop.getRelationDefinition();
final String linkStr = getLink(rel.getName() + ".html");
b.append("The DN of any ").append(linkStr).append(". ");
@@ -437,39 +453,49 @@
if (synopsis != null) {
b.append(synopsis);
}
+ b.append("</para>").append(EOL);
return null;
}
@Override
public String visitAttributeType(AttributeTypePropertyDefinition prop, Void p) {
+ b.append(indent).append("<para>");
b.append("The name of an attribute type defined in the server schema.");
+ b.append("</para>").append(EOL);
return null;
}
@Override
public String visitBoolean(BooleanPropertyDefinition prop, Void p) {
- throw new RuntimeException("This case should be handled by the calling code.");
+ b.append(indent).append("<para>true</para>").append(EOL);
+ b.append(indent).append("<para>false</para>").append(EOL);
+ return null;
}
@Override
public String visitClass(ClassPropertyDefinition prop, Void p) {
+ b.append(indent).append("<para>");
b.append("A java class that implements or extends the class(es) :")
.append(Utils.joinAsString(EOL, prop.getInstanceOfInterface()));
+ b.append("</para>").append(EOL);
return null;
}
@Override
public String visitDN(DNPropertyDefinition prop, Void p) {
- final DN baseDN = prop.getBaseDN();
+ b.append(indent).append("<para>");
b.append("A valid DN.");
+ final DN baseDN = prop.getBaseDN();
if (baseDN != null) {
- b.append(baseDN);
+ b.append(" ").append(baseDN);
}
+ b.append("</para>").append(EOL);
return null;
}
@Override
public String visitDuration(DurationPropertyDefinition prop, Void p) {
+ b.append(indent).append("<para>");
b.append(DURATION_SYNTAX_REL_URL).append(". ");
if (prop.isAllowUnlimited()) {
b.append(ALLOW_UNLIMITED).append(" ");
@@ -484,6 +510,7 @@
b.append("Upper limit is ").append(valueOf(baseUnit, prop.getUpperLimit()))
.append(" ").append(baseUnit.getLongName()).append(". ");
}
+ b.append("</para>").append(EOL);
return null;
}
@@ -493,17 +520,22 @@
@Override
public String visitEnum(EnumPropertyDefinition prop, Void p) {
+ b.append(indent).append("<para>").append(EOL);
+ b.append(indent).append(" <variablelist>").append(EOL);
final Class<?> en = prop.getEnumClass();
final Object[] constants = en.getEnumConstants();
for (Object enumConstant : constants) {
final LocalizableMessage valueSynopsis = prop.getValueSynopsis((Enum) enumConstant);
- appendVarlistentry(b, enumConstant.toString(), valueSynopsis, indent);
+ appendVarlistentry(b, enumConstant.toString(), valueSynopsis, indent + " ");
}
+ b.append(indent).append(" </variablelist>").append(EOL);
+ b.append(indent).append("</para>").append(EOL);
return null;
}
@Override
public String visitInteger(IntegerPropertyDefinition prop, Void p) {
+ b.append(indent).append("<para>");
b.append("An integer value. Lower value is ").append(prop.getLowerLimit()).append(".");
if (prop.getUpperLimit() != null) {
b.append(" Upper value is ").append(prop.getUpperLimit()).append(".");
@@ -514,23 +546,29 @@
if (prop.getUnitSynopsis() != null) {
b.append(" Unit is ").append(prop.getUnitSynopsis()).append(".");
}
+ b.append("</para>").append(EOL);
return null;
}
@Override
public String visitIPAddress(IPAddressPropertyDefinition prop, Void p) {
+ b.append(indent).append("<para>");
b.append("An IP address");
+ b.append("</para>").append(EOL);
return null;
}
@Override
public String visitIPAddressMask(IPAddressMaskPropertyDefinition prop, Void p) {
+ b.append(indent).append("<para>");
b.append("An IP address mask");
+ b.append("</para>").append(EOL);
return null;
}
@Override
public String visitSize(SizePropertyDefinition prop, Void p) {
+ b.append(indent).append("<para>");
if (prop.getLowerLimit() != 0) {
b.append(" Lower value is ").append(prop.getLowerLimit()).append(".");
}
@@ -540,22 +578,27 @@
if (prop.isAllowUnlimited()) {
b.append(" ").append(ALLOW_UNLIMITED);
}
+ b.append("</para>").append(EOL);
return null;
}
@Override
public String visitString(StringPropertyDefinition prop, Void p) {
+ b.append(indent).append("<para>");
if (prop.getPatternSynopsis() != null) {
b.append(prop.getPatternSynopsis());
} else {
b.append("A String");
}
+ b.append("</para>").append(EOL);
return null;
}
@Override
public String visitUnknown(PropertyDefinition prop, Void p) {
+ b.append(indent).append("<para>");
b.append("Unknown");
+ b.append("</para>").append(EOL);
return null;
}
};
--
Gitblit v1.10.0