From 8e56a3541e4d0780a59cec88c6e8770565224180 Mon Sep 17 00:00:00 2001
From: jvergara <jvergara@localhost>
Date: Tue, 18 Nov 2008 01:01:17 +0000
Subject: [PATCH] Fix for issue 3612 (Control Panel: in the "Java Settings" panel, the value for "Java Home" variable is not correct (missing "\" characters)

---
 opends/src/server/org/opends/server/tools/JavaPropertiesTool.java |  141 +++++++++++++++++++++++++---------------------
 1 files changed, 77 insertions(+), 64 deletions(-)

diff --git a/opends/src/server/org/opends/server/tools/JavaPropertiesTool.java b/opends/src/server/org/opends/server/tools/JavaPropertiesTool.java
index 5f3a5fd..967f205 100644
--- a/opends/src/server/org/opends/server/tools/JavaPropertiesTool.java
+++ b/opends/src/server/org/opends/server/tools/JavaPropertiesTool.java
@@ -258,70 +258,7 @@
     }
     try
     {
-      String line;
-      // Parse the file manually since '\' in windows paths can generate issues.
-      boolean slashInLastLine = false;
-      String key = null;
-      StringBuilder sbValue = null;
-      while ((line = reader.readLine()) != null)
-      {
-        line = line.trim();
-        if (!line.startsWith("#"))
-        {
-          if (!slashInLastLine)
-          {
-            key = null;
-            sbValue = new StringBuilder();
-            int index = line.indexOf('=');
-            if (index > 0)
-            {
-              key = line.substring(0, index);
-              if (key.indexOf(' ') != -1)
-              {
-                key = null;
-              }
-            }
-          }
-
-          // Consider the space: in windows the user might add a path ending
-          // with '\'. With this approach we minimize the possibilities of
-          // error.
-          boolean hasSlash = line.endsWith(" \\");
-
-          if (hasSlash)
-          {
-            line = line.substring(0, line.length() - 1);
-          }
-
-          String lineValue = null;
-
-          if (slashInLastLine)
-          {
-            lineValue = line;
-          }
-          else if (key != null)
-          {
-            int index = line.indexOf('=');
-            if ((index != -1) && ((index + 1) < line.length()))
-            {
-              lineValue = line.substring(index+1);
-            }
-          }
-          if ((lineValue != null) && (lineValue.length() > 0))
-          {
-            if (sbValue == null)
-            {
-              sbValue = new StringBuilder();
-            }
-            sbValue.append(lineValue);
-          }
-          if (!hasSlash && (key != null) && (sbValue != null))
-          {
-            properties.put(key, sbValue.toString());
-          }
-          slashInLastLine = hasSlash;
-        }
-      }
+      updateProperties(reader, properties);
     }
     catch (IOException ioe)
     {
@@ -429,6 +366,82 @@
     return ErrorReturnCode.SUCCESSFUL.getReturnCode();
   }
 
+  /**
+   * Reads the contents of the provided reader and updates the provided
+   * Properties object with it.  This is required because '\' characters in
+   * windows paths generates problems.
+   * @param reader the buffered reader.
+   * @param properties the properties.
+   * @throws IOException if there is an error reading the buffered reader.
+   */
+  public static void updateProperties(
+      BufferedReader reader, Properties properties)
+  throws IOException
+  {
+    String line;
+    boolean slashInLastLine = false;
+    String key = null;
+    StringBuilder sbValue = null;
+    while ((line = reader.readLine()) != null)
+    {
+      line = line.trim();
+      if (!line.startsWith("#"))
+      {
+        if (!slashInLastLine)
+        {
+          key = null;
+          sbValue = new StringBuilder();
+          int index = line.indexOf('=');
+          if (index > 0)
+          {
+            key = line.substring(0, index);
+            if (key.indexOf(' ') != -1)
+            {
+              key = null;
+            }
+          }
+        }
+
+        // Consider the space: in windows the user might add a path ending
+        // with '\'. With this approach we minimize the possibilities of
+        // error.
+        boolean hasSlash = line.endsWith(" \\");
+
+        if (hasSlash)
+        {
+          line = line.substring(0, line.length() - 1);
+        }
+
+        String lineValue = null;
+
+        if (slashInLastLine)
+        {
+          lineValue = line;
+        }
+        else if (key != null)
+        {
+          int index = line.indexOf('=');
+          if ((index != -1) && ((index + 1) < line.length()))
+          {
+            lineValue = line.substring(index+1);
+          }
+        }
+        if ((lineValue != null) && (lineValue.length() > 0))
+        {
+          if (sbValue == null)
+          {
+            sbValue = new StringBuilder();
+          }
+          sbValue.append(lineValue);
+        }
+        if (!hasSlash && (key != null) && (sbValue != null))
+        {
+          properties.put(key, sbValue.toString());
+        }
+        slashInLastLine = hasSlash;
+      }
+    }
+  }
 
   /**
    * {@inheritDoc}

--
Gitblit v1.10.0