From df993e4e7a2b5af0c8e0907a80e1a4cef10ee56d Mon Sep 17 00:00:00 2001
From: Gaetan Boismal <gaetan.boismal@forgerock.com>
Date: Thu, 11 Feb 2016 14:17:18 +0000
Subject: [PATCH] OPENDJSDK-42 cli arguments fluent builder

---
 opendj-server-legacy/src/main/java/org/opends/server/tools/LDAPSearch.java |  612 ++++++++++++++++++++++++-------------------------------
 1 files changed, 266 insertions(+), 346 deletions(-)

diff --git a/opendj-server-legacy/src/main/java/org/opends/server/tools/LDAPSearch.java b/opendj-server-legacy/src/main/java/org/opends/server/tools/LDAPSearch.java
index e87d50d..ef79fa6 100644
--- a/opendj-server-legacy/src/main/java/org/opends/server/tools/LDAPSearch.java
+++ b/opendj-server-legacy/src/main/java/org/opends/server/tools/LDAPSearch.java
@@ -27,6 +27,13 @@
 package org.opends.server.tools;
 
 import static com.forgerock.opendj.cli.ArgumentConstants.*;
+import static com.forgerock.opendj.cli.CliMessages.INFO_BINDPWD_FILE_PLACEHOLDER;
+import static com.forgerock.opendj.cli.CliMessages.INFO_DESCRIPTION_BINDPASSWORDFILE;
+import static com.forgerock.opendj.cli.CliMessages.INFO_DESCRIPTION_KEYSTOREPASSWORD_FILE;
+import static com.forgerock.opendj.cli.CliMessages.INFO_DESCRIPTION_TRUSTSTOREPASSWORD_FILE;
+import static com.forgerock.opendj.cli.CliMessages.INFO_DESCRIPTION_VERSION;
+import static com.forgerock.opendj.cli.CliMessages.INFO_KEYSTORE_PWD_FILE_PLACEHOLDER;
+import static com.forgerock.opendj.cli.CliMessages.INFO_TRUSTSTORE_PWD_FILE_PLACEHOLDER;
 import static com.forgerock.opendj.cli.Utils.*;
 
 import static org.opends.messages.ToolMessages.*;
@@ -691,370 +698,283 @@
 
     try
     {
-      propertiesFileArgument = new StringArgument("propertiesFilePath",
-          null, OPTION_LONG_PROP_FILE_PATH,
-          false, false, true, INFO_PROP_FILE_PATH_PLACEHOLDER.get(), null, null,
-          INFO_DESCRIPTION_PROP_FILE_PATH.get());
-      argParser.addArgument(propertiesFileArgument);
+      propertiesFileArgument =
+              StringArgument.builder(OPTION_LONG_PROP_FILE_PATH)
+                      .description(INFO_DESCRIPTION_PROP_FILE_PATH.get())
+                      .valuePlaceholder(INFO_PROP_FILE_PATH_PLACEHOLDER.get())
+                      .buildAndAddToParser(argParser);
       argParser.setFilePropertiesArgument(propertiesFileArgument);
 
-      noPropertiesFileArgument = new BooleanArgument(
-          "noPropertiesFileArgument", null, OPTION_LONG_NO_PROP_FILE,
-          INFO_DESCRIPTION_NO_PROP_FILE.get());
-      argParser.addArgument(noPropertiesFileArgument);
+      noPropertiesFileArgument =
+              BooleanArgument.builder(OPTION_LONG_NO_PROP_FILE)
+                      .description(INFO_DESCRIPTION_NO_PROP_FILE.get())
+                      .buildAndAddToParser(argParser);
       argParser.setNoPropertiesFileArgument(noPropertiesFileArgument);
 
-      hostName = new StringArgument("host", OPTION_SHORT_HOST,
-                                    OPTION_LONG_HOST, false, false, true,
-                                    INFO_HOST_PLACEHOLDER.get(), "localhost",
-                                    null,
-                                    INFO_DESCRIPTION_HOST.get());
-      hostName.setPropertyName(OPTION_LONG_HOST);
-      argParser.addArgument(hostName);
-
-      port = new IntegerArgument("port", OPTION_SHORT_PORT,
-                                 OPTION_LONG_PORT, false, false, true,
-                                 INFO_PORT_PLACEHOLDER.get(), 389, null,
-                                 true, 1, true, 65535,
-                                 INFO_DESCRIPTION_PORT.get());
-      port.setPropertyName(OPTION_LONG_PORT);
-      argParser.addArgument(port);
-
-      useSSL = new BooleanArgument("useSSL", OPTION_SHORT_USE_SSL,
-                                   OPTION_LONG_USE_SSL,
-                                   INFO_DESCRIPTION_USE_SSL.get());
-      useSSL.setPropertyName(OPTION_LONG_USE_SSL);
-      argParser.addArgument(useSSL);
-
-      startTLS = new BooleanArgument("startTLS", OPTION_SHORT_START_TLS,
-                                    OPTION_LONG_START_TLS,
-                                    INFO_DESCRIPTION_START_TLS.get());
-      startTLS.setPropertyName(OPTION_LONG_START_TLS);
-      argParser.addArgument(startTLS);
-
-      bindDN = new StringArgument("bindDN", OPTION_SHORT_BINDDN,
-                                  OPTION_LONG_BINDDN, false, false, true,
-                                  INFO_BINDDN_PLACEHOLDER.get(), null, null,
-                                  INFO_DESCRIPTION_BINDDN.get());
-      bindDN.setPropertyName(OPTION_LONG_BINDDN);
-      argParser.addArgument(bindDN);
-
-      bindPassword = new StringArgument("bindPassword", OPTION_SHORT_BINDPWD,
-                                        OPTION_LONG_BINDPWD,
-                                        false, false, true,
-                                        INFO_BINDPWD_PLACEHOLDER.get(),
-                                        null, null,
-                                        INFO_DESCRIPTION_BINDPASSWORD.get());
-      bindPassword.setPropertyName(OPTION_LONG_BINDPWD);
-      argParser.addArgument(bindPassword);
-
+      hostName =
+              StringArgument.builder(OPTION_LONG_HOST)
+                      .shortIdentifier(OPTION_SHORT_HOST)
+                      .description(INFO_DESCRIPTION_HOST.get())
+                      .defaultValue("localhost")
+                      .valuePlaceholder(INFO_HOST_PLACEHOLDER.get())
+                      .buildAndAddToParser(argParser);
+      port =
+              IntegerArgument.builder(OPTION_LONG_PORT)
+                      .shortIdentifier(OPTION_SHORT_PORT)
+                      .description(INFO_DESCRIPTION_PORT.get())
+                      .range(1, 65535)
+                      .defaultValue(389)
+                      .valuePlaceholder(INFO_PORT_PLACEHOLDER.get())
+                      .buildAndAddToParser(argParser);
+      useSSL =
+              BooleanArgument.builder(OPTION_LONG_USE_SSL)
+                      .shortIdentifier(OPTION_SHORT_USE_SSL)
+                      .description(INFO_DESCRIPTION_USE_SSL.get())
+                      .buildAndAddToParser(argParser);
+      startTLS =
+              BooleanArgument.builder(OPTION_LONG_START_TLS)
+                      .shortIdentifier(OPTION_SHORT_START_TLS)
+                      .description(INFO_DESCRIPTION_START_TLS.get())
+                      .buildAndAddToParser(argParser);
+      bindDN =
+              StringArgument.builder(OPTION_LONG_BINDDN)
+                      .shortIdentifier(OPTION_SHORT_BINDDN)
+                      .description(INFO_DESCRIPTION_BINDDN.get())
+                      .valuePlaceholder(INFO_BINDDN_PLACEHOLDER.get())
+                      .buildAndAddToParser(argParser);
+      bindPassword =
+              StringArgument.builder(OPTION_LONG_BINDPWD)
+                      .shortIdentifier(OPTION_SHORT_BINDPWD)
+                      .description(INFO_DESCRIPTION_BINDPASSWORD.get())
+                      .valuePlaceholder(INFO_BINDPWD_PLACEHOLDER.get())
+                      .buildAndAddToParser(argParser);
       bindPasswordFile =
-           new FileBasedArgument("bindPasswordFile", OPTION_SHORT_BINDPWD_FILE,
-                                 OPTION_LONG_BINDPWD_FILE,
-                                 false, false,
-                                 INFO_BINDPWD_FILE_PLACEHOLDER.get(), null,
-                                 null, INFO_DESCRIPTION_BINDPASSWORDFILE.get());
-      bindPasswordFile.setPropertyName(OPTION_LONG_BINDPWD_FILE);
-      argParser.addArgument(bindPasswordFile);
-
-      baseDN = new StringArgument("baseDN", OPTION_SHORT_BASEDN,
-                                  OPTION_LONG_BASEDN, true, false, true,
-                                  INFO_BASEDN_PLACEHOLDER.get(), null, null,
-                                  INFO_SEARCH_DESCRIPTION_BASEDN.get());
-      baseDN.setPropertyName(OPTION_LONG_BASEDN);
-      argParser.addArgument(baseDN);
-
-      HashSet<String> allowedScopes = new HashSet<>();
-      allowedScopes.add("base");
-      allowedScopes.add("one");
-      allowedScopes.add("sub");
-      allowedScopes.add("subordinate");
-      searchScope = new MultiChoiceArgument(
-              "searchScope", 's', "searchScope", false,
-              true, INFO_SEARCH_SCOPE_PLACEHOLDER.get(), allowedScopes,
-              false,
-              INFO_SEARCH_DESCRIPTION_SEARCH_SCOPE.get());
-      searchScope.setPropertyName("searchScope");
-      searchScope.setDefaultValue("sub");
-      argParser.addArgument(searchScope);
-
-      filename = new StringArgument("filename", OPTION_SHORT_FILENAME,
-                                    OPTION_LONG_FILENAME, false, false,
-                                    true, INFO_FILE_PLACEHOLDER.get(), null,
-                                    null,
-                                    INFO_SEARCH_DESCRIPTION_FILENAME.get());
-      searchScope.setPropertyName(OPTION_LONG_FILENAME);
-      argParser.addArgument(filename);
-
-      saslExternal = new BooleanArgument(
-              "useSASLExternal", 'r',
-              "useSASLExternal",
-              INFO_DESCRIPTION_USE_SASL_EXTERNAL.get());
-      saslExternal.setPropertyName("useSASLExternal");
-      argParser.addArgument(saslExternal);
-
-      saslOptions = new StringArgument("saslOption", OPTION_SHORT_SASLOPTION,
-                                       OPTION_LONG_SASLOPTION, false,
-                                       true, true,
-                                       INFO_SASL_OPTION_PLACEHOLDER.get(), null,
-                                       null,
-                                       INFO_DESCRIPTION_SASL_PROPERTIES.get());
-      saslOptions.setPropertyName(OPTION_LONG_SASLOPTION);
-      argParser.addArgument(saslOptions);
+              FileBasedArgument.builder(OPTION_LONG_BINDPWD_FILE)
+                      .shortIdentifier(OPTION_SHORT_BINDPWD_FILE)
+                      .description(INFO_DESCRIPTION_BINDPASSWORDFILE.get())
+                      .valuePlaceholder(INFO_BINDPWD_FILE_PLACEHOLDER.get())
+                      .buildAndAddToParser(argParser);
+      baseDN =
+              StringArgument.builder(OPTION_LONG_BASEDN)
+                      .shortIdentifier(OPTION_SHORT_BASEDN)
+                      .description(INFO_SEARCH_DESCRIPTION_BASEDN.get())
+                      .required()
+                      .valuePlaceholder(INFO_BASEDN_PLACEHOLDER.get())
+                      .buildAndAddToParser(argParser);
+      searchScope =
+              MultiChoiceArgument.<String>builder("searchScope")
+                      .shortIdentifier('s')
+                      .description(INFO_SEARCH_DESCRIPTION_SEARCH_SCOPE.get())
+                      .allowedValues("base", "one", "sub", "subordinate")
+                      .defaultValue("sub")
+                      .valuePlaceholder(INFO_SEARCH_SCOPE_PLACEHOLDER.get())
+                      .buildAndAddToParser(argParser);
+      filename =
+              StringArgument.builder(OPTION_LONG_FILENAME)
+                      .shortIdentifier(OPTION_SHORT_FILENAME)
+                      .description(INFO_SEARCH_DESCRIPTION_FILENAME.get())
+                      .valuePlaceholder(INFO_FILE_PLACEHOLDER.get())
+                      .buildAndAddToParser(argParser);
+      saslExternal =
+              BooleanArgument.builder("useSASLExternal")
+                      .shortIdentifier('r')
+                      .description(INFO_DESCRIPTION_USE_SASL_EXTERNAL.get())
+                      .buildAndAddToParser(argParser);
+      saslOptions =
+              StringArgument.builder(OPTION_LONG_SASLOPTION)
+                      .shortIdentifier(OPTION_SHORT_SASLOPTION)
+                      .description(INFO_DESCRIPTION_SASL_PROPERTIES.get())
+                      .multiValued()
+                      .valuePlaceholder(INFO_SASL_OPTION_PLACEHOLDER.get())
+                      .buildAndAddToParser(argParser);
 
       trustAll = CommonArguments.getTrustAll();
       argParser.addArgument(trustAll);
 
-      keyStorePath = new StringArgument("keyStorePath",
-                                  OPTION_SHORT_KEYSTOREPATH,
-                                  OPTION_LONG_KEYSTOREPATH, false, false, true,
-                                  INFO_KEYSTOREPATH_PLACEHOLDER.get(), null,
-                                  null,
-                                  INFO_DESCRIPTION_KEYSTOREPATH.get());
-      keyStorePath.setPropertyName(OPTION_LONG_KEYSTOREPATH);
-      argParser.addArgument(keyStorePath);
-
-      keyStorePassword = new StringArgument("keyStorePassword",
-                                  OPTION_SHORT_KEYSTORE_PWD,
-                                  OPTION_LONG_KEYSTORE_PWD, false, false,
-                                  true, INFO_KEYSTORE_PWD_PLACEHOLDER.get(),
-                                  null, null,
-                                  INFO_DESCRIPTION_KEYSTOREPASSWORD.get());
-      keyStorePassword.setPropertyName(OPTION_LONG_KEYSTORE_PWD);
-      argParser.addArgument(keyStorePassword);
-
+      keyStorePath =
+              StringArgument.builder(OPTION_LONG_KEYSTOREPATH)
+                      .shortIdentifier(OPTION_SHORT_KEYSTOREPATH)
+                      .description(INFO_DESCRIPTION_KEYSTOREPATH.get())
+                      .valuePlaceholder(INFO_KEYSTOREPATH_PLACEHOLDER.get())
+                      .buildAndAddToParser(argParser);
+      keyStorePassword =
+              StringArgument.builder(OPTION_LONG_KEYSTORE_PWD)
+                      .shortIdentifier(OPTION_SHORT_KEYSTORE_PWD)
+                      .description(INFO_DESCRIPTION_KEYSTOREPASSWORD.get())
+                      .valuePlaceholder(INFO_KEYSTORE_PWD_PLACEHOLDER.get())
+                      .buildAndAddToParser(argParser);
       keyStorePasswordFile =
-           new FileBasedArgument("keystorepasswordfile",
-                                 OPTION_SHORT_KEYSTORE_PWD_FILE,
-                                 OPTION_LONG_KEYSTORE_PWD_FILE,
-                                 false, false,
-                                 INFO_KEYSTORE_PWD_FILE_PLACEHOLDER.get(),
-                                 null, null,
-                                 INFO_DESCRIPTION_KEYSTOREPASSWORD_FILE.get());
-      keyStorePasswordFile.setPropertyName(OPTION_LONG_KEYSTORE_PWD_FILE);
-      argParser.addArgument(keyStorePasswordFile);
-
-      certNickname = new StringArgument(
-              "certnickname", OPTION_SHORT_CERT_NICKNAME,
-              OPTION_LONG_CERT_NICKNAME,
-              false, false, true, INFO_NICKNAME_PLACEHOLDER.get(), null,
-              null, INFO_DESCRIPTION_CERT_NICKNAME.get());
-      certNickname.setPropertyName(OPTION_LONG_CERT_NICKNAME);
-      argParser.addArgument(certNickname);
-
-      trustStorePath = new StringArgument("trustStorePath",
-                                  OPTION_SHORT_TRUSTSTOREPATH,
-                                  OPTION_LONG_TRUSTSTOREPATH,
-                                  false, false, true,
-                                  INFO_TRUSTSTOREPATH_PLACEHOLDER.get(), null,
-                                  null,
-                                  INFO_DESCRIPTION_TRUSTSTOREPATH.get());
-      trustStorePath.setPropertyName(OPTION_LONG_TRUSTSTOREPATH);
-      argParser.addArgument(trustStorePath);
-
+              FileBasedArgument.builder(OPTION_LONG_KEYSTORE_PWD_FILE)
+                      .shortIdentifier(OPTION_SHORT_KEYSTORE_PWD_FILE)
+                      .description(INFO_DESCRIPTION_KEYSTOREPASSWORD_FILE.get())
+                      .valuePlaceholder(INFO_KEYSTORE_PWD_FILE_PLACEHOLDER.get())
+                      .buildAndAddToParser(argParser);
+      certNickname =
+              StringArgument.builder(OPTION_LONG_CERT_NICKNAME)
+                      .shortIdentifier(OPTION_SHORT_CERT_NICKNAME)
+                      .description(INFO_DESCRIPTION_CERT_NICKNAME.get())
+                      .valuePlaceholder(INFO_NICKNAME_PLACEHOLDER.get())
+                      .buildAndAddToParser(argParser);
+      trustStorePath =
+              StringArgument.builder(OPTION_LONG_TRUSTSTOREPATH)
+                      .shortIdentifier(OPTION_SHORT_TRUSTSTOREPATH)
+                      .description(INFO_DESCRIPTION_TRUSTSTOREPATH.get())
+                      .valuePlaceholder(INFO_TRUSTSTOREPATH_PLACEHOLDER.get())
+                      .buildAndAddToParser(argParser);
       trustStorePassword =
-           new StringArgument("trustStorePassword", null,
-                              OPTION_LONG_TRUSTSTORE_PWD,
-                              false, false, true,
-                              INFO_TRUSTSTORE_PWD_PLACEHOLDER.get(),
-                              null,
-                              null, INFO_DESCRIPTION_TRUSTSTOREPASSWORD.get());
-      trustStorePassword.setPropertyName(OPTION_LONG_TRUSTSTORE_PWD);
-      argParser.addArgument(trustStorePassword);
-
+              StringArgument.builder(OPTION_LONG_TRUSTSTORE_PWD)
+                      .description(INFO_DESCRIPTION_TRUSTSTOREPASSWORD.get())
+                      .valuePlaceholder(INFO_TRUSTSTORE_PWD_PLACEHOLDER.get())
+                      .buildAndAddToParser(argParser);
       trustStorePasswordFile =
-           new FileBasedArgument(
-                   "truststorepasswordfile",
-                   OPTION_SHORT_TRUSTSTORE_PWD_FILE,
-                   OPTION_LONG_TRUSTSTORE_PWD_FILE, false, false,
-                   INFO_TRUSTSTORE_PWD_FILE_PLACEHOLDER.get(), null, null,
-                   INFO_DESCRIPTION_TRUSTSTOREPASSWORD_FILE.get());
-      trustStorePasswordFile.setPropertyName(OPTION_LONG_TRUSTSTORE_PWD_FILE);
-      argParser.addArgument(trustStorePasswordFile);
-
-      proxyAuthzID = new StringArgument("proxy_authzid",
-                                        OPTION_SHORT_PROXYAUTHID,
-                                        OPTION_LONG_PROXYAUTHID, false,
-                                        false, true,
-                                        INFO_PROXYAUTHID_PLACEHOLDER.get(),
-                                        null, null,
-                                        INFO_DESCRIPTION_PROXY_AUTHZID.get());
-      proxyAuthzID.setPropertyName(OPTION_LONG_PROXYAUTHID);
-      argParser.addArgument(proxyAuthzID);
-
-      reportAuthzID = new BooleanArgument(
-              "reportauthzid", 'E', OPTION_LONG_REPORT_AUTHZ_ID,
-              INFO_DESCRIPTION_REPORT_AUTHZID.get());
-      reportAuthzID.setPropertyName(OPTION_LONG_REPORT_AUTHZ_ID);
-      argParser.addArgument(reportAuthzID);
-
-      usePasswordPolicyControl = new BooleanArgument(
-              "usepwpolicycontrol", null,
-              OPTION_LONG_USE_PW_POLICY_CTL,
-              INFO_DESCRIPTION_USE_PWP_CONTROL.get());
-      usePasswordPolicyControl.setPropertyName(OPTION_LONG_USE_PW_POLICY_CTL);
-      argParser.addArgument(usePasswordPolicyControl);
-
-      pSearchInfo = new StringArgument("psearchinfo", 'C', "persistentSearch",
-                             false, false, true,
-                             INFO_PSEARCH_PLACEHOLDER.get(),
-                              null, null, INFO_DESCRIPTION_PSEARCH_INFO.get());
-      pSearchInfo.setPropertyName("persistentSearch");
-      pSearchInfo.setDocDescriptionSupplement(SUPPLEMENT_DESCRIPTION_PSEARCH_INFO.get());
-      argParser.addArgument(pSearchInfo);
-
-      simplePageSize = new IntegerArgument(
-              "simplepagesize", null,
-              "simplePageSize", false, false, true,
-              INFO_NUM_ENTRIES_PLACEHOLDER.get(), 1000, null, true, 1,
-              false, 0,
-              INFO_DESCRIPTION_SIMPLE_PAGE_SIZE.get());
-      simplePageSize.setPropertyName("simplePageSize");
-      argParser.addArgument(simplePageSize);
-
-      assertionFilter = new StringArgument(
-              "assertionfilter", null,
-              OPTION_LONG_ASSERTION_FILE,
-              false, false,
-              true, INFO_ASSERTION_FILTER_PLACEHOLDER.get(),
-              null, null,
-              INFO_DESCRIPTION_ASSERTION_FILTER.get());
-      assertionFilter.setPropertyName(OPTION_LONG_ASSERTION_FILE);
-      argParser.addArgument(assertionFilter);
-
-      matchedValuesFilter = new StringArgument(
-              "matchedvalues", null,
-              "matchedValuesFilter", false, true, true,
-              INFO_FILTER_PLACEHOLDER.get(), null, null,
-              INFO_DESCRIPTION_MATCHED_VALUES_FILTER.get());
-      matchedValuesFilter.setPropertyName("matchedValuesFilter");
-      argParser.addArgument(matchedValuesFilter);
-
-      sortOrder = new StringArgument(
-              "sortorder", 'S', "sortOrder", false,
-              false, true, INFO_SORT_ORDER_PLACEHOLDER.get(), null, null,
-              INFO_DESCRIPTION_SORT_ORDER.get());
-      sortOrder.setPropertyName("sortOrder");
-      argParser.addArgument(sortOrder);
-
+              FileBasedArgument.builder(OPTION_LONG_TRUSTSTORE_PWD_FILE)
+                      .shortIdentifier(OPTION_SHORT_TRUSTSTORE_PWD_FILE)
+                      .description(INFO_DESCRIPTION_TRUSTSTOREPASSWORD_FILE.get())
+                      .valuePlaceholder(INFO_TRUSTSTORE_PWD_FILE_PLACEHOLDER.get())
+                      .buildAndAddToParser(argParser);
+      proxyAuthzID =
+              StringArgument.builder(OPTION_LONG_PROXYAUTHID)
+                      .shortIdentifier(OPTION_SHORT_PROXYAUTHID)
+                      .description(INFO_DESCRIPTION_PROXY_AUTHZID.get())
+                      .valuePlaceholder(INFO_PROXYAUTHID_PLACEHOLDER.get())
+                      .buildAndAddToParser(argParser);
+      reportAuthzID =
+              BooleanArgument.builder(OPTION_LONG_REPORT_AUTHZ_ID)
+                      .shortIdentifier('E')
+                      .description(INFO_DESCRIPTION_REPORT_AUTHZID.get())
+                      .buildAndAddToParser(argParser);
+      usePasswordPolicyControl =
+              BooleanArgument.builder(OPTION_LONG_USE_PW_POLICY_CTL)
+                      .description(INFO_DESCRIPTION_USE_PWP_CONTROL.get())
+                      .buildAndAddToParser(argParser);
+      pSearchInfo =
+              StringArgument.builder("persistentSearch")
+                      .shortIdentifier('C')
+                      .description(INFO_DESCRIPTION_PSEARCH_INFO.get())
+                      .docDescriptionSupplement(SUPPLEMENT_DESCRIPTION_PSEARCH_INFO.get())
+                      .valuePlaceholder(INFO_PSEARCH_PLACEHOLDER.get())
+                      .buildAndAddToParser(argParser);
+      simplePageSize =
+              IntegerArgument.builder("simplePageSize")
+                      .description(INFO_DESCRIPTION_SIMPLE_PAGE_SIZE.get())
+                      .lowerBound(1)
+                      .defaultValue(1000)
+                      .valuePlaceholder(INFO_NUM_ENTRIES_PLACEHOLDER.get())
+                      .buildAndAddToParser(argParser);
+      assertionFilter =
+              StringArgument.builder(OPTION_LONG_ASSERTION_FILE)
+                      .description(INFO_DESCRIPTION_ASSERTION_FILTER.get())
+                      .valuePlaceholder(INFO_ASSERTION_FILTER_PLACEHOLDER.get())
+                      .buildAndAddToParser(argParser);
+      matchedValuesFilter =
+              StringArgument.builder("matchedValuesFilter")
+                      .description(INFO_DESCRIPTION_MATCHED_VALUES_FILTER.get())
+                      .multiValued()
+                      .valuePlaceholder(INFO_FILTER_PLACEHOLDER.get())
+                      .buildAndAddToParser(argParser);
+      sortOrder =
+              StringArgument.builder("sortOrder")
+                      .shortIdentifier('S')
+                      .description(INFO_DESCRIPTION_SORT_ORDER.get())
+                      .valuePlaceholder(INFO_SORT_ORDER_PLACEHOLDER.get())
+                      .buildAndAddToParser(argParser);
       vlvDescriptor =
-           new StringArgument(
-                   "vlvdescriptor", 'G', "virtualListView", false,
-                   false, true,
-                   INFO_VLV_PLACEHOLDER.get(),
-                   null, null, INFO_DESCRIPTION_VLV.get());
-      vlvDescriptor.setPropertyName("virtualListView");
-      argParser.addArgument(vlvDescriptor);
-
+              StringArgument.builder("virtualListView")
+                      .shortIdentifier('G')
+                      .description(INFO_DESCRIPTION_VLV.get())
+                      .valuePlaceholder(INFO_VLV_PLACEHOLDER.get())
+                      .buildAndAddToParser(argParser);
       controlStr =
-           new StringArgument("control", 'J', "control", false, true, true,
-                    INFO_LDAP_CONTROL_PLACEHOLDER.get(),
-                    null, null, INFO_DESCRIPTION_CONTROLS.get());
-      controlStr.setPropertyName("control");
-      controlStr.setDocDescriptionSupplement(SUPPLEMENT_DESCRIPTION_CONTROLS.get());
-      argParser.addArgument(controlStr);
-
-      subEntriesArgument = new BooleanArgument("subEntries",
-              OPTION_SHORT_SUBENTRIES, OPTION_LONG_SUBENTRIES,
-              INFO_DESCRIPTION_SUBENTRIES.get());
-      subEntriesArgument.setPropertyName(OPTION_LONG_SUBENTRIES);
-      argParser.addArgument(subEntriesArgument);
-
+              StringArgument.builder("control")
+                      .shortIdentifier('J')
+                      .description(INFO_DESCRIPTION_CONTROLS.get())
+                      .docDescriptionSupplement(SUPPLEMENT_DESCRIPTION_CONTROLS.get())
+                      .multiValued()
+                      .valuePlaceholder(INFO_LDAP_CONTROL_PLACEHOLDER.get())
+                      .buildAndAddToParser(argParser);
+      subEntriesArgument =
+              BooleanArgument.builder(OPTION_LONG_SUBENTRIES)
+                      .shortIdentifier(OPTION_SHORT_SUBENTRIES)
+                      .description(INFO_DESCRIPTION_SUBENTRIES.get())
+                      .buildAndAddToParser(argParser);
       effectiveRightsUser =
-              new StringArgument("effectiveRightsUser",
-                      OPTION_SHORT_EFFECTIVERIGHTSUSER,
-                      OPTION_LONG_EFFECTIVERIGHTSUSER, false, false, true,
-                      INFO_PROXYAUTHID_PLACEHOLDER.get(), null, null,
-                      INFO_DESCRIPTION_EFFECTIVERIGHTS_USER.get( ));
-      effectiveRightsUser.setPropertyName(OPTION_LONG_EFFECTIVERIGHTSUSER);
-      argParser.addArgument(effectiveRightsUser);
-
+              StringArgument.builder(OPTION_LONG_EFFECTIVERIGHTSUSER)
+                      .shortIdentifier(OPTION_SHORT_EFFECTIVERIGHTSUSER)
+                      .description(INFO_DESCRIPTION_EFFECTIVERIGHTS_USER.get())
+                      .valuePlaceholder(INFO_PROXYAUTHID_PLACEHOLDER.get())
+                      .buildAndAddToParser(argParser);
       effectiveRightsAttrs =
-              new StringArgument("effectiveRightsAttrs",
-                      OPTION_SHORT_EFFECTIVERIGHTSATTR,
-                      OPTION_LONG_EFFECTIVERIGHTSATTR, false, true, true,
-                      INFO_ATTRIBUTE_PLACEHOLDER.get(), null, null,
-                      INFO_DESCRIPTION_EFFECTIVERIGHTS_ATTR.get( ));
-      effectiveRightsAttrs.setPropertyName(OPTION_LONG_EFFECTIVERIGHTSATTR);
-      argParser.addArgument(effectiveRightsAttrs);
-
-      version = new IntegerArgument("version", OPTION_SHORT_PROTOCOL_VERSION,
-                                    OPTION_LONG_PROTOCOL_VERSION, false, false,
-                                    true,
-                                    INFO_PROTOCOL_VERSION_PLACEHOLDER.get(), 3,
-                                    null, INFO_DESCRIPTION_VERSION.get());
-      version.setPropertyName(OPTION_LONG_PROTOCOL_VERSION);
-      argParser.addArgument(version);
-
-      int defaultTimeout = CliConstants.DEFAULT_LDAP_CONNECT_TIMEOUT;
-      connectTimeout = new IntegerArgument(OPTION_LONG_CONNECT_TIMEOUT,
-          null, OPTION_LONG_CONNECT_TIMEOUT,
-          false, false, true, INFO_TIMEOUT_PLACEHOLDER.get(),
-          defaultTimeout, null,
-          true, 0, false, Integer.MAX_VALUE,
-          INFO_DESCRIPTION_CONNECTION_TIMEOUT.get());
-      connectTimeout.setPropertyName(OPTION_LONG_CONNECT_TIMEOUT);
-      argParser.addArgument(connectTimeout);
-
-      encodingStr = new StringArgument("encoding", 'i', "encoding", false,
-                                       false, true,
-                                       INFO_ENCODING_PLACEHOLDER.get(), null,
-                                       null,
-                                       INFO_DESCRIPTION_ENCODING.get());
-      encodingStr.setPropertyName("encoding");
-      argParser.addArgument(encodingStr);
-
+              StringArgument.builder(OPTION_LONG_EFFECTIVERIGHTSATTR)
+                      .shortIdentifier(OPTION_SHORT_EFFECTIVERIGHTSATTR)
+                      .description(INFO_DESCRIPTION_EFFECTIVERIGHTS_ATTR.get())
+                      .multiValued()
+                      .valuePlaceholder(INFO_ATTRIBUTE_PLACEHOLDER.get())
+                      .buildAndAddToParser(argParser);
+      version =
+              IntegerArgument.builder(OPTION_LONG_PROTOCOL_VERSION)
+                      .shortIdentifier(OPTION_SHORT_PROTOCOL_VERSION)
+                      .description(INFO_DESCRIPTION_VERSION.get())
+                      .defaultValue(3)
+                      .valuePlaceholder(INFO_PROTOCOL_VERSION_PLACEHOLDER.get())
+                      .buildAndAddToParser(argParser);
+      connectTimeout =
+              IntegerArgument.builder(OPTION_LONG_CONNECT_TIMEOUT)
+                      .description(INFO_DESCRIPTION_CONNECTION_TIMEOUT.get())
+                      .lowerBound(0)
+                      .defaultValue(CliConstants.DEFAULT_LDAP_CONNECT_TIMEOUT)
+                      .valuePlaceholder(INFO_TIMEOUT_PLACEHOLDER.get())
+                      .buildAndAddToParser(argParser);
+      encodingStr =
+              StringArgument.builder("encoding")
+                      .shortIdentifier('i')
+                      .description(INFO_DESCRIPTION_ENCODING.get())
+                      .valuePlaceholder(INFO_ENCODING_PLACEHOLDER.get())
+                      .buildAndAddToParser(argParser);
       dereferencePolicy =
-           new StringArgument("derefpolicy", 'a', "dereferencePolicy", false,
-                              false, true,
-                              INFO_DEREFERENCE_POLICE_PLACEHOLDER.get(), "never",
-                              null,
-                              INFO_SEARCH_DESCRIPTION_DEREFERENCE_POLICY.get());
-      dereferencePolicy.setPropertyName("dereferencePolicy");
-      argParser.addArgument(dereferencePolicy);
-
-      typesOnly = new BooleanArgument("typesOnly", 'A', "typesOnly",
-                                      INFO_DESCRIPTION_TYPES_ONLY.get());
-      typesOnly.setPropertyName("typesOnly");
-      argParser.addArgument(typesOnly);
-
-      sizeLimit = new IntegerArgument("sizeLimit", 'z', "sizeLimit", false,
-                                      false, true,
-                                      INFO_SIZE_LIMIT_PLACEHOLDER.get(), 0,
-                                      null,
-                                      INFO_SEARCH_DESCRIPTION_SIZE_LIMIT.get());
-      sizeLimit.setPropertyName("sizeLimit");
-      argParser.addArgument(sizeLimit);
-
-      timeLimit = new IntegerArgument("timeLimit", 'l', "timeLimit", false,
-                                      false, true,
-                                      INFO_TIME_LIMIT_PLACEHOLDER.get(), 0,
-                                      null,
-                                      INFO_SEARCH_DESCRIPTION_TIME_LIMIT.get());
-      timeLimit.setPropertyName("timeLimit");
-      argParser.addArgument(timeLimit);
-
-      dontWrap = new BooleanArgument("dontwrap", 'T',
-                                     "dontWrap",
-                                     INFO_DESCRIPTION_DONT_WRAP.get());
-      dontWrap.setPropertyName("dontWrap");
-      argParser.addArgument(dontWrap);
-
-      countEntries = new BooleanArgument("countentries", null, "countEntries",
-                                         INFO_DESCRIPTION_COUNT_ENTRIES.get());
-      countEntries.setPropertyName("countEntries");
-      argParser.addArgument(countEntries);
-
+              StringArgument.builder("dereferencePolicy")
+                      .shortIdentifier('a')
+                      .description(INFO_SEARCH_DESCRIPTION_DEREFERENCE_POLICY.get())
+                      .defaultValue("never")
+                      .valuePlaceholder(INFO_DEREFERENCE_POLICE_PLACEHOLDER.get())
+                      .buildAndAddToParser(argParser);
+      typesOnly =
+              BooleanArgument.builder("typesOnly")
+                      .shortIdentifier('A')
+                      .description(INFO_DESCRIPTION_TYPES_ONLY.get())
+                      .buildAndAddToParser(argParser);
+      sizeLimit =
+              IntegerArgument.builder("sizeLimit")
+                      .shortIdentifier('z')
+                      .description(INFO_SEARCH_DESCRIPTION_SIZE_LIMIT.get())
+                      .defaultValue(0)
+                      .valuePlaceholder(INFO_SIZE_LIMIT_PLACEHOLDER.get())
+                      .buildAndAddToParser(argParser);
+      timeLimit =
+              IntegerArgument.builder("timeLimit")
+                      .shortIdentifier('l')
+                      .description(INFO_SEARCH_DESCRIPTION_TIME_LIMIT.get())
+                      .defaultValue(0)
+                      .valuePlaceholder(INFO_TIME_LIMIT_PLACEHOLDER.get())
+                      .buildAndAddToParser(argParser);
+      dontWrap =
+              BooleanArgument.builder("dontWrap")
+                      .shortIdentifier('T')
+                      .description(INFO_DESCRIPTION_DONT_WRAP.get())
+                      .buildAndAddToParser(argParser);
+      countEntries =
+              BooleanArgument.builder("countEntries")
+                      .description(INFO_DESCRIPTION_COUNT_ENTRIES.get())
+                      .buildAndAddToParser(argParser);
       continueOnError =
-           new BooleanArgument("continueOnError", 'c', "continueOnError",
-                               INFO_DESCRIPTION_CONTINUE_ON_ERROR.get());
-      continueOnError.setPropertyName("continueOnError");
-      argParser.addArgument(continueOnError);
-
-      noop = new BooleanArgument("noop", OPTION_SHORT_DRYRUN,
-          OPTION_LONG_DRYRUN, INFO_DESCRIPTION_NOOP.get());
-      noop.setPropertyName(OPTION_LONG_DRYRUN);
-      argParser.addArgument(noop);
+              BooleanArgument.builder("continueOnError")
+                      .shortIdentifier('c')
+                      .description(INFO_DESCRIPTION_CONTINUE_ON_ERROR.get())
+                      .buildAndAddToParser(argParser);
+      noop =
+              BooleanArgument.builder(OPTION_LONG_DRYRUN)
+                      .shortIdentifier(OPTION_SHORT_DRYRUN)
+                      .description(INFO_DESCRIPTION_NOOP.get())
+                      .buildAndAddToParser(argParser);
 
       verbose = CommonArguments.getVerbose();
       argParser.addArgument(verbose);

--
Gitblit v1.10.0