neo4j-core 0.0.1-java

Sign up to get free protection for your applications and to get access to all the features.
Files changed (71) hide show
  1. data/Gemfile +27 -0
  2. data/README.rdoc +27 -0
  3. data/config/neo4j/config.yml +102 -0
  4. data/lib/db/active_tx_log +1 -0
  5. data/lib/db/index/lucene-store.db +0 -0
  6. data/lib/db/index/lucene.log.1 +0 -0
  7. data/lib/db/index/lucene.log.active +0 -0
  8. data/lib/db/lock +0 -0
  9. data/lib/db/messages.log +530 -0
  10. data/lib/db/neostore +0 -0
  11. data/lib/db/neostore.id +0 -0
  12. data/lib/db/neostore.nodestore.db +0 -0
  13. data/lib/db/neostore.nodestore.db.id +0 -0
  14. data/lib/db/neostore.propertystore.db +0 -0
  15. data/lib/db/neostore.propertystore.db.arrays +0 -0
  16. data/lib/db/neostore.propertystore.db.arrays.id +0 -0
  17. data/lib/db/neostore.propertystore.db.id +0 -0
  18. data/lib/db/neostore.propertystore.db.index +0 -0
  19. data/lib/db/neostore.propertystore.db.index.id +0 -0
  20. data/lib/db/neostore.propertystore.db.index.keys +0 -0
  21. data/lib/db/neostore.propertystore.db.index.keys.id +0 -0
  22. data/lib/db/neostore.propertystore.db.strings +0 -0
  23. data/lib/db/neostore.propertystore.db.strings.id +0 -0
  24. data/lib/db/neostore.relationshipstore.db +0 -0
  25. data/lib/db/neostore.relationshipstore.db.id +0 -0
  26. data/lib/db/neostore.relationshiptypestore.db +0 -0
  27. data/lib/db/neostore.relationshiptypestore.db.id +0 -0
  28. data/lib/db/neostore.relationshiptypestore.db.names +0 -0
  29. data/lib/db/neostore.relationshiptypestore.db.names.id +0 -0
  30. data/lib/db/nioneo_logical.log.2 +0 -0
  31. data/lib/db/nioneo_logical.log.active +0 -0
  32. data/lib/db/tm_tx_log.1 +0 -0
  33. data/lib/neo4j/config.rb +139 -0
  34. data/lib/neo4j/cypher.rb +156 -0
  35. data/lib/neo4j/neo4j.rb +244 -0
  36. data/lib/neo4j/neo4j.rb~ +214 -0
  37. data/lib/neo4j/node.rb +39 -0
  38. data/lib/neo4j/relationship.rb +61 -0
  39. data/lib/neo4j/transaction.rb +86 -0
  40. data/lib/neo4j/type_converters/type_converters.rb +287 -0
  41. data/lib/neo4j-core/cypher/cypher.rb +867 -0
  42. data/lib/neo4j-core/cypher/result_wrapper.rb +39 -0
  43. data/lib/neo4j-core/database.rb +191 -0
  44. data/lib/neo4j-core/equal/equal.rb +23 -0
  45. data/lib/neo4j-core/event_handler.rb +265 -0
  46. data/lib/neo4j-core/index/class_methods.rb +117 -0
  47. data/lib/neo4j-core/index/index.rb +36 -0
  48. data/lib/neo4j-core/index/index_config.rb +112 -0
  49. data/lib/neo4j-core/index/indexer.rb +243 -0
  50. data/lib/neo4j-core/index/indexer_registry.rb +55 -0
  51. data/lib/neo4j-core/index/lucene_query.rb +264 -0
  52. data/lib/neo4j-core/lazy_map.rb +21 -0
  53. data/lib/neo4j-core/node/class_methods.rb +77 -0
  54. data/lib/neo4j-core/node/node.rb +47 -0
  55. data/lib/neo4j-core/property/property.rb +94 -0
  56. data/lib/neo4j-core/relationship/class_methods.rb +80 -0
  57. data/lib/neo4j-core/relationship/relationship.rb +97 -0
  58. data/lib/neo4j-core/relationship_set.rb +61 -0
  59. data/lib/neo4j-core/rels/rels.rb +147 -0
  60. data/lib/neo4j-core/rels/traverser.rb +99 -0
  61. data/lib/neo4j-core/to_java.rb +51 -0
  62. data/lib/neo4j-core/traversal/evaluator.rb +36 -0
  63. data/lib/neo4j-core/traversal/filter_predicate.rb +30 -0
  64. data/lib/neo4j-core/traversal/prune_evaluator.rb +20 -0
  65. data/lib/neo4j-core/traversal/rel_expander.rb +35 -0
  66. data/lib/neo4j-core/traversal/traversal.rb +130 -0
  67. data/lib/neo4j-core/traversal/traverser.rb +295 -0
  68. data/lib/neo4j-core/version.rb +5 -0
  69. data/lib/neo4j-core.rb +64 -0
  70. data/neo4j-core.gemspec +31 -0
  71. metadata +145 -0
@@ -0,0 +1,139 @@
1
+ module Neo4j
2
+
3
+
4
+ # == Keeps configuration for neo4j
5
+ #
6
+ # The most important configuration is storage_path which is used to
7
+ # locate where the neo4j database is stored on the filesystem.
8
+ # If this directory is empty then a new database will be created, otherwise it will use the
9
+ # database from that directory.
10
+ #
11
+ # == Configurations keys
12
+ #
13
+ # storage_path where the database is stored
14
+ # timestamps if timestamps should be used when saving the model (Neo4j::Rails::Model)
15
+ # lucene lucene configuration for fulltext and exact indices
16
+ # enable_rules if false the _all relationship to all instances will not be created and custom rules will not be available. (Neo4j::NodeMixin and Neo4j::Rails::Model)
17
+ # identity_map default false, See Neo4j::IdentityMap (Neo4j::NodeMixin and Neo4j::Rails::Model)
18
+ #
19
+ class Config
20
+
21
+ class << self
22
+
23
+ # @return [Fixnum] The location of the default configuration file.
24
+ def default_file
25
+ @default_file ||= File.expand_path(File.join(File.dirname(__FILE__), "..", "..", "config", "neo4j", "config.yml"))
26
+ end
27
+
28
+ # Sets the location of the configuration YAML file and old deletes configurations.
29
+ #
30
+ # @param [String] file_path represent the path to the file.
31
+ def default_file=(file_path)
32
+ @configuration = nil
33
+ @defaults = nil
34
+ @default_file = File.expand_path(file_path)
35
+ end
36
+
37
+ # @return [Hash] the default file loaded by yaml
38
+ def defaults
39
+ require 'yaml'
40
+ @defaults ||= YAML.load_file(default_file)
41
+ end
42
+
43
+ # @return [String] the expanded path of the Config[:storage_path] property
44
+ def storage_path
45
+ File.expand_path(self[:storage_path])
46
+ end
47
+
48
+ # Yields the configuration
49
+ #
50
+ # @example
51
+ # Neo4j::Config.use do |config|
52
+ # config[:storage_path] = '/var/neo4j'
53
+ # end
54
+ #
55
+ # @return nil
56
+ # @yield config
57
+ # @yieldparam [Neo4j::Config] config - this configuration class
58
+ def use
59
+ @configuration ||= {}
60
+ yield @configuration
61
+ nil
62
+ end
63
+
64
+
65
+ # Sets the value of a config entry.
66
+ #
67
+ # @param [Symbol] key the key to set the parameter for
68
+ # @param val the value of the parameter.
69
+ def []=(key, val)
70
+ (@configuration ||= setup)[key.to_s] = val
71
+ end
72
+
73
+
74
+ # @param [Symbol] key The key of the config entry value we want
75
+ # @return the the value of a config entry
76
+ def [](key)
77
+ (@configuration ||= setup)[key.to_s]
78
+ end
79
+
80
+
81
+ # Remove the value of a config entry.
82
+ #
83
+ # @param [Symbol] key the key of the configuration entry to delete
84
+ # @return The value of the removed entry.
85
+ def delete(key)
86
+ @configuration.delete(key)
87
+ end
88
+
89
+
90
+ # Remove all configuration. This can be useful for testing purpose.
91
+ #
92
+ # @return nil
93
+ def delete_all
94
+ @configuration = nil
95
+ end
96
+
97
+
98
+ # @return [Hash] The config as a hash.
99
+ def to_hash
100
+ @configuration ||= setup
101
+ end
102
+
103
+ # @return [String] The config as a YAML
104
+ def to_yaml
105
+ @configuration.to_yaml
106
+ end
107
+
108
+ # Converts the defaults hash to a Java HashMap used by the Neo4j API.
109
+ # @return a Java HashMap used by the Java Neo4j API as configuration for the GraphDatabase
110
+ def to_java_map
111
+ map = java.util.HashMap.new
112
+ to_hash.each_pair do |k, v|
113
+ case v
114
+ when TrueClass
115
+ map[k.to_s] = "YES"
116
+ when FalseClass
117
+ map[k.to_s] = "NO"
118
+ when String, Fixnum, Float
119
+ map[k.to_s] = v.to_s
120
+ # skip list and hash values - not accepted by the Java Neo4j API
121
+ end
122
+ end
123
+ map
124
+ end
125
+
126
+ private
127
+
128
+ # @return The a new configuration using default values as a hash.
129
+ def setup()
130
+ @configuration = {}
131
+ @configuration.merge!(defaults)
132
+ @configuration
133
+ end
134
+
135
+
136
+ end
137
+ end
138
+
139
+ end
@@ -0,0 +1,156 @@
1
+ module Neo4j
2
+ class Cypher
3
+ attr_reader :expressions
4
+
5
+ include Neo4j::Core::Cypher
6
+ include Neo4j::Core::Cypher::MathFunctions
7
+
8
+ # Creates a Cypher DSL query.
9
+ # To create a new cypher query you must initialize it either an String or a Block.
10
+ #
11
+ # @example <tt>START n0=node(3) MATCH (n0)--(x) RETURN x</tt> same as
12
+ # Cypher.new { start n = node(3); match n <=> :x; ret :x }.to_s
13
+ #
14
+ # @example <tt>START n0=node(3) MATCH (n0)-[r]->(x) RETURN r</tt> same as
15
+ # node(3) > :r > :x; :r
16
+ #
17
+ # @example <tt>START n0=node(3) MATCH (n0)-->(x) RETURN x</tt> same as
18
+ # node(3) >> :x; :x
19
+ #
20
+ # @param args the argument for the dsl_block
21
+ # @yield the block which will be evaluated in the context of this object in order to create an Cypher Query string
22
+ # @yieldreturn [Return, Object] If the return is not an instance of Return it will be converted it to a Return object (if possible).
23
+ def initialize(*args, &dsl_block)
24
+ @expressions = []
25
+ @variables = []
26
+ res = self.instance_exec(*args, &dsl_block)
27
+ unless res.kind_of?(Return)
28
+ res.respond_to?(:to_a) ? ret(*res) : ret(res)
29
+ end
30
+ end
31
+
32
+ # Does nothing, just for making the DSL easier to read (maybe).
33
+ # @return self
34
+ def match(*)
35
+ self
36
+ end
37
+
38
+ # Does nothing, just for making the DSL easier to read (maybe)
39
+ # @return self
40
+ def start(*)
41
+ self
42
+ end
43
+
44
+ def where(w=nil)
45
+ Where.new(@expressions, w) if w.is_a?(String)
46
+ self
47
+ end
48
+
49
+ # Specifies a start node by performing a lucene query.
50
+ # @param [Class] index_class a class responsible for an index
51
+ # @param [String] q the lucene query
52
+ # @param [Symbol] index_type the type of index
53
+ # @return [NodeQuery]
54
+ def query(index_class, q, index_type = :exact)
55
+ NodeQuery.new(index_class, q, index_type, @expressions)
56
+ end
57
+
58
+ # Specifies a start node by performing a lucene query.
59
+ # @param [Class] index_class a class responsible for an index
60
+ # @param [String, Symbol] key the key we ask for
61
+ # @param [String, Symbol] value the value of the key we ask for
62
+ # @return [NodeLookup]
63
+ def lookup(index_class, key, value)
64
+ NodeLookup.new(index_class, key, value, @expressions)
65
+ end
66
+
67
+ # Creates a node variable.
68
+ # It will create different variables depending on the type of the first element in the nodes argument.
69
+ # * Fixnum - it will be be used as neo_id for start node(s) (StartNode)
70
+ # * Symbol - it will create an unbound node variable with the same name as the symbol (NodeVar#as)
71
+ # * empty array - it will create an unbound node variable (NodeVar)
72
+ #
73
+ # @param [Fixnum,Symbol,String] nodes the id of the nodes we want to start from
74
+ # @return [StartNode, NodeVar]
75
+ def node(*nodes)
76
+ if nodes.first.is_a?(Symbol)
77
+ NodeVar.new(@expressions, @variables).as(nodes.first)
78
+ elsif !nodes.empty?
79
+ StartNode.new(nodes, @expressions)
80
+ else
81
+ NodeVar.new(@expressions, @variables)
82
+ end
83
+ end
84
+
85
+ # Similar to #node
86
+ # @return [StartRel, RelVar]
87
+ def rel(*rels)
88
+ if rels.first.is_a?(Fixnum) || rels.first.respond_to?(:neo_id)
89
+ StartRel.new(rels, @expressions)
90
+ elsif rels.first.is_a?(Symbol)
91
+ RelVar.new(@expressions, @variables, "").as(rels.first)
92
+ elsif rels.first.is_a?(String)
93
+ RelVar.new(@expressions, @variables, rels.first)
94
+ else
95
+ raise "Unknown arg #{rels.inspect}"
96
+ end
97
+ end
98
+
99
+ # Specifies a return statement.
100
+ # Notice that this is not needed, since the last value of the DSL block will be converted into one or more
101
+ # return statements.
102
+ # @param [Symbol, #var_name] returns a list of variables we want to return
103
+ # @return [Return]
104
+ def ret(*returns)
105
+ options = returns.last.is_a?(Hash) ? returns.pop : {}
106
+ @expressions -= @expressions.find_all { |r| r.clause == :return && returns.include?(r) }
107
+ returns.each { |ret| Return.new(ret, @expressions, options) unless ret.respond_to?(:clause) && [:order_by, :skip, :limit].include?(ret.clause)}
108
+ @expressions.last
109
+ end
110
+
111
+ def shortest_path(&block)
112
+ match = instance_eval(&block)
113
+ match.algorithm = 'shortestPath'
114
+ match.find_match_start
115
+ end
116
+
117
+ def shortest_paths(&block)
118
+ match = instance_eval(&block)
119
+ match.algorithm = 'shortestPaths'
120
+ match.find_match_start
121
+ end
122
+
123
+ # @param [Symbol,nil] variable the entity we want to count or wildcard (*)
124
+ # @return [Return] a counter return clause
125
+ def count(variable='*')
126
+ Return.new("count(#{variable.to_s})", @expressions)
127
+ end
128
+
129
+ def coalesce(*args)
130
+ s = args.map { |x| x.var_name }.join(", ")
131
+ Return.new("coalesce(#{s})", @expressions)
132
+ end
133
+
134
+ def nodes(*args)
135
+ s = args.map { |x| x.referenced!; x.var_name }.join(", ")
136
+ Return.new("nodes(#{s})", @expressions)
137
+ end
138
+
139
+ def rels(*args)
140
+ s = args.map { |x| x.referenced!; x.var_name }.join(", ")
141
+ Return.new("relationships(#{s})", @expressions)
142
+ end
143
+
144
+ # Converts the DSL query to a cypher String which can be executed by cypher query engine.
145
+ def to_s
146
+ clause = nil
147
+ @expressions.map do |expr|
148
+ next unless expr.valid?
149
+ expr_to_s = expr.clause != clause ? "#{expr.prefix} #{expr.to_s}" : "#{expr.separator}#{expr.to_s}"
150
+ clause = expr.clause
151
+ expr_to_s
152
+ end.join
153
+ end
154
+
155
+ end
156
+ end
@@ -0,0 +1,244 @@
1
+ # -*- coding: utf-8 -*-
2
+
3
+ # = Neo4j
4
+ #
5
+ # The Neo4j modules is used to interact with an Neo4j Database instance.
6
+ # You can for example start and stop an instance and list all the nodes that exist in the database.
7
+ #
8
+ # === Starting and Stopping Neo4j
9
+ # You don't normally need to start the Neo4j database since it will be automatically started when needed.
10
+ # Before the database is started you should configure where the database is stored, see {Neo4j::Config]}.
11
+ #
12
+ module Neo4j
13
+
14
+ # @return [String] The version of the Neo4j jar files
15
+ NEO_VERSION = Neo4j::Community::VERSION
16
+
17
+ class << self
18
+
19
+ # Start Neo4j using the default database.
20
+ # This is usually not required since the database will be started automatically when it is used.
21
+ # If the global variable $NEO4J_SERVER is defined then it will use that as the Java Graph DB. This can
22
+ # be used if you want to embed neo4j.rb and already got an instance of the Java Neo4j Database service.
23
+ #
24
+ # @param [String] config_file (optionally) if this is nil or not given use the Neo4j::Config, otherwise setup the Neo4j::Config file using the provided YAML configuration file.
25
+ # @param [Java::OrgNeo4jKernel::EmbeddedGraphDatabase] external_db (optionally) use this Java Neo4j instead of creating a new neo4j database service.
26
+ def start(config_file=nil, external_db = $NEO4J_SERVER)
27
+ return if @db && @db.running?
28
+
29
+ Neo4j.config.default_file = config_file if config_file
30
+ if external_db
31
+ @db ||= Neo4j::Core::Database.new
32
+ self.db.start_external_db(external_db)
33
+ else
34
+ db.start
35
+ end
36
+ end
37
+
38
+
39
+ # Sets which Neo4j::Database instance to use. It wraps both the Neo4j Database and Lucene Database.
40
+ # @param [Neo4j::Database] my_db - the database instance to use
41
+ def db=(my_db)
42
+ @db = my_db
43
+ end
44
+
45
+ # Returns the database holding references to both the Neo4j Graph Database and the Lucene Database.
46
+ # Creates a new one if it does not exist, but does not start it.
47
+ #
48
+ # @return [Neo4j::Database] the created or existing database
49
+ def db
50
+ @db ||= Neo4j::Core::Database.new
51
+ end
52
+
53
+ # Checks read only mode of the database. Only one process can have write access to the database.
54
+ # @return [true, false] if the database has started up in read only mode
55
+ def read_only?
56
+ (@db && @db.graph && @db.read_only?)
57
+ end
58
+
59
+ # Returns a started db instance. Starts it's not running.
60
+ # if $NEO4J_SERVER is defined then use that Java Neo4j Database service instead of creating a new one.
61
+ # @return [Neo4j::Database] a started database
62
+ def started_db
63
+ start unless db.running?
64
+ db
65
+ end
66
+
67
+ # Runs all user defined migrations.
68
+ def migrate!
69
+
70
+ end
71
+
72
+ # @return [String, nil] the current storage path of a running neo4j database. If the database is not running it returns nil.
73
+ def storage_path
74
+ return nil unless db.running?
75
+ db.storage_path
76
+ end
77
+
78
+ # Same as typing; Neo4j::Config
79
+ # @return [Neo4j::Config] the Neo4j::Config class
80
+ def config
81
+ Neo4j::Config
82
+ end
83
+
84
+ # Executes a Cypher Query
85
+ # Check the neo4j
86
+ # Returns an enumerable of hash values.
87
+ #
88
+ # @example Using the Cypher DSL
89
+ # q = Neo4j.query{ match node(3) <=> node(:x); ret :x}
90
+ # q.first[:n] #=> the @node
91
+ # q.columns.first => :n
92
+ #
93
+ # @example Using the Cypher DSL and one parameter (n=Neo4j.ref_node)
94
+ # q = Neo4j.query(Neo4j.ref_node){|n| n <=> node(:x); :x}
95
+ # q.first[:n] #=> the @node
96
+ # q.columns.first => :n
97
+ #
98
+ # @example With an string
99
+ # q = Neo4j._query("START n=node(42) RETURN n")
100
+ # q.first(:n) #=> the @node
101
+ # q.columns.first => :n
102
+ #
103
+ # @see Cypher
104
+ # @see {http://docs.neo4j.org/chunked/milestone/cypher-query-lang.html The Cypher Query Language Documentation}
105
+ # @note Returns a read-once only forward iterable.
106
+ # @param params parameter for the query_dsl block
107
+ # @return [Neo4j::Core::Cypher::ResultWrapper] a forward read once only Enumerable, containing hash values.
108
+ def query(*params, &query_dsl)
109
+ q = Cypher.new(*params, &query_dsl).to_s
110
+ _query(q)
111
+ end
112
+
113
+ # Performs a cypher query with given string
114
+ # @param [String] q the cypher query as a String
115
+ # @return (see #query)
116
+ def _query(q)
117
+ engine = Java::OrgNeo4jCypherJavacompat::ExecutionEngine.new(db)
118
+ result = engine.execute(q)
119
+ Neo4j::Core::Cypher::ResultWrapper.new(result)
120
+ end
121
+
122
+
123
+ # Returns the logger used by neo4j.
124
+ # If not specified (with Neo4j.logger=) it will use the standard Ruby logger.
125
+ # You can change standard logger threshold by configuration :logger_level.
126
+ #
127
+ # You can also specify which logger class should take care of logging with the
128
+ # :logger configuration.
129
+ #
130
+ # @example
131
+ #
132
+ # Neo4j::Config[:logger] = Logger.new(STDOUT)
133
+ # Neo4j::Config[:logger_level] = Logger::ERROR
134
+ #
135
+ # @see #logger=
136
+ def logger
137
+ @logger ||= Neo4j::Config[:logger] || default_logger
138
+ end
139
+
140
+ # Sets which logger should be used.
141
+ # If this this is not called then the standard Ruby logger will be used.
142
+ # @see #logger
143
+ def logger=(logger)
144
+ @logger = logger
145
+ end
146
+
147
+ # @return the default Ruby logger
148
+ def default_logger #:nodoc:
149
+ require 'logger'
150
+ logger = Logger.new(STDOUT)
151
+ logger.sev_threshold = Neo4j::Config[:logger_level] || Logger::INFO
152
+ logger
153
+ end
154
+
155
+
156
+ # Returns an unstarted db instance
157
+ #
158
+ # This is typically used for configuring the database, which must sometimes
159
+ # be done before the database is started
160
+ # if the database was already started an exception will be raised
161
+ # @return [Neo4j::Database] an not started database
162
+ def unstarted_db
163
+ @db ||= Neo4j::Core::Database.new
164
+ raise "database was already started" if @db.running?
165
+ @db
166
+ end
167
+
168
+ # @return [true,false] if the database is running
169
+ def running?
170
+ !!(@db && @db.running?)
171
+ end
172
+
173
+
174
+ # Stops this database
175
+ # There are Ruby hooks that will do this automatically for you.
176
+ def shutdown(this_db = @db)
177
+ this_db.shutdown if this_db
178
+ end
179
+
180
+
181
+ # @return the default reference node, which is a "starting point" in the node space.
182
+ def default_ref_node(this_db = self.started_db)
183
+ this_db.graph.reference_node
184
+ end
185
+
186
+ # Usually, a client attaches relationships to this node that leads into various parts of the node space.
187
+ # ®return the reference node, which is a "starting point" in the node space.
188
+ # @note In case the ref_node has been assigned via the threadlocal_ref_node method,
189
+ # then that node will be returned instead.
190
+ # @see the design guide at http://wiki.neo4j.org/content/Design_Guide
191
+ def ref_node(this_db = self.started_db)
192
+ return Thread.current[:local_ref_node] if Thread.current[:local_ref_node]
193
+ default_ref_node(this_db)
194
+ end
195
+
196
+ # Changes the reference node on a threadlocal basis.
197
+ # This can be used to achieve multitenancy. All new entities will be attached to the new ref_node,
198
+ # which effectively partitions the graph, and hence scopes traversals.
199
+ def threadlocal_ref_node=(reference_node)
200
+ Thread.current[:local_ref_node] = reference_node.nil? ? nil : reference_node._java_node
201
+ end
202
+
203
+ # Returns a Management JMX Bean.
204
+ #
205
+ # Notice that this information is also provided by the jconsole Java tool, check http://wiki.neo4j.org/content/Monitoring_and_Deployment
206
+ # and http://docs.neo4j.org/chunked/milestone/operations-monitoring.html
207
+ #
208
+ # By default it returns the Primitivies JMX Bean that can be used to find number of nodes in use.
209
+ #
210
+ # @example Example Neo4j Primititives
211
+ #
212
+ # Neo4j.management.get_number_of_node_ids_in_use
213
+ # Neo4j.management.getNumberOfPropertyIdsInUse
214
+ # Neo4j.management.getNumberOfRelationshipIdsInUse
215
+ # Neo4j.management.get_number_of_relationship_type_ids_in_use
216
+ #
217
+ # @example Example Neo4j HA Cluster Info
218
+ #
219
+ # Neo4j.management(org.neo4j.management.HighAvailability).isMaster
220
+ #
221
+ # @param jmx_clazz the JMX class http://api.neo4j.org/current/org/neo4j/management/package-summary.html
222
+ # @param this_db default currently runnig instance or a newly started neo4j db instance
223
+ # @see for the jmx_clazz p
224
+ def management(jmx_clazz = org.neo4j.jmx.Primitives, this_db = self.started_db)
225
+ this_db.management(jmx_clazz)
226
+ end
227
+
228
+ # @return [Enumerable] all nodes in the database
229
+ def all_nodes(this_db = self.started_db)
230
+ Enumerable::Enumerator.new(this_db, :each_node)
231
+ end
232
+
233
+ # @return [Enumerable] all nodes in the database but not wrapped in ruby classes.
234
+ def _all_nodes(this_db = self.started_db)
235
+ Enumerator.new(this_db, :_each_node)
236
+ end
237
+
238
+ # @return [Neo4j::Core::EventHandler] the event handler
239
+ def event_handler(this_db = db)
240
+ this_db.event_handler
241
+ end
242
+
243
+ end
244
+ end