jruby-mapdb 0.9.6-java → 1.0.0-java

Sign up to get free protection for your applications and to get access to all the features.
data/README.md CHANGED
@@ -1,6 +1,6 @@
1
1
  # Jruby::Mapdb
2
2
 
3
- This is a jruby-only wrapper for MapDB (v0.9.5). MapDB is a fast key-value store java library.
3
+ This is a jruby-only wrapper for MapDB (v0.9.6). MapDB is a fast key-value store java library.
4
4
 
5
5
  Using this gem, MapDB trees are seen as hashes in jruby, making persistence easy and cheap.
6
6
 
@@ -62,6 +62,27 @@ p People[1]
62
62
 
63
63
  ~~~
64
64
 
65
+ ## Jruby::Mapdb::DB API
66
+
67
+ This API has been kept as simple as possible, compatible with Ruby Hash.
68
+
69
+ It is compatible with most Enumerable methods: each, find_all, select, reject, entries, etc...
70
+
71
+ ~~~
72
+
73
+ #new create a MemoryDB.
74
+ #new(dbname) create a FileDB named dbname into current directory.
75
+
76
+ #tree(treename) create a MapDB treemap, which can be used with Jruby::Mapdb::Tree API.
77
+
78
+ #close close DB instance.
79
+
80
+ #closed? return true if DB instance is closed, false otherwise.
81
+
82
+ #compact compact the DB. To be used in dedicated/isolated script, not in main script.
83
+
84
+ ~~~
85
+
65
86
  ## Jruby::Mapdb::Tree API
66
87
 
67
88
  This API has been kept as simple as possible, compatible with Ruby Hash.
data/Rakefile CHANGED
@@ -1,10 +1,8 @@
1
- require "rubygems"
2
- require "rake"
3
- require "rake/testtask"
1
+ %w[rubygems rake rake/testtask].map &method(:require)
4
2
 
5
- desc "Run tests"
6
- Rake::TestTask.new "test" do |t|
7
- t.libs << "test"
3
+ desc 'Run tests'
4
+ Rake::TestTask.new 'test' do |t|
5
+ t.libs << 'test'
8
6
  t.test_files = FileList['test/*_test.rb']
9
7
  t.verbose = true
10
8
  end
data/jruby-mapdb.gemspec CHANGED
@@ -3,17 +3,17 @@ $LOAD_PATH.unshift(lib) unless $LOAD_PATH.include?(lib)
3
3
  require 'jruby/mapdb/version'
4
4
 
5
5
  Gem::Specification.new do |spec|
6
- spec.name = "jruby-mapdb"
6
+ spec.name = 'jruby-mapdb'
7
7
  spec.version = Jruby::Mapdb::VERSION
8
- spec.platform = "java"
9
- spec.authors = ["Christian MICHON"]
10
- spec.email = ["christian.michon@gmail.com"]
8
+ spec.platform = 'java'
9
+ spec.authors = ['Christian MICHON']
10
+ spec.email = ['christian.michon@gmail.com']
11
11
  spec.description = %q{MapDB wrapper for JRuby}
12
12
  spec.summary = %q{MapDB wrapper}
13
- spec.homepage = "http://github.com/cmichon/jruby-mapdb"
14
- spec.license = "MIT"
13
+ spec.homepage = 'http://github.com/cmichon/jruby-mapdb'
14
+ spec.license = 'MIT'
15
15
 
16
16
  spec.files = Dir['{**/*}']
17
17
  spec.executables = spec.files.grep(%r{^bin/}) { |f| File.basename(f) }
18
- spec.require_paths = ["lib"]
18
+ spec.require_paths = ['lib']
19
19
  end
data/lib/jruby-mapdb.rb CHANGED
@@ -1,3 +1 @@
1
- (%w[java] + Dir['**/*.jar']).each { |jar| require jar }
2
-
3
- require 'jruby/mapdb'
1
+ (%w[java] + Dir['**/*.jar'] + %w[jruby/mapdb]).map &method(:require)
data/lib/jruby/mapdb.rb CHANGED
@@ -1,9 +1,10 @@
1
- require "jruby/mapdb/version"
1
+ %w[jruby/mapdb/version forwardable].map &method(:require)
2
2
 
3
3
  module Jruby
4
4
  module Mapdb
5
5
  module ClassMethods
6
6
  include Enumerable
7
+ extend Forwardable
7
8
  def encode(key, value)
8
9
  @tree.put key, Marshal.dump(value).to_java_bytes
9
10
  end
@@ -15,58 +16,53 @@ module Jruby
15
16
  def each
16
17
  @tree.each_pair { |key,value| yield(key, Marshal.load(String.from_java_bytes(value))) }
17
18
  end
18
- def key?(key)
19
- @tree.has_key? key
20
- end
21
19
  def keys
22
20
  @tree.key_set.to_a
23
21
  end
24
- def count
25
- @tree.size
26
- end
27
22
  def regexp(pattern)
28
23
  re = Regexp.new "#{pattern}", Regexp::EXTENDED | Regexp::IGNORECASE
29
24
  @tree.select{ |k,v| "#{k}" =~ re }.map(&:first)
30
25
  end
31
- def clear
32
- @tree.clear
33
- end
34
- alias :[]= :encode
35
- alias :[] :decode
36
- alias :size :count
37
- private
26
+ def_delegator :@tree, :clear, :clear
27
+ def_delegator :@tree, :has_key?, :key?
28
+ def_delegator :@tree, :count, :size
29
+ alias :[]= :encode
30
+ alias :[] :decode
31
+ alias :count :size
38
32
  end
39
33
  class Tree
40
34
  extend ClassMethods
41
35
  end
42
36
  class DB
43
- attr_reader :mapdb, :trees, :type
37
+ extend Forwardable
38
+ attr_reader :mapdb, :type
44
39
  def initialize(dbname=nil)
45
40
  if dbname.nil?
46
41
  @type = :MemoryDB
47
- @trees = []
48
42
  @mapdb = Java::OrgMapdb::DBMaker.
49
43
  newMemoryDB().
50
44
  closeOnJvmShutdown().
51
45
  make()
52
46
  else
53
47
  @type = :FileDB
54
- @trees = []
55
48
  @mapdb = Java::OrgMapdb::DBMaker.
56
49
  newFileDB(Java::JavaIo::File.new("#{dbname}")).
57
50
  closeOnJvmShutdown().
58
- writeAheadLogDisable().
51
+ transactionDisable().
59
52
  make()
60
53
  end
61
54
  end
62
55
  def tree(treename)
63
- raise "Tree already defined" if @trees.include?(treename) || Object.const_defined?(treename)
64
- trees << treename
56
+ raise "Tree '#{treename}' already defined" if Object.const_defined?(treename)
65
57
  Object.const_set treename, Class.new(Tree)
66
58
  Object.const_get(treename).instance_variable_set :@mapdb, @mapdb
67
59
  Object.const_get(treename).instance_variable_set :@tree, @mapdb.getTreeMap("#{treename}")
68
60
  Object.const_get treename
69
61
  end
62
+ def trees
63
+ Hash[*(@mapdb.getAll.map(&:first).map(&:to_sym).zip(@mapdb.getAll.map(&:last).map(&:size)).flatten)]
64
+ end
65
+ def_delegators :@mapdb, :close, :closed?, :compact
70
66
  end
71
67
  end
72
68
  end
@@ -1,5 +1,5 @@
1
1
  module Jruby
2
2
  module Mapdb
3
- VERSION = "0.9.6"
3
+ VERSION = "1.0.0"
4
4
  end
5
5
  end
Binary file
data/test/mapdb_test.rb CHANGED
@@ -1,4 +1,4 @@
1
- require "test_helper"
1
+ require 'test_helper'
2
2
 
3
3
  module MyTest
4
4
  def runner(type)
@@ -9,7 +9,7 @@ module MyTest
9
9
  db.tree :People
10
10
  assert People.is_a?(Enumerable)
11
11
  assert_equal Jruby::Mapdb::Tree, People.superclass
12
- assert_equal [:People], db.trees
12
+ assert_equal [:People], db.instance_variable_get(:@mapdb).get_all.map(&:first).map(&:to_sym)
13
13
  assert_equal [], People.entries
14
14
 
15
15
  People[0] = 'CM'
@@ -35,6 +35,8 @@ module MyTest
35
35
  assert_instance_of Hash, People[1][:features]
36
36
  assert People[1][:features][:developer]
37
37
 
38
+ assert_equal ({:People=>2}),db.trees
39
+
38
40
  People.clear
39
41
  assert_equal 0, People.count
40
42
 
@@ -43,9 +45,8 @@ module MyTest
43
45
  end
44
46
  Object.send(:remove_const, :People)
45
47
 
46
- mapdb = db.instance_variable_get(:@mapdb)
47
- mapdb.close
48
- assert mapdb.closed?
48
+ db.close
49
+ assert db.closed?
49
50
  end
50
51
  end
51
52
 
data/test/test_helper.rb CHANGED
@@ -1,4 +1,2 @@
1
- lib = File.expand_path('../lib', __FILE__)
2
- $LOAD_PATH.unshift(lib) unless $LOAD_PATH.include?(lib)
3
- %w[rubygems tempfile jruby-mapdb].map &method(:require)
4
- require 'test/unit'
1
+ $: << File.expand_path('../lib', __FILE__)
2
+ %w[rubygems test/unit tempfile jruby-mapdb].map &method(:require)
metadata CHANGED
@@ -1,56 +1,66 @@
1
- --- !ruby/object:Gem::Specification
1
+ --- !ruby/object:Gem::Specification
2
2
  name: jruby-mapdb
3
- version: !ruby/object:Gem::Version
4
- version: 0.9.6
3
+ version: !ruby/object:Gem::Version
4
+ prerelease:
5
+ version: 1.0.0
5
6
  platform: java
6
- authors:
7
- - Christian MICHON
8
- autorequire:
7
+ authors:
8
+ - Christian MICHON
9
+ autorequire:
9
10
  bindir: bin
10
11
  cert_chain: []
11
- date: 2013-09-25 00:00:00.000000000 Z
12
+
13
+ date: 2013-09-30 00:00:00 Z
12
14
  dependencies: []
15
+
13
16
  description: MapDB wrapper for JRuby
14
- email:
15
- - christian.michon@gmail.com
17
+ email:
18
+ - christian.michon@gmail.com
16
19
  executables: []
20
+
17
21
  extensions: []
22
+
18
23
  extra_rdoc_files: []
19
- files:
20
- - Gemfile
21
- - jruby-mapdb.gemspec
22
- - LICENSE-mapdb.txt
23
- - LICENSE.txt
24
- - Rakefile
25
- - README.md
26
- - lib/jruby-mapdb.rb
27
- - lib/mapdb-0.9.5.jar
28
- - lib/jruby/mapdb.rb
29
- - lib/jruby/mapdb/version.rb
30
- - test/mapdb_test.rb
31
- - test/test_helper.rb
24
+
25
+ files:
26
+ - Gemfile
27
+ - jruby-mapdb.gemspec
28
+ - LICENSE-mapdb.txt
29
+ - LICENSE.txt
30
+ - Rakefile
31
+ - README.md
32
+ - lib/jruby-mapdb.rb
33
+ - lib/mapdb-0.9.6.jar
34
+ - lib/jruby/mapdb.rb
35
+ - lib/jruby/mapdb/version.rb
36
+ - test/mapdb_test.rb
37
+ - test/test_helper.rb
32
38
  homepage: http://github.com/cmichon/jruby-mapdb
33
- licenses:
34
- - MIT
35
- metadata: {}
36
- post_install_message:
39
+ licenses:
40
+ - MIT
41
+ post_install_message:
37
42
  rdoc_options: []
38
- require_paths:
39
- - lib
40
- required_ruby_version: !ruby/object:Gem::Requirement
41
- requirements:
42
- - - '>='
43
- - !ruby/object:Gem::Version
44
- version: '0'
45
- required_rubygems_version: !ruby/object:Gem::Requirement
46
- requirements:
47
- - - '>='
48
- - !ruby/object:Gem::Version
49
- version: '0'
43
+
44
+ require_paths:
45
+ - lib
46
+ required_ruby_version: !ruby/object:Gem::Requirement
47
+ none: false
48
+ requirements:
49
+ - - ">="
50
+ - !ruby/object:Gem::Version
51
+ version: "0"
52
+ required_rubygems_version: !ruby/object:Gem::Requirement
53
+ none: false
54
+ requirements:
55
+ - - ">="
56
+ - !ruby/object:Gem::Version
57
+ version: "0"
50
58
  requirements: []
51
- rubyforge_project:
52
- rubygems_version: 2.0.3
53
- signing_key:
54
- specification_version: 4
59
+
60
+ rubyforge_project:
61
+ rubygems_version: 1.8.24
62
+ signing_key:
63
+ specification_version: 3
55
64
  summary: MapDB wrapper
56
65
  test_files: []
66
+
checksums.yaml DELETED
@@ -1,7 +0,0 @@
1
- ---
2
- SHA1:
3
- metadata.gz: cbd28983814fe1f29640826969cba61f7ae13a81
4
- data.tar.gz: 1170604b2d40a0643f813e4898195a86697aba33
5
- SHA512:
6
- metadata.gz: 781523f4f5672147184b3274257b5db87cb4d0f3dfd5d99403481d2650937ac62dcada5cee0034d7ccef5812cb0d2cffac0349c072103bff7c94a6a8292bccfd
7
- data.tar.gz: ade71e1c8f299776edfd7d776530cc36b2ed2e78861dd8762b5176e6eecc91560f7e3c5cc13966f573a13f8505a7db109aaba072396cf24553b58a29e9bd7d21
data/lib/mapdb-0.9.5.jar DELETED
Binary file