synapse-core 0.1.2
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/lib/synapse.rb +351 -0
- data/lib/synapse/command/command_bus.rb +45 -0
- data/lib/synapse/command/command_callback.rb +18 -0
- data/lib/synapse/command/command_filter.rb +17 -0
- data/lib/synapse/command/command_handler.rb +13 -0
- data/lib/synapse/command/dispatch_interceptor.rb +16 -0
- data/lib/synapse/command/duplication.rb +43 -0
- data/lib/synapse/command/errors.rb +27 -0
- data/lib/synapse/command/filters/validation.rb +32 -0
- data/lib/synapse/command/gateway.rb +34 -0
- data/lib/synapse/command/interceptor_chain.rb +31 -0
- data/lib/synapse/command/interceptors/serialization.rb +35 -0
- data/lib/synapse/command/message.rb +19 -0
- data/lib/synapse/command/rollback_policy.rb +22 -0
- data/lib/synapse/command/simple_command_bus.rb +138 -0
- data/lib/synapse/command/wiring.rb +47 -0
- data/lib/synapse/domain/aggregate_root.rb +121 -0
- data/lib/synapse/domain/event_container.rb +127 -0
- data/lib/synapse/domain/message.rb +82 -0
- data/lib/synapse/domain/message_builder.rb +34 -0
- data/lib/synapse/domain/stream.rb +108 -0
- data/lib/synapse/duplication.rb +60 -0
- data/lib/synapse/errors.rb +13 -0
- data/lib/synapse/event_bus/event_bus.rb +40 -0
- data/lib/synapse/event_bus/event_listener.rb +16 -0
- data/lib/synapse/event_bus/event_listener_proxy.rb +12 -0
- data/lib/synapse/event_bus/simple_event_bus.rb +69 -0
- data/lib/synapse/event_bus/wiring.rb +23 -0
- data/lib/synapse/event_sourcing/aggregate_factory.rb +69 -0
- data/lib/synapse/event_sourcing/aggregate_root.rb +104 -0
- data/lib/synapse/event_sourcing/conflict_resolver.rb +80 -0
- data/lib/synapse/event_sourcing/entity.rb +64 -0
- data/lib/synapse/event_sourcing/member.rb +72 -0
- data/lib/synapse/event_sourcing/repository.rb +119 -0
- data/lib/synapse/event_sourcing/snapshot/count_stream.rb +86 -0
- data/lib/synapse/event_sourcing/snapshot/count_trigger.rb +91 -0
- data/lib/synapse/event_sourcing/snapshot/taker.rb +73 -0
- data/lib/synapse/event_sourcing/storage_listener.rb +34 -0
- data/lib/synapse/event_sourcing/stream_decorator.rb +25 -0
- data/lib/synapse/event_store/errors.rb +16 -0
- data/lib/synapse/event_store/event_store.rb +43 -0
- data/lib/synapse/event_store/in_memory.rb +59 -0
- data/lib/synapse/event_store/mongo/cursor_event_stream.rb +63 -0
- data/lib/synapse/event_store/mongo/event_store.rb +86 -0
- data/lib/synapse/event_store/mongo/per_commit_strategy.rb +253 -0
- data/lib/synapse/event_store/mongo/per_event_strategy.rb +143 -0
- data/lib/synapse/event_store/mongo/storage_strategy.rb +113 -0
- data/lib/synapse/event_store/mongo/template.rb +73 -0
- data/lib/synapse/identifier.rb +23 -0
- data/lib/synapse/message.rb +101 -0
- data/lib/synapse/message_builder.rb +38 -0
- data/lib/synapse/process_manager/correlation.rb +32 -0
- data/lib/synapse/process_manager/correlation_resolver.rb +14 -0
- data/lib/synapse/process_manager/correlation_set.rb +58 -0
- data/lib/synapse/process_manager/process.rb +71 -0
- data/lib/synapse/repository/errors.rb +26 -0
- data/lib/synapse/repository/lock_manager.rb +40 -0
- data/lib/synapse/repository/locking.rb +97 -0
- data/lib/synapse/repository/pessimistic_lock_manager.rb +61 -0
- data/lib/synapse/repository/repository.rb +109 -0
- data/lib/synapse/serialization/converter.rb +39 -0
- data/lib/synapse/serialization/converter/chain.rb +45 -0
- data/lib/synapse/serialization/converter/factory.rb +68 -0
- data/lib/synapse/serialization/converter/identity.rb +29 -0
- data/lib/synapse/serialization/converter/json.rb +31 -0
- data/lib/synapse/serialization/converter/ox.rb +31 -0
- data/lib/synapse/serialization/errors.rb +12 -0
- data/lib/synapse/serialization/lazy_object.rb +61 -0
- data/lib/synapse/serialization/message/data.rb +25 -0
- data/lib/synapse/serialization/message/metadata.rb +13 -0
- data/lib/synapse/serialization/message/serialization_aware.rb +17 -0
- data/lib/synapse/serialization/message/serialization_aware_message.rb +66 -0
- data/lib/synapse/serialization/message/serialized_message.rb +201 -0
- data/lib/synapse/serialization/message/serialized_message_builder.rb +64 -0
- data/lib/synapse/serialization/message/serialized_object_cache.rb +50 -0
- data/lib/synapse/serialization/message/serializer.rb +47 -0
- data/lib/synapse/serialization/revision_resolver.rb +30 -0
- data/lib/synapse/serialization/serialized_object.rb +37 -0
- data/lib/synapse/serialization/serialized_type.rb +31 -0
- data/lib/synapse/serialization/serializer.rb +98 -0
- data/lib/synapse/serialization/serializer/marshal.rb +32 -0
- data/lib/synapse/serialization/serializer/oj.rb +34 -0
- data/lib/synapse/serialization/serializer/ox.rb +31 -0
- data/lib/synapse/uow/factory.rb +28 -0
- data/lib/synapse/uow/listener.rb +79 -0
- data/lib/synapse/uow/listener_collection.rb +93 -0
- data/lib/synapse/uow/nesting.rb +262 -0
- data/lib/synapse/uow/provider.rb +71 -0
- data/lib/synapse/uow/storage_listener.rb +14 -0
- data/lib/synapse/uow/transaction_manager.rb +27 -0
- data/lib/synapse/uow/uow.rb +178 -0
- data/lib/synapse/upcasting/chain.rb +78 -0
- data/lib/synapse/upcasting/context.rb +58 -0
- data/lib/synapse/upcasting/data.rb +30 -0
- data/lib/synapse/upcasting/single_upcaster.rb +57 -0
- data/lib/synapse/upcasting/upcaster.rb +55 -0
- data/lib/synapse/version.rb +3 -0
- data/lib/synapse/wiring/message_wiring.rb +41 -0
- data/lib/synapse/wiring/wire.rb +55 -0
- data/lib/synapse/wiring/wire_registry.rb +61 -0
- data/test/command/duplication_test.rb +54 -0
- data/test/command/gateway_test.rb +25 -0
- data/test/command/interceptor_chain_test.rb +26 -0
- data/test/command/serialization_test.rb +37 -0
- data/test/command/simple_command_bus_test.rb +141 -0
- data/test/command/validation_test.rb +42 -0
- data/test/command/wiring_test.rb +73 -0
- data/test/domain/aggregate_root_test.rb +57 -0
- data/test/domain/fixtures.rb +31 -0
- data/test/domain/message_test.rb +61 -0
- data/test/domain/stream_test.rb +35 -0
- data/test/duplication_test.rb +40 -0
- data/test/event_bus/wiring_test.rb +46 -0
- data/test/event_sourcing/aggregate_factory_test.rb +28 -0
- data/test/event_sourcing/aggregate_root_test.rb +76 -0
- data/test/event_sourcing/entity_test.rb +34 -0
- data/test/event_sourcing/fixtures.rb +85 -0
- data/test/event_sourcing/repository_test.rb +102 -0
- data/test/event_sourcing/snapshot/aggregate_taker_test.rb +39 -0
- data/test/event_sourcing/snapshot/deferred_taker_test.rb +19 -0
- data/test/event_sourcing/snapshot/integration_test.rb +65 -0
- data/test/event_sourcing/storage_listener_test.rb +77 -0
- data/test/event_store/in_memory_test.rb +47 -0
- data/test/process_manager/correlation_set_test.rb +49 -0
- data/test/process_manager/correlation_test.rb +24 -0
- data/test/process_manager/process_test.rb +52 -0
- data/test/repository/locking_test.rb +101 -0
- data/test/serialization/converter/factory_test.rb +33 -0
- data/test/serialization/converter/identity_test.rb +17 -0
- data/test/serialization/converter/json_test.rb +31 -0
- data/test/serialization/converter/ox_test.rb +40 -0
- data/test/serialization/fixtures.rb +17 -0
- data/test/serialization/lazy_object_test.rb +32 -0
- data/test/serialization/message/metadata_test.rb +19 -0
- data/test/serialization/message/serialization_aware_message_test.rb +88 -0
- data/test/serialization/message/serialized_message_builder_test.rb +41 -0
- data/test/serialization/message/serialized_message_test.rb +140 -0
- data/test/serialization/message/serializer_test.rb +50 -0
- data/test/serialization/revision_resolver_test.rb +12 -0
- data/test/serialization/serialized_object_test.rb +36 -0
- data/test/serialization/serialized_type_test.rb +27 -0
- data/test/serialization/serializer/marshal_test.rb +22 -0
- data/test/serialization/serializer/oj_test.rb +24 -0
- data/test/serialization/serializer/ox_test.rb +36 -0
- data/test/serialization/serializer_test.rb +20 -0
- data/test/test_helper.rb +19 -0
- data/test/uow/factory_test.rb +23 -0
- data/test/uow/outer_commit_listener_test.rb +50 -0
- data/test/uow/provider_test.rb +70 -0
- data/test/uow/uow_test.rb +337 -0
- data/test/upcasting/chain_test.rb +29 -0
- data/test/upcasting/fixtures.rb +66 -0
- data/test/wiring/wire_registry_test.rb +60 -0
- data/test/wiring/wire_test.rb +51 -0
- metadata +263 -0
data/lib/synapse.rb
ADDED
|
@@ -0,0 +1,351 @@
|
|
|
1
|
+
require 'active_support'
|
|
2
|
+
require 'active_support/core_ext'
|
|
3
|
+
require 'eventmachine'
|
|
4
|
+
require 'logging'
|
|
5
|
+
require 'set'
|
|
6
|
+
|
|
7
|
+
require 'synapse/version'
|
|
8
|
+
|
|
9
|
+
module Synapse
|
|
10
|
+
extend ActiveSupport::Autoload
|
|
11
|
+
|
|
12
|
+
eager_autoload do
|
|
13
|
+
autoload_at 'synapse/errors' do
|
|
14
|
+
autoload :SynapseError
|
|
15
|
+
autoload :ConfigurationError
|
|
16
|
+
autoload :NonTransientError
|
|
17
|
+
autoload :TransientError
|
|
18
|
+
end
|
|
19
|
+
|
|
20
|
+
autoload_at 'synapse/identifier' do
|
|
21
|
+
autoload :IdentifierFactory
|
|
22
|
+
autoload :GuidIdentifierFactory
|
|
23
|
+
end
|
|
24
|
+
|
|
25
|
+
autoload :Message
|
|
26
|
+
autoload :MessageBuilder
|
|
27
|
+
|
|
28
|
+
autoload_at 'synapse/duplication' do
|
|
29
|
+
autoload :DuplicationError
|
|
30
|
+
autoload :DuplicationRecorder
|
|
31
|
+
end
|
|
32
|
+
end
|
|
33
|
+
|
|
34
|
+
module Command
|
|
35
|
+
extend ActiveSupport::Autoload
|
|
36
|
+
|
|
37
|
+
eager_autoload do
|
|
38
|
+
autoload :CommandBus
|
|
39
|
+
autoload :SimpleCommandBus
|
|
40
|
+
|
|
41
|
+
autoload :CommandCallback
|
|
42
|
+
autoload :CommandFilter
|
|
43
|
+
autoload :CommandHandler
|
|
44
|
+
|
|
45
|
+
autoload_at 'synapse/command/message' do
|
|
46
|
+
autoload :CommandMessage
|
|
47
|
+
autoload :CommandMessageBuilder
|
|
48
|
+
end
|
|
49
|
+
|
|
50
|
+
autoload :CommandGateway, 'synapse/command/gateway'
|
|
51
|
+
|
|
52
|
+
autoload :DispatchInterceptor
|
|
53
|
+
autoload :InterceptorChain
|
|
54
|
+
|
|
55
|
+
autoload_at 'synapse/command/duplication' do
|
|
56
|
+
autoload :DuplicationFilter
|
|
57
|
+
autoload :DuplicationCleanupInterceptor
|
|
58
|
+
end
|
|
59
|
+
|
|
60
|
+
autoload_at 'synapse/command/errors' do
|
|
61
|
+
autoload :CommandExecutionError
|
|
62
|
+
autoload :CommandValidationError
|
|
63
|
+
autoload :NoHandlerError
|
|
64
|
+
end
|
|
65
|
+
|
|
66
|
+
autoload_at 'synapse/command/filters/validation' do
|
|
67
|
+
autoload :ActiveModelValidationFilter
|
|
68
|
+
autoload :ActiveModelValidationError
|
|
69
|
+
end
|
|
70
|
+
|
|
71
|
+
autoload_at 'synapse/command/interceptors/serialization' do
|
|
72
|
+
autoload :SerializationOptimizingInterceptor
|
|
73
|
+
autoload :SerializationOptimizingListener
|
|
74
|
+
end
|
|
75
|
+
|
|
76
|
+
autoload_at 'synapse/command/rollback_policy' do
|
|
77
|
+
autoload :RollbackPolicy
|
|
78
|
+
autoload :RollbackOnAnyExceptionPolicy
|
|
79
|
+
end
|
|
80
|
+
|
|
81
|
+
autoload :WiringCommandHandler, 'synapse/command/wiring'
|
|
82
|
+
end
|
|
83
|
+
end
|
|
84
|
+
|
|
85
|
+
module Domain
|
|
86
|
+
extend ActiveSupport::Autoload
|
|
87
|
+
|
|
88
|
+
eager_autoload do
|
|
89
|
+
autoload_at 'synapse/domain/aggregate_root' do
|
|
90
|
+
autoload :AggregateRoot
|
|
91
|
+
autoload :AggregateIdentifierNotInitializedError
|
|
92
|
+
end
|
|
93
|
+
|
|
94
|
+
autoload :EventContainer
|
|
95
|
+
|
|
96
|
+
autoload_at 'synapse/domain/message' do
|
|
97
|
+
autoload :EventMessage
|
|
98
|
+
autoload :DomainEventMessage
|
|
99
|
+
end
|
|
100
|
+
|
|
101
|
+
autoload_at 'synapse/domain/message_builder' do
|
|
102
|
+
autoload :EventMessageBuilder
|
|
103
|
+
autoload :DomainEventMessageBuilder
|
|
104
|
+
end
|
|
105
|
+
|
|
106
|
+
autoload_at 'synapse/domain/stream' do
|
|
107
|
+
autoload :DomainEventStream
|
|
108
|
+
autoload :EndOfStreamError
|
|
109
|
+
autoload :SimpleDomainEventStream
|
|
110
|
+
end
|
|
111
|
+
end
|
|
112
|
+
end
|
|
113
|
+
|
|
114
|
+
module EventBus
|
|
115
|
+
extend ActiveSupport::Autoload
|
|
116
|
+
|
|
117
|
+
eager_autoload do
|
|
118
|
+
autoload_at 'synapse/event_bus/event_bus' do
|
|
119
|
+
autoload :EventBus
|
|
120
|
+
autoload :SubscriptionFailedError
|
|
121
|
+
end
|
|
122
|
+
|
|
123
|
+
autoload :EventListener
|
|
124
|
+
autoload :EventListenerProxy
|
|
125
|
+
autoload :SimpleEventBus
|
|
126
|
+
autoload :WiringEventListener, 'synapse/event_bus/wiring'
|
|
127
|
+
end
|
|
128
|
+
end
|
|
129
|
+
|
|
130
|
+
module EventSourcing
|
|
131
|
+
extend ActiveSupport::Autoload
|
|
132
|
+
|
|
133
|
+
eager_autoload do
|
|
134
|
+
autoload_at 'synapse/event_sourcing/aggregate_factory' do
|
|
135
|
+
autoload :AggregateFactory
|
|
136
|
+
autoload :GenericAggregateFactory
|
|
137
|
+
end
|
|
138
|
+
|
|
139
|
+
autoload :AggregateRoot
|
|
140
|
+
autoload :Entity
|
|
141
|
+
autoload :Member
|
|
142
|
+
|
|
143
|
+
autoload :EventSourcingRepository, 'synapse/event_sourcing/repository'
|
|
144
|
+
autoload :EventSourcedStorageListener, 'synapse/event_sourcing/storage_listener'
|
|
145
|
+
autoload :EventStreamDecorator, 'synapse/event_sourcing/stream_decorator'
|
|
146
|
+
|
|
147
|
+
autoload_at 'synapse/event_sourcing/conflict_resolver' do
|
|
148
|
+
autoload :ConflictResolver
|
|
149
|
+
autoload :ConflictResolvingUnitOfWorkListener
|
|
150
|
+
autoload :CapturingEventStream
|
|
151
|
+
end
|
|
152
|
+
|
|
153
|
+
autoload_at 'synapse/event_sourcing/snapshot/taker' do
|
|
154
|
+
autoload :AggregateSnapshotTaker
|
|
155
|
+
autoload :DeferredSnapshotTaker
|
|
156
|
+
autoload :SnapshotTaker
|
|
157
|
+
end
|
|
158
|
+
|
|
159
|
+
autoload_at 'synapse/event_sourcing/snapshot/count_stream' do
|
|
160
|
+
autoload :CountingEventStream
|
|
161
|
+
autoload :TriggeringEventStream
|
|
162
|
+
autoload :SnapshotUnitOfWorkListener
|
|
163
|
+
end
|
|
164
|
+
|
|
165
|
+
autoload :EventCountSnapshotTrigger, 'synapse/event_sourcing/snapshot/count_trigger'
|
|
166
|
+
end
|
|
167
|
+
end
|
|
168
|
+
|
|
169
|
+
module EventStore
|
|
170
|
+
extend ActiveSupport::Autoload
|
|
171
|
+
|
|
172
|
+
eager_autoload do
|
|
173
|
+
autoload_at 'synapse/event_store/errors' do
|
|
174
|
+
autoload :EventStoreError
|
|
175
|
+
autoload :StreamNotFoundError
|
|
176
|
+
end
|
|
177
|
+
|
|
178
|
+
autoload_at 'synapse/event_store/event_store' do
|
|
179
|
+
autoload :EventStore
|
|
180
|
+
autoload :SnapshotEventStore
|
|
181
|
+
end
|
|
182
|
+
end
|
|
183
|
+
|
|
184
|
+
autoload :InMemoryEventStore, 'synapse/event_store/in_memory'
|
|
185
|
+
|
|
186
|
+
module Mongo
|
|
187
|
+
extend ActiveSupport::Autoload
|
|
188
|
+
|
|
189
|
+
autoload :CursorDomainEventStream, 'synapse/event_store/mongo/cursor_event_stream'
|
|
190
|
+
autoload :MongoEventStore, 'synapse/event_store/mongo/event_store'
|
|
191
|
+
autoload :DocumentPerEventStrategy, 'synapse/event_store/mongo/per_event_strategy'
|
|
192
|
+
autoload :DocumentPerCommitStrategy, 'synapse/event_store/mongo/per_commit_strategy'
|
|
193
|
+
autoload :StorageStrategy, 'synapse/event_store/mongo/storage_strategy'
|
|
194
|
+
|
|
195
|
+
autoload_at 'synapse/event_store/mongo/template' do
|
|
196
|
+
autoload :MongoTemplate
|
|
197
|
+
autoload :DefaultMongoTemplate
|
|
198
|
+
end
|
|
199
|
+
end
|
|
200
|
+
end
|
|
201
|
+
|
|
202
|
+
module ProcessManager
|
|
203
|
+
extend ActiveSupport::Autoload
|
|
204
|
+
|
|
205
|
+
autoload :Correlation
|
|
206
|
+
autoload :CorrelationResolver
|
|
207
|
+
autoload :CorrelationSet
|
|
208
|
+
|
|
209
|
+
autoload :Process
|
|
210
|
+
end
|
|
211
|
+
|
|
212
|
+
module Repository
|
|
213
|
+
extend ActiveSupport::Autoload
|
|
214
|
+
|
|
215
|
+
eager_autoload do
|
|
216
|
+
autoload_at 'synapse/repository/errors' do
|
|
217
|
+
autoload :AggregateNotFoundError
|
|
218
|
+
autoload :ConcurrencyError
|
|
219
|
+
autoload :ConflictingAggregateVersionError
|
|
220
|
+
autoload :ConflictingModificationError
|
|
221
|
+
end
|
|
222
|
+
|
|
223
|
+
autoload :LockManager
|
|
224
|
+
autoload :PessimisticLockManager
|
|
225
|
+
|
|
226
|
+
autoload_at 'synapse/repository/locking' do
|
|
227
|
+
autoload :LockingRepository
|
|
228
|
+
autoload :LockCleaningUnitOfWorkListener
|
|
229
|
+
end
|
|
230
|
+
|
|
231
|
+
autoload :Repository
|
|
232
|
+
end
|
|
233
|
+
end
|
|
234
|
+
|
|
235
|
+
module Serialization
|
|
236
|
+
extend ActiveSupport::Autoload
|
|
237
|
+
|
|
238
|
+
eager_autoload do
|
|
239
|
+
autoload :Converter
|
|
240
|
+
autoload :ConverterFactory, 'synapse/serialization/converter/factory'
|
|
241
|
+
autoload :IdentityConverter, 'synapse/serialization/converter/identity'
|
|
242
|
+
|
|
243
|
+
autoload_at 'synapse/serialization/errors' do
|
|
244
|
+
autoload :ConversionError
|
|
245
|
+
autoload :SerializationError
|
|
246
|
+
autoload :UnknownSerializedTypeError
|
|
247
|
+
end
|
|
248
|
+
|
|
249
|
+
autoload_at 'synapse/serialization/lazy_object' do
|
|
250
|
+
autoload :DeserializedObject
|
|
251
|
+
autoload :LazyObject
|
|
252
|
+
end
|
|
253
|
+
|
|
254
|
+
autoload_at 'synapse/serialization/revision_resolver' do
|
|
255
|
+
autoload :RevisionResolver
|
|
256
|
+
autoload :FixedRevisionResolver
|
|
257
|
+
end
|
|
258
|
+
|
|
259
|
+
autoload :SerializedDomainEventData, 'synapse/serialization/message/data'
|
|
260
|
+
autoload :MessageSerializer, 'synapse/serialization/message/serializer'
|
|
261
|
+
autoload :SerializedMetadata, 'synapse/serialization/message/metadata'
|
|
262
|
+
autoload :SerializationAware, 'synapse/serialization/message/serialization_aware'
|
|
263
|
+
autoload :SerializedObjectCache, 'synapse/serialization/message/serialized_object_cache'
|
|
264
|
+
|
|
265
|
+
autoload_at 'synapse/serialization/message/serialization_aware_message' do
|
|
266
|
+
autoload :SerializationAwareEventMessage
|
|
267
|
+
autoload :SerializationAwareDomainEventMessage
|
|
268
|
+
end
|
|
269
|
+
|
|
270
|
+
autoload_at 'synapse/serialization/message/serialized_message' do
|
|
271
|
+
autoload :SerializedMessage
|
|
272
|
+
autoload :SerializedEventMessage
|
|
273
|
+
autoload :SerializedDomainEventMessage
|
|
274
|
+
end
|
|
275
|
+
|
|
276
|
+
autoload_at 'synapse/serialization/message/serialized_message_builder' do
|
|
277
|
+
autoload :SerializedMessageBuilder
|
|
278
|
+
autoload :SerializedEventMessageBuilder
|
|
279
|
+
autoload :SerializedDomainEventMessageBuilder
|
|
280
|
+
end
|
|
281
|
+
|
|
282
|
+
autoload :Serializer
|
|
283
|
+
autoload :SerializedObject
|
|
284
|
+
autoload :SerializedType
|
|
285
|
+
end
|
|
286
|
+
|
|
287
|
+
autoload_at 'synapse/serialization/converter/json' do
|
|
288
|
+
autoload :JsonToObjectConverter
|
|
289
|
+
autoload :ObjectToJsonConverter
|
|
290
|
+
end
|
|
291
|
+
|
|
292
|
+
autoload_at 'synapse/serialization/converter/ox' do
|
|
293
|
+
autoload :XmlToOxDocumentConverter
|
|
294
|
+
autoload :OxDocumentToXmlConverter
|
|
295
|
+
end
|
|
296
|
+
|
|
297
|
+
autoload :OjSerializer, 'synapse/serialization/serializer/oj'
|
|
298
|
+
autoload :OxSerializer, 'synapse/serialization/serializer/ox'
|
|
299
|
+
autoload :MarshalSerializer, 'synapse/serialization/serializer/marshal'
|
|
300
|
+
end
|
|
301
|
+
|
|
302
|
+
module UnitOfWork
|
|
303
|
+
extend ActiveSupport::Autoload
|
|
304
|
+
|
|
305
|
+
eager_autoload do
|
|
306
|
+
autoload_at 'synapse/uow/nesting' do
|
|
307
|
+
autoload :NestableUnitOfWork
|
|
308
|
+
autoload :OuterCommitUnitOfWorkListener
|
|
309
|
+
end
|
|
310
|
+
|
|
311
|
+
autoload :StorageListener, 'synapse/uow/storage_listener'
|
|
312
|
+
autoload :TransactionManager, 'synapse/uow/transaction_manager'
|
|
313
|
+
autoload :UnitOfWork, 'synapse/uow/uow'
|
|
314
|
+
autoload :UnitOfWorkFactory, 'synapse/uow/factory'
|
|
315
|
+
autoload :UnitOfWorkListener, 'synapse/uow/listener'
|
|
316
|
+
autoload :UnitOfWorkListenerCollection, 'synapse/uow/listener_collection'
|
|
317
|
+
autoload :UnitOfWorkProvider, 'synapse/uow/provider'
|
|
318
|
+
end
|
|
319
|
+
end
|
|
320
|
+
|
|
321
|
+
module Upcasting
|
|
322
|
+
extend ActiveSupport::Autoload
|
|
323
|
+
|
|
324
|
+
autoload :SingleUpcaster
|
|
325
|
+
autoload :Upcaster
|
|
326
|
+
autoload :UpcasterChain, 'synapse/upcasting/chain'
|
|
327
|
+
|
|
328
|
+
autoload_at 'synapse/upcasting/context' do
|
|
329
|
+
autoload :UpcastingContext
|
|
330
|
+
autoload :SerializedDomainEventUpcastingContext
|
|
331
|
+
end
|
|
332
|
+
|
|
333
|
+
autoload :UpcastSerializedDomainEventData, 'synapse/upcasting/data'
|
|
334
|
+
end
|
|
335
|
+
|
|
336
|
+
module Wiring
|
|
337
|
+
extend ActiveSupport::Autoload
|
|
338
|
+
|
|
339
|
+
autoload :MessageWiring
|
|
340
|
+
autoload :Wire
|
|
341
|
+
autoload :WireRegistry
|
|
342
|
+
end
|
|
343
|
+
|
|
344
|
+
# TODO this is more of an application call
|
|
345
|
+
ActiveSupport::Autoload.eager_autoload!
|
|
346
|
+
|
|
347
|
+
# Setup the default identifier factory
|
|
348
|
+
ActiveSupport.on_load :identifier_factory do
|
|
349
|
+
IdentifierFactory.instance = GuidIdentifierFactory.new
|
|
350
|
+
end
|
|
351
|
+
end
|
|
@@ -0,0 +1,45 @@
|
|
|
1
|
+
module Synapse
|
|
2
|
+
module Command
|
|
3
|
+
# Represents a mechanism for dispatching commands to their appropriate handlers
|
|
4
|
+
#
|
|
5
|
+
# Command handlers can subscribe and unsubscribe to different command types. Only a single
|
|
6
|
+
# handler can be subscribed for a command type at one time.
|
|
7
|
+
#
|
|
8
|
+
# Implementations can choose to dispatch commands in the calling thread or in another thread.
|
|
9
|
+
#
|
|
10
|
+
# @abstract
|
|
11
|
+
class CommandBus
|
|
12
|
+
# Dispatches the given command to the handler subscribed to its type
|
|
13
|
+
#
|
|
14
|
+
# @abstract
|
|
15
|
+
# @param [CommandMessage] command
|
|
16
|
+
# @return [undefined]
|
|
17
|
+
def dispatch(command); end
|
|
18
|
+
|
|
19
|
+
# Dispatches the given command to the handler subscribed to its type and notifies the
|
|
20
|
+
# given callback of the outcome of the dispatch
|
|
21
|
+
#
|
|
22
|
+
# @abstract
|
|
23
|
+
# @param [CommandMessage] command
|
|
24
|
+
# @param [CommandCallback] callback
|
|
25
|
+
# @return [undefined]
|
|
26
|
+
def dispatch_with_callback(command, callback); end
|
|
27
|
+
|
|
28
|
+
# Subscribes the given handler to the given command type, replacing the currently subscribed
|
|
29
|
+
# handler, if any.
|
|
30
|
+
#
|
|
31
|
+
# @param [Class] command_type
|
|
32
|
+
# @param [CommandHandler] handler
|
|
33
|
+
# @return [undefined]
|
|
34
|
+
def subscribe(command_type, handler); end
|
|
35
|
+
|
|
36
|
+
# Unsubscribes the given handler from the given command type, if it is currently subscribed
|
|
37
|
+
# to the given command type.
|
|
38
|
+
#
|
|
39
|
+
# @param [Class] command_type
|
|
40
|
+
# @param [CommandHandler] handler
|
|
41
|
+
# @return [undefined]
|
|
42
|
+
def unsubscribe(command_type, handler); end
|
|
43
|
+
end
|
|
44
|
+
end
|
|
45
|
+
end
|
|
@@ -0,0 +1,18 @@
|
|
|
1
|
+
module Synapse
|
|
2
|
+
module Command
|
|
3
|
+
# Callback that is notified of the outcome of the dispatch of a command
|
|
4
|
+
class CommandCallback
|
|
5
|
+
# Called when a dispatch is successful
|
|
6
|
+
#
|
|
7
|
+
# @param [Object] result The result from the command handler
|
|
8
|
+
# @return [undefined]
|
|
9
|
+
def on_success(result); end
|
|
10
|
+
|
|
11
|
+
# Called when a dispatch fails due to an exception
|
|
12
|
+
#
|
|
13
|
+
# @param [Exception] exception The cause of the failure
|
|
14
|
+
# @return [undefined]
|
|
15
|
+
def on_failure(exception); end
|
|
16
|
+
end
|
|
17
|
+
end
|
|
18
|
+
end
|
|
@@ -0,0 +1,17 @@
|
|
|
1
|
+
module Synapse
|
|
2
|
+
module Command
|
|
3
|
+
# Represents a mechanism for validating or modifying commands before they are dispatched on
|
|
4
|
+
# the command bus. This filtering is done very early in the dispatch process, before a unit of
|
|
5
|
+
# work is created for the dispatch.
|
|
6
|
+
#
|
|
7
|
+
# @abstract
|
|
8
|
+
class CommandFilter
|
|
9
|
+
# Called when a command is preparing to be dispatched on the command bus
|
|
10
|
+
#
|
|
11
|
+
# @abstract
|
|
12
|
+
# @param [CommandMessage] command
|
|
13
|
+
# @return [CommandMessage] The command to dispatch on the bus
|
|
14
|
+
def filter(command); end
|
|
15
|
+
end
|
|
16
|
+
end
|
|
17
|
+
end
|
|
@@ -0,0 +1,13 @@
|
|
|
1
|
+
module Synapse
|
|
2
|
+
module Command
|
|
3
|
+
# Mixin for an object capable of handling commands
|
|
4
|
+
module CommandHandler
|
|
5
|
+
# Handles the given command
|
|
6
|
+
#
|
|
7
|
+
# @param [CommandMessage] command
|
|
8
|
+
# @param [UnitOfWork] current_unit Current unit of work
|
|
9
|
+
# @return [Object] The result of handling the given command
|
|
10
|
+
def handle(command, current_unit); end
|
|
11
|
+
end
|
|
12
|
+
end
|
|
13
|
+
end
|
|
@@ -0,0 +1,16 @@
|
|
|
1
|
+
module Synapse
|
|
2
|
+
module Command
|
|
3
|
+
# Interceptor wrapping a command dispatch that can add custom behavior before or after a
|
|
4
|
+
# command is dispatched to a command handler
|
|
5
|
+
#
|
|
6
|
+
# @abstract
|
|
7
|
+
class DispatchInterceptor
|
|
8
|
+
# @abstract
|
|
9
|
+
# @param [CommandMessage] command
|
|
10
|
+
# @param [UnitOfWork] unit The current unit of work for this command dispatch
|
|
11
|
+
# @param [InterceptorChain] chain
|
|
12
|
+
# @return [Object] The result of the execution of the command
|
|
13
|
+
def intercept(command, unit, chain); end
|
|
14
|
+
end
|
|
15
|
+
end
|
|
16
|
+
end
|