neo4j-core 2.0.0.alpha.1-java → 2.0.0-java
Sign up to get free protection for your applications and to get access to all the features.
- data/Gemfile +2 -2
- data/README.rdoc +161 -13
- data/config/neo4j/config.yml +1 -1
- data/lib/db/active_tx_log +1 -0
- data/lib/db/index/lucene-store.db +0 -0
- data/lib/db/index/lucene.log.active +0 -0
- data/lib/db/messages.log +2299 -0
- data/lib/db/neostore +0 -0
- data/lib/db/neostore.id +0 -0
- data/lib/db/neostore.nodestore.db +0 -0
- data/lib/db/neostore.nodestore.db.id +0 -0
- data/lib/db/neostore.propertystore.db +0 -0
- data/lib/db/neostore.propertystore.db.arrays +0 -0
- data/lib/db/neostore.propertystore.db.arrays.id +0 -0
- data/lib/db/neostore.propertystore.db.id +0 -0
- data/lib/db/neostore.propertystore.db.index +0 -0
- data/lib/db/neostore.propertystore.db.index.id +0 -0
- data/lib/db/neostore.propertystore.db.index.keys +0 -0
- data/lib/db/neostore.propertystore.db.index.keys.id +0 -0
- data/lib/db/neostore.propertystore.db.strings +0 -0
- data/lib/db/neostore.propertystore.db.strings.id +0 -0
- data/lib/db/neostore.relationshipstore.db +0 -0
- data/lib/db/neostore.relationshipstore.db.id +0 -0
- data/lib/db/neostore.relationshiptypestore.db +0 -0
- data/lib/db/neostore.relationshiptypestore.db.id +0 -0
- data/lib/db/neostore.relationshiptypestore.db.names +0 -0
- data/lib/db/neostore.relationshiptypestore.db.names.id +0 -0
- data/lib/db/nioneo_logical.log.active +0 -0
- data/lib/db/tm_tx_log.1 +0 -0
- data/lib/neo4j-core.rb +20 -3
- data/lib/neo4j-core/cypher/cypher.rb +1033 -0
- data/lib/neo4j-core/cypher/result_wrapper.rb +48 -0
- data/lib/neo4j-core/database.rb +4 -5
- data/lib/neo4j-core/event_handler.rb +1 -1
- data/lib/neo4j-core/hash_with_indifferent_access.rb +165 -0
- data/lib/neo4j-core/index/class_methods.rb +27 -41
- data/lib/neo4j-core/index/index.rb +3 -4
- data/lib/neo4j-core/index/index_config.rb +30 -23
- data/lib/neo4j-core/index/indexer.rb +65 -53
- data/lib/neo4j-core/index/indexer_registry.rb +2 -2
- data/lib/neo4j-core/index/lucene_query.rb +53 -42
- data/lib/neo4j-core/index/unique_factory.rb +54 -0
- data/lib/neo4j-core/node/class_methods.rb +4 -4
- data/lib/neo4j-core/node/node.rb +1 -8
- data/lib/neo4j-core/property/java.rb +59 -0
- data/lib/neo4j-core/property/property.rb +1 -3
- data/lib/neo4j-core/relationship/relationship.rb +8 -10
- data/lib/neo4j-core/rels/rels.rb +9 -4
- data/lib/neo4j-core/rels/traverser.rb +13 -27
- data/lib/neo4j-core/traversal/prune_evaluator.rb +2 -2
- data/lib/neo4j-core/traversal/traverser.rb +122 -27
- data/lib/neo4j-core/version.rb +1 -1
- data/lib/neo4j-core/wrapper/class_methods.rb +22 -0
- data/lib/neo4j-core/wrapper/wrapper.rb +20 -0
- data/lib/neo4j/algo.rb +300 -0
- data/lib/neo4j/config.rb +3 -6
- data/lib/neo4j/cypher.rb +180 -0
- data/lib/neo4j/neo4j.rb +51 -23
- data/lib/neo4j/node.rb +27 -0
- data/lib/neo4j/relationship.rb +25 -0
- data/lib/test.rb~ +27 -0
- data/neo4j-core.gemspec +2 -2
- metadata +44 -11
- data/lib/neo4j-core/type_converters/type_converters.rb +0 -287
- data/lib/neo4j-core/version.rb~ +0 -3
- data/lib/test.rb +0 -27
@@ -5,9 +5,7 @@ module Neo4j
|
|
5
5
|
# @return [Hash] all properties plus the id of the node with the key <tt>_neo_id</tt>
|
6
6
|
def props
|
7
7
|
ret = {"_neo_id" => neo_id}
|
8
|
-
|
9
|
-
while (iter.hasNext) do
|
10
|
-
key = iter.next
|
8
|
+
property_keys.each do |key|
|
11
9
|
ret[key] = get_property(key)
|
12
10
|
end
|
13
11
|
ret
|
@@ -3,16 +3,19 @@ module Neo4j
|
|
3
3
|
module Relationship
|
4
4
|
|
5
5
|
# Same as Java::OrgNeo4jGraphdb::Relationship#getEndNode
|
6
|
+
# @see http://api.neo4j.org/1.6.1/org/neo4j/graphdb/Relationship.html#getEndNode()
|
6
7
|
def _end_node
|
7
8
|
get_end_node
|
8
9
|
end
|
9
10
|
|
10
11
|
# Same as Java::OrgNeo4jGraphdb::Relationship#getStartNode
|
12
|
+
# @see http://api.neo4j.org/1.6.1/org/neo4j/graphdb/Relationship.html#getStartNode()
|
11
13
|
def _start_node
|
12
14
|
get_start_node
|
13
15
|
end
|
14
16
|
|
15
17
|
# Same as Java::OrgNeo4jGraphdb::Relationship#getOtherNode
|
18
|
+
# @see http://api.neo4j.org/1.6.1/org/neo4j/graphdb/Relationship.html#getOtherNode()
|
16
19
|
def _other_node(node)
|
17
20
|
get_other_node(node)
|
18
21
|
end
|
@@ -49,6 +52,7 @@ module Neo4j
|
|
49
52
|
#
|
50
53
|
# @param [Neo4j::Node] node the node that we don't want to return
|
51
54
|
# @return [Neo4j::Node] the other node wrapper
|
55
|
+
# @see #_other_node
|
52
56
|
def other_node(node)
|
53
57
|
_other_node(node._java_node).wrapper
|
54
58
|
end
|
@@ -56,7 +60,7 @@ module Neo4j
|
|
56
60
|
|
57
61
|
# same as #_java_rel
|
58
62
|
# Used so that we have same method for both relationship and nodes
|
59
|
-
def
|
63
|
+
def _java_entity
|
60
64
|
self
|
61
65
|
end
|
62
66
|
|
@@ -70,21 +74,15 @@ module Neo4j
|
|
70
74
|
Neo4j::Relationship.exist?(self)
|
71
75
|
end
|
72
76
|
|
73
|
-
# Loads the wrapper using the #wrapper class method if it exists, otherwise return self.
|
74
|
-
def wrapper
|
75
|
-
self.class.respond_to?(:wrapper) ? self.class.wrapper(node) : self
|
76
|
-
end
|
77
|
-
|
78
|
-
|
79
77
|
# Returns the relationship name
|
80
78
|
#
|
81
79
|
# @example
|
82
80
|
# a = Neo4j::Node.new
|
83
81
|
# a.outgoing(:friends) << Neo4j::Node.new
|
84
|
-
# a.rels.first.rel_type # =>
|
85
|
-
# @return [
|
82
|
+
# a.rels.first.rel_type # => :friends
|
83
|
+
# @return [Symbol] the type of the relationship
|
86
84
|
def rel_type
|
87
|
-
getType().name()
|
85
|
+
getType().name().to_sym
|
88
86
|
end
|
89
87
|
|
90
88
|
def class
|
data/lib/neo4j-core/rels/rels.rb
CHANGED
@@ -2,6 +2,8 @@ module Neo4j
|
|
2
2
|
module Core
|
3
3
|
# Contains methods for traversing relationship object of depth one from one node.
|
4
4
|
module Rels
|
5
|
+
|
6
|
+
|
5
7
|
# Returns the only node of a given type and direction that is attached to this node, or nil.
|
6
8
|
# This is a convenience method that is used in the commonly occuring situation where a node has exactly zero or one relationships of a given type and direction to another node.
|
7
9
|
# Typically this invariant is maintained by the rest of the code: if at any time more than one such relationships exist, it is a fatal error that should generate an exception.
|
@@ -76,7 +78,9 @@ module Neo4j
|
|
76
78
|
#
|
77
79
|
# @see Neo4j::Core::Node#wrapper #wrapper - The method used wrap to the node in a Ruby object if the node was found
|
78
80
|
# @see Neo4j::Relationship#rel_type
|
79
|
-
|
81
|
+
# @raise an exception if the first parameter is not <tt>:both</tt>, <tt>;outgoing</tt> or <tt>:incoming</tt>
|
82
|
+
def rels(dir=:both, *types)
|
83
|
+
raise "Illegal argument, first argument must be :both, :incoming or :outgoing, got #{dir.inspect}" unless [:incoming, :outgoing, :both].include?(dir)
|
80
84
|
Neo4j::Core::Rels::Traverser.new(self, types, dir)
|
81
85
|
end
|
82
86
|
|
@@ -114,14 +118,15 @@ module Neo4j
|
|
114
118
|
# @return [Enumerable] of Neo4j::Relationship objects
|
115
119
|
def _rels(dir=:both, *types)
|
116
120
|
if types.size > 1
|
117
|
-
get_relationships(ToJava.dir_to_java(dir), ToJava.types_to_java(types))
|
121
|
+
get_relationships(ToJava.dir_to_java(dir), ToJava.types_to_java(types)).iterator
|
118
122
|
elsif types.size == 1
|
119
|
-
get_relationships(ToJava.type_to_java(types[0]), ToJava.dir_to_java(dir))
|
123
|
+
get_relationships(ToJava.type_to_java(types[0]), ToJava.dir_to_java(dir)).iterator
|
120
124
|
else
|
121
|
-
get_relationships(ToJava.dir_to_java(dir))
|
125
|
+
get_relationships(ToJava.dir_to_java(dir)).iterator
|
122
126
|
end
|
123
127
|
end
|
124
128
|
|
129
|
+
|
125
130
|
# Check if the given relationship exists
|
126
131
|
# Returns true if there are one or more relationships from this node to other nodes
|
127
132
|
# with the given relationship.
|
@@ -26,10 +26,8 @@ module Neo4j
|
|
26
26
|
|
27
27
|
# Implements the Ruby Enumerable mixin
|
28
28
|
def each
|
29
|
-
|
30
|
-
|
31
|
-
rel = iter.next
|
32
|
-
yield rel.wrapper if match_to_other?(rel)
|
29
|
+
iterator.each do |rel|
|
30
|
+
yield rel.wrapper if match_between?(rel)
|
33
31
|
end
|
34
32
|
end
|
35
33
|
|
@@ -43,42 +41,30 @@ module Neo4j
|
|
43
41
|
@node._rels(@dir, *@types)
|
44
42
|
end
|
45
43
|
|
46
|
-
# @return [Fixnum] the size of all matched relationship, also check if it #to_other node
|
47
|
-
# @see #to_other
|
48
|
-
def size
|
49
|
-
c = 0
|
50
|
-
iter = iterator
|
51
|
-
while (iter.has_next())
|
52
|
-
rel = iter.next
|
53
|
-
next unless match_to_other?(rel)
|
54
|
-
c += 1
|
55
|
-
end
|
56
|
-
c
|
57
|
-
end
|
58
|
-
|
59
|
-
|
60
44
|
# @return [true,false] true if it match the specified other node
|
61
|
-
# @see #
|
62
|
-
def
|
63
|
-
if @
|
45
|
+
# @see #between
|
46
|
+
def match_between?(rel)
|
47
|
+
if @between.nil?
|
64
48
|
true
|
65
49
|
elsif @dir == :outgoing
|
66
|
-
rel._end_node == @
|
50
|
+
rel._end_node == @between
|
67
51
|
elsif @dir == :incoming
|
68
|
-
rel._start_node == @
|
52
|
+
rel._start_node == @between
|
69
53
|
else
|
70
|
-
rel._start_node == @
|
54
|
+
rel._start_node == @between || rel._end_node == @between
|
71
55
|
end
|
72
56
|
end
|
73
57
|
|
74
58
|
# Specifies that we only want relationship to the given node
|
75
|
-
# @param [Neo4j::Node]
|
59
|
+
# @param [Neo4j::Node] between a node or an object that implements the Neo4j::Core::Equal mixin
|
76
60
|
# @return self
|
77
|
-
def
|
78
|
-
@
|
61
|
+
def between(between)
|
62
|
+
@between = between
|
79
63
|
self
|
80
64
|
end
|
81
65
|
|
66
|
+
alias_method :to_other, :between
|
67
|
+
|
82
68
|
# Deletes all the relationships
|
83
69
|
def del
|
84
70
|
each { |rel| rel.del }
|
@@ -1,9 +1,9 @@
|
|
1
1
|
module Neo4j
|
2
2
|
module Core
|
3
3
|
|
4
|
-
# Implements the Neo4j PruneEvaluator Java interface, only used internally.
|
5
|
-
# @private
|
6
4
|
module Traversal
|
5
|
+
# Implements the Neo4j PruneEvaluator Java interface, only used internally.
|
6
|
+
# @private
|
7
7
|
class PruneEvaluator
|
8
8
|
include Java::OrgNeo4jGraphdbTraversal::PruneEvaluator
|
9
9
|
|
@@ -2,6 +2,54 @@ module Neo4j
|
|
2
2
|
module Core
|
3
3
|
module Traversal
|
4
4
|
|
5
|
+
class CypherQuery
|
6
|
+
include Enumerable
|
7
|
+
attr_accessor :query, :return_variable
|
8
|
+
|
9
|
+
def initialize(start_id, dir, types, query_hash=nil, &block)
|
10
|
+
this = self
|
11
|
+
|
12
|
+
rel_type = ":#{types.map{|x| "`#{x}`"}.join('|')}"
|
13
|
+
|
14
|
+
@query = Neo4j::Cypher.new do
|
15
|
+
default_ret = node(:default_ret)
|
16
|
+
n = node(start_id)
|
17
|
+
case dir
|
18
|
+
when :outgoing then
|
19
|
+
n > rel_type > default_ret
|
20
|
+
when :incoming then
|
21
|
+
n < rel_type < default_ret
|
22
|
+
when :both then
|
23
|
+
n - rel_type - default_ret
|
24
|
+
end
|
25
|
+
|
26
|
+
# where statement
|
27
|
+
ret_maybe = block && self.instance_exec(default_ret, &block)
|
28
|
+
ret = ret_maybe.respond_to?(:var_name) ? ret_maybe : default_ret
|
29
|
+
if query_hash
|
30
|
+
expr = []
|
31
|
+
query_hash.each{|pair| expr << (ret[pair[0]] == pair[1])}.to_a
|
32
|
+
expr.each_with_index do |obj, i|
|
33
|
+
Neo4j::Core::Cypher::ExprOp.new(obj, expr[i+1], "and") if i < expr.size - 1
|
34
|
+
end
|
35
|
+
end
|
36
|
+
|
37
|
+
this.return_variable = ret.var_name.to_sym
|
38
|
+
ret
|
39
|
+
end.to_s
|
40
|
+
end
|
41
|
+
|
42
|
+
def to_s
|
43
|
+
@query
|
44
|
+
end
|
45
|
+
|
46
|
+
def each
|
47
|
+
Neo4j._query(query).each do |r|
|
48
|
+
yield r[return_variable]
|
49
|
+
end
|
50
|
+
end
|
51
|
+
end
|
52
|
+
|
5
53
|
# By using this class you can both specify traversals and create new relationships.
|
6
54
|
# This object is return from the Neo4j::Core::Traversal methods.
|
7
55
|
# @see Neo4j::Core::Traversal#outgoing
|
@@ -17,14 +65,27 @@ module Neo4j
|
|
17
65
|
if type.nil?
|
18
66
|
raise "Traversing all relationship in direction #{dir.inspect} not supported, only :both supported" unless dir == :both
|
19
67
|
@td = Java::OrgNeo4jKernelImplTraversal::TraversalDescriptionImpl.new.breadth_first()
|
68
|
+
elsif (dir == :both)
|
69
|
+
both(type)
|
70
|
+
elsif (dir == :incoming)
|
71
|
+
incoming(type)
|
72
|
+
elsif (dir == :outgoing)
|
73
|
+
outgoing(type)
|
20
74
|
else
|
21
|
-
|
22
|
-
@dir = dir_to_java(dir)
|
23
|
-
@td = Java::OrgNeo4jKernelImplTraversal::TraversalDescriptionImpl.new.breadth_first().relationships(@type, @dir)
|
75
|
+
raise "Illegal direction #{dir.inspect}, expected :outgoing, :incoming or :both"
|
24
76
|
end
|
25
77
|
end
|
26
78
|
|
27
79
|
|
80
|
+
def query(query_hash = nil, &block)
|
81
|
+
# only one direction is supported
|
82
|
+
rel_types = [@outgoing_rel_types, @incoming_rel_types, @both_rel_types].find_all { |x| !x.nil? }
|
83
|
+
raise "Only one direction is allowed, outgoing:#{@outgoing_rel_types}, incoming:#{@incoming_rel_types}, @both:#{@both_rel_types}" if rel_types.count != 1
|
84
|
+
start_id = @from.neo_id
|
85
|
+
dir = (@outgoing_rel_types && :outgoing) || (@incoming_rel_types && :incoming) || (@both_rel_types && :both)
|
86
|
+
CypherQuery.new(start_id, dir, rel_types.first, query_hash, &block)
|
87
|
+
end
|
88
|
+
|
28
89
|
# Sets traversing depth first.
|
29
90
|
#
|
30
91
|
# The <tt>pre_or_post</tt> parameter parameter can have two values: :pre or :post
|
@@ -112,11 +173,19 @@ module Neo4j
|
|
112
173
|
end
|
113
174
|
|
114
175
|
def to_s
|
115
|
-
"NodeTraverser [from: #{@from.neo_id} depth: #{@depth}
|
176
|
+
"NodeTraverser [from: #{@from.neo_id} depth: #{@depth}"
|
116
177
|
end
|
117
178
|
|
118
179
|
|
119
180
|
# Creates a new relationship between given node and self
|
181
|
+
# It can create more then one relationship
|
182
|
+
#
|
183
|
+
# @example One outgoing relationships
|
184
|
+
# node.outgoing(:foo) << other_node
|
185
|
+
#
|
186
|
+
# @example Two outgoing relationships
|
187
|
+
# node.outgoing(:foo).outgoing(:bar) << other_node
|
188
|
+
#
|
120
189
|
# @param [Neo4j::Node] other_node the node to which we want to create a relationship
|
121
190
|
# @return (see #new)
|
122
191
|
def <<(other_node)
|
@@ -130,25 +199,49 @@ module Neo4j
|
|
130
199
|
end
|
131
200
|
|
132
201
|
# Creates a new relationship between self and given node.
|
202
|
+
# It can create more then one relationship
|
203
|
+
# This method is used by the <tt><<</tt> operator.
|
204
|
+
#
|
205
|
+
# @example create one relationship
|
206
|
+
# node.outgoing(:bar).new(other_node, rel_props)
|
207
|
+
#
|
208
|
+
# @example two relationships
|
209
|
+
# node.outgoing(:bar).outgoing(:foo).new(other_node, rel_props)
|
210
|
+
#
|
211
|
+
# @example both incoming and outgoing - two relationships
|
212
|
+
# node.both(:bar).new(other_node, rel_props)
|
213
|
+
#
|
214
|
+
# @see #<<
|
133
215
|
# @param [Hash] props properties of new relationship
|
134
216
|
# @return [Neo4j::Relationship] the created relationship
|
135
217
|
def new(other_node, props = {})
|
136
|
-
|
137
|
-
|
138
|
-
|
139
|
-
|
140
|
-
|
141
|
-
|
142
|
-
|
143
|
-
|
218
|
+
@outgoing_rel_types && @outgoing_rel_types.each { |type| _new_out(other_node, type, props) }
|
219
|
+
@incoming_rel_types && @incoming_rel_types.each { |type| _new_in(other_node, type, props) }
|
220
|
+
@both_rel_types && @both_rel_types.each { |type| _new_both(other_node, type, props) }
|
221
|
+
end
|
222
|
+
|
223
|
+
# @private
|
224
|
+
def _new_out(other_node, type, props)
|
225
|
+
@from.create_relationship_to(other_node, type_to_java(type)).update(props)
|
226
|
+
end
|
227
|
+
|
228
|
+
# @private
|
229
|
+
def _new_in(other_node, type, props)
|
230
|
+
other_node.create_relationship_to(@from, type_to_java(type)).update(props)
|
231
|
+
end
|
232
|
+
|
233
|
+
# @private
|
234
|
+
def _new_both(other_node, type, props)
|
235
|
+
_new_out(other_node, type, props)
|
236
|
+
_new_in(other_node, type, props)
|
144
237
|
end
|
145
238
|
|
146
239
|
# @param (see Neo4j::Core::Traversal#both)
|
147
240
|
# @see Neo4j::Core::Traversal#both
|
148
241
|
def both(type)
|
149
|
-
@
|
150
|
-
@
|
151
|
-
|
242
|
+
@both_rel_types ||= []
|
243
|
+
@both_rel_types << type
|
244
|
+
_add_rel(:both, type)
|
152
245
|
self
|
153
246
|
end
|
154
247
|
|
@@ -165,9 +258,9 @@ module Neo4j
|
|
165
258
|
# @return self
|
166
259
|
# @see Neo4j::Core::Traversal#outgoing
|
167
260
|
def outgoing(type)
|
168
|
-
@
|
169
|
-
@
|
170
|
-
|
261
|
+
@outgoing_rel_types ||= []
|
262
|
+
@outgoing_rel_types << type
|
263
|
+
_add_rel(:outgoing, type)
|
171
264
|
self
|
172
265
|
end
|
173
266
|
|
@@ -176,12 +269,19 @@ module Neo4j
|
|
176
269
|
# @return self
|
177
270
|
# @see Neo4j::Core::Traversal#incoming
|
178
271
|
def incoming(type)
|
179
|
-
@
|
180
|
-
@
|
181
|
-
|
272
|
+
@incoming_rel_types ||= []
|
273
|
+
@incoming_rel_types << type
|
274
|
+
_add_rel(:incoming, type)
|
182
275
|
self
|
183
276
|
end
|
184
277
|
|
278
|
+
# @private
|
279
|
+
def _add_rel(dir, type)
|
280
|
+
t = type_to_java(type)
|
281
|
+
d = dir_to_java(dir)
|
282
|
+
@td = @td ? @td.relationships(t, d) : Java::OrgNeo4jKernelImplTraversal::TraversalDescriptionImpl.new.breadth_first().relationships(t, d)
|
283
|
+
end
|
284
|
+
|
185
285
|
# Cuts of of parts of the traversal.
|
186
286
|
# @yield [path]
|
187
287
|
# @yieldparam [Java::OrgNeo4jGraphdb::Path] path the path which can be used to filter nodes
|
@@ -228,12 +328,6 @@ module Neo4j
|
|
228
328
|
self
|
229
329
|
end
|
230
330
|
|
231
|
-
#def size
|
232
|
-
# s = 0
|
233
|
-
# iterator.each { |_| s += 1 }
|
234
|
-
# s
|
235
|
-
#end
|
236
|
-
|
237
331
|
# @param [Fixnum] index the n'th node that will be return from the traversal
|
238
332
|
def [](index)
|
239
333
|
each_with_index { |node, i| break node if index == i }
|
@@ -295,6 +389,7 @@ module Neo4j
|
|
295
389
|
end
|
296
390
|
|
297
391
|
end
|
392
|
+
|
298
393
|
end
|
299
394
|
end
|
300
395
|
end
|
data/lib/neo4j-core/version.rb
CHANGED
@@ -0,0 +1,22 @@
|
|
1
|
+
module Neo4j
|
2
|
+
module Core
|
3
|
+
module Wrapper
|
4
|
+
module ClassMethods
|
5
|
+
|
6
|
+
# Tries to load a wrapper for this node if possible
|
7
|
+
# @see #wrapper_proc=
|
8
|
+
def wrapper(entity)
|
9
|
+
@_wrapper_proc ? @_wrapper_proc.call(entity) : entity
|
10
|
+
end
|
11
|
+
|
12
|
+
# Sets the procs to be used to load wrappers
|
13
|
+
# @see #wrapper
|
14
|
+
def wrapper_proc=(proc)
|
15
|
+
@_wrapper_proc = proc
|
16
|
+
end
|
17
|
+
|
18
|
+
|
19
|
+
end
|
20
|
+
end
|
21
|
+
end
|
22
|
+
end
|
@@ -0,0 +1,20 @@
|
|
1
|
+
module Neo4j
|
2
|
+
module Core
|
3
|
+
# Can be used to define your own wrapper class around nodes and relationships
|
4
|
+
module Wrapper
|
5
|
+
|
6
|
+
# @return [self, Object] return self or a wrapper Ruby object
|
7
|
+
# @see Neo4j::Node::ClassMethods#wrapper
|
8
|
+
def wrapper
|
9
|
+
self.class.wrapper(self)
|
10
|
+
end
|
11
|
+
|
12
|
+
# This can be implemented by a wrapper to returned the underlying java node or relationship.
|
13
|
+
# You can override this method in your own wrapper class.
|
14
|
+
# @return self
|
15
|
+
def _java_entity
|
16
|
+
self
|
17
|
+
end
|
18
|
+
end
|
19
|
+
end
|
20
|
+
end
|