JavaRelease.st
branchdevelopment
changeset 2075 e95c9027e320
parent 2074 41bf258a0eb9
child 2076 335558715648
--- a/JavaRelease.st	Sat Feb 16 09:33:16 2013 +0000
+++ b/JavaRelease.st	Sat Feb 16 03:04:00 2013 -0800
@@ -909,6 +909,26 @@
     "Modified: / 16-12-2012 / 15:46:21 / Jan Vrany <jan.vrany@fit.cvut.cz>"
 !
 
+javaHomeOnWindowsFromRegistry
+    "Return path to java home (either JDK or JRE) based on values in registry.
+     If not on windows or registry key not found, return nil"
+
+    |entry vsn home |
+
+    entry := (OperatingSystem registryEntry key:'HKEY_LOCAL_MACHINE\SOFTWARE\JavaSoft\Java Development Kit').
+    entry isNil ifTrue:[ ^ nil ].
+    vsn := self javaHomeOnWindowsJDKRegistryKey.
+    vsn notNil ifTrue:[
+        entry := (OperatingSystem registryEntry
+                    key:'HKEY_LOCAL_MACHINE\SOFTWARE\JavaSoft\Java Development Kit\',vsn).
+        home := entry valueNamed:'JavaHome'.
+        (home notNil and:[home asFilename exists]) ifTrue:[ ^ home ].
+    ].
+    ^nil
+
+    "Created: / 16-02-2013 / 02:52:41 / Jan Vrany <jan.vrany@fit.cvut.cz>"
+!
+
 javaHomesOnUNIX
     | arch |
 
@@ -1045,6 +1065,12 @@
     ^'jdk1.6'
 
     "Created: / 19-07-2012 / 11:04:34 / jv"
+!
+
+javaHomeOnWindowsJDKRegistryKey
+    ^'1.6'
+
+    "Created: / 16-02-2013 / 02:49:23 / Jan Vrany <jan.vrany@fit.cvut.cz>"
 ! !
 
 !JavaRelease::OpenJDK6 methodsFor:'searching'!
@@ -1214,6 +1240,12 @@
     ^'jdk1.7'
 
     "Created: / 19-07-2012 / 11:05:02 / jv"
+!
+
+javaHomeOnWindowsJDKRegistryKey
+    ^'1.7'
+
+    "Created: / 16-02-2013 / 02:49:23 / Jan Vrany <jan.vrany@fit.cvut.cz>"
 ! !
 
 !JavaRelease::OracleJDK6 class methodsFor:'documentation'!
@@ -1256,20 +1288,11 @@
 !
 
 javaHomesOnWindows
-    |entry vsn home paths |
+    |home paths |
 
-    entry := (OperatingSystem registryEntry key:'HKEY_LOCAL_MACHINE\SOFTWARE\JavaSoft\Java Development Kit').
-    entry notNil ifTrue:[
-        vsn := entry valueNamed:'CurrentVersion'.
-    ].
-    vsn notNil ifTrue:[
-        entry := (OperatingSystem registryEntry
-                    key:'HKEY_LOCAL_MACHINE\SOFTWARE\JavaSoft\Java Development Kit\',vsn).
-        home := entry valueNamed:'JavaHome'.
-        home notNil ifTrue:[
-            ^ (Array with:(home))
-        ].
-    ].
+    home := self javaHomeOnWindowsFromRegistry.
+    home notNil ifTrue:[ ^ Array with: home ].
+
     paths := OrderedCollection new.
     #(
         'C:\Program Files\Java'
@@ -1298,7 +1321,7 @@
 
     "Modified (format): / 19-08-2011 / 00:46:40 / cg"
     "Modified: / 19-07-2012 / 11:04:44 / jv"
-    "Modified (comment): / 06-02-2013 / 12:58:20 / Jan Vrany <jan.vrany@fit.cvut.cz>"
+    "Modified: / 16-02-2013 / 02:57:38 / Jan Vrany <jan.vrany@fit.cvut.cz>"
 !
 
 javaNativeMethodsImplementation
@@ -1342,7 +1365,11 @@
 !JavaRelease::OracleJDK6 methodsFor:'validating'!
 
 validateJavaHome2: home
-    | f |
+    | homeFromRegistry f |
+
+    homeFromRegistry := self javaHomeOnWindowsFromRegistry.
+    homeFromRegistry = home ifTrue:[ ^ true ].
+
     "JDK..."
     (f := home / 'LICENSE') exists ifTrue:[
         f readingFileDo:[:s|
@@ -1372,6 +1399,7 @@
     "
 
     "Created: / 12-02-2013 / 02:52:43 / Jan Vrany <jan.vrany@fit.cvut.cz>"
+    "Modified: / 16-02-2013 / 02:54:20 / Jan Vrany <jan.vrany@fit.cvut.cz>"
 ! !
 
 !JavaRelease::OracleJDK7 class methodsFor:'documentation'!
@@ -1411,20 +1439,11 @@
 !
 
 javaHomesOnWindows
-    |entry vsn home paths |
+    |home paths |
 
-    entry := (OperatingSystem registryEntry key:'HKEY_LOCAL_MACHINE\SOFTWARE\JavaSoft\Java Development Kit').
-    entry notNil ifTrue:[
-        vsn := entry valueNamed:'CurrentVersion'.
-    ].
-    vsn notNil ifTrue:[
-        entry := (OperatingSystem registryEntry
-                    key:'HKEY_LOCAL_MACHINE\SOFTWARE\JavaSoft\Java Development Kit\',vsn).
-        home := entry valueNamed:'JavaHome'.
-        home notNil ifTrue:[
-            ^ (Array with:(home))
-        ].
-    ].
+    home := self javaHomeOnWindowsFromRegistry.
+    home notNil ifTrue:[ ^ Array with: home ].
+
     paths := OrderedCollection new.
     #(
         'C:\Program Files\Java'
@@ -1453,7 +1472,7 @@
 
     "Modified (format): / 19-08-2011 / 00:46:40 / cg"
     "Modified: / 19-07-2012 / 11:04:44 / jv"
-    "Modified (comment): / 06-02-2013 / 12:58:20 / Jan Vrany <jan.vrany@fit.cvut.cz>"
+    "Modified: / 16-02-2013 / 02:57:55 / Jan Vrany <jan.vrany@fit.cvut.cz>"
 !
 
 javaNativeMethodsImplementation
@@ -1499,7 +1518,11 @@
 !JavaRelease::OracleJDK7 methodsFor:'validating'!
 
 validateJavaHome2: home
-    | f |
+    | homeFromRegistry f |
+
+    homeFromRegistry := self javaHomeOnWindowsFromRegistry.
+    homeFromRegistry = home ifTrue:[ ^ true ].
+
     "JDK..."
     (f := home / 'release') exists ifTrue:[
         f readingFileDo:[:s|
@@ -1527,6 +1550,7 @@
     "
 
     "Created: / 12-02-2013 / 02:52:43 / Jan Vrany <jan.vrany@fit.cvut.cz>"
+    "Modified: / 16-02-2013 / 02:54:47 / Jan Vrany <jan.vrany@fit.cvut.cz>"
 ! !
 
 !JavaRelease::SunJDK122 class methodsFor:'documentation'!