jruby-ehcache 0.5.0 → 1.0.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- data/README.txt +17 -15
- data/Rakefile +21 -7
- data/VERSION +1 -1
- data/config/ehcache.yml +6 -6
- data/config/ehcache_manual_rmi.yml +6 -6
- data/examples/ehcache.xml +44 -0
- data/examples/jruby-ehcache.rb +13 -0
- data/ext/{ehcache-2.2.0/ehcache-core-2.2.0.jar → ehcache-2.3.0/ehcache-core-2.3.0.jar} +0 -0
- data/ext/ehcache-2.3.0/ehcache-terracotta-2.3.0.jar +0 -0
- data/ext/{ehcache-2.2.0 → ehcache-2.3.0}/slf4j-api-1.5.11.jar +0 -0
- data/ext/{ehcache-2.2.0 → ehcache-2.3.0}/slf4j-jdk14-1.5.11.jar +0 -0
- data/ext/{ehcache-2.2.0/terracotta-toolkit-1.0-runtime-1.0.0.jar → ehcache-2.3.0/terracotta-toolkit-1.1-runtime-2.0.0.jar} +0 -0
- data/lib/ehcache.rb +5 -5
- data/lib/ehcache/cache.rb +50 -119
- data/lib/ehcache/cache_manager.rb +55 -51
- data/lib/ehcache/config.rb +42 -119
- data/lib/ehcache/element.rb +13 -23
- data/lib/ehcache/extensions.rb +3 -0
- data/lib/ehcache/java.rb +35 -5
- data/lib/ehcache/yaml_config.rb +251 -0
- data/test/ehcache.xml +44 -0
- data/test/ehcache.yml +67 -0
- data/test/test_cache.rb +36 -0
- data/test/test_cache_manager.rb +27 -0
- data/test/test_configuration.rb +29 -0
- data/test/test_ehcache.rb +13 -2
- data/test/test_element.rb +37 -0
- data/test/test_helper.rb +21 -1
- data/test/test_yaml_config.rb +159 -0
- metadata +38 -18
- data/ext/ehcache-2.2.0/ehcache-terracotta-2.2.0.jar +0 -0
- data/lib/ehcache/status.rb +0 -9
- data/lib/ehcache/version.rb +0 -9
- data/setup.rb +0 -1585
- data/test/test_ehcachejr.rb +0 -11
data/README.txt
CHANGED
@@ -1,14 +1,14 @@
|
|
1
|
-
= Ehcache for JRuby
|
1
|
+
= jruby-ehcache - Ehcache for JRuby
|
2
2
|
|
3
3
|
http://github.com/dylanz/ehcache
|
4
4
|
|
5
5
|
== DESCRIPTION:
|
6
6
|
|
7
|
-
|
8
|
-
|
9
|
-
|
10
|
-
|
11
|
-
|
7
|
+
jruby-ehcache is a JRuby interface to Java's (JSR-107 compliant) Ehcache.
|
8
|
+
It provides 100% full coverage of the native Ehcache API and also provides
|
9
|
+
some Rubyesque enhancements to make it idiomatic to Ruby developers.
|
10
|
+
Configuration is done with the traditional ehcache.xml file that Java
|
11
|
+
developers use.
|
12
12
|
|
13
13
|
Some biased and non-biased Ehcache VS Memcache articles:
|
14
14
|
http://gregluck.com/blog/archives/2007/05/comparing_memca.html
|
@@ -30,33 +30,35 @@ http://dylanz.lighthouseapp.com/projects/14518-ehcache-jruby/overview
|
|
30
30
|
|
31
31
|
|
32
32
|
== BASIC USAGE:
|
33
|
-
|
33
|
+
require 'ehcache'
|
34
34
|
manager = CacheManager.new
|
35
35
|
cache = manager.cache
|
36
36
|
cache.put("key", "value", {:ttl => 120})
|
37
|
-
cache.get("key")
|
37
|
+
cache.get("key") # => returns the Ehcache Element object
|
38
|
+
cache["key"] # => returns "value", the value of the Element
|
38
39
|
manager.shutdown
|
39
40
|
|
40
41
|
|
41
42
|
== RAILS:
|
42
43
|
|
43
|
-
Rails 2 and Rails 3 integration are provided by the separate
|
44
|
-
and ehcache-rails3 gems. To install, choose the
|
45
|
-
Rails application and use JRuby's gem command to
|
44
|
+
Rails 2 and Rails 3 integration are provided by the separate
|
45
|
+
jruby-ehcache-rails2 and jruby-ehcache-rails3 gems. To install, choose the
|
46
|
+
correct version for your Rails application and use JRuby's gem command to
|
47
|
+
install, e.g.:
|
46
48
|
|
47
|
-
$ jgem install ehcache-rails3
|
49
|
+
$ jgem install jruby-ehcache-rails3
|
48
50
|
OR
|
49
|
-
$ jruby -S gem install ehcache-rails3
|
51
|
+
$ jruby -S gem install jruby-ehcache-rails3
|
50
52
|
|
51
53
|
|
52
54
|
== REQUIREMENTS:
|
53
55
|
|
54
|
-
Tested with JRuby 1.5.
|
56
|
+
Tested with JRuby 1.5.3.
|
55
57
|
|
56
58
|
|
57
59
|
== INSTALL:
|
58
60
|
|
59
|
-
$ sudo jruby -S gem install ehcache
|
61
|
+
$ sudo jruby -S gem install jruby-ehcache
|
60
62
|
|
61
63
|
|
62
64
|
== LICENSE:
|
data/Rakefile
CHANGED
@@ -1,3 +1,15 @@
|
|
1
|
+
require 'rake/testtask'
|
2
|
+
require 'rake/rdoctask'
|
3
|
+
|
4
|
+
task :default => [ :test ]
|
5
|
+
|
6
|
+
desc "Executes the test suite"
|
7
|
+
Rake::TestTask.new do |t|
|
8
|
+
t.name = :test
|
9
|
+
t.libs << 'lib' << 'ext' << 'test'
|
10
|
+
t.pattern = "test/test_*.rb"
|
11
|
+
end
|
12
|
+
|
1
13
|
begin
|
2
14
|
require 'jeweler'
|
3
15
|
rescue LoadError
|
@@ -18,29 +30,31 @@ Jeweler::Tasks.new do |gemspec|
|
|
18
30
|
gemspec.description = "JRuby interface to the popular Java caching library Ehcache"
|
19
31
|
gemspec.files.exclude '.gitignore'
|
20
32
|
|
21
|
-
# These files go in the ehcache-rails2 and ehcache-rails3 gems
|
33
|
+
# These files go in the jruby-ehcache-rails2 and jruby-ehcache-rails3 gems
|
22
34
|
gemspec.files.exclude 'lib/ehcache_store.rb'
|
23
35
|
gemspec.files.exclude 'lib/active_support/**/*'
|
36
|
+
gemspec.files.exclude 'lib/ehcache/rails'
|
37
|
+
gemspec.add_dependency 'activesupport'
|
24
38
|
end
|
25
39
|
|
26
40
|
Jeweler::Tasks.new do |gemspec|
|
27
41
|
defaults(gemspec)
|
28
|
-
gemspec.name = 'ehcache-rails3'
|
42
|
+
gemspec.name = 'jruby-ehcache-rails3'
|
29
43
|
gemspec.summary = 'Rails 3 cache store provider using Ehcache'
|
30
44
|
gemspec.description = 'Rails 3 cache store provider using Ehcache'
|
31
|
-
gemspec.files = 'lib/active_support/**/*'
|
45
|
+
gemspec.files = FileList['lib/active_support/**/*', 'lib/ehcache/rails/**/*']
|
32
46
|
gemspec.test_files = []
|
33
|
-
gemspec.add_dependency 'jruby-ehcache', ">=0.
|
47
|
+
gemspec.add_dependency 'jruby-ehcache', ">=1.0.0"
|
34
48
|
end
|
35
49
|
|
36
50
|
Jeweler::Tasks.new do |gemspec|
|
37
51
|
defaults(gemspec)
|
38
|
-
gemspec.name = 'ehcache-rails2'
|
52
|
+
gemspec.name = 'jruby-ehcache-rails2'
|
39
53
|
gemspec.summary = 'Rails 2 cache store provider using Ehcache'
|
40
54
|
gemspec.description = 'Rails 2 cache store provider using Ehcache'
|
41
|
-
gemspec.files = 'lib/
|
55
|
+
gemspec.files = FileList['lib/active_support/**/*', 'lib/ehcache/rails/**/*']
|
42
56
|
gemspec.test_files = []
|
43
|
-
gemspec.add_dependency 'jruby-ehcache', ">=0.
|
57
|
+
gemspec.add_dependency 'jruby-ehcache', ">=1.0.0"
|
44
58
|
end
|
45
59
|
|
46
60
|
Jeweler::GemcutterTasks.new
|
data/VERSION
CHANGED
@@ -1 +1 @@
|
|
1
|
-
0.
|
1
|
+
1.0.0
|
data/config/ehcache.yml
CHANGED
@@ -1,15 +1,15 @@
|
|
1
|
-
|
1
|
+
disk_store:
|
2
2
|
path: java.io.tmpdir
|
3
3
|
|
4
|
-
|
5
|
-
|
4
|
+
peer_providers:
|
5
|
+
- class: net.sf.ehcache.distribution.RMICacheManagerPeerProviderFactory
|
6
6
|
properties: peerDiscovery=automatic,multicastGroupAddress=230.0.0.1,multicastGroupPort=4446,timeToLive=1
|
7
7
|
property_separator: "\,"
|
8
8
|
|
9
|
-
|
10
|
-
|
9
|
+
peer_listeners:
|
10
|
+
- class: net.sf.ehcache.distribution.RMICacheManagerPeerListenerFactory
|
11
11
|
|
12
|
-
|
12
|
+
default_cache:
|
13
13
|
name: cache
|
14
14
|
max_elements_in_memory: 10000
|
15
15
|
time_to_live_seconds: 0
|
@@ -1,16 +1,16 @@
|
|
1
|
-
|
1
|
+
disk_store:
|
2
2
|
path: java.io.tmpdir
|
3
3
|
|
4
|
-
|
5
|
-
|
4
|
+
peer_providers:
|
5
|
+
- class: net.sf.ehcache.distribution.RMICacheManagerPeerProviderFactory
|
6
6
|
properties: peerDiscovery=manual,rmiUrls=//that_hostname:40001/cache
|
7
7
|
property_separator: "\,"
|
8
8
|
|
9
|
-
|
10
|
-
|
9
|
+
peer_listeners:
|
10
|
+
- class: net.sf.ehcache.distribution.RMICacheManagerPeerListenerFactory
|
11
11
|
properties: hostName=this_hostname,port=40000
|
12
12
|
|
13
|
-
|
13
|
+
default_cache:
|
14
14
|
name: cache
|
15
15
|
max_elements_in_memory: 10000
|
16
16
|
time_to_live_seconds: 0
|
@@ -0,0 +1,44 @@
|
|
1
|
+
<?xml version="1.0" encoding="UTF-8"?>
|
2
|
+
|
3
|
+
<ehcache xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
|
4
|
+
xsi:noNamespaceSchemaLocation="../../main/config/ehcache.xsd">
|
5
|
+
|
6
|
+
<!-- Disable for test ehcache.xml. Should go to the same place. -->
|
7
|
+
<diskStore path="java.io.tmpdir"/>
|
8
|
+
|
9
|
+
<cacheManagerPeerProviderFactory class="net.sf.ehcache.distribution.RMICacheManagerPeerProviderFactory"
|
10
|
+
properties="peerDiscovery=automatic, multicastGroupAddress=230.0.0.1, multicastGroupPort=4446, timeToLive=0"/>
|
11
|
+
|
12
|
+
|
13
|
+
<cacheManagerPeerListenerFactory class="net.sf.ehcache.distribution.RMICacheManagerPeerListenerFactory"
|
14
|
+
properties="hostName=, port=, socketTimeoutMillis="/>
|
15
|
+
|
16
|
+
|
17
|
+
<defaultCache
|
18
|
+
name="default"
|
19
|
+
maxElementsInMemory="10"
|
20
|
+
eternal="false"
|
21
|
+
timeToIdleSeconds="5"
|
22
|
+
timeToLiveSeconds="10"
|
23
|
+
overflowToDisk="true"
|
24
|
+
/>
|
25
|
+
|
26
|
+
|
27
|
+
<!-- Sample cache named sampleCache1 -->
|
28
|
+
<cache name="sampleCache1"
|
29
|
+
maxElementsInMemory="10000"
|
30
|
+
maxElementsOnDisk="1000"
|
31
|
+
eternal="false"
|
32
|
+
timeToIdleSeconds="360"
|
33
|
+
timeToLiveSeconds="1000"
|
34
|
+
overflowToDisk="true">
|
35
|
+
</cache>
|
36
|
+
|
37
|
+
<!-- Sample cache named sampleCache2. Is eternal. Is diskPersistent but does not overflow to disk -->
|
38
|
+
<cache name="sampleCache2"
|
39
|
+
maxElementsInMemory="1000"
|
40
|
+
eternal="true"
|
41
|
+
overflowToDisk="false"
|
42
|
+
diskPersistent="true"
|
43
|
+
/>
|
44
|
+
</ehcache>
|
@@ -0,0 +1,13 @@
|
|
1
|
+
require 'ehcache'
|
2
|
+
|
3
|
+
manager = Ehcache::CacheManager.new
|
4
|
+
cache = manager.cache
|
5
|
+
|
6
|
+
cache.put("answer", "42", {:ttl => 120})
|
7
|
+
answer = cache.get("answer")
|
8
|
+
puts "Answer: #{answer}"
|
9
|
+
|
10
|
+
question = cache.get("question") || 'unknown'
|
11
|
+
puts "Question: #{question}"
|
12
|
+
|
13
|
+
manager.shutdown
|
Binary file
|
Binary file
|
File without changes
|
File without changes
|
Binary file
|
data/lib/ehcache.rb
CHANGED
@@ -1,5 +1,7 @@
|
|
1
|
-
$:.
|
2
|
-
|
1
|
+
unless $:.include?(File.dirname(__FILE__)) ||
|
2
|
+
$:.include?(File.expand_path(File.dirname(__FILE__)))
|
3
|
+
$:.unshift(File.dirname(__FILE__))
|
4
|
+
end
|
3
5
|
|
4
6
|
require 'java'
|
5
7
|
|
@@ -12,11 +14,9 @@ module Ehcache
|
|
12
14
|
class EhcacheError < RuntimeError; end
|
13
15
|
end
|
14
16
|
|
17
|
+
require 'ehcache/extensions'
|
15
18
|
require 'ehcache/java'
|
16
19
|
require 'ehcache/config'
|
17
20
|
require 'ehcache/cache'
|
18
21
|
require 'ehcache/cache_manager'
|
19
22
|
require 'ehcache/element'
|
20
|
-
require 'ehcache/extensions'
|
21
|
-
require 'ehcache/version'
|
22
|
-
require 'ehcache/status'
|
data/lib/ehcache/cache.rb
CHANGED
@@ -1,127 +1,58 @@
|
|
1
|
-
|
2
|
-
|
3
|
-
|
1
|
+
# Enhance net.sf.ehcache.Cache with a more Rubyesque API.
|
2
|
+
class Java::NetSfEhcache::Cache
|
3
|
+
include Enumerable
|
4
4
|
|
5
|
-
|
6
|
-
|
7
|
-
|
8
|
-
|
9
|
-
|
10
|
-
|
11
|
-
def put(key, value, options = {})
|
12
|
-
if key.nil? || key.empty?
|
13
|
-
raise EhcacheError, "Element cannot be blank"
|
14
|
-
end
|
15
|
-
element = Ehcache::Element.new(key, value, options)
|
16
|
-
@proxy.put(element.proxy)
|
17
|
-
rescue NativeException => e
|
18
|
-
raise EhcacheError, e.cause
|
19
|
-
end
|
20
|
-
alias_method :set, :put
|
21
|
-
alias_method :add, :put
|
22
|
-
|
23
|
-
# another alias for put
|
24
|
-
def []=(key, value)
|
25
|
-
put(key, value)
|
26
|
-
end
|
27
|
-
|
28
|
-
# get an element value from cache by key
|
29
|
-
def get(key)
|
30
|
-
element = @proxy.get(key)
|
31
|
-
element ? element.get_value : nil
|
32
|
-
rescue NativeException => e
|
33
|
-
raise EhcacheError, e.cause
|
34
|
-
end
|
35
|
-
alias_method :[], :get
|
36
|
-
|
37
|
-
# get an element from cache by key
|
38
|
-
def element(key)
|
39
|
-
element = @proxy.get(key)
|
40
|
-
return nil unless element
|
41
|
-
Ehcache::Element.new(element.get_key, element.get_value,
|
42
|
-
{:ttl => element.get_time_to_live })
|
43
|
-
rescue NativeException => e
|
44
|
-
raise EhcacheError, e.cause
|
45
|
-
end
|
46
|
-
|
47
|
-
# remove an element from the cache by key
|
48
|
-
def remove(key)
|
49
|
-
@proxy.remove(key)
|
50
|
-
rescue NativeException => e
|
51
|
-
raise EhcacheError, e.cause
|
52
|
-
end
|
53
|
-
alias_method :delete, :remove
|
54
|
-
|
55
|
-
# remove all elements from the cache
|
56
|
-
def remove_all
|
57
|
-
@proxy.remove_all
|
58
|
-
rescue NativeException => e
|
59
|
-
raise EhcacheError, e.cause
|
60
|
-
end
|
61
|
-
alias_method :clear, :remove_all
|
62
|
-
|
63
|
-
def keys
|
64
|
-
@proxy.get_keys
|
65
|
-
end
|
66
|
-
|
67
|
-
def exist?(key)
|
68
|
-
@proxy.is_key_in_cache(key)
|
69
|
-
end
|
70
|
-
|
71
|
-
# returns the current status of the cache
|
72
|
-
def status
|
73
|
-
@proxy.get_status
|
74
|
-
end
|
75
|
-
|
76
|
-
def alive?
|
77
|
-
@proxy.get_status == Status::ALIVE
|
78
|
-
end
|
79
|
-
|
80
|
-
def shutdown?
|
81
|
-
@proxy.get_status == Status::SHUTDOWN
|
82
|
-
end
|
83
|
-
|
84
|
-
def uninitialized?
|
85
|
-
@proxy.get_status == Status::UNINITIALISED
|
86
|
-
end
|
87
|
-
|
88
|
-
# number of elements in the cache
|
89
|
-
def size
|
90
|
-
@proxy.get_size
|
91
|
-
end
|
92
|
-
|
93
|
-
# number of elements in the memory store
|
94
|
-
def memory_size
|
95
|
-
@proxy.get_memory_store_size
|
96
|
-
end
|
97
|
-
|
98
|
-
# number of elements in the cache store
|
99
|
-
def disk_size
|
100
|
-
@proxy.get_disk_store_size
|
101
|
-
end
|
102
|
-
|
103
|
-
# TODO: implement statistics !
|
104
|
-
# return statistics about the cache
|
105
|
-
def statistics
|
106
|
-
@proxy.get_statistics
|
107
|
-
rescue NativeException => e
|
108
|
-
raise EhcacheError, e.cause
|
5
|
+
# Yield each Element stored in this cache to the given block. This method
|
6
|
+
# uses Cache#getKeys as its basis, and therefore it is possible that some
|
7
|
+
# of the yielded elements have expired.
|
8
|
+
def each
|
9
|
+
for key in self.getKeys
|
10
|
+
yield self.get(key)
|
109
11
|
end
|
12
|
+
end
|
13
|
+
# Gets an element value from the cache. Unlike the #get method, this method
|
14
|
+
# returns the element value, not the Element object.
|
15
|
+
def [](key)
|
16
|
+
element = self.get(key)
|
17
|
+
element ? element.value : nil
|
18
|
+
end
|
110
19
|
|
111
|
-
|
112
|
-
@proxy.get_max_elements_in_memory
|
113
|
-
end
|
20
|
+
alias ehcache_put put
|
114
21
|
|
115
|
-
|
116
|
-
|
117
|
-
|
118
|
-
|
119
|
-
|
120
|
-
|
22
|
+
# Wrap the Cache#put method to allow for extra options to be passed to the
|
23
|
+
# created Element.
|
24
|
+
def put(*args)
|
25
|
+
options = args.extract_options!
|
26
|
+
if args.size == 1 && args.first.kind_of?(Ehcache::Element)
|
27
|
+
element = args.first
|
28
|
+
elsif args.size == 2
|
29
|
+
element = Ehcache::Element.create(args[0], args[1], options)
|
30
|
+
else
|
31
|
+
raise ArgumentError, "Must be Element object or key and value arguments"
|
121
32
|
end
|
33
|
+
ehcache_put(element)
|
34
|
+
end
|
122
35
|
|
123
|
-
|
124
|
-
|
125
|
-
|
36
|
+
alias []= put
|
37
|
+
|
38
|
+
alias include? isKeyInCache
|
39
|
+
alias member? isKeyInCache
|
40
|
+
|
41
|
+
# Atomic compare and swap for cache elements. Invokes the given block with
|
42
|
+
# the current value of the element and attempts to replace it with the
|
43
|
+
# value returned from the block, repeating until replace returns true.
|
44
|
+
# Note that the provided block works only with element values, not Element
|
45
|
+
# objects: the result of element.getValue is passed to the block parameter,
|
46
|
+
# and the block is expected to return a value based on it.
|
47
|
+
# If there is no element with the given key, returns immediately without
|
48
|
+
# retrying.
|
49
|
+
def compare_and_swap(key, &block)
|
50
|
+
begin
|
51
|
+
old_element = self.get(key)
|
52
|
+
return nil unless old_element
|
53
|
+
new_element = Ehcache::Element.new(key, yield(old_element.value))
|
54
|
+
end until replace(old_element, new_element)
|
126
55
|
end
|
56
|
+
|
57
|
+
alias update compare_and_swap
|
127
58
|
end
|
@@ -1,65 +1,69 @@
|
|
1
|
-
|
2
|
-
|
3
|
-
|
4
|
-
# TODO document this
|
5
|
-
unless options[:security]
|
6
|
-
import java.lang.System unless defined?(System)
|
7
|
-
import java.rmi.RMISecurityManager unless defined?(RMISecurityManager)
|
8
|
-
RMISecurityManager.new if System.getSecurityManager == nil
|
9
|
-
end
|
10
|
-
@manager = Ehcache::Java::CacheManager.new(Ehcache::Config.generate(options))
|
11
|
-
end
|
12
|
-
|
13
|
-
# return cache by name
|
14
|
-
def cache(cache_name=nil)
|
15
|
-
Ehcache::Cache.new(@manager, cache_name || Ehcache::Cache::PRIMARY)
|
16
|
-
end
|
17
|
-
|
18
|
-
# return all cache names
|
19
|
-
def caches
|
20
|
-
@manager.get_cache_names
|
21
|
-
end
|
1
|
+
# Enhance net.sf.ehcache.CacheManager with a more Rubyesque API.
|
2
|
+
class Java::NetSfEhcache::CacheManager
|
3
|
+
include Enumerable
|
22
4
|
|
23
|
-
|
24
|
-
|
25
|
-
@manager.add_cache(cache_name)
|
26
|
-
end
|
5
|
+
class << self
|
6
|
+
alias_method :ehcache_create, :create
|
27
7
|
|
28
|
-
#
|
29
|
-
|
30
|
-
|
31
|
-
|
32
|
-
|
33
|
-
|
34
|
-
|
35
|
-
|
8
|
+
# Enhanced create that provides for some extra configuration options.
|
9
|
+
# Specifically, String arguments may be used where native Ehcache expects
|
10
|
+
# java.io.File objects, and if the String refers to a YAML file it will be
|
11
|
+
# used as the Configuration source.
|
12
|
+
def create(*args)
|
13
|
+
process_init_args(*args) do |*args|
|
14
|
+
ehcache_create(*args)
|
15
|
+
end
|
36
16
|
end
|
17
|
+
end
|
37
18
|
|
38
|
-
|
39
|
-
|
40
|
-
|
19
|
+
# Enhanced constructor that provides for some extra configuration options.
|
20
|
+
# Specifically, String arguments may be used where native Ehcache expects
|
21
|
+
# java.io.File objects, and if the String refers to a YAML file it will be
|
22
|
+
# used as the Configuration source.
|
23
|
+
def initialize(*args)
|
24
|
+
process_init_args(*args) do |*args|
|
25
|
+
super(*args)
|
41
26
|
end
|
27
|
+
end
|
42
28
|
|
43
|
-
|
44
|
-
|
29
|
+
# Iterate through each cache managed by this CacheManager.
|
30
|
+
def each
|
31
|
+
for name in self.cache_names
|
32
|
+
yield self.get_ehcache(name)
|
45
33
|
end
|
34
|
+
end
|
46
35
|
|
47
|
-
|
48
|
-
@manager.disable_shutdown_hook
|
49
|
-
end
|
36
|
+
alias [] get_ehcache
|
50
37
|
|
51
|
-
|
52
|
-
|
53
|
-
|
38
|
+
def cache(cache_name = '__default_jruby_cache')
|
39
|
+
self.add_cache_if_absent(cache_name)
|
40
|
+
self.get_ehcache(cache_name)
|
41
|
+
end
|
54
42
|
|
55
|
-
|
56
|
-
|
57
|
-
|
43
|
+
# true if cache by given name is being managed, false otherwise
|
44
|
+
def include?(cache_name)
|
45
|
+
self.cache_exists(cache_name)
|
46
|
+
end
|
47
|
+
alias_method :exists?, :include?
|
48
|
+
end
|
58
49
|
|
59
|
-
|
60
|
-
|
61
|
-
|
50
|
+
# Helper method for processing initialization arguments passed to
|
51
|
+
# CacheManager.create and CacheManager#initialize.
|
52
|
+
def process_init_args(*args)
|
53
|
+
args.compact!
|
54
|
+
if args.empty?
|
55
|
+
# First, look relative to the file that is creating the CacheManager.
|
56
|
+
# The expression caller[2] finds the entry in the call stack where
|
57
|
+
# CacheManager.new or CacheManager.create was called.
|
58
|
+
creator = /^(.+?):\d/.match(caller[2])[1]
|
59
|
+
if ehcache_config = Java::NetSfEhcacheConfig::Configuration.find(File.dirname(creator))
|
60
|
+
yield(ehcache_config)
|
61
|
+
else
|
62
|
+
yield
|
62
63
|
end
|
63
|
-
|
64
|
+
elsif args.size == 1 && args.first.is_a?(String)
|
65
|
+
yield(Ehcache::Config::Configuration.create(args.first))
|
66
|
+
else
|
67
|
+
yield(*args)
|
64
68
|
end
|
65
69
|
end
|