ObjectModel 0.3.0

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.
Files changed (90) hide show
  1. data/README +849 -0
  2. data/lib/ObjectModel.res/config.yaml +5 -0
  3. data/lib/ObjectModel/AnEntity/BackReferences.rb +113 -0
  4. data/lib/ObjectModel/AnEntity/Bag.rb +129 -0
  5. data/lib/ObjectModel/AnEntity/BagCopy.rb +29 -0
  6. data/lib/ObjectModel/AnEntity/ChildrenBag.rb +10 -0
  7. data/lib/ObjectModel/AnEntity/EntityCopy.rb +38 -0
  8. data/lib/ObjectModel/AnEntity/EntityType.rb +408 -0
  9. data/lib/ObjectModel/AnEntity/ReferencesBag.rb +10 -0
  10. data/lib/ObjectModel/AnEntity/entity_cm.rb +108 -0
  11. data/lib/ObjectModel/Entity.rb +278 -0
  12. data/lib/ObjectModel/Errors/LoadError.rb +3 -0
  13. data/lib/ObjectModel/Errors/NoTransactionError.rb +3 -0
  14. data/lib/ObjectModel/Errors/NotFoundError.rb +2 -0
  15. data/lib/ObjectModel/Errors/OutdatedError.rb +8 -0
  16. data/lib/ObjectModel/Errors/ValidationError.rb +3 -0
  17. data/lib/ObjectModel/Indexes/HashIndex.rb +64 -0
  18. data/lib/ObjectModel/Indexes/IndexStorage.rb +64 -0
  19. data/lib/ObjectModel/Indexes/Manager.rb +72 -0
  20. data/lib/ObjectModel/Metadata.rb +34 -0
  21. data/lib/ObjectModel/Metadata.res/after_event_types.rb +25 -0
  22. data/lib/ObjectModel/Metadata.res/attribute_types_shortcuts.rb +10 -0
  23. data/lib/ObjectModel/Metadata.res/before_event_types.rb +25 -0
  24. data/lib/ObjectModel/Metadata.res/child_types_shortcuts.rb +4 -0
  25. data/lib/ObjectModel/Metadata.res/metadata_checks.rb +9 -0
  26. data/lib/ObjectModel/Metadata.res/reference_types_shortcuts.rb +4 -0
  27. data/lib/ObjectModel/Metadata/DSL.rb +11 -0
  28. data/lib/ObjectModel/Metadata/attribute.rb +56 -0
  29. data/lib/ObjectModel/Metadata/child.rb +50 -0
  30. data/lib/ObjectModel/Metadata/events.rb +109 -0
  31. data/lib/ObjectModel/Metadata/name.rb +20 -0
  32. data/lib/ObjectModel/Metadata/reference.rb +50 -0
  33. data/lib/ObjectModel/Metadata/require.rb +10 -0
  34. data/lib/ObjectModel/Metadata/validate.rb +66 -0
  35. data/lib/ObjectModel/Repository.rb +326 -0
  36. data/lib/ObjectModel/Repository/EventProcessor.rb +58 -0
  37. data/lib/ObjectModel/Repository/ObjectStorage.rb +102 -0
  38. data/lib/ObjectModel/Repository/StreamID.rb +20 -0
  39. data/lib/ObjectModel/Repository/StreamStorage.rb +121 -0
  40. data/lib/ObjectModel/Repository/SystemListener.rb +143 -0
  41. data/lib/ObjectModel/Repository/Transaction.rb +63 -0
  42. data/lib/ObjectModel/Repository/TransactionProcessor.rb +36 -0
  43. data/lib/ObjectModel/Tools/DefaultTransactionStrategy.rb +9 -0
  44. data/lib/ObjectModel/Tools/InMemoryCache.rb +9 -0
  45. data/lib/ObjectModel/Tools/NoCache.rb +18 -0
  46. data/lib/ObjectModel/Tools/OGLRUCache.rb +37 -0
  47. data/lib/ObjectModel/Types/BagType.rb +94 -0
  48. data/lib/ObjectModel/Types/BooleanType.rb +42 -0
  49. data/lib/ObjectModel/Types/ClassType.rb +43 -0
  50. data/lib/ObjectModel/Types/DataType.rb +44 -0
  51. data/lib/ObjectModel/Types/DateType.rb +43 -0
  52. data/lib/ObjectModel/Types/NumberType.rb +62 -0
  53. data/lib/ObjectModel/Types/ObjectType.rb +164 -0
  54. data/lib/ObjectModel/Types/ProcType.rb +43 -0
  55. data/lib/ObjectModel/Types/SingleType.rb +59 -0
  56. data/lib/ObjectModel/Types/StringType.rb +39 -0
  57. data/lib/ObjectModel/_require.rb +43 -0
  58. data/lib/ObjectModel/require.rb +1 -0
  59. data/rakefile +62 -0
  60. data/spec/ObjectModel/BasicSpec/BaseClass.rb +7 -0
  61. data/spec/ObjectModel/BasicSpec/BaseTypes.rb +11 -0
  62. data/spec/ObjectModel/BasicSpec/Descendant.rb +5 -0
  63. data/spec/ObjectModel/BasicSpec/EachTest.rb +14 -0
  64. data/spec/ObjectModel/BasicSpec/UpChild.rb +10 -0
  65. data/spec/ObjectModel/BasicSpec/UpParent.rb +11 -0
  66. data/spec/ObjectModel/ErrorsSpec/AfterCommitError.rb +9 -0
  67. data/spec/ObjectModel/ExtendedSpec/CustomInitialization.rb +11 -0
  68. data/spec/ObjectModel/ExtendedSpec/UpNotNil.rb +8 -0
  69. data/spec/ObjectModel/ExtendedSpec/UpParent.rb +11 -0
  70. data/spec/ObjectModel/ValidationSpec/BaseTypes.rb +11 -0
  71. data/spec/aspect_spec.rb +55 -0
  72. data/spec/back_references_spec.rb +161 -0
  73. data/spec/basic_spec.rb +162 -0
  74. data/spec/cascade_delete_spec.rb +168 -0
  75. data/spec/complex_events_spec.rb +134 -0
  76. data/spec/concurrency_spec.rb +186 -0
  77. data/spec/containment_spec.rb +146 -0
  78. data/spec/data_migration_spec.rb +51 -0
  79. data/spec/errors_spec.rb +65 -0
  80. data/spec/events_spec.rb +173 -0
  81. data/spec/extended_spec.rb +171 -0
  82. data/spec/indexing_spec.rb +56 -0
  83. data/spec/set_in_memory.rb +2 -0
  84. data/spec/set_no_cache.rb +2 -0
  85. data/spec/smoke_test_spec.rb +85 -0
  86. data/spec/stream_spec.rb +143 -0
  87. data/spec/stream_storage.rb +148 -0
  88. data/spec/timer.rb +5 -0
  89. data/spec/validation_spec.rb +87 -0
  90. metadata +186 -0
@@ -0,0 +1,87 @@
1
+ require 'ObjectModel/require'
2
+ require 'spec'
3
+
4
+ module ObjectModel
5
+ module ValidationSpec
6
+ describe "ValidationSpec" do
7
+
8
+ it "TypeCheck" do
9
+ @r.transaction{
10
+ e = BaseTypes.new 'e'
11
+ lambda{e.string = 1}.should raise_error(ValidationError)
12
+ lambda{e.number = ""}.should raise_error(ValidationError)
13
+ lambda{e.boolean = 1}.should raise_error(ValidationError)
14
+ lambda{e.object = lambda{}}.should raise_error(ValidationError)
15
+ lambda{e.data = 1}.should raise_error(ValidationError)
16
+ lambda{e.date = 1}.should raise_error(ValidationError)
17
+ }
18
+ end
19
+
20
+ class Parent
21
+ inherit Entity
22
+
23
+ metadata do
24
+ attribute :label, :string
25
+
26
+ validate do
27
+ raise "Invalid Parent" if label == "parent invalid"
28
+ end
29
+ end
30
+ end
31
+
32
+ class Child < Parent
33
+ inherit Entity
34
+
35
+ metadata do
36
+ validate do
37
+ raise "Invalid Child" if label == "child invalid"
38
+ end
39
+ end
40
+ end
41
+
42
+ it "Should inherit Validation from Parents" do
43
+ @r.transaction{Child.new.set :label => "name"}.commit
44
+ lambda{
45
+ @r.transaction{Child.new.set :label => "parent invalid"}.commit
46
+ }.should raise_error(/Invalid Parent/)
47
+ lambda{
48
+ @r.transaction{Child.new.set :label => "child invalid"}.commit
49
+ }.should raise_error(/Invalid Child/)
50
+ end
51
+
52
+ it "Should allow explicitly Validate Entity" do
53
+ @r.transaction{Child.new.set :label => "name"}.commit
54
+ @r.transaction{
55
+ c = Child.new.set :label => "parent invalid"
56
+ lambda{c.validate}.should raise_error(/Invalid Parent/)
57
+ }
58
+ end
59
+
60
+ class AttributeValidation
61
+ inherit Entity
62
+
63
+ metadata do
64
+ attribute :label, :string, :validate => lambda{|v| raise "error" if v == "invalid"}
65
+ end
66
+ end
67
+
68
+ it "Attribute Validation" do
69
+ @r.transaction{
70
+ e = AttributeValidation.new
71
+ lambda{e.label = "invalid"}.should raise_error(ValidationError)
72
+ }
73
+ end
74
+
75
+ before :each do
76
+ CONFIG[:directory] = "#{File.dirname __FILE__}/data"
77
+ Repository.delete :test
78
+ @r = Repository.new :test
79
+ end
80
+
81
+ after :each do
82
+ @r.close
83
+ Repository.delete :test
84
+ end
85
+ end
86
+ end
87
+ end
metadata ADDED
@@ -0,0 +1,186 @@
1
+ --- !ruby/object:Gem::Specification
2
+ name: ObjectModel
3
+ version: !ruby/object:Gem::Version
4
+ version: 0.3.0
5
+ platform: ruby
6
+ authors:
7
+ - Alexey Petrushin
8
+ autorequire:
9
+ bindir: bin
10
+ cert_chain: []
11
+
12
+ date: 2009-06-15 00:00:00 -04:00
13
+ default_executable:
14
+ dependencies:
15
+ - !ruby/object:Gem::Dependency
16
+ name: RubyExt
17
+ type: :runtime
18
+ version_requirement:
19
+ version_requirements: !ruby/object:Gem::Requirement
20
+ requirements:
21
+ - - ">="
22
+ - !ruby/object:Gem::Version
23
+ version: "0"
24
+ version:
25
+ - !ruby/object:Gem::Dependency
26
+ name: sequel
27
+ type: :runtime
28
+ version_requirement:
29
+ version_requirements: !ruby/object:Gem::Requirement
30
+ requirements:
31
+ - - ">="
32
+ - !ruby/object:Gem::Version
33
+ version: "0"
34
+ version:
35
+ - !ruby/object:Gem::Dependency
36
+ name: ruby2ruby
37
+ type: :runtime
38
+ version_requirement:
39
+ version_requirements: !ruby/object:Gem::Requirement
40
+ requirements:
41
+ - - ">="
42
+ - !ruby/object:Gem::Version
43
+ version: "0"
44
+ version:
45
+ description: ObjectModel is an Object Oriented Database inspired by MDD approach, db4o and ZODB.
46
+ email:
47
+ executables: []
48
+
49
+ extensions: []
50
+
51
+ extra_rdoc_files:
52
+ - README
53
+ files:
54
+ - rakefile
55
+ - README
56
+ - lib/ObjectModel
57
+ - lib/ObjectModel/Entity.rb
58
+ - lib/ObjectModel/Metadata
59
+ - lib/ObjectModel/Metadata/validate.rb
60
+ - lib/ObjectModel/Metadata/DSL.rb
61
+ - lib/ObjectModel/Metadata/events.rb
62
+ - lib/ObjectModel/Metadata/require.rb
63
+ - lib/ObjectModel/Metadata/attribute.rb
64
+ - lib/ObjectModel/Metadata/reference.rb
65
+ - lib/ObjectModel/Metadata/name.rb
66
+ - lib/ObjectModel/Metadata/child.rb
67
+ - lib/ObjectModel/Metadata.rb
68
+ - lib/ObjectModel/require.rb
69
+ - lib/ObjectModel/Repository
70
+ - lib/ObjectModel/Repository/StreamID.rb
71
+ - lib/ObjectModel/Repository/SystemListener.rb
72
+ - lib/ObjectModel/Repository/EventProcessor.rb
73
+ - lib/ObjectModel/Repository/Transaction.rb
74
+ - lib/ObjectModel/Repository/TransactionProcessor.rb
75
+ - lib/ObjectModel/Repository/StreamStorage.rb
76
+ - lib/ObjectModel/Repository/ObjectStorage.rb
77
+ - lib/ObjectModel/_require.rb
78
+ - lib/ObjectModel/Tools
79
+ - lib/ObjectModel/Tools/NoCache.rb
80
+ - lib/ObjectModel/Tools/DefaultTransactionStrategy.rb
81
+ - lib/ObjectModel/Tools/OGLRUCache.rb
82
+ - lib/ObjectModel/Tools/InMemoryCache.rb
83
+ - lib/ObjectModel/Repository.rb
84
+ - lib/ObjectModel/Types
85
+ - lib/ObjectModel/Types/ObjectType.rb
86
+ - lib/ObjectModel/Types/ProcType.rb
87
+ - lib/ObjectModel/Types/BagType.rb
88
+ - lib/ObjectModel/Types/DataType.rb
89
+ - lib/ObjectModel/Types/ClassType.rb
90
+ - lib/ObjectModel/Types/SingleType.rb
91
+ - lib/ObjectModel/Types/DateType.rb
92
+ - lib/ObjectModel/Types/NumberType.rb
93
+ - lib/ObjectModel/Types/StringType.rb
94
+ - lib/ObjectModel/Types/BooleanType.rb
95
+ - lib/ObjectModel/Errors
96
+ - lib/ObjectModel/Errors/ValidationError.rb
97
+ - lib/ObjectModel/Errors/LoadError.rb
98
+ - lib/ObjectModel/Errors/OutdatedError.rb
99
+ - lib/ObjectModel/Errors/NoTransactionError.rb
100
+ - lib/ObjectModel/Errors/NotFoundError.rb
101
+ - lib/ObjectModel/AnEntity
102
+ - lib/ObjectModel/AnEntity/BackReferences.rb
103
+ - lib/ObjectModel/AnEntity/ChildrenBag.rb
104
+ - lib/ObjectModel/AnEntity/entity_cm.rb
105
+ - lib/ObjectModel/AnEntity/BagCopy.rb
106
+ - lib/ObjectModel/AnEntity/Bag.rb
107
+ - lib/ObjectModel/AnEntity/ReferencesBag.rb
108
+ - lib/ObjectModel/AnEntity/EntityCopy.rb
109
+ - lib/ObjectModel/AnEntity/EntityType.rb
110
+ - lib/ObjectModel/Indexes
111
+ - lib/ObjectModel/Indexes/HashIndex.rb
112
+ - lib/ObjectModel/Indexes/IndexStorage.rb
113
+ - lib/ObjectModel/Indexes/Manager.rb
114
+ - lib/ObjectModel/Metadata.res
115
+ - lib/ObjectModel/Metadata.res/child_types_shortcuts.rb
116
+ - lib/ObjectModel/Metadata.res/after_event_types.rb
117
+ - lib/ObjectModel/Metadata.res/reference_types_shortcuts.rb
118
+ - lib/ObjectModel/Metadata.res/before_event_types.rb
119
+ - lib/ObjectModel/Metadata.res/attribute_types_shortcuts.rb
120
+ - lib/ObjectModel/Metadata.res/metadata_checks.rb
121
+ - lib/ObjectModel.res
122
+ - lib/ObjectModel.res/config.yaml
123
+ - spec/basic_spec.rb
124
+ - spec/data_migration_spec.rb
125
+ - spec/events_spec.rb
126
+ - spec/ObjectModel
127
+ - spec/ObjectModel/BasicSpec
128
+ - spec/ObjectModel/BasicSpec/UpParent.rb
129
+ - spec/ObjectModel/BasicSpec/BaseClass.rb
130
+ - spec/ObjectModel/BasicSpec/EachTest.rb
131
+ - spec/ObjectModel/BasicSpec/UpChild.rb
132
+ - spec/ObjectModel/BasicSpec/BaseTypes.rb
133
+ - spec/ObjectModel/BasicSpec/Descendant.rb
134
+ - spec/ObjectModel/ErrorsSpec
135
+ - spec/ObjectModel/ErrorsSpec/AfterCommitError.rb
136
+ - spec/ObjectModel/ValidationSpec
137
+ - spec/ObjectModel/ValidationSpec/BaseTypes.rb
138
+ - spec/ObjectModel/ExtendedSpec
139
+ - spec/ObjectModel/ExtendedSpec/UpParent.rb
140
+ - spec/ObjectModel/ExtendedSpec/UpNotNil.rb
141
+ - spec/ObjectModel/ExtendedSpec/CustomInitialization.rb
142
+ - spec/containment_spec.rb
143
+ - spec/back_references_spec.rb
144
+ - spec/stream_spec.rb
145
+ - spec/concurrency_spec.rb
146
+ - spec/indexing_spec.rb
147
+ - spec/complex_events_spec.rb
148
+ - spec/cascade_delete_spec.rb
149
+ - spec/set_no_cache.rb
150
+ - spec/stream_storage.rb
151
+ - spec/validation_spec.rb
152
+ - spec/data
153
+ - spec/set_in_memory.rb
154
+ - spec/errors_spec.rb
155
+ - spec/timer.rb
156
+ - spec/aspect_spec.rb
157
+ - spec/extended_spec.rb
158
+ - spec/smoke_test_spec.rb
159
+ has_rdoc: true
160
+ homepage: http://www.bos-tec.com
161
+ post_install_message:
162
+ rdoc_options: []
163
+
164
+ require_paths:
165
+ - lib
166
+ required_ruby_version: !ruby/object:Gem::Requirement
167
+ requirements:
168
+ - - ">="
169
+ - !ruby/object:Gem::Version
170
+ version: "0"
171
+ version:
172
+ required_rubygems_version: !ruby/object:Gem::Requirement
173
+ requirements:
174
+ - - ">="
175
+ - !ruby/object:Gem::Version
176
+ version: "0"
177
+ version:
178
+ requirements: []
179
+
180
+ rubyforge_project: ObjectModel
181
+ rubygems_version: 1.3.1
182
+ signing_key:
183
+ specification_version: 2
184
+ summary: ObjectModel is an Object Oriented Database inspired by MDD approach, db4o and ZODB.
185
+ test_files: []
186
+