pacer-neo4j 2.3.6-java → 2.3.7-java

Sign up to get free protection for your applications and to get access to all the features.
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA1:
3
- metadata.gz: b4b41ed206cdac528c19ae104d9dc2721da2f949
4
- data.tar.gz: 6b91323fdb6975bcb5bf8e203cda50e7538be6f2
3
+ metadata.gz: fb5ae3d33a7a0cb20096d759a169e3b91cda462d
4
+ data.tar.gz: f9f6ef9f5811bdbb8722f10ac921e1077766742c
5
5
  SHA512:
6
- metadata.gz: a07f554b469dd41970f6f025b21b4265c6b3e3d18b2a824e64251510ecc1ceba1b6e1887c2494e54a0b1898152de37ab15f7804c20c1ca26a4b3cdaf17b9f996
7
- data.tar.gz: 30dbe55f17795b728958f26ecc01babca2d78bb5bb2ad5281ff02cd34870a9546d6b16f3f5cd8dbf6c542c78ad1e849253824a4170574c55e13356a1357965a0
6
+ metadata.gz: 314361d41e620002f9724521fac1fdff104f141fceac4089fae4dbb23faa95a168452cc7987ab931d740554075eacecfefe2f4b7795509d713250566d345d788
7
+ data.tar.gz: 3be0b55fd8b1ef72ac3833fb1d3b629da4da7473838003bfca03355a7113d942ed616c58a060a16eca1786ec8060f596bca2f8eed30f2a0229c87ef5aea79c7a
@@ -109,12 +109,28 @@ module Pacer
109
109
  blueprints_graph.raw_graph
110
110
  end
111
111
 
112
- def on_commit(&block)
113
- return unless block
114
- TransactionEventHandler.new(self).tap do |h|
115
- h.on_commit = block
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
- TransactionEventHandler.new(self).tap do |h|
137
- h.before_commit = block
138
- neo_graph.registerTransactionEventHandler h
139
- end
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
- before_commit.call TxDataWrapper.new data, graph if before_commit
22
- nil
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, ignore)
26
- on_commit.call TxDataWrapper.new data, graph if on_commit
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, ignore)
36
- on_commit_failed.call TxDataWrapper.new data, graph if on_commit_failed
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
- tx.createdNodes.map { |n| n.getId }
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 changed_v
63
+ def assigned_v
54
64
  tx.assignedNodeProperties.map do |p|
55
- { element_type: :vertex,
56
- id: p.entity.getId,
57
- key: p.key,
58
- was: graph.decode_property(p.previouslyCommitedValue),
59
- is: graph.decode_property(p.value) }
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
- { element_type: :vertex,
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 changed_e
75
+ def assigned_e
71
76
  tx.assignedRelationshipProperties.map do |p|
72
- { element_type: :edge,
73
- id: p.entity.getId,
74
- key: p.key,
75
- was: graph.decode_property(p.previouslyCommitedValue),
76
- is: graph.decode_property(p.value) }
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
- { element_type: :edge,
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 changes
88
- changed_v + changed_e
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
- changed_v: changed_v,
97
- changed_e: changed_e }
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
@@ -1,6 +1,6 @@
1
1
  module Pacer
2
2
  module Neo4j
3
- VERSION = "2.3.6"
3
+ VERSION = "2.3.7"
4
4
  PACER_REQ = ">= 2.0.6"
5
5
  end
6
6
  end
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.6
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: 2015-10-19 00:00:00.000000000 Z
11
+ date: 2016-02-22 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: pacer