Class: Jerbil::JavaFileList
Description
A JavaFileList is a specialisation of a standard Rake::FileList. It includes additional methods to deal with build dirs, resources and other Java related things.
Attributes
| Name | Read/write? | Description | ||
|---|---|---|---|---|
| dstdir | R | |||
| resource_patterns | RW | |||
| srcdir | R | |||
Public Class methods
new (srcdir, dstdir, extensions = nil)
| srcdir: | the directory containing the Java source files. |
| dstdir: | destination directory for class files (used by JavacTask). |
| extensions: | a list of extensions to treat as resources. The default is to treat |
all files not ending in .java as resources.
# File lib/jerbil/java_helper.rb, line 217 217: def initialize(srcdir, dstdir, extensions = nil) 218: super([]) 219: @srcdir = srcdir 220: @dstdir = dstdir 221: @resource_patterns = [] 222: add_extensions(extensions) 223: include(srcdir + "/**/*.java") 224: end
Public Instance methods
add_extension (ext)
Registers a resource extension.
add_extension("xml") => all xml files
# File lib/jerbil/java_helper.rb, line 305 305: def add_extension(ext) 306: @resource_patterns << "/**/*.#{ext}" 307: end
add_extensions (exts)
Registers a list of extensions.
# File lib/jerbil/java_helper.rb, line 310 310: def add_extensions(exts) 311: exts.to_a.each {|ext| add_extension(ext)} 312: end
out_of_date ()
Returns a list of out-of-date files, based on timestamp comparison.
# File lib/jerbil/java_helper.rb, line 287 287: def out_of_date 288: return self.to_a unless (File.exists?(dstdir) and Dir.entries(dstdir).length > 2) 289: 290: outofdate = [] 291: source_and_target do |s,t| 292: outofdate << s unless FileUtils.uptodate?(t,s) 293: end 294: outofdate 295: end
resource_and_target ( {|resource,target| ...}
Calls block once for each resource found in srcdir, passing the source and destination file as parameter.
# File lib/jerbil/java_helper.rb, line 271 271: def resource_and_target # :yields: resource,target 272: resources.each do | r | 273: target = r.sub(/#{srcdir_quoted}/, dstdir) 274: yield r, target if block_given? 275: end 276: end
resources ()
Returns a Rake::FileList containing all resources found in srcdir. Resources are typically files in srcdir with extensions other than .java (properties, xml, …). If you want to copy specfic resources register extensions using add_extension.
# File lib/jerbil/java_helper.rb, line 258 258: def resources 259: r = FileList.new 260: if resource_patterns.empty? 261: r.include(srcdir + "/**/*.*") 262: r.exclude(srcdir + "/**/*.java") 263: else 264: resource_patterns.each { |p| r.include(srcdir+p) } 265: end 266: r 267: end
source_and_target ( {|src,target| ...}
Calls block once for each sourcefile in srcdir with corresponding target file.
# File lib/jerbil/java_helper.rb, line 280 280: def source_and_target # :yields: src,target 281: self.each do |file| 282: yield file, file.pathmap("%{^#{srcdir_quoted},#{dstdir}}X.class") 283: end 284: end
sourcepath ()
# File lib/jerbil/java_helper.rb, line 250 250: def sourcepath 251: srcdir 252: end
to_classes ()
Returns a list of Java classes. This method uses Rjb::import to load the specified classes into the virtual machine.
# File lib/jerbil/java_helper.rb, line 236 236: def to_classes 237: classnames = to_classnames 238: classes = classnames.map {|name| Rjb::import(name)} 239: classes.to_a 240: end
to_classfiles ()
Translates all java source files into their corresponding class destination files, based on dstdir.
For example src/org/foo/Baz.java -> classes/org/foo/Baz.class.
# File lib/jerbil/java_helper.rb, line 246 246: def to_classfiles 247: self.pathmap("%{^#{srcdir_quoted},#{dstdir}}X.class") 248: end
to_classnames ()
Returns a list of all java source files formatted as Java class names. For example src/org/foo/Baz -> org.foo.Baz.
# File lib/jerbil/java_helper.rb, line 228 228: def to_classnames 229: # remove the initial directory and separator 230: paths = self.pathmap("%{^#{srcdir_quoted}/?,}X") 231: paths.gsub!("/", ".") 232: end
uptodate? ()
# File lib/jerbil/java_helper.rb, line 297 297: def uptodate? 298: out_of_date.empty? 299: end