From ee021bead4d9a72f6f2e6b52222ff4013cbc8b71 Mon Sep 17 00:00:00 2001
From: Jean-Noel Rouvignac <jean-noel.rouvignac@forgerock.com>
Date: Tue, 20 Jan 2015 09:26:46 +0000
Subject: [PATCH] OPENDJ-1734 (CR-5811) V/-version option does not work for some tools

---
 opendj-config/src/main/java/org/forgerock/opendj/config/dsconfig/DSConfig.java |   49 +++++++++++++++++++++++++++++++++----------------
 1 files changed, 33 insertions(+), 16 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 16d6a54..e8fcc50 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
@@ -28,17 +28,12 @@
 
 import static com.forgerock.opendj.cli.ArgumentConstants.*;
 import static com.forgerock.opendj.cli.CliMessages.*;
+import static com.forgerock.opendj.cli.Utils.*;
 import static com.forgerock.opendj.dsconfig.DsconfigMessages.*;
-import static com.forgerock.opendj.cli.Utils.SHELL_COMMENT_SEPARATOR;
-import static com.forgerock.opendj.cli.Utils.canWrite;
-import static com.forgerock.opendj.cli.Utils.filterExitCode;
-import static com.forgerock.opendj.cli.Utils.formatDateTimeStringForEquivalentCommand;
-import static com.forgerock.opendj.cli.Utils.getCurrentOperationDateMessage;
-import static com.forgerock.opendj.util.StaticUtils.stackTraceToSingleLineString;
-import static org.forgerock.opendj.config.dsconfig.ArgumentExceptionFactory.displayManagedObjectDecodingException;
-import static org.forgerock.opendj.config.dsconfig.ArgumentExceptionFactory.displayMissingMandatoryPropertyException;
-import static org.forgerock.opendj.config.dsconfig.ArgumentExceptionFactory.displayOperationRejectedException;
-import static org.forgerock.util.Utils.closeSilently;
+import static com.forgerock.opendj.util.StaticUtils.*;
+
+import static org.forgerock.opendj.config.dsconfig.ArgumentExceptionFactory.*;
+import static org.forgerock.util.Utils.*;
 
 import java.io.BufferedReader;
 import java.io.BufferedWriter;
@@ -49,13 +44,16 @@
 import java.io.InputStream;
 import java.io.OutputStream;
 import java.io.PrintStream;
+import java.net.URL;
 import java.util.ArrayList;
 import java.util.Collections;
 import java.util.Comparator;
 import java.util.Date;
+import java.util.Enumeration;
 import java.util.HashMap;
 import java.util.List;
 import java.util.Map;
+import java.util.Properties;
 import java.util.Set;
 import java.util.SortedSet;
 import java.util.TreeMap;
@@ -71,6 +69,7 @@
 import org.forgerock.opendj.config.client.MissingMandatoryPropertiesException;
 import org.forgerock.opendj.config.client.OperationRejectedException;
 import org.forgerock.opendj.config.server.ConfigException;
+
 import com.forgerock.opendj.cli.ArgumentException;
 import com.forgerock.opendj.cli.ArgumentGroup;
 import com.forgerock.opendj.cli.BooleanArgument;
@@ -88,6 +87,7 @@
 import com.forgerock.opendj.cli.StringArgument;
 import com.forgerock.opendj.cli.SubCommand;
 import com.forgerock.opendj.cli.SubCommandArgumentParser;
+import com.forgerock.opendj.cli.VersionHandler;
 
 /**
  * This class provides a command-line tool which enables administrators to configure the Directory Server.
@@ -97,14 +97,10 @@
     /** The name of this tool. */
     static final String DSCONFIGTOOLNAME = "dsconfig";
 
-    /**
-     * The name of a command-line script used to launch an administrative tool.
-     */
+    /** The name of a command-line script used to launch an administrative tool. */
     static final String PROPERTY_SCRIPT_NAME = "org.opends.server.scriptName";
 
-    /**
-     * A menu call-back which runs a sub-command interactively.
-     */
+    /** A menu call-back which runs a sub-command interactively. */
     private class SubCommandHandlerMenuCallback implements MenuCallback<Integer> {
 
         /** The sub-command handler. */
@@ -406,6 +402,27 @@
         super(new PrintStream(out), new PrintStream(err));
 
         this.parser = new SubCommandArgumentParser(getClass().getName(), INFO_DSCFG_TOOL_DESCRIPTION.get(), false);
+        this.parser.setVersionHandler(new VersionHandler() {
+            @Override
+            public void printVersion() {
+                System.out.println(getVersionString());
+            }
+
+            private String getVersionString() {
+                try {
+                    final Enumeration<URL> resources = getClass().getClassLoader().getResources(
+                            "META-INF/maven/org.forgerock.opendj/opendj-config/pom.properties");
+                    while (resources.hasMoreElements()) {
+                        final Properties props = new Properties();
+                        props.load(resources.nextElement().openStream());
+                        return (String) props.get("version");
+                    }
+                } catch (IOException e) {
+                    errPrintln(LocalizableMessage.raw(e.getMessage()));
+                }
+                return "";
+            }
+        });
     }
 
     /** {@inheritDoc} */

--
Gitblit v1.10.0