copland 0.8.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 (184) hide show
  1. data/doc/README +88 -0
  2. data/doc/manual-html/chapter-1.html +454 -0
  3. data/doc/manual-html/chapter-10.html +399 -0
  4. data/doc/manual-html/chapter-11.html +600 -0
  5. data/doc/manual-html/chapter-12.html +406 -0
  6. data/doc/manual-html/chapter-2.html +382 -0
  7. data/doc/manual-html/chapter-3.html +424 -0
  8. data/doc/manual-html/chapter-4.html +432 -0
  9. data/doc/manual-html/chapter-5.html +381 -0
  10. data/doc/manual-html/chapter-6.html +364 -0
  11. data/doc/manual-html/chapter-7.html +434 -0
  12. data/doc/manual-html/chapter-8.html +373 -0
  13. data/doc/manual-html/chapter-9.html +324 -0
  14. data/doc/manual-html/copland.png +0 -0
  15. data/doc/manual-html/index.html +331 -0
  16. data/doc/manual-html/manual.css +179 -0
  17. data/doc/manual-html/tutorial-1.html +407 -0
  18. data/doc/manual-html/tutorial-2.html +451 -0
  19. data/doc/manual-html/tutorial-3.html +484 -0
  20. data/doc/manual-html/tutorial-4.html +446 -0
  21. data/doc/manual-html/tutorial-5.html +520 -0
  22. data/doc/manual/chapter.erb +18 -0
  23. data/doc/manual/example.erb +18 -0
  24. data/doc/manual/img/copland.png +0 -0
  25. data/doc/manual/index.erb +30 -0
  26. data/doc/manual/manual.css +179 -0
  27. data/doc/manual/manual.rb +239 -0
  28. data/doc/manual/manual.yml +2643 -0
  29. data/doc/manual/page.erb +102 -0
  30. data/doc/manual/tutorial.erb +30 -0
  31. data/doc/packages/copland.html +764 -0
  32. data/doc/packages/copland.lib.html +439 -0
  33. data/doc/packages/copland.remote.html +2096 -0
  34. data/doc/packages/copland.webrick.html +925 -0
  35. data/doc/packages/index.html +49 -0
  36. data/doc/packages/packrat.css +125 -0
  37. data/examples/calc/calc.rb +47 -0
  38. data/examples/calc/package.yml +35 -0
  39. data/examples/calc/services.rb +74 -0
  40. data/examples/solitaire-cipher/README +11 -0
  41. data/examples/solitaire-cipher/Rakefile +57 -0
  42. data/examples/solitaire-cipher/bin/main.rb +14 -0
  43. data/examples/solitaire-cipher/lib/cipher.rb +230 -0
  44. data/examples/solitaire-cipher/lib/cli.rb +24 -0
  45. data/examples/solitaire-cipher/lib/package.yml +106 -0
  46. data/examples/solitaire-cipher/test/tc_deck.rb +30 -0
  47. data/examples/solitaire-cipher/test/tc_key-stream.rb +19 -0
  48. data/examples/solitaire-cipher/test/tc_keying-algorithms.rb +31 -0
  49. data/examples/solitaire-cipher/test/tc_solitaire-cipher.rb +66 -0
  50. data/examples/solitaire-cipher/test/tc_unkeyed-algorithm.rb +17 -0
  51. data/examples/solitaire-cipher/test/tests.rb +2 -0
  52. data/lib/copland.rb +56 -0
  53. data/lib/copland/class-factory.rb +95 -0
  54. data/lib/copland/configuration-point.rb +38 -0
  55. data/lib/copland/configuration-point/common.rb +203 -0
  56. data/lib/copland/configuration-point/errors.rb +44 -0
  57. data/lib/copland/configuration-point/list.rb +59 -0
  58. data/lib/copland/configuration-point/map.rb +59 -0
  59. data/lib/copland/configuration/errors.rb +43 -0
  60. data/lib/copland/configuration/loader.rb +113 -0
  61. data/lib/copland/configuration/yaml/configuration-point.rb +87 -0
  62. data/lib/copland/configuration/yaml/implementor.rb +134 -0
  63. data/lib/copland/configuration/yaml/interceptor.rb +63 -0
  64. data/lib/copland/configuration/yaml/listener.rb +56 -0
  65. data/lib/copland/configuration/yaml/loader.rb +122 -0
  66. data/lib/copland/configuration/yaml/package.rb +125 -0
  67. data/lib/copland/configuration/yaml/parser.rb +71 -0
  68. data/lib/copland/configuration/yaml/schema.rb +165 -0
  69. data/lib/copland/configuration/yaml/service-point.rb +116 -0
  70. data/lib/copland/configuration/yaml/utils.rb +82 -0
  71. data/lib/copland/default-schema-processor.rb +144 -0
  72. data/lib/copland/errors.rb +82 -0
  73. data/lib/copland/event-producer.rb +95 -0
  74. data/lib/copland/impl/builder-factory.rb +112 -0
  75. data/lib/copland/impl/copland-config.yml +1 -0
  76. data/lib/copland/impl/include-exclude.rb +140 -0
  77. data/lib/copland/impl/logging-interceptor.rb +106 -0
  78. data/lib/copland/impl/package.yml +217 -0
  79. data/lib/copland/impl/startup.rb +116 -0
  80. data/lib/copland/impl/symbol-source-manager.rb +131 -0
  81. data/lib/copland/impl/symbol-source.rb +63 -0
  82. data/lib/copland/instantiator.rb +38 -0
  83. data/lib/copland/instantiator/abstract.rb +91 -0
  84. data/lib/copland/instantiator/complex.rb +96 -0
  85. data/lib/copland/instantiator/identity.rb +58 -0
  86. data/lib/copland/instantiator/simple.rb +68 -0
  87. data/lib/copland/interceptor-chain.rb +166 -0
  88. data/lib/copland/interceptor.rb +139 -0
  89. data/lib/copland/log-factory.rb +206 -0
  90. data/lib/copland/models.rb +39 -0
  91. data/lib/copland/models/abstract.rb +78 -0
  92. data/lib/copland/models/prototype-deferred.rb +58 -0
  93. data/lib/copland/models/prototype.rb +58 -0
  94. data/lib/copland/models/proxy.rb +100 -0
  95. data/lib/copland/models/singleton-deferred.rb +59 -0
  96. data/lib/copland/models/singleton.rb +77 -0
  97. data/lib/copland/models/threaded.rb +65 -0
  98. data/lib/copland/ordering.rb +123 -0
  99. data/lib/copland/package.rb +246 -0
  100. data/lib/copland/registry.rb +368 -0
  101. data/lib/copland/schema.rb +206 -0
  102. data/lib/copland/service-point.rb +282 -0
  103. data/lib/copland/utils.rb +221 -0
  104. data/lib/copland/version.rb +47 -0
  105. data/test/conf-test/list-bad-key.yml +30 -0
  106. data/test/conf-test/list-bad-missing.yml +28 -0
  107. data/test/conf-test/list-bad-type.yml +28 -0
  108. data/test/conf-test/list-good.yml +29 -0
  109. data/test/conf-test/map-bad-key.yml +25 -0
  110. data/test/conf-test/map-bad-missing.yml +24 -0
  111. data/test/conf-test/map-bad-type.yml +23 -0
  112. data/test/conf-test/map-good.yml +25 -0
  113. data/test/configuration-point/package.yml +52 -0
  114. data/test/configuration/yaml/config/copland-config.yml +2 -0
  115. data/test/configuration/yaml/config/module.yml +2 -0
  116. data/test/configuration/yaml/config/subdir/copland-config.yml +2 -0
  117. data/test/configuration/yaml/config/subdir/package.yml +4 -0
  118. data/test/configuration/yaml/defaults/package.yml +5 -0
  119. data/test/configuration/yaml/defaults/subdir/package.yml +4 -0
  120. data/test/configuration/yaml/tc_config-loader.rb +86 -0
  121. data/test/configuration/yaml/tc_configuration-point-processor.rb +134 -0
  122. data/test/configuration/yaml/tc_implementor-processor.rb +104 -0
  123. data/test/configuration/yaml/tc_interceptor-processor.rb +85 -0
  124. data/test/configuration/yaml/tc_listener-processor.rb +69 -0
  125. data/test/configuration/yaml/tc_loader.rb +74 -0
  126. data/test/configuration/yaml/tc_package-processor.rb +120 -0
  127. data/test/configuration/yaml/tc_parser.rb +94 -0
  128. data/test/configuration/yaml/tc_schema-parser.rb +160 -0
  129. data/test/configuration/yaml/tc_service-point-processor.rb +104 -0
  130. data/test/configuration/yaml/tc_type-validator.rb +90 -0
  131. data/test/custom-logger.yml +3 -0
  132. data/test/impl/logging/package.yml +44 -0
  133. data/test/impl/logging/services.rb +84 -0
  134. data/test/impl/startup/package.yml +46 -0
  135. data/test/impl/startup/services.rb +47 -0
  136. data/test/impl/symbols/package.yml +24 -0
  137. data/test/impl/symbols/services.rb +38 -0
  138. data/test/impl/tc_builder-factory.rb +173 -0
  139. data/test/impl/tc_logging-interceptor.rb +148 -0
  140. data/test/impl/tc_startup.rb +59 -0
  141. data/test/impl/tc_symbol-sources.rb +61 -0
  142. data/test/logger.yml +6 -0
  143. data/test/mock.rb +201 -0
  144. data/test/schema/bad-package.yml +65 -0
  145. data/test/schema/package.yml +102 -0
  146. data/test/schema/services.rb +5 -0
  147. data/test/services/package.yml +79 -0
  148. data/test/services/simple.rb +87 -0
  149. data/test/tc_class-factory.rb +93 -0
  150. data/test/tc_complex-instantiator.rb +107 -0
  151. data/test/tc_configuration-point-contrib.rb +74 -0
  152. data/test/tc_configuration-point-schema.rb +122 -0
  153. data/test/tc_configuration-point.rb +91 -0
  154. data/test/tc_default-schema-processor.rb +297 -0
  155. data/test/tc_identity-instantiator.rb +61 -0
  156. data/test/tc_interceptors.rb +84 -0
  157. data/test/tc_logger.rb +131 -0
  158. data/test/tc_models.rb +176 -0
  159. data/test/tc_package.rb +165 -0
  160. data/test/tc_proxy.rb +65 -0
  161. data/test/tc_registry.rb +141 -0
  162. data/test/tc_schema.rb +78 -0
  163. data/test/tc_service-point.rb +178 -0
  164. data/test/tc_service.rb +70 -0
  165. data/test/tc_simple-instantiator.rb +61 -0
  166. data/test/tests.rb +93 -0
  167. data/tutorial/01/main.rb +7 -0
  168. data/tutorial/01/package.yml +8 -0
  169. data/tutorial/01/tutorial.rb +7 -0
  170. data/tutorial/02/main.rb +10 -0
  171. data/tutorial/02/package.yml +27 -0
  172. data/tutorial/02/tutorial.rb +46 -0
  173. data/tutorial/03/main.rb +24 -0
  174. data/tutorial/03/package.yml +29 -0
  175. data/tutorial/03/tutorial.rb +48 -0
  176. data/tutorial/04/main.rb +24 -0
  177. data/tutorial/04/package.yml +35 -0
  178. data/tutorial/04/tutorial.rb +48 -0
  179. data/tutorial/05/functions/package.yml +16 -0
  180. data/tutorial/05/functions/services.rb +15 -0
  181. data/tutorial/05/main.rb +10 -0
  182. data/tutorial/05/package.yml +35 -0
  183. data/tutorial/05/tutorial.rb +53 -0
  184. metadata +260 -0
@@ -0,0 +1,221 @@
1
+ #--
2
+ # =============================================================================
3
+ # Copyright (c) 2004, Jamis Buck (jgb3@email.byu.edu)
4
+ # All rights reserved.
5
+ #
6
+ # Redistribution and use in source and binary forms, with or without
7
+ # modification, are permitted provided that the following conditions are met:
8
+ #
9
+ # * Redistributions of source code must retain the above copyright notice,
10
+ # this list of conditions and the following disclaimer.
11
+ #
12
+ # * Redistributions in binary form must reproduce the above copyright
13
+ # notice, this list of conditions and the following disclaimer in the
14
+ # documentation and/or other materials provided with the distribution.
15
+ #
16
+ # * The names of its contributors may not be used to endorse or promote
17
+ # products derived from this software without specific prior written
18
+ # permission.
19
+ #
20
+ # THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS"
21
+ # AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
22
+ # IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
23
+ # ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE
24
+ # LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR
25
+ # CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF
26
+ # SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
27
+ # INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN
28
+ # CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)
29
+ # ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
30
+ # POSSIBILITY OF SUCH DAMAGE.
31
+ # =============================================================================
32
+ #++
33
+
34
+ require 'copland/errors'
35
+ require 'copland/log-factory'
36
+ require 'copland/registry'
37
+ require 'copland/configuration/errors'
38
+
39
+ module Copland
40
+
41
+ # This is the regular expression that is used to match substitution
42
+ # string patterns in a value.
43
+ SUBSTITUTION_STRING_REGEXP = /\${(.*?)}/
44
+
45
+ # Examines the +id+ to determine whether it is a local service, or a
46
+ # fully-qualified service name. If it is local, then it pertains to the
47
+ # given +pkg+ parameter. Otherwise, the corresponding package is looked up
48
+ # in the registry.
49
+ #
50
+ # Without a block, this always calls Package#service( id ). With a block,
51
+ # it passes the correct pkg and unqualified service name to the block and
52
+ # returns the result.
53
+ def get_possibly_local_service( registry, pkg, id )
54
+ if id =~ /^(.+)\.([^.]+)$/
55
+ pkg = registry.package( $1 )
56
+ id = $2
57
+ end
58
+
59
+ if block_given?
60
+ yield pkg, id
61
+ else
62
+ pkg.service( id )
63
+ end
64
+ end
65
+
66
+ # Deconstructs the given reference to get the +require+ and +classname+
67
+ # parts of the reference. If there is no +require+ portion, then it will
68
+ # return nil for that part.
69
+ #
70
+ # For example:
71
+ #
72
+ # 'copland/impl/builder/BuilderFactory'
73
+ #
74
+ # would return:
75
+ #
76
+ # [ 'copland/impl/builder', '::BuilderFactory' ]
77
+ #
78
+ # and
79
+ #
80
+ # 'LoggingInterceptor'
81
+ #
82
+ # would return:
83
+ #
84
+ # [ nil, '::LoggingInterceptor' ]
85
+ #
86
+ # Note that '::' is prepended onto the class part, to help ensure that the
87
+ # requested class is always evaluated in the topmost context.
88
+ def get_class_ref_parts( ref )
89
+ if ref =~ %r{^(.+)/([^/]+)$}
90
+ return [ $1, "::" + $2 ]
91
+ end
92
+
93
+ return [ nil, ref ]
94
+ end
95
+
96
+ # A convenience function for parsing the reference (using
97
+ # #get_class_ref_parts) and automatically doing the +require+ (if needed).
98
+ # The class that was referred to is returned.
99
+ def get_class( ref )
100
+ require_file, class_name = get_class_ref_parts( ref )
101
+
102
+ require require_file if require_file
103
+ return eval( class_name )
104
+ end
105
+
106
+ # Translates the given value. If the value is an object that responds the
107
+ # +type_id+ method, then it is translated to another value, based on its
108
+ # +type_id+. Otherwise, the value itself is returned.
109
+ #
110
+ # The values are translated based on this table:
111
+ #
112
+ # service-id::
113
+ # the value is treated as a as service-id, and the service is looked up
114
+ # configuration-id::
115
+ # the value is treated as a as configuration-point id, and the
116
+ # configuration point is looked up and used as the value
117
+ # class:: the value is interpreted as the path to and name of a class.
118
+ # log::
119
+ # the value is ignored, but a new logger is allocated for the service point
120
+ # int:: the value is interpreted as an integer
121
+ # real:: the value is interpreted as a floating point
122
+ # string:: the value is interpreted as a string
123
+ def translate_value( registry, pkg, point, value )
124
+ substitute_symbols( registry, value )
125
+
126
+ if value.is_a?( Array )
127
+ return translate_array( registry, pkg, point, value )
128
+
129
+ elsif value.is_a?( Hash )
130
+ return translate_hash( registry, pkg, point, value )
131
+
132
+ elsif value.respond_to?( :type_id )
133
+ case value.type_id
134
+ when "service"
135
+ return get_possibly_local_service( registry, pkg, value.value )
136
+ when "configuration"
137
+ cfg = get_possibly_local_service(
138
+ registry, pkg, value.value ) do |pkg,id|
139
+ raise PackageNotFound, value.value unless pkg
140
+ pkg.configuration_point id
141
+ end
142
+ raise ConfigurationPointNotFound, value.value unless cfg
143
+ return cfg
144
+ when "class"
145
+ return get_class( value.value )
146
+ when "log"
147
+ return registry.logs.get( point.full_name )
148
+ when "integer"
149
+ return value.value.to_i
150
+ when "real"
151
+ return value.value.to_f
152
+ when "string"
153
+ return value.value.to_s
154
+ when "hash"
155
+ return translate_hash( registry, pkg, point, value.value )
156
+ when "array"
157
+ return translate_array( registry, pkg, point, value.value )
158
+ when "boolean"
159
+ return value.to_s == "true"
160
+ else
161
+ raise Copland::Configuration::ParserError, "unknown value type id: #{value.type_id}"
162
+ end
163
+ end
164
+
165
+ value
166
+ end
167
+
168
+ # Translate a hash value.
169
+ def translate_hash( registry, pkg, point, hash )
170
+ new_hash = Hash.new
171
+ hash.each_pair do |k, v|
172
+ new_hash[k] = translate_value( registry, pkg, point, v )
173
+ end
174
+ return new_hash
175
+ end
176
+
177
+ # Translate an array value.
178
+ def translate_array( registry, pkg, point, array )
179
+ array.map { |v| translate_value( registry, pkg, point, v ) }
180
+ end
181
+
182
+ # Substitutes all symbols (in place) for the given value. If the value
183
+ # responds to the +type_id+ method, then the result of the +value+ method is
184
+ # used for the substitution (thus, this works on private YAML types).
185
+ def substitute_symbols( registry, value )
186
+ str = ( value.respond_to?( :type_id ) ? value.value : value )
187
+ return unless str.respond_to? :gsub!
188
+
189
+ str.gsub!( SUBSTITUTION_STRING_REGEXP ) do
190
+ symbol = $1
191
+ result = lookup_symbol( registry, symbol )
192
+ if result == NOT_FOUND
193
+ symbol.upcase.gsub( /[^a-zA-Z0-9]/, "_" )
194
+ else
195
+ result
196
+ end
197
+ end
198
+ end
199
+
200
+ # A constant identifying the name of the SymbolSourceManager service.
201
+ DEFAULT_SYMBOL_SOURCE = "copland.SymbolSourceManager"
202
+
203
+ # A constant used to indicate that the symbol was not found
204
+ NOT_FOUND = Object.new
205
+
206
+ # Looks in the SymbolSource service for the given symbol.
207
+ def lookup_symbol( registry, symbol )
208
+ source = registry.service( DEFAULT_SYMBOL_SOURCE )
209
+ source.lookup( symbol, NOT_FOUND )
210
+ end
211
+
212
+ module_function :get_possibly_local_service
213
+ module_function :get_class_ref_parts
214
+ module_function :get_class
215
+ module_function :translate_value
216
+ module_function :translate_hash
217
+ module_function :translate_array
218
+ module_function :substitute_symbols
219
+ module_function :lookup_symbol
220
+
221
+ end
@@ -0,0 +1,47 @@
1
+ #--
2
+ # =============================================================================
3
+ # Copyright (c) 2004, Jamis Buck (jgb3@email.byu.edu)
4
+ # All rights reserved.
5
+ #
6
+ # Redistribution and use in source and binary forms, with or without
7
+ # modification, are permitted provided that the following conditions are met:
8
+ #
9
+ # * Redistributions of source code must retain the above copyright notice,
10
+ # this list of conditions and the following disclaimer.
11
+ #
12
+ # * Redistributions in binary form must reproduce the above copyright
13
+ # notice, this list of conditions and the following disclaimer in the
14
+ # documentation and/or other materials provided with the distribution.
15
+ #
16
+ # * The names of its contributors may not be used to endorse or promote
17
+ # products derived from this software without specific prior written
18
+ # permission.
19
+ #
20
+ # THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS"
21
+ # AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
22
+ # IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
23
+ # ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE
24
+ # LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR
25
+ # CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF
26
+ # SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
27
+ # INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN
28
+ # CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)
29
+ # ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
30
+ # POSSIBILITY OF SUCH DAMAGE.
31
+ # =============================================================================
32
+ #++
33
+
34
+ module Copland
35
+
36
+ # A simple module for holding version information about Copland.
37
+ module Version
38
+
39
+ MAJOR = 0
40
+ MINOR = 8
41
+ TINY = 0
42
+
43
+ STRING = [ MAJOR, MINOR, TINY ].join( "." )
44
+
45
+ end
46
+
47
+ end
@@ -0,0 +1,30 @@
1
+ ---
2
+ id: list-good
3
+
4
+ configuration-points:
5
+
6
+ ListGood:
7
+ type: list
8
+ schema:
9
+ definition:
10
+ service:
11
+ type: string
12
+ required: true
13
+ before:
14
+ type: array
15
+ after:
16
+ type: array
17
+
18
+ contributions:
19
+
20
+ ListGood:
21
+ - service: some.Service
22
+ - service: another.Service
23
+ before:
24
+ - some.Service
25
+ bogus: value
26
+ - service: last.Service
27
+ before:
28
+ - some.Service
29
+ after:
30
+ - another.Service
@@ -0,0 +1,28 @@
1
+ ---
2
+ id: list-bad-missing
3
+
4
+ configuration-points:
5
+
6
+ ListBadMissing:
7
+ type: list
8
+ schema:
9
+ definition:
10
+ service:
11
+ type: string
12
+ required: true
13
+ before:
14
+ type: array
15
+ after:
16
+ type: array
17
+
18
+ contributions:
19
+
20
+ ListBadMissing:
21
+ - service: some.Service
22
+ - service: another.Service
23
+ before:
24
+ - some.Service
25
+ - before:
26
+ - some.Service
27
+ after:
28
+ - another.Service
@@ -0,0 +1,28 @@
1
+ ---
2
+ id: list-bad-type
3
+
4
+ configuration-points:
5
+
6
+ ListBadType:
7
+ type: list
8
+ schema:
9
+ definition:
10
+ service:
11
+ type: string
12
+ required: true
13
+ before:
14
+ type: array
15
+ after:
16
+ type: array
17
+
18
+ contributions:
19
+
20
+ ListBadType:
21
+ - service: some.Service
22
+ - service: another.Service
23
+ before: some.Service
24
+ - service: last.Sevice
25
+ before:
26
+ - some.Service
27
+ after:
28
+ - another.Service
@@ -0,0 +1,29 @@
1
+ ---
2
+ id: list-good
3
+
4
+ configuration-points:
5
+
6
+ ListGood:
7
+ type: list
8
+ schema:
9
+ definition:
10
+ service:
11
+ type: string
12
+ required: true
13
+ before:
14
+ type: array
15
+ after:
16
+ type: array
17
+
18
+ contributions:
19
+
20
+ ListGood:
21
+ - service: some.Service
22
+ - service: another.Service
23
+ before:
24
+ - some.Service
25
+ - service: last.Service
26
+ before:
27
+ - some.Service
28
+ after:
29
+ - another.Service
@@ -0,0 +1,25 @@
1
+ ---
2
+ id: map-bad-key
3
+
4
+ configuration-points:
5
+
6
+ MapBadKey:
7
+ type: map
8
+ schema:
9
+ definition:
10
+ service:
11
+ type: string
12
+ required: true
13
+ options:
14
+ type: array
15
+ color:
16
+ type: string
17
+
18
+ contributions:
19
+
20
+ MapBadKey:
21
+ service: some.Service
22
+ bogus:
23
+ - opt1: opt2
24
+ - opt3: opt4
25
+ color: blue
@@ -0,0 +1,24 @@
1
+ ---
2
+ id: map-bad-missing
3
+
4
+ configuration-points:
5
+
6
+ MapBadMissing:
7
+ type: map
8
+ schema:
9
+ definition:
10
+ service:
11
+ type: string
12
+ required: true
13
+ options:
14
+ type: array
15
+ color:
16
+ type: string
17
+
18
+ contributions:
19
+
20
+ MapBadMissing:
21
+ options:
22
+ - opt1: opt2
23
+ - opt3: opt4
24
+ color: blue
@@ -0,0 +1,23 @@
1
+ ---
2
+ id: map-bad-type
3
+
4
+ configuration-points:
5
+
6
+ MapBadType:
7
+ type: map
8
+ schema:
9
+ definition:
10
+ service:
11
+ type: string
12
+ required: true
13
+ options:
14
+ type: array
15
+ color:
16
+ type: string
17
+
18
+ contributions:
19
+
20
+ MapBadType:
21
+ service: some.Service
22
+ options: hello
23
+ color: blue