mirror of https://github.com/OpenIdentityPlatform/OpenDJ.git

matthew_swift
22.31.2007 b4609c121a530c9d22b2cebe0a92cd6eaf765e16
Fix issue 1931: dsconfig : what are MODE syntax values ?

This change modifies dsconfig so that it provides more helpful feedback to users when they need to provide string valued properties which must match a particular pattern. dsconfig now displays the pattern synopsis when requesting a property value or when reporting that a value is invalid.
5 files modified
61 ■■■■ changed files
opends/src/messages/messages/dsconfig.properties 2 ●●● patch | view | raw | blame | history
opends/src/server/org/opends/server/admin/PropertyDefinitionUsageBuilder.java 10 ●●●●● patch | view | raw | blame | history
opends/src/server/org/opends/server/tools/dsconfig/CreateSubCommandHandler.java 16 ●●●● patch | view | raw | blame | history
opends/src/server/org/opends/server/tools/dsconfig/HelpSubCommandHandler.java 2 ●●● patch | view | raw | blame | history
opends/src/server/org/opends/server/tools/dsconfig/PropertyValueEditor.java 31 ●●●● patch | view | raw | blame | history
opends/src/messages/messages/dsconfig.properties
@@ -321,7 +321,7 @@
INFO_VALUE_UNLIMITED_1293=unlimited
INFO_EDITOR_PROMPT_SELECT_VALUE_SINGLE_1294=Select a value for the "%s" property:
INFO_EDITOR_PROMPT_SELECT_VALUE_MULTI_1295=Select one or more values for the "%s" property:
INFO_EDITOR_HEADING_SYNTAX_1296=Syntax: %s
INFO_EDITOR_HEADING_SYNTAX_1296=Syntax:
INFO_EDITOR_HEADING_VALUES_SUMMARY_1297=The "%s" property has the following values:
INFO_EDITOR_PROMPT_SELECT_VALUES_ADD_1299=Select the values you wish to add:
INFO_EDITOR_PROMPT_SELECT_VALUES_REMOVE_1302=Select the values you wish to remove:
opends/src/server/org/opends/server/admin/PropertyDefinitionUsageBuilder.java
@@ -318,7 +318,15 @@
    @Override
    public Message visitString(StringPropertyDefinition d, Void p) {
      if (d.getPattern() != null) {
        return Message.raw(d.getPatternUsage());
        if (isDetailed) {
          MessageBuilder builder = new MessageBuilder();
          builder.append(d.getPatternUsage());
          builder.append(" - ");
          builder.append(d.getPatternSynopsis());
          return builder.toMessage();
        } else {
          return Message.raw(d.getPatternUsage());
        }
      } else {
        return Message.raw("STRING");
      }
opends/src/server/org/opends/server/tools/dsconfig/CreateSubCommandHandler.java
@@ -778,10 +778,20 @@
        app.println(pd.getDescription(), 4);
      }
      PropertyDefinitionUsageBuilder b = new PropertyDefinitionUsageBuilder(
          true);
      PropertyDefinitionUsageBuilder b =
        new PropertyDefinitionUsageBuilder(true);
      TableBuilder builder = new TableBuilder();
      builder.startRow();
      builder.appendCell(INFO_EDITOR_HEADING_SYNTAX.get());
      builder.appendCell(b.getUsage(pd));
      TextTablePrinter printer = new TextTablePrinter(app.getErrorStream());
      printer.setDisplayHeadings(false);
      printer.setIndentWidth(4);
      printer.setColumnWidth(1, 0);
      app.println();
      app.println(INFO_EDITOR_HEADING_SYNTAX.get(b.getUsage(pd)), 4);
      builder.print(printer);
      app.println();
      return app.readValidatedInput(INFO_DSCFG_CREATE_NAME_PROMPT_NAMING_CONT
opends/src/server/org/opends/server/tools/dsconfig/HelpSubCommandHandler.java
@@ -268,7 +268,7 @@
      @Override
      public Void visitString(StringPropertyDefinition d, PrintStream p) {
        PropertyDefinitionUsageBuilder usageBuilder =
          new PropertyDefinitionUsageBuilder(true);
          new PropertyDefinitionUsageBuilder(false);
        TableBuilder builder = new TableBuilder();
        builder.startRow();
opends/src/server/org/opends/server/tools/dsconfig/PropertyValueEditor.java
@@ -631,10 +631,8 @@
    @Override
    public <T> MenuResult<Void> visitUnknown(PropertyDefinition<T> d,
        Void p) throws UnknownPropertyDefinitionException {
      PropertyDefinitionUsageBuilder b = new PropertyDefinitionUsageBuilder(
          true);
      app.println();
      app.println(INFO_EDITOR_HEADING_SYNTAX.get(b.getUsage(d)), 4);
      displayPropertySyntax(app, d);
      // Set the new property value(s).
      try {
@@ -1009,10 +1007,8 @@
    @Override
    public <T> MenuResult<Boolean> visitUnknown(final PropertyDefinition<T> d,
        Void p) {
      PropertyDefinitionUsageBuilder b = new PropertyDefinitionUsageBuilder(
          true);
      app.println();
      app.println(INFO_EDITOR_HEADING_SYNTAX.get(b.getUsage(d)), 4);
      displayPropertySyntax(app, d);
      final SortedSet<T> defaultValues = mo.getPropertyDefaultValues(d);
      final SortedSet<T> oldValues = mo.getPropertyValues(d);
@@ -1781,10 +1777,8 @@
    @Override
    public <T> MenuResult<Boolean> visitUnknown(final PropertyDefinition<T> d,
        Void p) {
      PropertyDefinitionUsageBuilder b = new PropertyDefinitionUsageBuilder(
          true);
      app.println();
      app.println(INFO_EDITOR_HEADING_SYNTAX.get(b.getUsage(d)), 4);
      displayPropertySyntax(app, d);
      // Construct a menu of actions.
      MenuBuilder<T> builder = new MenuBuilder<T>(app);
@@ -1961,6 +1955,25 @@
  // Display a property's syntax.
  private static <T> void displayPropertySyntax(ConsoleApplication app,
      PropertyDefinition<T> d) throws IllegalArgumentException {
    PropertyDefinitionUsageBuilder b = new PropertyDefinitionUsageBuilder(true);
    TableBuilder builder = new TableBuilder();
    builder.startRow();
    builder.appendCell(INFO_EDITOR_HEADING_SYNTAX.get());
    builder.appendCell(b.getUsage(d));
    TextTablePrinter printer = new TextTablePrinter(app.getErrorStream());
    printer.setDisplayHeadings(false);
    printer.setIndentWidth(4);
    printer.setColumnWidth(1, 0);
    builder.print(printer);
  }
  // Display a table of property values.
  private static <T> void displayPropertyValues(ConsoleApplication app,
      PropertyDefinition<T> pd, Collection<T> values)