neo4j 1.0.0.beta.27-java → 1.0.0.beta.28-java
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/CONTRIBUTORS +1 -0
- data/lib/neo4j.rb +38 -72
- data/lib/neo4j/{algo.rb → algo/algo.rb} +5 -1
- data/lib/neo4j/batch/batch.rb +2 -0
- data/lib/neo4j/batch/indexer.rb +108 -0
- data/lib/neo4j/batch/inserter.rb +168 -0
- data/lib/neo4j/database.rb +13 -8
- data/lib/neo4j/{mapping/class_methods/list.rb → has_list/class_methods.rb} +2 -4
- data/lib/neo4j/has_list/has_list.rb +3 -0
- data/lib/neo4j/{mapping/has_list.rb → has_list/mapping.rb} +2 -2
- data/lib/neo4j/{mapping/class_methods/relationship.rb → has_n/class_methods.rb} +42 -12
- data/lib/neo4j/has_n/decl_relationship_dsl.rb +216 -0
- data/lib/neo4j/has_n/has_n.rb +3 -0
- data/lib/neo4j/{mapping/has_n.rb → has_n/mapping.rb} +16 -7
- data/lib/neo4j/index/index.rb +5 -0
- data/lib/neo4j/index/indexer.rb +27 -22
- data/lib/neo4j/index/lucene_query.rb +3 -1
- data/lib/neo4j/jars/core/neo4j-graph-algo-0.8-1.3.M01.jar +0 -0
- data/lib/neo4j/jars/core/neo4j-index-1.3-1.3.M01.jar +0 -0
- data/lib/neo4j/jars/core/neo4j-kernel-1.3-1.3.M01.jar +0 -0
- data/lib/neo4j/jars/core/neo4j-lucene-index-0.5-1.3.M01.jar +0 -0
- data/lib/neo4j/jars/ha/{neo4j-ha-0.6-SNAPSHOT.jar → neo4j-ha-0.6-1.3.M01.jar} +0 -0
- data/lib/neo4j/jars/ha/neo4j-management-1.3-1.3.M01.jar +0 -0
- data/lib/neo4j/jars/ha/neo4j-shell-1.3-1.3.M01.jar +0 -0
- data/lib/neo4j/migrations/class_methods.rb +102 -0
- data/lib/neo4j/migrations/extensions.rb +10 -9
- data/lib/neo4j/migrations/lazy_node_mixin.rb +50 -0
- data/lib/neo4j/migrations/migration.rb +84 -81
- data/lib/neo4j/migrations/migrations.rb +6 -100
- data/lib/neo4j/migrations/node_mixin.rb +80 -0
- data/lib/neo4j/migrations/ref_node_wrapper.rb +32 -0
- data/lib/neo4j/neo4j.rb +11 -0
- data/lib/neo4j/node.rb +55 -25
- data/lib/neo4j/{mapping/class_methods/init_node.rb → node_mixin/class_methods.rb} +3 -3
- data/lib/neo4j/{mapping → node_mixin}/node_mixin.rb +35 -18
- data/lib/neo4j/{mapping/class_methods/property.rb → property/class_methods.rb} +5 -4
- data/lib/neo4j/{property.rb → property/property.rb} +2 -0
- data/lib/neo4j/rails/finders.rb +21 -7
- data/lib/neo4j/rails/rails.rb +19 -0
- data/lib/neo4j/rails/timestamps.rb +1 -1
- data/lib/neo4j/relationship.rb +7 -0
- data/lib/neo4j/{mapping/class_methods/init_rel.rb → relationship_mixin/class_methods.rb} +4 -4
- data/lib/neo4j/{mapping → relationship_mixin}/relationship_mixin.rb +23 -5
- data/lib/neo4j/rels/rels.rb +85 -0
- data/lib/neo4j/rels/traverser.rb +102 -0
- data/lib/neo4j/{mapping/class_methods/rule.rb → rule/class_methods.rb} +11 -11
- data/lib/neo4j/rule/functions/count.rb +37 -0
- data/lib/neo4j/rule/functions/function.rb +74 -0
- data/lib/neo4j/rule/functions/functions.rb +3 -0
- data/lib/neo4j/rule/functions/sum.rb +29 -0
- data/lib/neo4j/rule/rule.rb +5 -0
- data/lib/neo4j/rule/rule_event_listener.rb +162 -0
- data/lib/neo4j/rule/rule_node.rb +182 -0
- data/lib/neo4j/to_java.rb +0 -14
- data/lib/neo4j/traversal/filter_predicate.rb +25 -0
- data/lib/neo4j/traversal/prune_evaluator.rb +14 -0
- data/lib/neo4j/traversal/rel_expander.rb +31 -0
- data/lib/neo4j/traversal/traversal.rb +90 -0
- data/lib/neo4j/traversal/traverser.rb +173 -0
- data/lib/neo4j/{type_converters.rb → type_converters/type_converters.rb} +0 -0
- data/lib/neo4j/version.rb +1 -1
- data/lib/test.rb~ +2 -0
- data/neo4j.gemspec +11 -10
- metadata +48 -37
- data/lib/neo4j/functions/count.rb +0 -33
- data/lib/neo4j/functions/function.rb +0 -72
- data/lib/neo4j/functions/sum.rb +0 -27
- data/lib/neo4j/jars/core/neo4j-graph-algo-0.8-SNAPSHOT.jar +0 -0
- data/lib/neo4j/jars/core/neo4j-index-1.3-SNAPSHOT.jar +0 -0
- data/lib/neo4j/jars/core/neo4j-kernel-1.3-SNAPSHOT.jar +0 -0
- data/lib/neo4j/jars/core/neo4j-lucene-index-0.5-SNAPSHOT.jar +0 -0
- data/lib/neo4j/jars/ha/neo4j-management-1.3-SNAPSHOT.jar +0 -0
- data/lib/neo4j/jars/ha/neo4j-shell-1.3-SNAPSHOT.jar +0 -0
- data/lib/neo4j/mapping/decl_relationship_dsl.rb +0 -214
- data/lib/neo4j/mapping/rule.rb +0 -158
- data/lib/neo4j/mapping/rule_node.rb +0 -176
- data/lib/neo4j/migrations.rb +0 -12
- data/lib/neo4j/migrations/global_migration.rb +0 -29
- data/lib/neo4j/migrations/lazy_migration_mixin.rb +0 -47
- data/lib/neo4j/migrations/migration_mixin.rb +0 -78
- data/lib/neo4j/node_mixin.rb +0 -4
- data/lib/neo4j/node_relationship.rb +0 -161
- data/lib/neo4j/node_traverser.rb +0 -224
- data/lib/neo4j/relationship_mixin.rb +0 -4
- data/lib/neo4j/relationship_traverser.rb +0 -92
@@ -1,6 +1,7 @@
|
|
1
|
-
module Neo4j
|
2
|
-
module
|
3
|
-
|
1
|
+
module Neo4j
|
2
|
+
module Property
|
3
|
+
|
4
|
+
module ClassMethods
|
4
5
|
|
5
6
|
# Generates accessor method and sets configuration for Neo4j node properties.
|
6
7
|
# The generated accessor is a simple wrapper around the #[] and
|
@@ -80,4 +81,4 @@ module Neo4j::Mapping
|
|
80
81
|
end
|
81
82
|
end
|
82
83
|
end
|
83
|
-
end
|
84
|
+
end
|
data/lib/neo4j/rails/finders.rb
CHANGED
@@ -4,7 +4,7 @@ module Neo4j
|
|
4
4
|
extend ActiveSupport::Concern
|
5
5
|
|
6
6
|
included do
|
7
|
-
rule(:_all, :functions => Neo4j::Functions::Count.new)
|
7
|
+
rule(:_all, :functions => Neo4j::Rule::Functions::Count.new)
|
8
8
|
end
|
9
9
|
|
10
10
|
module ClassMethods
|
@@ -59,8 +59,14 @@ module Neo4j
|
|
59
59
|
when :all, :first
|
60
60
|
kind = args.shift
|
61
61
|
send(kind, *args)
|
62
|
+
when "0", 0
|
63
|
+
nil
|
62
64
|
else
|
63
|
-
|
65
|
+
if ((args.first.is_a?(Integer) || args.first.is_a?(String)) && args.first.to_i > 0)
|
66
|
+
find_with_ids(*args)
|
67
|
+
else
|
68
|
+
first(*args)
|
69
|
+
end
|
64
70
|
end
|
65
71
|
end
|
66
72
|
|
@@ -116,16 +122,24 @@ module Neo4j
|
|
116
122
|
|
117
123
|
# does it contain an empty conditions param ?
|
118
124
|
hash = args.find { |a| a.is_a?(Hash) }
|
119
|
-
|
125
|
+
if hash
|
126
|
+
return false if hash.include?(:conditions) && hash[:conditions].empty?
|
120
127
|
|
121
|
-
|
122
|
-
|
128
|
+
# does it contain only paging or sorting params ?
|
129
|
+
!hash.except(:sort, :page, :per_page).empty?
|
130
|
+
else
|
131
|
+
return false
|
132
|
+
end
|
123
133
|
end
|
124
134
|
|
125
135
|
def find_with_ids(*args)
|
126
|
-
|
127
|
-
|
136
|
+
result = load(*args.map { |p| p.to_i })
|
137
|
+
if result.is_a?(Array)
|
138
|
+
result = result.select { |r| r.is_a? self }
|
139
|
+
else
|
140
|
+
result = nil unless result.is_a? self
|
128
141
|
end
|
142
|
+
result
|
129
143
|
end
|
130
144
|
|
131
145
|
def find_with_indexer(*args)
|
@@ -0,0 +1,19 @@
|
|
1
|
+
# rails
|
2
|
+
require 'neo4j/rails/tx_methods'
|
3
|
+
require 'neo4j/rails/transaction'
|
4
|
+
require 'neo4j/rails/railtie'
|
5
|
+
require 'neo4j/rails/validations/uniqueness'
|
6
|
+
require 'neo4j/rails/validations/non_nil'
|
7
|
+
require 'neo4j/rails/finders'
|
8
|
+
require 'neo4j/rails/mapping/property'
|
9
|
+
require 'neo4j/rails/validations'
|
10
|
+
require 'neo4j/rails/callbacks'
|
11
|
+
require 'neo4j/rails/timestamps'
|
12
|
+
require 'neo4j/rails/serialization'
|
13
|
+
require 'neo4j/rails/attributes'
|
14
|
+
require 'neo4j/rails/persistence'
|
15
|
+
require 'neo4j/rails/relationships/mapper'
|
16
|
+
require 'neo4j/rails/relationships/relationship'
|
17
|
+
require 'neo4j/rails/relationships/relationships'
|
18
|
+
require 'neo4j/rails/model'
|
19
|
+
require 'neo4j/rails/lucene_connection_closer'
|
data/lib/neo4j/relationship.rb
CHANGED
@@ -1,6 +1,6 @@
|
|
1
|
-
module Neo4j
|
2
|
-
module
|
3
|
-
module
|
1
|
+
module Neo4j
|
2
|
+
module RelationshipMixin
|
3
|
+
module ClassMethods
|
4
4
|
def load_wrapper(rel)
|
5
5
|
wrapped_rel = self.orig_new
|
6
6
|
wrapped_rel.init_on_load(rel)
|
@@ -21,7 +21,7 @@ module Neo4j::Mapping
|
|
21
21
|
# props:: optional hash of properties to initialize the create relationship with
|
22
22
|
#
|
23
23
|
def new(*args)
|
24
|
-
type, from_node, to_node
|
24
|
+
type, from_node, to_node = args
|
25
25
|
rel = Neo4j::Relationship.create(type, from_node, to_node)
|
26
26
|
wrapped_rel = super()
|
27
27
|
wrapped_rel.init_on_load(rel)
|
@@ -1,5 +1,23 @@
|
|
1
|
-
|
2
|
-
|
1
|
+
# external neo4j dependencies
|
2
|
+
require 'neo4j/index/index'
|
3
|
+
require 'neo4j/property/property'
|
4
|
+
|
5
|
+
# internal dependencies
|
6
|
+
require 'neo4j/relationship_mixin/class_methods'
|
7
|
+
|
8
|
+
|
9
|
+
module Neo4j
|
10
|
+
|
11
|
+
# Use this mixin to wrap Neo4j Relationship Java object.
|
12
|
+
# This mixin is similar to Neo4j::NodeMixin which wraps Neo4j::Node Java objects.
|
13
|
+
#
|
14
|
+
# ==== Instance Methods, Mixins
|
15
|
+
# * Neo4j::Index :: relationships can also be indexed just like nodes
|
16
|
+
# *
|
17
|
+
# ==== Class Methods, Mixins
|
18
|
+
# * Neo4j::Index::ClassMethods :: for declaration for keeping lucene index and neo4j property in sync
|
19
|
+
# * Neo4j::Property::ClassMethods :: for declaration of convenience accessors of property
|
20
|
+
#
|
3
21
|
module RelationshipMixin
|
4
22
|
extend Forwardable
|
5
23
|
include Neo4j::Index
|
@@ -103,9 +121,9 @@ module Neo4j::Mapping
|
|
103
121
|
|
104
122
|
c.class_inheritable_hash :_decl_props
|
105
123
|
c._decl_props ||= {}
|
106
|
-
|
107
|
-
c.extend ClassMethods
|
108
|
-
c.extend ClassMethods
|
124
|
+
|
125
|
+
c.extend ClassMethods
|
126
|
+
c.extend Neo4j::Property::ClassMethods
|
109
127
|
c.extend Neo4j::Index::ClassMethods
|
110
128
|
|
111
129
|
def c.inherited(subclass)
|
@@ -0,0 +1,85 @@
|
|
1
|
+
require 'neo4j/rels/traverser'
|
2
|
+
|
3
|
+
|
4
|
+
module Neo4j
|
5
|
+
|
6
|
+
# Contains methods for traversing relationship object of depth one from one node.
|
7
|
+
module Rels
|
8
|
+
include ToJava
|
9
|
+
|
10
|
+
# Returns an enumeration of relationship objects.
|
11
|
+
# It always returns relationship of depth one.
|
12
|
+
#
|
13
|
+
# See Neo4j::Relationship
|
14
|
+
#
|
15
|
+
# ==== Examples
|
16
|
+
# # Return both incoming and outgoing relationships
|
17
|
+
# me.rels(:friends, :work).each {|relationship|...}
|
18
|
+
#
|
19
|
+
# # Only return outgoing relationship of given type
|
20
|
+
# me.rels(:friends).outgoing.first.end_node # => my friend node
|
21
|
+
#
|
22
|
+
def rels(*type)
|
23
|
+
Traverser.new(self, type, :both)
|
24
|
+
end
|
25
|
+
|
26
|
+
|
27
|
+
# Returns the only relationship of a given type and direction that is attached to this node, or null.
|
28
|
+
# This is a convenience method that is used in the commonly occuring situation where a node has exactly zero or
|
29
|
+
# one relationships of a given type and direction to another node.
|
30
|
+
# Typically this invariant is maintained by the rest of the code: if at any time more than one such relationships
|
31
|
+
# exist, it is a fatal error that should generate an unchecked exception. This method reflects that semantics and
|
32
|
+
# returns either:
|
33
|
+
#
|
34
|
+
# * nil if there are zero relationships of the given type and direction,
|
35
|
+
# * the relationship if there's exactly one, or
|
36
|
+
# * raise an exception in all other cases.
|
37
|
+
def rel(dir, type)
|
38
|
+
result = _rel(dir, type)
|
39
|
+
result && result.wrapper
|
40
|
+
end
|
41
|
+
|
42
|
+
# Same as rel but does not return a ruby wrapped object but instead returns the Java object.
|
43
|
+
def _rel(dir, type)
|
44
|
+
get_single_relationship(type_to_java(type), dir_to_java(dir))
|
45
|
+
end
|
46
|
+
|
47
|
+
# Returns the raw java neo4j relationship object.
|
48
|
+
def _rels(dir=:both, *types)
|
49
|
+
if types.size > 1
|
50
|
+
java_types = types.inject([]) { |result, type| result << type_to_java(type) }.to_java(:'org.neo4j.graphdb.RelationshipType')
|
51
|
+
get_relationships(java_types)
|
52
|
+
elsif types.size == 1
|
53
|
+
get_relationships(type_to_java(types[0]), dir_to_java(dir))
|
54
|
+
elsif dir == :both
|
55
|
+
get_relationships(dir_to_java(dir))
|
56
|
+
else
|
57
|
+
raise "illegal argument, does not accept #{dir} #{types.join(',')} - only dir=:both for any relationship types"
|
58
|
+
end
|
59
|
+
end
|
60
|
+
|
61
|
+
# Check if the given relationship exists
|
62
|
+
# Returns true if there are one or more relationships from this node to other nodes
|
63
|
+
# with the given relationship.
|
64
|
+
#
|
65
|
+
# ==== Parameters
|
66
|
+
# type:: the key and value to be set, default any type
|
67
|
+
# dir:: optional default :both (either, :outgoing, :incoming, :both)
|
68
|
+
#
|
69
|
+
# ==== Returns
|
70
|
+
# true if one or more relationships exists for the given type and dir
|
71
|
+
# otherwise false
|
72
|
+
#
|
73
|
+
def rel? (type=nil, dir=:both)
|
74
|
+
if type
|
75
|
+
hasRelationship(type_to_java(type), dir_to_java(dir))
|
76
|
+
else
|
77
|
+
hasRelationship
|
78
|
+
end
|
79
|
+
end
|
80
|
+
|
81
|
+
end
|
82
|
+
|
83
|
+
end
|
84
|
+
|
85
|
+
|
@@ -0,0 +1,102 @@
|
|
1
|
+
# external neo4j dependencies
|
2
|
+
require 'neo4j/to_java'
|
3
|
+
|
4
|
+
|
5
|
+
module Neo4j
|
6
|
+
module Rels
|
7
|
+
|
8
|
+
# Traverse relationships of depth one from one node.
|
9
|
+
# This object is returned when using the Neo4j::Rels which is included in the Neo4j::Node class.
|
10
|
+
#
|
11
|
+
class Traverser
|
12
|
+
include Enumerable
|
13
|
+
include ToJava
|
14
|
+
|
15
|
+
def initialize(node, types, direction)
|
16
|
+
@node = node
|
17
|
+
if types.size > 1
|
18
|
+
@types = types.inject([]) { |result, type| result << type_to_java(type) }.to_java(:'org.neo4j.graphdb.RelationshipType')
|
19
|
+
elsif types.size == 1
|
20
|
+
@type = type_to_java(types[0])
|
21
|
+
end
|
22
|
+
@direction = direction
|
23
|
+
end
|
24
|
+
|
25
|
+
def to_s
|
26
|
+
if @type
|
27
|
+
"#{self.class} [type: #{@type} dir:#{@direction}]"
|
28
|
+
elsif @types
|
29
|
+
"#{self.class} [types: #{@types.join(',')} dir:#{@direction}]"
|
30
|
+
else
|
31
|
+
"#{self.class} [types: ANY dir:#{@direction}]"
|
32
|
+
end
|
33
|
+
end
|
34
|
+
|
35
|
+
def each
|
36
|
+
iter = iterator
|
37
|
+
while (iter.hasNext())
|
38
|
+
rel = iter.next
|
39
|
+
yield rel.wrapper if match_to_other?(rel)
|
40
|
+
end
|
41
|
+
end
|
42
|
+
|
43
|
+
def empty?
|
44
|
+
first == nil
|
45
|
+
end
|
46
|
+
|
47
|
+
def iterator
|
48
|
+
if @types
|
49
|
+
@node.get_relationships(@types).iterator
|
50
|
+
elsif @type
|
51
|
+
@node.get_relationships(@type, dir_to_java(@direction))
|
52
|
+
else
|
53
|
+
@node.get_relationships(dir_to_java(@direction))
|
54
|
+
end
|
55
|
+
end
|
56
|
+
|
57
|
+
def match_to_other?(rel)
|
58
|
+
if @to_other.nil?
|
59
|
+
true
|
60
|
+
elsif @direction == :outgoing
|
61
|
+
rel._end_node == @to_other
|
62
|
+
elsif @direction == :incoming
|
63
|
+
rel._start_node == @to_other
|
64
|
+
else
|
65
|
+
rel._start_node == @to_other || rel._end_node == @to_other
|
66
|
+
end
|
67
|
+
end
|
68
|
+
|
69
|
+
def to_other(to_other)
|
70
|
+
@to_other = to_other
|
71
|
+
self
|
72
|
+
end
|
73
|
+
|
74
|
+
def del
|
75
|
+
each { |rel| rel.del }
|
76
|
+
end
|
77
|
+
|
78
|
+
def size
|
79
|
+
[*self].size
|
80
|
+
end
|
81
|
+
|
82
|
+
def both
|
83
|
+
@direction = :both
|
84
|
+
self
|
85
|
+
end
|
86
|
+
|
87
|
+
def incoming
|
88
|
+
raise "Not allowed calling incoming when finding several relationships types" if @types
|
89
|
+
@direction = :incoming
|
90
|
+
self
|
91
|
+
end
|
92
|
+
|
93
|
+
def outgoing
|
94
|
+
raise "Not allowed calling outgoing when finding several relationships types" if @types
|
95
|
+
@direction = :outgoing
|
96
|
+
self
|
97
|
+
end
|
98
|
+
|
99
|
+
end
|
100
|
+
|
101
|
+
end
|
102
|
+
end
|
@@ -1,5 +1,5 @@
|
|
1
|
-
module Neo4j
|
2
|
-
module
|
1
|
+
module Neo4j
|
2
|
+
module Rule
|
3
3
|
|
4
4
|
|
5
5
|
# Allows you to group nodes by providing a rule.
|
@@ -72,7 +72,7 @@ module Neo4j::Mapping
|
|
72
72
|
# Yes, since operations are performed in an transaction. However you may get a deadlock exception:
|
73
73
|
# http://docs.neo4j.org/html/snapshot/#_deadlocks
|
74
74
|
#
|
75
|
-
module
|
75
|
+
module ClassMethods
|
76
76
|
|
77
77
|
# Creates an rule node attached to the Neo4j.ref_node
|
78
78
|
# Can be used to rule all instances of a specific Ruby class.
|
@@ -102,7 +102,7 @@ module Neo4j::Mapping
|
|
102
102
|
|
103
103
|
# define class methods
|
104
104
|
singleton.send(:define_method, rule_name) do
|
105
|
-
rule_node =
|
105
|
+
rule_node = RuleEventListener.rule_node_for(self)
|
106
106
|
rule_node.traversal(rule_name)
|
107
107
|
end unless respond_to?(rule_name)
|
108
108
|
|
@@ -111,11 +111,11 @@ module Neo4j::Mapping
|
|
111
111
|
instance_eval &block
|
112
112
|
end
|
113
113
|
|
114
|
-
rule =
|
114
|
+
rule = RuleEventListener.add(self, rule_name, props, &block)
|
115
115
|
|
116
116
|
rule.functions && rule.functions.each do |func|
|
117
117
|
singleton.send(:define_method, func.class.function_name) do |r_name, *args|
|
118
|
-
rule_node =
|
118
|
+
rule_node = RuleEventListener.rule_node_for(self)
|
119
119
|
function_id = args.empty? ? "_classname" : args[0]
|
120
120
|
function = rule_node.find_function(r_name, func.class.function_name, function_id)
|
121
121
|
function.value(rule_node.rule_node, r_name)
|
@@ -124,7 +124,7 @@ module Neo4j::Mapping
|
|
124
124
|
end
|
125
125
|
|
126
126
|
def inherit_rules_from(clazz)
|
127
|
-
|
127
|
+
RuleEventListener.inherit(clazz, self)
|
128
128
|
end
|
129
129
|
|
130
130
|
# This is typically used for RSpecs to clean up rule nodes created by the #rule method.
|
@@ -133,7 +133,7 @@ module Neo4j::Mapping
|
|
133
133
|
singelton = class << self;
|
134
134
|
self;
|
135
135
|
end
|
136
|
-
rule_node =
|
136
|
+
rule_node = RuleEventListener.rule_node_for(self)
|
137
137
|
|
138
138
|
rule_node.rule_names.each {|rule_name| singelton.send(:remove_method, rule_name)}
|
139
139
|
rule_node.rules.clear
|
@@ -145,7 +145,7 @@ module Neo4j::Mapping
|
|
145
145
|
# Can also be called from an migration.
|
146
146
|
#
|
147
147
|
def trigger_rules(node, *changes)
|
148
|
-
|
148
|
+
RuleEventListener.trigger_rules(node, *changes)
|
149
149
|
end
|
150
150
|
|
151
151
|
# Returns a proc that will call add method on the given function
|
@@ -167,7 +167,7 @@ module Neo4j::Mapping
|
|
167
167
|
# Returns a proc that calls the given method on the given function.
|
168
168
|
def function_for(method, rule_name, function_name_or_class, function_id = '_classname')
|
169
169
|
function_name = function_name_or_class.is_a?(Symbol)? function_name_or_class : function_name_or_class.function_name
|
170
|
-
rule_node =
|
170
|
+
rule_node = RuleEventListener.rule_node_for(self)
|
171
171
|
rule = rule_node.find_rule(rule_name)
|
172
172
|
rule_node_raw = rule_node.rule_node
|
173
173
|
|
@@ -179,6 +179,6 @@ module Neo4j::Mapping
|
|
179
179
|
end
|
180
180
|
end
|
181
181
|
|
182
|
-
Neo4j.unstarted_db.event_handler.add(
|
182
|
+
Neo4j.unstarted_db.event_handler.add(RuleEventListener) unless Neo4j.read_only?
|
183
183
|
end
|
184
184
|
end
|