neo4j-core 3.1.1 → 4.0.0

Sign up to get free protection for your applications and to get access to all the features.
Files changed (47) hide show
  1. checksums.yaml +4 -4
  2. data/Gemfile +7 -12
  3. data/README.md +7 -7
  4. data/lib/neo4j-core.rb +3 -2
  5. data/lib/neo4j-core/active_entity.rb +8 -10
  6. data/lib/neo4j-core/cypher_translator.rb +61 -59
  7. data/lib/neo4j-core/hash_with_indifferent_access.rb +31 -22
  8. data/lib/neo4j-core/helpers.rb +15 -17
  9. data/lib/neo4j-core/label.rb +7 -6
  10. data/lib/neo4j-core/query.rb +271 -268
  11. data/lib/neo4j-core/query_clauses.rb +371 -355
  12. data/lib/neo4j-core/query_find_in_batches.rb +26 -26
  13. data/lib/neo4j-core/version.rb +1 -1
  14. data/lib/neo4j-embedded.rb +2 -2
  15. data/lib/neo4j-embedded/cypher_response.rb +40 -41
  16. data/lib/neo4j-embedded/embedded_database.rb +21 -22
  17. data/lib/neo4j-embedded/embedded_ha_session.rb +13 -11
  18. data/lib/neo4j-embedded/embedded_impermanent_session.rb +9 -8
  19. data/lib/neo4j-embedded/embedded_label.rb +64 -70
  20. data/lib/neo4j-embedded/embedded_node.rb +68 -73
  21. data/lib/neo4j-embedded/embedded_relationship.rb +6 -13
  22. data/lib/neo4j-embedded/embedded_session.rb +128 -132
  23. data/lib/neo4j-embedded/embedded_transaction.rb +34 -33
  24. data/lib/neo4j-embedded/property.rb +84 -77
  25. data/lib/neo4j-embedded/to_java.rb +24 -23
  26. data/lib/neo4j-server.rb +1 -1
  27. data/lib/neo4j-server/cypher_authentication.rb +105 -103
  28. data/lib/neo4j-server/cypher_label.rb +25 -23
  29. data/lib/neo4j-server/cypher_node.rb +180 -177
  30. data/lib/neo4j-server/cypher_node_uncommited.rb +11 -9
  31. data/lib/neo4j-server/cypher_relationship.rb +101 -102
  32. data/lib/neo4j-server/cypher_response.rb +171 -170
  33. data/lib/neo4j-server/cypher_session.rb +209 -205
  34. data/lib/neo4j-server/cypher_transaction.rb +66 -48
  35. data/lib/neo4j-server/resource.rb +17 -22
  36. data/lib/neo4j/entity_equality.rb +3 -4
  37. data/lib/neo4j/label.rb +13 -16
  38. data/lib/neo4j/node.rb +30 -34
  39. data/lib/neo4j/property_container.rb +3 -3
  40. data/lib/neo4j/property_validator.rb +4 -5
  41. data/lib/neo4j/relationship.rb +17 -22
  42. data/lib/neo4j/session.rb +19 -21
  43. data/lib/neo4j/tasks/config_server.rb +2 -3
  44. data/lib/neo4j/tasks/neo4j_server.rake +82 -74
  45. data/lib/neo4j/transaction.rb +23 -22
  46. data/neo4j-core.gemspec +21 -16
  47. metadata +72 -2
@@ -1,41 +1,41 @@
1
- module Neo4j::Core
2
- module QueryFindInBatches
1
+ module Neo4j
2
+ module Core
3
+ module QueryFindInBatches
4
+ def find_in_batches(node_var, prop_var, options = {})
5
+ invalid_keys = options.keys.map(&:to_sym) - [:batch_size]
6
+ fail ArgumentError, "Invalid keys: #{invalid_keys.join(', ')}" if not invalid_keys.empty?
3
7
 
4
- def find_in_batches(node_var, prop_var, options = {})
5
- invalid_keys = options.keys.map(&:to_sym) - [:batch_size]
6
- raise ArgumentError, "Invalid keys: #{invalid_keys.join(', ')}" if not invalid_keys.empty?
8
+ batch_size = options.delete(:batch_size) || 1000
7
9
 
8
- batch_size = options.delete(:batch_size) || 1000
10
+ query = reorder(node_var => prop_var).limit(batch_size)
9
11
 
10
- query = self.reorder(node_var => prop_var).limit(batch_size)
12
+ records = query.to_a
11
13
 
12
- records = query.to_a
13
-
14
- while records.any?
15
- records_size = records.size
16
- primary_key_offset = begin
17
- records.last.send(node_var).send(prop_var)
18
- rescue NoMethodError
19
- begin
20
- records.last.send(node_var)[prop_var.to_sym]
14
+ while records.any?
15
+ records_size = records.size
16
+ primary_key_offset = begin
17
+ records.last.send(node_var).send(prop_var)
21
18
  rescue NoMethodError
22
- records.last.send("#{node_var}.#{prop_var}") # In case we're explicitly returning it
19
+ begin
20
+ records.last.send(node_var)[prop_var.to_sym]
21
+ rescue NoMethodError
22
+ records.last.send("#{node_var}.#{prop_var}") # In case we're explicitly returning it
23
+ end
23
24
  end
24
- end
25
25
 
26
- yield records
26
+ yield records
27
27
 
28
- break if records_size < batch_size
28
+ break if records_size < batch_size
29
29
 
30
- records = query.where("#{node_var}.#{prop_var} > {primary_key_offset}").params(primary_key_offset: primary_key_offset).to_a
30
+ records = query.where("#{node_var}.#{prop_var} > {primary_key_offset}").params(primary_key_offset: primary_key_offset).to_a
31
+ end
31
32
  end
32
- end
33
33
 
34
- def find_each(*args)
35
- find_in_batches(*args) do |batch|
36
- batch.each { |result| yield result }
34
+ def find_each(*args)
35
+ find_in_batches(*args) do |batch|
36
+ batch.each { |result| yield result }
37
+ end
37
38
  end
38
39
  end
39
40
  end
40
41
  end
41
-
@@ -1,5 +1,5 @@
1
1
  module Neo4j
2
2
  module Core
3
- VERSION = "3.1.1"
3
+ VERSION = '4.0.0'
4
4
  end
5
5
  end
@@ -11,5 +11,5 @@ require 'neo4j-embedded/embedded_label'
11
11
  require 'neo4j-embedded/embedded_transaction'
12
12
  require 'neo4j-embedded/cypher_response'
13
13
 
14
- # TODO replace this with https://github.com/intridea/hashie gem
15
- require 'neo4j-core/hash_with_indifferent_access'
14
+ # TODO: replace this with https://github.com/intridea/hashie gem
15
+ require 'neo4j-core/hash_with_indifferent_access'
@@ -1,53 +1,52 @@
1
- module Neo4j::Embedded
2
-
3
- # Wraps the Cypher query result.
4
- # Loads the node and relationships wrapper if possible and use symbol as column keys.
5
- # This is typically used in the native neo4j bindings since result does is not a Ruby enumerable with symbols as keys.
6
- # @note The result is a once forward read only Enumerable, work if you need to read the result twice - use #to_a
7
- #
8
- class ResultWrapper
9
- class ResultsAlreadyConsumedException < Exception;
10
- end
11
-
12
- include Enumerable
1
+ module Neo4j
2
+ module Embedded
3
+ # Wraps the Cypher query result.
4
+ # Loads the node and relationships wrapper if possible and use symbol as column keys.
5
+ # This is typically used in the native neo4j bindings since result does is not a Ruby enumerable with symbols as keys.
6
+ # @note The result is a once forward read only Enumerable, work if you need to read the result twice - use #to_a
7
+ #
8
+ class ResultWrapper
9
+ class ResultsAlreadyConsumedException < Exception
10
+ end
13
11
 
14
- # @return the original result from the Neo4j Cypher Engine, once forward read only !
15
- attr_reader :source
12
+ include Enumerable
16
13
 
17
- def initialize(source, query)
18
- @source = source
19
- @struct = Struct.new(*source.columns.to_a.map(&:to_sym))
20
- @unread = true
21
- @query = query
22
- end
14
+ # @return the original result from the Neo4j Cypher Engine, once forward read only !
15
+ attr_reader :source
23
16
 
24
- def to_s
25
- @query
26
- end
17
+ def initialize(source, query)
18
+ @source = source
19
+ @struct = Struct.new(*source.columns.to_a.map(&:to_sym))
20
+ @unread = true
21
+ @query = query
22
+ end
27
23
 
28
- def inspect
29
- "Enumerable query: '#{@query}'"
30
- end
24
+ def to_s
25
+ @query
26
+ end
31
27
 
32
- # @return [Array<Symbol>] the columns in the query result
33
- def columns
34
- @source.columns.map(&:to_sym)
35
- end
28
+ def inspect
29
+ "Enumerable query: '#{@query}'"
30
+ end
36
31
 
37
- def each
38
- raise ResultsAlreadyConsumedException unless @unread
32
+ # @return [Array<Symbol>] the columns in the query result
33
+ def columns
34
+ @source.columns.map(&:to_sym)
35
+ end
39
36
 
40
- if block_given?
41
- @source.each do |row|
42
- yield(row.each_with_object(@struct.new) do |(column, value), result|
43
- result[column.to_sym] = (value.respond_to?(:wrapper) ? value.wrapper : value)
44
- end)
37
+ def each
38
+ fail ResultsAlreadyConsumedException unless @unread
39
+
40
+ if block_given?
41
+ @source.each do |row|
42
+ yield(row.each_with_object(@struct.new) do |(column, value), result|
43
+ result[column.to_sym] = (value.respond_to?(:wrapper) ? value.wrapper : value)
44
+ end)
45
+ end
46
+ else
47
+ Enumerator.new(self)
45
48
  end
46
- else
47
- Enumerator.new(self)
48
49
  end
49
50
  end
50
-
51
51
  end
52
52
  end
53
-
@@ -1,29 +1,28 @@
1
- module Neo4j::Embedded
2
- class EmbeddedDatabase
3
-
4
- class Error < StandardError
5
- end
1
+ module Neo4j
2
+ module Embedded
3
+ class EmbeddedDatabase
4
+ class Error < StandardError
5
+ end
6
6
 
7
- class << self
8
- def connect(db_location, config={})
9
- if Neo4j::Session.current.respond_to?(:db_location) && Neo4j::Session.current.db_location == db_location
10
- return Neo4j::Session.current
11
- else
12
- EmbeddedSession.new(db_location, config)
7
+ class << self
8
+ def connect(db_location, config = {})
9
+ if Neo4j::Session.current.respond_to?(:db_location) && Neo4j::Session.current.db_location == db_location
10
+ return Neo4j::Session.current
11
+ else
12
+ EmbeddedSession.new(db_location, config)
13
+ end
13
14
  end
14
- end
15
15
 
16
- def create_db(db_location)
17
- puts "Start embedded Neo4j db at #{db_location}"
18
- factory = Java::OrgNeo4jGraphdbFactory::GraphDatabaseFactory.new
19
- factory.newEmbeddedDatabase(db_location)
20
- end
16
+ def create_db(db_location)
17
+ puts "Start embedded Neo4j db at #{db_location}"
18
+ factory = Java::OrgNeo4jGraphdbFactory::GraphDatabaseFactory.new
19
+ factory.newEmbeddedDatabase(db_location)
20
+ end
21
21
 
22
- def factory_class
23
- Java::OrgNeo4jGraphdbFactory::GraphDatabaseFactory
24
- Java::OrgNeo4jTest::ImpermanentGraphDatabase
22
+ def factory_class
23
+ Java::OrgNeo4jTest::ImpermanentGraphDatabase
24
+ end
25
25
  end
26
-
27
26
  end
28
27
  end
29
- end
28
+ end
@@ -4,18 +4,20 @@ Neo4j::Session.register_db(:ha_db) do |*args|
4
4
  Neo4j::Embedded::EmbeddedHaSession.new(*args)
5
5
  end
6
6
 
7
- module Neo4j::Embedded
8
- class EmbeddedHaSession < EmbeddedSession
9
- def start
10
- raise Error.new("Embedded HA Neo4j db is already running") if running?
11
- puts "Start embedded HA Neo4j db at #{db_location}"
12
- factory = Java::OrgNeo4jGraphdbFactory::HighlyAvailableGraphDatabaseFactory.new
13
- db_service = factory.newHighlyAvailableDatabaseBuilder(db_location)
7
+ module Neo4j
8
+ module Embedded
9
+ class EmbeddedHaSession < EmbeddedSession
10
+ def start
11
+ fail Error, 'Embedded HA Neo4j db is already running' if running?
12
+ puts "Start embedded HA Neo4j db at #{db_location}"
13
+ factory = Java::OrgNeo4jGraphdbFactory::HighlyAvailableGraphDatabaseFactory.new
14
+ db_service = factory.newHighlyAvailableDatabaseBuilder(db_location)
14
15
 
15
- raise Error.new("Need properties file for HA configuration") unless properties_file
16
- db_service.loadPropertiesFromFile(properties_file)
17
- @graph_db = db_service.newGraphDatabase()
18
- Neo4j::Session._notify_listeners(:session_available, self)
16
+ fail Error, 'Need properties file for HA configuration' unless properties_file
17
+ db_service.loadPropertiesFromFile(properties_file)
18
+ @graph_db = db_service.newGraphDatabase
19
+ Neo4j::Session._notify_listeners(:session_available, self)
20
+ end
19
21
  end
20
22
  end
21
23
  end
@@ -4,14 +4,15 @@ Neo4j::Session.register_db(:impermanent_db) do |*args|
4
4
  Neo4j::Embedded::EmbeddedImpermanentSession.new(*args)
5
5
  end
6
6
 
7
- module Neo4j::Embedded
8
- class EmbeddedImpermanentSession < EmbeddedSession
9
- def start
10
- raise Error.new("Embedded Neo4j db is already running") if running?
11
- #puts "Start test impermanent embedded Neo4j db at #{db_location}"
12
- @graph_db = Java::OrgNeo4jTest::TestGraphDatabaseFactory.new.newImpermanentDatabase()
13
- Neo4j::Session._notify_listeners(:session_available, self)
7
+ module Neo4j
8
+ module Embedded
9
+ class EmbeddedImpermanentSession < EmbeddedSession
10
+ def start
11
+ fail Error, 'Embedded Neo4j db is already running' if running?
12
+ # puts "Start test impermanent embedded Neo4j db at #{db_location}"
13
+ @graph_db = Java::OrgNeo4jTest::TestGraphDatabaseFactory.new.newImpermanentDatabase
14
+ Neo4j::Session._notify_listeners(:session_available, self)
15
+ end
14
16
  end
15
17
  end
16
18
  end
17
-
@@ -1,92 +1,86 @@
1
- module Neo4j::Embedded
2
- class EmbeddedLabel < Neo4j::Label
3
- extend Neo4j::Core::TxMethods
4
- attr_reader :name
5
- JAVA_CLASS = Java::OrgNeo4jGraphdb::DynamicLabel
6
-
7
- def initialize(session, name)
8
- @name = name.to_sym
9
- @session = session
10
- end
1
+ module Neo4j
2
+ module Embedded
3
+ class EmbeddedLabel < Neo4j::Label
4
+ extend Neo4j::Core::TxMethods
5
+ attr_reader :name
6
+ JAVA_CLASS = Java::OrgNeo4jGraphdb::DynamicLabel
7
+
8
+ def initialize(session, name)
9
+ @name = name.to_sym
10
+ @session = session
11
+ end
11
12
 
12
- def to_s
13
- @name
14
- end
13
+ def to_s
14
+ @name
15
+ end
15
16
 
16
- def find_nodes(key=nil, value=nil)
17
- begin
18
- iterator = _find_nodes(key,value)
19
- iterator.to_a.map{|n| n.wrapper}
17
+ def find_nodes(key = nil, value = nil)
18
+ iterator = _find_nodes(key, value)
19
+ iterator.to_a.map(&:wrapper)
20
20
  ensure
21
21
  iterator && iterator.close
22
22
  end
23
- end
24
- tx_methods :find_nodes
23
+ tx_methods :find_nodes
25
24
 
26
- def _find_nodes(key=nil, value=nil)
27
- if (key)
28
- @session.graph_db.find_nodes_by_label_and_property(as_java, key, value).iterator
29
- else
30
- ggo = Java::OrgNeo4jTooling::GlobalGraphOperations.at(@session.graph_db)
31
- ggo.getAllNodesWithLabel(as_java).iterator
25
+ def _find_nodes(key = nil, value = nil)
26
+ if key
27
+ @session.graph_db.find_nodes_by_label_and_property(as_java, key, value).iterator
28
+ else
29
+ ggo = Java::OrgNeo4jTooling::GlobalGraphOperations.at(@session.graph_db)
30
+ ggo.getAllNodesWithLabel(as_java).iterator
31
+ end
32
32
  end
33
33
 
34
- end
35
-
36
- def as_java
37
- self.class.as_java(@name.to_s)
38
- end
34
+ def as_java
35
+ self.class.as_java(@name.to_s)
36
+ end
39
37
 
40
- def create_index(*properties)
38
+ def create_index(*properties)
41
39
  index_creator = @session.graph_db.schema.index_for(as_java)
42
- # we can also use the PropertyConstraintCreator here
43
- properties.inject(index_creator) {|creator, key| creator.on(key.to_s)}.create
44
- end
45
- tx_methods :create_index
40
+ # we can also use the PropertyConstraintCreator here
41
+ properties.inject(index_creator) { |creator, key| creator.on(key.to_s) }.create
42
+ end
43
+ tx_methods :create_index
46
44
 
47
- def indexes()
48
- {
45
+ def indexes
46
+ {
49
47
  property_keys: @session.graph_db.schema.indexes(as_java).map do |index_def|
50
- index_def.property_keys.map{|x| x.to_sym}
48
+ index_def.property_keys.map(&:to_sym)
51
49
  end
52
- }
53
- end
54
- tx_methods :indexes
55
-
56
- def uniqueness_constraints()
57
- {
58
- property_keys: @session.graph_db.schema.constraints(as_java).select do |index_def|
59
- index_def.is_a?(Java::OrgNeo4jKernelImplCoreapiSchema::PropertyUniqueConstraintDefinition)
60
- end.map do |index_def|
61
- index_def.property_keys.map{|x| x.to_sym}
62
- end
63
- }
64
- end
65
- tx_methods :uniqueness_constraints
66
-
67
-
68
- def drop_index(*properties)
69
- @session.graph_db.schema.indexes(as_java).each do |index_def|
70
- # at least one match, TODO
71
- keys = index_def.property_keys.map{|x| x.to_sym}
72
- index_def.drop if (properties - keys).count < properties.count
50
+ }
73
51
  end
52
+ tx_methods :indexes
74
53
 
75
- end
76
- tx_methods :drop_index
54
+ def uniqueness_constraints
55
+ definitions = @session.graph_db.schema.constraints(as_java).select do |index_def|
56
+ index_def.is_a?(Java::OrgNeo4jKernelImplCoreapiSchema::PropertyUniqueConstraintDefinition)
57
+ end
58
+ {
59
+ property_keys: definitions.map { |index_def| index_def.property_keys.map(&:to_sym) }
60
+ }
61
+ end
62
+ tx_methods :uniqueness_constraints
77
63
 
78
- class << self
79
64
 
80
- def as_java(labels)
81
- if labels.is_a?(Array)
82
- return nil if labels.empty?
83
- labels.inject([]) { |result, label| result << JAVA_CLASS.label(label.to_s) }.to_java(JAVA_CLASS)
84
- else
85
- JAVA_CLASS.label(labels.to_s)
65
+ def drop_index(*properties)
66
+ @session.graph_db.schema.indexes(as_java).each do |index_def|
67
+ # at least one match, TODO
68
+ keys = index_def.property_keys.map(&:to_sym)
69
+ index_def.drop if (properties - keys).count < properties.count
70
+ end
71
+ end
72
+ tx_methods :drop_index
73
+
74
+ class << self
75
+ def as_java(labels)
76
+ if labels.is_a?(Array)
77
+ return nil if labels.empty?
78
+ labels.inject([]) { |result, label| result << JAVA_CLASS.label(label.to_s) }.to_java(JAVA_CLASS)
79
+ else
80
+ JAVA_CLASS.label(labels.to_s)
81
+ end
86
82
  end
87
83
  end
88
84
  end
89
85
  end
90
-
91
86
  end
92
-
@@ -1,57 +1,55 @@
1
- module Neo4j::Embedded
2
- class RelsIterator
3
- include Enumerable
4
- extend Neo4j::Core::TxMethods
5
-
6
- def initialize(node, match)
7
- @node = node
8
- @match = match
9
- end
1
+ module Neo4j
2
+ module Embedded
3
+ class RelsIterator
4
+ include Enumerable
5
+ extend Neo4j::Core::TxMethods
6
+
7
+ def initialize(node, match)
8
+ @node = node
9
+ @match = match
10
+ end
10
11
 
11
- def inspect
12
- "Enumerable<Neo4j::Relationship>"
13
- end
12
+ def inspect
13
+ 'Enumerable<Neo4j::Relationship>'
14
+ end
14
15
 
15
- def each(&block)
16
- @node._rels(@match).each {|r| block.call(r.wrapper)}
17
- end
18
- tx_methods :each
16
+ def each(&block)
17
+ @node._rels(@match).each { |r| block.call(r.wrapper) }
18
+ end
19
+ tx_methods :each
19
20
 
20
- def empty?
21
- first == nil
21
+ def empty?
22
+ first.nil?
23
+ end
22
24
  end
23
25
 
24
- end
25
-
26
- class NodesIterator
27
- include Enumerable
28
- extend Neo4j::Core::TxMethods
26
+ class NodesIterator
27
+ include Enumerable
28
+ extend Neo4j::Core::TxMethods
29
29
 
30
- def initialize(node, match)
31
- @node = node
32
- @match = match
33
- end
30
+ def initialize(node, match)
31
+ @node = node
32
+ @match = match
33
+ end
34
34
 
35
- def inspect
36
- "Enumerable<Neo4j::Node>"
37
- end
35
+ def inspect
36
+ 'Enumerable<Neo4j::Node>'
37
+ end
38
38
 
39
- def each(&block)
40
- @node._rels(@match).each {|r| block.call(r.other_node(@node))}
41
- end
42
- tx_methods :each
39
+ def each(&block)
40
+ @node._rels(@match).each { |r| block.call(r.other_node(@node)) }
41
+ end
42
+ tx_methods :each
43
43
 
44
- def empty?
45
- first == nil
44
+ def empty?
45
+ first.nil?
46
+ end
46
47
  end
47
48
 
48
- end
49
-
50
- class EmbeddedNode
51
- class << self
52
- # This method is used to extend a Java Neo4j class so that it includes the same mixins as this class.
53
- def extend_java_class(java_clazz)
54
- java_clazz.class_eval do
49
+ class EmbeddedNode
50
+ class << self
51
+ # This method is used to extend a Java Neo4j class so that it includes the same mixins as this class.
52
+ Java::OrgNeo4jKernelImplCore::NodeProxy.class_eval do
55
53
  include Neo4j::Embedded::Property
56
54
  include Neo4j::EntityEquality
57
55
  include Neo4j::Core::ActiveEntity
@@ -69,7 +67,7 @@ module Neo4j::Embedded
69
67
  tx_methods :exist?
70
68
 
71
69
  def labels
72
- _labels.iterator.map{|x| x.name.to_sym}
70
+ _labels.iterator.map { |x| x.name.to_sym }
73
71
  end
74
72
  tx_methods :labels
75
73
 
@@ -108,7 +106,7 @@ module Neo4j::Embedded
108
106
  tx_methods :set_label
109
107
 
110
108
  def del
111
- _rels.each { |r| r.del }
109
+ _rels.each(&:del)
112
110
  delete
113
111
  nil
114
112
  end
@@ -126,72 +124,72 @@ module Neo4j::Embedded
126
124
  tx_methods :create_rel
127
125
 
128
126
 
129
- def rels(match={})
127
+ def rels(match = {})
130
128
  RelsIterator.new(self, match)
131
129
  end
132
130
 
133
- def nodes(match={})
131
+ def nodes(match = {})
134
132
  NodesIterator.new(self, match)
135
133
  end
136
134
 
137
- def node(match={})
135
+ def node(match = {})
138
136
  rel = _rel(match)
139
137
  rel && rel.other_node(self).wrapper
140
138
  end
141
139
  tx_methods :node
142
140
 
143
- def rel?(match={})
141
+ def rel?(match = {})
144
142
  _rels(match).has_next
145
143
  end
146
144
  tx_methods :rel?
147
145
 
148
- def rel(match={})
146
+ def rel(match = {})
149
147
  _rel(match)
150
148
  end
151
149
  tx_methods :rel
152
150
 
153
- def _rel(match={})
154
- dir = match[:dir] || :both
151
+ def _rel(match = {})
152
+ dir = ToJava.dir_to_java(match[:dir] || :both)
155
153
  rel_type = match[:type]
156
154
 
157
155
  rel = if rel_type
158
- get_single_relationship(ToJava.type_to_java(rel_type), ToJava.dir_to_java(dir))
156
+ get_single_relationship(ToJava.type_to_java(rel_type), dir)
159
157
  else
160
- iter = get_relationships(ToJava.dir_to_java(dir)).iterator
161
- if (iter.has_next)
162
- first = iter.next
163
- raise "Expected to only find one relationship from node #{neo_id} matching #{match.inspect}" if iter.has_next
164
- first
165
- end
166
- end
158
+ iter = get_relationships(dir).iterator
159
+
160
+ if iter.has_next
161
+ first = iter.next
162
+ fail "Expected to only find one relationship from node #{neo_id} matching #{match.inspect}" if iter.has_next
163
+ first
164
+ end
165
+ end
167
166
 
168
167
  between_id = match[:between] && match[:between].neo_id
169
168
 
170
- if (rel && between_id)
171
- rel.other_node(self).neo_id == between_id ? rel : nil
169
+ if rel && between_id
170
+ rel if rel.other_node(self).neo_id == between_id
172
171
  else
173
172
  rel
174
173
  end
175
174
  end
176
175
 
177
- def _rels(match={})
176
+ def _rels(match = {})
178
177
  dir = match[:dir] || :both
179
178
  rel_type = match[:type]
180
179
 
181
180
  rels = if rel_type
182
- get_relationships(ToJava.type_to_java(rel_type), ToJava.dir_to_java(dir)).iterator
183
- else
184
- get_relationships(ToJava.dir_to_java(dir)).iterator
185
- end
181
+ get_relationships(ToJava.type_to_java(rel_type), ToJava.dir_to_java(dir)).iterator
182
+ else
183
+ get_relationships(ToJava.dir_to_java(dir)).iterator
184
+ end
186
185
 
187
186
  between_id = match[:between] && match[:between].neo_id
188
187
 
189
- if (between_id)
190
- rels.find_all{|r| r.end_node.neo_id == between_id || r.start_node.neo_id == between_id}
188
+ if between_id
189
+ rels.find_all { |r| r.end_node.neo_id == between_id || r.start_node.neo_id == between_id }
191
190
  else
192
191
  rels
193
192
  end
194
-
195
193
  end
196
194
 
197
195
  def class
@@ -202,8 +200,5 @@ module Neo4j::Embedded
202
200
  end
203
201
  end
204
202
  end
205
-
206
- extend_java_class(Java::OrgNeo4jKernelImplCore::NodeProxy)
207
203
  end
208
-
209
204
  end