pacer-neo4j2 2.2.2-java → 2.2.3.1-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: e34dd778f9f5b6bff3c6983044d6812953c9d5d8
4
- data.tar.gz: 5a29e9d00b9ddd68826a099d0e677088073125a3
3
+ metadata.gz: 7b25e9b3b920ef6780d9db9505b6211985d5876b
4
+ data.tar.gz: 111a026f6a7da6a44bfe4c1ad7f2f7a02aa3e215
5
5
  SHA512:
6
- metadata.gz: 69604fba0a686440a34fb44f1c021c9a67dad2984b1cdbf24d6625169a096939b7f90607f802c401eb611bf2e844ddc392b5a835c86e971c2423b55168b0998b
7
- data.tar.gz: d1d61c6b8a72b55f35b3e27bfa16c6c34cac50a0ef6b5112044b6769b9dee95ed84f587c7dcaf56b620c9583b915df3d2cd16223925537a97c4d0e29e5694da5
6
+ metadata.gz: 8356d03f89635e84bf45ac4a80536d69cc2cc1641385e5d7048704aaedab17f9787232b79eb469e043722275a749e0ec9ff49ee97d94178fce13969bd672fec8
7
+ data.tar.gz: 432a457bfd14411c6bae2c202a5ab12f2c624e439ffa4bbfe3aacda029c593b565269465279a7c39feed3db190816fc962edefc4f84e09376f13ae767dc11f50
@@ -120,13 +120,28 @@ module Pacer
120
120
  def reopen_read_transaction
121
121
  blueprints_graph.autoStartTransaction(false) if in_read_transaction?
122
122
  end
123
+ def transaction_event_handler
124
+ unless @teh
125
+ @teh = TransactionEventHandler.new(self)
126
+ neo_graph.registerTransactionEventHandler @teh
127
+ end
128
+ @teh
129
+ end
123
130
 
124
- def on_commit(&block)
131
+ def before_commit(wrapper = nil, &block)
125
132
  return unless block
126
- TransactionEventHandler.new(self).tap do |h|
127
- h.on_commit = block
128
- neo_graph.registerTransactionEventHandler h
129
- end
133
+ wrapper = false if block.arity == 0
134
+ transaction_event_handler.before_commit_wrapper = wrapper unless wrapper.nil?
135
+ transaction_event_handler.before_commit = block
136
+ nil
137
+ end
138
+
139
+ def on_commit(wrapper = nil, &block)
140
+ return unless block
141
+ wrapper = false if block.arity == 0
142
+ transaction_event_handler.on_commit_wrapper = wrapper unless wrapper.nil?
143
+ transaction_event_handler.on_commit = block
144
+ nil
130
145
  end
131
146
 
132
147
  # This is actually only called if the commit fails and then it internally tries to
@@ -135,20 +150,12 @@ module Pacer
135
150
  # An exception in before_commit can definitely trigger this.
136
151
  #
137
152
  # Regular rollbacks do not get seen by the transaction system and no callback happens.
138
- def on_commit_failed(&block)
153
+ def on_commit_failed(wrapper = nil, &block)
139
154
  return unless block
140
- TransactionEventHandler.new(self).tap do |h|
141
- h.on_commit_failed = block
142
- neo_graph.registerTransactionEventHandler h
143
- end
144
- end
145
-
146
- def before_commit(&block)
147
- return unless block
148
- TransactionEventHandler.new(self).tap do |h|
149
- h.before_commit = block
150
- neo_graph.registerTransactionEventHandler h
151
- end
155
+ wrapper = false if block.arity == 0
156
+ transaction_event_handler.on_commit_failed_wrapper = wrapper unless wrapper.nil?
157
+ transaction_event_handler.on_commit_failed = block
158
+ nil
152
159
  end
153
160
 
154
161
  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 Neo4j2
3
- VERSION = "2.2.2"
3
+ VERSION = "2.2.3.1"
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-neo4j2
3
3
  version: !ruby/object:Gem::Version
4
- version: 2.2.2
4
+ version: 2.2.3.1
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-12 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: pacer