Author: assaf
Date: Mon Sep 22 10:17:03 2008
New Revision: 697901

URL: http://svn.apache.org/viewvc?rev=697901&view=rev
Log:
Removed java/java.rb, not to be confused with java.rb.
Java.tools_jar caches results, returns it directly.

Removed:
    incubator/buildr/trunk/lib/buildr/java/java.rb
Modified:
    incubator/buildr/trunk/lib/buildr/java.rb
    incubator/buildr/trunk/lib/buildr/java/compilers.rb
    incubator/buildr/trunk/lib/buildr/java/jruby.rb
    incubator/buildr/trunk/lib/buildr/java/rjb.rb
    incubator/buildr/trunk/spec/java_spec.rb

Modified: incubator/buildr/trunk/lib/buildr/java.rb
URL: 
http://svn.apache.org/viewvc/incubator/buildr/trunk/lib/buildr/java.rb?rev=697901&r1=697900&r2=697901&view=diff
==============================================================================
--- incubator/buildr/trunk/lib/buildr/java.rb (original)
+++ incubator/buildr/trunk/lib/buildr/java.rb Mon Sep 22 10:17:03 2008
@@ -14,7 +14,6 @@
 # the License.
 
 
-require 'buildr/java/java'
 require RUBY_PLATFORM == 'java' ? 'buildr/java/jruby' : 'buildr/java/rjb'
 require 'buildr/java/compilers'
 require 'buildr/java/test_frameworks'

Modified: incubator/buildr/trunk/lib/buildr/java/compilers.rb
URL: 
http://svn.apache.org/viewvc/incubator/buildr/trunk/lib/buildr/java/compilers.rb?rev=697901&r1=697900&r2=697901&view=diff
==============================================================================
--- incubator/buildr/trunk/lib/buildr/java/compilers.rb (original)
+++ incubator/buildr/trunk/lib/buildr/java/compilers.rb Mon Sep 22 10:17:03 2008
@@ -55,7 +55,7 @@
         check_options options, OPTIONS
         cmd_args = []
         # tools.jar contains the Java compiler.
-        Java.tools_jar { |tools_jar| dependencies << tools_jar }
+        dependencies << Java.tools_jar if Java.tools_jar
         cmd_args << '-classpath' << dependencies.join(File::PATH_SEPARATOR) 
unless dependencies.empty?
         source_paths = sources.select { |source| File.directory?(source) }
         cmd_args << '-sourcepath' << source_paths.join(File::PATH_SEPARATOR) 
unless source_paths.empty?

Modified: incubator/buildr/trunk/lib/buildr/java/jruby.rb
URL: 
http://svn.apache.org/viewvc/incubator/buildr/trunk/lib/buildr/java/jruby.rb?rev=697901&r1=697900&r2=697901&view=diff
==============================================================================
--- incubator/buildr/trunk/lib/buildr/java/jruby.rb (original)
+++ incubator/buildr/trunk/lib/buildr/java/jruby.rb Mon Sep 22 10:17:03 2008
@@ -57,6 +57,7 @@
 module Java
 
   # Since we already have a JVM loaded, we can use it to guess where JAVA_HOME 
is.
+  # We set JAVA_HOME early so we can use it without calling Java.load first.
   ENV['JAVA_HOME'] ||= java.lang.System.getProperty("java.home")
 
   class << self
@@ -70,6 +71,15 @@
     def classpath
       @classpath ||= []
     end
+    
+    # Most platforms requires tools.jar to be on the classpath, tools.jar 
contains the
+    # Java compiler (OS X and AIX are two exceptions we know about, may be 
more).
+    # Guess where tools.jar is from JAVA_HOME, which hopefully points to the 
JDK,
+    # but maybe the JRE.  Return nil if not found.
+    def tools_jar #:nodoc:
+      @tools_jar ||= ['lib/tools.jar', '../lib/tools.jar'].map { |path| 
File.expand_path(path, ENV['JAVA_HOME']) }.
+        find { |path| File.exist?(path) }
+    end
 
     # Loads the JVM and all the libraries listed on the classpath.  Call this
     # method before accessing any Java class, but only call it from methods
@@ -90,7 +100,7 @@
       add_path = lambda { |path| add_url_method.invoke(sysloader, 
[java.io.File.new(path).toURI.toURL].to_java(java.net.URL)) }
 
       # Most platforms requires tools.jar to be on the classpath.
-      tools_jar { |tools_jar| add_path[tools_jar] }
+      add_path[tools_jar] if tools_jar
       
       Buildr.artifacts(classpath).map(&:to_s).each do |path|
         file(path).invoke

Modified: incubator/buildr/trunk/lib/buildr/java/rjb.rb
URL: 
http://svn.apache.org/viewvc/incubator/buildr/trunk/lib/buildr/java/rjb.rb?rev=697901&r1=697900&r2=697901&view=diff
==============================================================================
--- incubator/buildr/trunk/lib/buildr/java/rjb.rb (original)
+++ incubator/buildr/trunk/lib/buildr/java/rjb.rb Mon Sep 22 10:17:03 2008
@@ -71,13 +71,10 @@
     end
 
   end
-
-
+  
   # On OS X we know where the default JDK is. We can try to guess for other OS.
-  case Config::CONFIG['host_os']
-  when /darwin/i ; ENV['JAVA_HOME'] ||= 
'/System/Library/Frameworks/JavaVM.framework/Home'
-  end
-
+  # We set JAVA_HOME early so we can use it without calling Java.load first.
+  ENV['JAVA_HOME'] ||= '/System/Library/Frameworks/JavaVM.framework/Home' if 
Config::CONFIG['host_os'] =~ /darwin/i
 
   class << self
     
@@ -90,15 +87,26 @@
     def classpath
       @classpath ||= []
     end
-
+    
+    # Most platforms requires tools.jar to be on the classpath, tools.jar 
contains the
+    # Java compiler (OS X and AIX are two exceptions we know about, may be 
more).
+    # Guess where tools.jar is from JAVA_HOME, which hopefully points to the 
JDK,
+    # but maybe the JRE.  Return nil if not found.
+    def tools_jar #:nodoc:
+      @tools_jar ||= begin
+        home = ENV['JAVA_HOME'] or fail 'Are we forgetting something? 
JAVA_HOME not set.'
+        ['lib/tools.jar', '../lib/tools.jar'].map { |path| 
File.expand_path(path, home) }.
+          find { |path| File.exist?(path) }
+      end
+    end
+    
     # Loads the JVM and all the libraries listed on the classpath.  Call this
     # method before accessing any Java class, but only call it from methods
     # used in the build, giving the Buildfile a chance to load all extensions
     # that append to the classpath and specify which remote repositories to 
use.
     def load
       return self if @loaded
-      ENV['JAVA_HOME'] or fail 'Are we forgetting something? JAVA_HOME not 
set.'
-      tools_jar { |tools_jar| classpath << tools_jar }
+      classpath << tools_jar if tools_jar
       
       cp = Buildr.artifacts(classpath).map(&:to_s).each { |path| 
file(path).invoke }
       java_opts = (ENV['JAVA_OPTS'] || ENV['JAVA_OPTIONS']).to_s.split

Modified: incubator/buildr/trunk/spec/java_spec.rb
URL: 
http://svn.apache.org/viewvc/incubator/buildr/trunk/spec/java_spec.rb?rev=697901&r1=697900&r2=697901&view=diff
==============================================================================
--- incubator/buildr/trunk/spec/java_spec.rb (original)
+++ incubator/buildr/trunk/spec/java_spec.rb Mon Sep 22 10:17:03 2008
@@ -36,7 +36,7 @@
 
     after do
       ENV['JAVA_HOME'] = @old_home
-      ENV_JAVA = @old_env_java
+      ENV_JAVA.replace @old_env_java
     end
   end
 end
@@ -49,6 +49,7 @@
   
   describe 'when JAVA_HOME points to a JDK' do
     before do
+      Java.instance_eval { @tools_jar = nil }
       write 'jdk/lib/tools.jar'
       ENV['JAVA_HOME'] = File.expand_path('jdk')
     end
@@ -56,16 +57,11 @@
     it 'should return the path to tools.jar' do
       Java.tools_jar.should point_to_path('jdk/lib/tools.jar')
     end
-    
-    it 'should accept a block and yield the path to tools.jar' do
-      tools_jar_received_by_block = nil
-      Java.tools_jar { |tools_jar| tools_jar_received_by_block = tools_jar }
-      tools_jar_received_by_block.should point_to_path('jdk/lib/tools.jar')
-    end
   end
   
   describe 'when JAVA_HOME points to a JRE inside a JDK' do
     before do
+      Java.instance_eval { @tools_jar = nil }
       write 'jdk/lib/tools.jar'
       ENV['JAVA_HOME'] = File.expand_path('jdk/jre')
     end
@@ -73,27 +69,16 @@
     it 'should return the path to tools.jar' do
       Java.tools_jar.should point_to_path('jdk/lib/tools.jar')
     end
-    
-    it 'should accept a block and yield the path to tools.jar' do
-      tools_jar_received_by_block = nil
-      Java.tools_jar { |tools_jar| tools_jar_received_by_block = tools_jar }
-      tools_jar_received_by_block.should point_to_path('jdk/lib/tools.jar')
-    end
   end
   
   describe 'when there is no tools.jar' do
     before do
+      Java.instance_eval { @tools_jar = nil }
       ENV['JAVA_HOME'] = File.expand_path('jdk')
     end
     
     it 'should return nil' do
-      Java.tools_jar.should be(nil)
-    end
-    
-    it 'should accept a block and not yield to it' do
-      block_called = false
-      Java.tools_jar { block_called = true }
-      block_called.should be(false)
+      Java.tools_jar.should be_nil
     end
   end
   


Reply via email to