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 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