class TwitterCldr::Resources::Requirements::IcuRequirement

This requirement makes use of the JarClassLoader package (github.com/kamranzafar/JCL) to load ICU in an isolated environment to keep different versions of the library separate. If ICU versions are not kept separate, the one that's first on the classpath wins, which can be surprising if you're not expecting it. Oh, and it can break all the tests.

Constants

POM_FILE

Attributes

version[R]

Public Class Methods

new(version) click to toggle source
# File lib/twitter_cldr/resources/requirements/icu_requirement.rb, line 22
def initialize(version)
  @version = version
end

Public Instance Methods

get_class(name) click to toggle source
# File lib/twitter_cldr/resources/requirements/icu_requirement.rb, line 37
def get_class(name)
  class_loader.load_class(name).ruby_class
end
prepare() click to toggle source
# File lib/twitter_cldr/resources/requirements/icu_requirement.rb, line 26
def prepare
  pom.add_dependency('com.ibm.icu', 'icu4j', version)
  pom.add_dependency('org.xeustechnologies', 'jcl-core', '2.7')

  pom.install
  pom.require_jar('org.xeustechnologies', 'jcl-core')

  java_import 'org.xeustechnologies.jcl.JarClassLoader'
  class_loader.add(pom.get('com.ibm.icu', 'icu4j').path)
end

Private Instance Methods

class_loader() click to toggle source
# File lib/twitter_cldr/resources/requirements/icu_requirement.rb, line 43
def class_loader
  @class_loader ||= JarClassLoader.new
end
pom() click to toggle source
# File lib/twitter_cldr/resources/requirements/icu_requirement.rb, line 47
def pom
  @pom ||= PomManager.new(POM_FILE)
end