pacer-neo4j 2.3.6-java → 2.3.7-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.
- checksums.yaml +4 -4
- data/lib/pacer-neo4j/graph.rb +26 -18
- data/lib/pacer-neo4j/transaction_event_handler.rb +54 -8
- data/lib/pacer-neo4j/tx_data_wrapper.rb +102 -32
- data/lib/pacer-neo4j/version.rb +1 -1
- metadata +2 -2
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA1:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: fb5ae3d33a7a0cb20096d759a169e3b91cda462d
|
4
|
+
data.tar.gz: f9f6ef9f5811bdbb8722f10ac921e1077766742c
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: 314361d41e620002f9724521fac1fdff104f141fceac4089fae4dbb23faa95a168452cc7987ab931d740554075eacecfefe2f4b7795509d713250566d345d788
|
7
|
+
data.tar.gz: 3be0b55fd8b1ef72ac3833fb1d3b629da4da7473838003bfca03355a7113d942ed616c58a060a16eca1786ec8060f596bca2f8eed30f2a0229c87ef5aea79c7a
|
data/lib/pacer-neo4j/graph.rb
CHANGED
@@ -109,12 +109,28 @@ module Pacer
|
|
109
109
|
blueprints_graph.raw_graph
|
110
110
|
end
|
111
111
|
|
112
|
-
def
|
113
|
-
|
114
|
-
|
115
|
-
|
116
|
-
neo_graph.registerTransactionEventHandler h
|
112
|
+
def transaction_event_handler
|
113
|
+
unless @teh
|
114
|
+
@teh = TransactionEventHandler.new(self)
|
115
|
+
neo_graph.registerTransactionEventHandler @teh
|
117
116
|
end
|
117
|
+
@teh
|
118
|
+
end
|
119
|
+
|
120
|
+
def before_commit(wrapper = nil, &block)
|
121
|
+
return unless block
|
122
|
+
wrapper = false if block.arity == 0
|
123
|
+
transaction_event_handler.before_commit_wrapper = wrapper unless wrapper.nil?
|
124
|
+
transaction_event_handler.before_commit = block
|
125
|
+
nil
|
126
|
+
end
|
127
|
+
|
128
|
+
def on_commit(wrapper = nil, &block)
|
129
|
+
return unless block
|
130
|
+
wrapper = false if block.arity == 0
|
131
|
+
transaction_event_handler.on_commit_wrapper = wrapper unless wrapper.nil?
|
132
|
+
transaction_event_handler.on_commit = block
|
133
|
+
nil
|
118
134
|
end
|
119
135
|
|
120
136
|
# This is actually only called if the commit fails and then it internally tries to
|
@@ -123,20 +139,12 @@ module Pacer
|
|
123
139
|
# An exception in before_commit can definitely trigger this.
|
124
140
|
#
|
125
141
|
# Regular rollbacks do not get seen by the transaction system and no callback happens.
|
126
|
-
def on_commit_failed(&block)
|
127
|
-
return unless block
|
128
|
-
TransactionEventHandler.new(self).tap do |h|
|
129
|
-
h.on_commit_failed = block
|
130
|
-
neo_graph.registerTransactionEventHandler h
|
131
|
-
end
|
132
|
-
end
|
133
|
-
|
134
|
-
def before_commit(&block)
|
142
|
+
def on_commit_failed(wrapper = nil, &block)
|
135
143
|
return unless block
|
136
|
-
|
137
|
-
|
138
|
-
|
139
|
-
|
144
|
+
wrapper = false if block.arity == 0
|
145
|
+
transaction_event_handler.on_commit_failed_wrapper = wrapper unless wrapper.nil?
|
146
|
+
transaction_event_handler.on_commit_failed = block
|
147
|
+
nil
|
140
148
|
end
|
141
149
|
|
142
150
|
def drop_handler(h)
|
@@ -3,27 +3,61 @@ module Pacer
|
|
3
3
|
class TransactionEventHandler
|
4
4
|
include org.neo4j.graphdb.event.TransactionEventHandler
|
5
5
|
|
6
|
-
attr_reader :graph
|
7
|
-
attr_accessor :on_commit, :on_commit_failed, :before_commit
|
6
|
+
attr_reader :graph, :enable_cache
|
7
|
+
attr_accessor :on_commit , :on_commit_failed , :before_commit
|
8
|
+
attr_accessor :on_commit_wrapper , :on_commit_failed_wrapper , :before_commit_wrapper
|
9
|
+
attr_accessor :type_property
|
8
10
|
|
9
11
|
def initialize(graph)
|
10
12
|
@graph = graph
|
13
|
+
@on_commit_wrapper = @on_commit_failed_wrapper = @before_commit_wrapper = TxDataWrapper
|
11
14
|
end
|
12
15
|
|
13
16
|
def unregister!
|
14
17
|
graph.drop_handler self
|
15
18
|
end
|
16
19
|
|
20
|
+
def enable_cache!
|
21
|
+
@enable_cache = true
|
22
|
+
end
|
23
|
+
|
17
24
|
private
|
18
25
|
|
19
26
|
# Return value is passed to afterCommit or afterRollback, but some values can cause crashes.
|
20
27
|
def beforeCommit(data)
|
21
|
-
|
22
|
-
|
28
|
+
if before_commit_wrapper and (before_commit or enable_cache)
|
29
|
+
wrapped = before_commit_wrapper.new data, graph, type_property
|
30
|
+
end
|
31
|
+
if before_commit
|
32
|
+
if before_commit_wrapper
|
33
|
+
before_commit.call wrapped
|
34
|
+
else
|
35
|
+
before_commit.call
|
36
|
+
end
|
37
|
+
end
|
38
|
+
if enable_cache
|
39
|
+
wrapped.data
|
40
|
+
end
|
41
|
+
rescue Exception => e
|
42
|
+
p e.message
|
43
|
+
pp e.backtrace
|
44
|
+
throw
|
23
45
|
end
|
24
46
|
|
25
|
-
def afterCommit(data,
|
26
|
-
|
47
|
+
def afterCommit(data, cache)
|
48
|
+
if on_commit
|
49
|
+
if cache
|
50
|
+
on_commit.call cache
|
51
|
+
elsif on_commit_wrapper
|
52
|
+
on_commit.call on_commit_wrapper.new data, graph
|
53
|
+
else
|
54
|
+
on_commit.call
|
55
|
+
end
|
56
|
+
end
|
57
|
+
rescue Exception => e
|
58
|
+
p e.message
|
59
|
+
pp e.backtrace
|
60
|
+
throw
|
27
61
|
end
|
28
62
|
|
29
63
|
# This is actually only called if the commit fails and then it internally tries to
|
@@ -32,8 +66,20 @@ module Pacer
|
|
32
66
|
# An exception in beforeCommit can definitely trigger this.
|
33
67
|
#
|
34
68
|
# Regular rollbacks do not get seen by the transaction system and no callback happens.
|
35
|
-
def afterRollback(data,
|
36
|
-
|
69
|
+
def afterRollback(data, cache)
|
70
|
+
if on_commit_failed
|
71
|
+
if cache
|
72
|
+
on_commit_failed.call cache
|
73
|
+
elsif on_commit_failed_wrapper
|
74
|
+
on_commit_failed.call on_commit_failed_wrapper.new data, graph
|
75
|
+
else
|
76
|
+
on_commit_failed.call
|
77
|
+
end
|
78
|
+
end
|
79
|
+
rescue Exception => e
|
80
|
+
p e.message
|
81
|
+
pp e.backtrace
|
82
|
+
throw
|
37
83
|
end
|
38
84
|
end
|
39
85
|
end
|
@@ -7,11 +7,12 @@ module Pacer
|
|
7
7
|
class TxDataWrapper
|
8
8
|
include Algo::Wrapping
|
9
9
|
|
10
|
-
attr_reader :graph, :tx
|
10
|
+
attr_reader :graph, :tx, :type_property
|
11
11
|
|
12
|
-
def initialize(tx, graph)
|
12
|
+
def initialize(tx, graph, type_property)
|
13
13
|
@tx = tx
|
14
14
|
@graph = graph
|
15
|
+
@type_property = type_property
|
15
16
|
end
|
16
17
|
|
17
18
|
def created_v
|
@@ -31,7 +32,16 @@ module Pacer
|
|
31
32
|
end
|
32
33
|
|
33
34
|
def created_v_ids
|
34
|
-
|
35
|
+
if type_property
|
36
|
+
tx.createdNodes.map do |n|
|
37
|
+
if n.hasProperty(type_property)
|
38
|
+
type = n.getProperty(type_property)
|
39
|
+
end
|
40
|
+
[n.getId, type]
|
41
|
+
end
|
42
|
+
else
|
43
|
+
tx.createdNodes.map { |n| [n.getId] }
|
44
|
+
end
|
35
45
|
end
|
36
46
|
|
37
47
|
def deleted_v_ids
|
@@ -39,7 +49,7 @@ module Pacer
|
|
39
49
|
end
|
40
50
|
|
41
51
|
def created_e_ids
|
42
|
-
tx.createdRelationships.map { |n| n.getId }
|
52
|
+
tx.createdRelationships.map { |n| [n.getId, n.getType.name, n.getStartNode.getId, n.getEndNode.getId] }
|
43
53
|
end
|
44
54
|
|
45
55
|
def deleted_e_ids
|
@@ -50,42 +60,38 @@ module Pacer
|
|
50
60
|
tx.is_deleted e.element.rawElement
|
51
61
|
end
|
52
62
|
|
53
|
-
def
|
63
|
+
def assigned_v
|
54
64
|
tx.assignedNodeProperties.map do |p|
|
55
|
-
|
56
|
-
|
57
|
-
|
58
|
-
|
59
|
-
|
60
|
-
end +
|
65
|
+
[p.entity.getId, p.key, graph.decode_property(p.value)]
|
66
|
+
end
|
67
|
+
end
|
68
|
+
|
69
|
+
def cleared_v
|
61
70
|
tx.removedNodeProperties.map do |p|
|
62
|
-
|
63
|
-
id: p.entity.getId,
|
64
|
-
key: p.key,
|
65
|
-
was: graph.decode_property(p.previouslyCommitedValue),
|
66
|
-
is: nil }
|
71
|
+
[p.entity.getId, p.key]
|
67
72
|
end
|
68
73
|
end
|
69
74
|
|
70
|
-
def
|
75
|
+
def assigned_e
|
71
76
|
tx.assignedRelationshipProperties.map do |p|
|
72
|
-
|
73
|
-
|
74
|
-
|
75
|
-
|
76
|
-
|
77
|
-
end +
|
77
|
+
[p.entity.getId, p.key, graph.decode_property(p.value)]
|
78
|
+
end
|
79
|
+
end
|
80
|
+
|
81
|
+
def cleared_e
|
78
82
|
tx.removedRelationshipProperties.map do |p|
|
79
|
-
|
80
|
-
id: p.entity.getId,
|
81
|
-
key: p.key,
|
82
|
-
was: graph.decode_property(p.previouslyCommitedValue),
|
83
|
-
is: nil }
|
83
|
+
[p.entity.getId, p.key]
|
84
84
|
end
|
85
85
|
end
|
86
86
|
|
87
|
-
def
|
88
|
-
|
87
|
+
def each_v_change(&blk)
|
88
|
+
assigned_v.each(&blk)
|
89
|
+
cleared_v.each(&blk)
|
90
|
+
end
|
91
|
+
|
92
|
+
def each_e_change(&blk)
|
93
|
+
assigned_e.each(&blk)
|
94
|
+
cleared_e.each(&blk)
|
89
95
|
end
|
90
96
|
|
91
97
|
def summary
|
@@ -93,8 +99,72 @@ module Pacer
|
|
93
99
|
deleted_v: deleted_v_ids,
|
94
100
|
created_e: created_e_ids,
|
95
101
|
deleted_e: deleted_e_ids,
|
96
|
-
|
97
|
-
|
102
|
+
assigned_v: assigned_v,
|
103
|
+
cleared_v: cleared_v,
|
104
|
+
assigned_e: assigned_e,
|
105
|
+
cleared_e: cleared_e }
|
106
|
+
end
|
107
|
+
|
108
|
+
def data
|
109
|
+
TxCachedData.new summary
|
110
|
+
end
|
111
|
+
|
112
|
+
def as_json(options = nil)
|
113
|
+
data.as_json(options)
|
114
|
+
end
|
115
|
+
end
|
116
|
+
|
117
|
+
class TxCachedData
|
118
|
+
attr_reader :summary
|
119
|
+
|
120
|
+
def initialize(summary)
|
121
|
+
@summary = summary
|
122
|
+
end
|
123
|
+
|
124
|
+
def created_v_ids
|
125
|
+
summary[:created_v]
|
126
|
+
end
|
127
|
+
|
128
|
+
def deleted_v_ids
|
129
|
+
summary[:deleted_v]
|
130
|
+
end
|
131
|
+
|
132
|
+
def created_e_ids
|
133
|
+
summary[:created_e]
|
134
|
+
end
|
135
|
+
|
136
|
+
def deleted_e_ids
|
137
|
+
summary[:deleted_e]
|
138
|
+
end
|
139
|
+
|
140
|
+
def assigned_v
|
141
|
+
summary[:assigned_v]
|
142
|
+
end
|
143
|
+
|
144
|
+
def cleared_v
|
145
|
+
summary[:cleared_v]
|
146
|
+
end
|
147
|
+
|
148
|
+
def assigned_e
|
149
|
+
summary[:assigned_e]
|
150
|
+
end
|
151
|
+
|
152
|
+
def cleared_e
|
153
|
+
summary[:cleared_e]
|
154
|
+
end
|
155
|
+
|
156
|
+
def each_v_change(&blk)
|
157
|
+
assigned_v.each(&blk)
|
158
|
+
cleared_v.each(&blk)
|
159
|
+
end
|
160
|
+
|
161
|
+
def each_e_change(&blk)
|
162
|
+
assigned_e.each(&blk)
|
163
|
+
cleared_e.each(&blk)
|
164
|
+
end
|
165
|
+
|
166
|
+
def as_json(options = nil)
|
167
|
+
summary.as_json(options)
|
98
168
|
end
|
99
169
|
end
|
100
170
|
end
|
data/lib/pacer-neo4j/version.rb
CHANGED
metadata
CHANGED
@@ -1,14 +1,14 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: pacer-neo4j
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 2.3.
|
4
|
+
version: 2.3.7
|
5
5
|
platform: java
|
6
6
|
authors:
|
7
7
|
- Darrick Wiebe
|
8
8
|
autorequire:
|
9
9
|
bindir: bin
|
10
10
|
cert_chain: []
|
11
|
-
date:
|
11
|
+
date: 2016-02-22 00:00:00.000000000 Z
|
12
12
|
dependencies:
|
13
13
|
- !ruby/object:Gem::Dependency
|
14
14
|
name: pacer
|