tla-sbuilder 0.2.2 → 0.3.4

Sign up to get free protection for your applications and to get access to all the features.
Files changed (127) hide show
  1. checksums.yaml +4 -4
  2. data/README.md +150 -116
  3. data/VERSION +1 -1
  4. data/lib/cli/cli-customer.rb +23 -3
  5. data/lib/cli/cli-pet.rb +66 -12
  6. data/lib/cli/cli-text.rb +127 -8
  7. data/lib/cli/cli.rb +49 -6
  8. data/lib/sbuilder.rb +26 -3
  9. data/lib/sbuilder/constants.rb +165 -6
  10. data/lib/sbuilder/controller.rb +943 -169
  11. data/lib/sbuilder/controller_utils.rb +122 -0
  12. data/lib/sbuilder/default-sbuilder.yaml +38 -44
  13. data/lib/sbuilder/domain.rb +160 -36
  14. data/lib/sbuilder/domain_cardinality.rb +1 -1
  15. data/lib/sbuilder/domain_range.rb +102 -0
  16. data/lib/sbuilder/domain_type.rb +150 -0
  17. data/lib/sbuilder/domain_value.rb +21 -13
  18. data/lib/sbuilder/exception.rb +16 -0
  19. data/lib/sbuilder/extension_loader.rb +67 -686
  20. data/lib/sbuilder/extension_loader_deprecated_step_extensions.rb +711 -0
  21. data/lib/sbuilder/extension_loader_step_generator.rb +876 -0
  22. data/lib/sbuilder/facade/{api_loader.rb → api_loader_facade.rb} +176 -45
  23. data/lib/sbuilder/facade/api_loader_plugin.rb +6 -32
  24. data/lib/sbuilder/facade/api_loader_plugin_mixer.rb +35 -0
  25. data/lib/sbuilder/facade/facade_constants.rb +23 -0
  26. data/lib/sbuilder/facade/loader_plugin_root.rb +56 -0
  27. data/lib/sbuilder/facade/param_set_root.rb +55 -0
  28. data/lib/sbuilder/facade/snippet_loader_facade.rb +600 -0
  29. data/lib/sbuilder/facade/snippet_loader_plugin.rb +76 -0
  30. data/lib/sbuilder/facade/snippet_loader_plugin_mixer.rb +56 -0
  31. data/lib/sbuilder/factory.rb +224 -45
  32. data/lib/sbuilder/model.rb +125 -45
  33. data/lib/sbuilder/mustache/template.rb +107 -58
  34. data/lib/sbuilder/mustache/template_reader.rb +56 -46
  35. data/lib/sbuilder/mustache/template_reader_context.rb +64 -234
  36. data/lib/sbuilder/mustache/template_resolve.rb +103 -0
  37. data/lib/sbuilder/mustache/template_root.rb +71 -0
  38. data/lib/sbuilder/param_set.rb +30 -15
  39. data/lib/sbuilder/param_set_db.rb +1 -1
  40. data/lib/sbuilder/param_set_def.rb +6 -1
  41. data/lib/sbuilder/param_set_def_func.rb +39 -0
  42. data/lib/sbuilder/param_set_if.rb +45 -10
  43. data/lib/sbuilder/param_set_loader_swagger.rb +56 -26
  44. data/lib/sbuilder/param_set_step.rb +1 -1
  45. data/lib/sbuilder/param_sets.rb +2 -1
  46. data/lib/sbuilder/parameter.rb +9 -3
  47. data/lib/sbuilder/parameter_container.rb +1 -1
  48. data/lib/sbuilder/parameter_dom.rb +17 -5
  49. data/lib/sbuilder/parameter_ref.rb +39 -10
  50. data/lib/sbuilder/parser/parser_facade.rb +310 -0
  51. data/lib/sbuilder/resolver.rb +11 -6
  52. data/lib/sbuilder/resolver_loader.rb +1 -1
  53. data/lib/sbuilder/resolver_loader_yaml.rb +1 -1
  54. data/lib/sbuilder/resolver_rule.rb +1 -1
  55. data/lib/sbuilder/resolver_rule_match.rb +10 -4
  56. data/lib/sbuilder/resolver_rule_ref.rb +1 -1
  57. data/lib/sbuilder/setup_loader.rb +49 -0
  58. data/lib/sbuilder/setup_loader_env.rb +478 -0
  59. data/lib/sbuilder/setup_loader_pref.rb +56 -0
  60. data/lib/sbuilder/snippet_loader_simple.rb +125 -0
  61. data/lib/sbuilder/spec/api_loader.rb +34 -0
  62. data/lib/sbuilder/spec/api_loader_facade.rb +169 -32
  63. data/lib/sbuilder/spec/loader_plugin.rb +98 -0
  64. data/lib/sbuilder/spec/snippet_loader.rb +228 -0
  65. data/lib/sbuilder/symbol_table.rb +279 -0
  66. data/lib/utils/{cache_lines.rb → fileio.rb} +8 -1
  67. data/lib/utils/logger.rb +2 -1
  68. data/lib/utils/powerset.rb +13 -0
  69. data/lib/utils/validate.rb +38 -0
  70. data/mustache/cfg/const_def.mustache +2 -0
  71. data/mustache/cfg/macro_run.mustache +1 -4
  72. data/mustache/data-model-header.mustache +1 -0
  73. data/mustache/definition_types.mustache +34 -4
  74. data/mustache/domains.mustache +1 -1
  75. data/mustache/domains_assign.mustache +1 -1
  76. data/mustache/infrastructure-service-init.mustache +1 -1
  77. data/mustache/interface_processes.mustache +16 -10
  78. data/mustache/interface_types.mustache +37 -11
  79. data/mustache/operator-infrastructure-service.mustache +1 -1
  80. data/mustache/resources/schedule_operator_new_step.tla +8 -0
  81. data/mustache/resources/schedule_process_macro.tla +37 -0
  82. data/mustache/resources/schedule_process_procedure.tla +22 -0
  83. data/mustache/resources/schedule_throw.tla +16 -0
  84. data/mustache/setup/domains_run.mustache +8 -2
  85. data/mustache/setup/operator_run.mustache +0 -4
  86. data/mustache/setup/steps_run.mustache +4 -3
  87. data/mustache/setup/steps_run_parameterBind.mustache +14 -6
  88. data/mustache/setup/steps_run_parameterExact.mustache +7 -3
  89. data/mustache/state_type_invariant-infrastructure-service.mustache +9 -4
  90. data/mustache/tla/const_def.mustache +1 -1
  91. data/mustache/tla/macro_run.mustache +7 -1
  92. data/mustache/tla/module_header.mustache +1 -1
  93. data/mustache/tla/operator_run.mustache +8 -5
  94. data/mustache/tla/plc_define_run.mustache +45 -36
  95. data/mustache/tla/plc_run_state.mustache +12 -5
  96. data/src-extend/extend/extend_assumptions.mustache +3 -0
  97. data/src-extend/extend/extend_const.mustache +3 -0
  98. data/src-extend/extend/extend_implementation.mustache +3 -0
  99. data/src-extend/extend/extend_invariant.mustache +3 -0
  100. data/src-extend/extend/extend_macros.mustache +3 -0
  101. data/src-extend/extend/extend_operations.mustache +3 -0
  102. data/src-extend/extend/extend_state.mustache +3 -0
  103. data/src/pet/extend/extend_assumptions.mustache +4 -0
  104. data/src/pet/extend/extend_implementation.mustache +3 -0
  105. data/src/pet/extend/extend_invariant.mustache +3 -0
  106. data/src/pet/extend/extend_macros.mustache +3 -0
  107. data/src/pet/extend/extend_operations.mustache +4 -0
  108. data/src/pet/extend/extend_state.mustache +3 -0
  109. data/src/pet/interface +5 -5
  110. data/src/pet/interface_delete_pet.tla +1 -1
  111. data/src/pet/interface_get_pet.tla +1 -1
  112. data/src/pet/interface_post_pet.tla +4 -2
  113. data/src/pet/interface_post_tag.tla +1 -1
  114. data/src/pet/interface_put_tag.tla +1 -1
  115. data/tla-sbuilder.gemspec +3 -3
  116. metadata +44 -19
  117. data/mustache/name_definition_type.mustache +0 -5
  118. data/mustache/name_domain.mustache +0 -5
  119. data/mustache/name_domain_value.mustache +0 -5
  120. data/mustache/name_domain_value_prefix.mustache +0 -5
  121. data/mustache/name_interface_response_type.mustache +0 -6
  122. data/mustache/name_interface_type.mustache +0 -6
  123. data/mustache/name_parameter_type.mustache +0 -6
  124. data/mustache/name_process.mustache +0 -6
  125. data/mustache/state_type_invariant.mustache +0 -17
  126. data/mustache/state_variables.mustache +0 -20
  127. data/src-extend/extend/extend_invariant_cfg.mustache +0 -7
@@ -10,13 +10,17 @@ module Sbuilder
10
10
  # model objects, and build sbuilder model
11
11
  #
12
12
 
13
- class ApiLoader
13
+ class ApiLoaderFacade
14
14
 
15
15
  extend Forwardable # for easy delegation
16
16
 
17
- # facade configuration
18
17
 
19
- attr_reader :infrastructureServices # default 'false'
18
+ # @attr [Boolean] infrastructureServices generate response, default 'false'
19
+ attr_reader :infrastructureServices
20
+
21
+ # @attr [Boolean] interfaceService genarate interface process, default 'true'
22
+ attr_reader :interfaceServices
23
+
20
24
 
21
25
  # string to prefix to all definitions (default 'nil' ie. no
22
26
  # prefix). Allow homonymous API definition names ie. same
@@ -42,15 +46,13 @@ module Sbuilder
42
46
 
43
47
  # ------------------------------------------------------------------
44
48
 
45
-
46
49
  # progname for logger
47
- PROGNAME = "ApiLoader"
48
-
49
- include Sbuilder::Utils::MyLogger # mix logger
50
+ PROGNAME = nil # progname for logger default class name
51
+ include Sbuilder::Utils::MyLogger # mix logger
50
52
 
51
53
 
52
54
  # ------------------------------------------------------------------
53
- # @!group Constructore
55
+ # @!group Construtor
54
56
 
55
57
  def initialize( factory, options = {} )
56
58
  @logger = getLogger( PROGNAME, options )
@@ -61,7 +63,9 @@ module Sbuilder
61
63
  @controller = nil
62
64
 
63
65
  # configuration init
64
- @infrastructureServices = false
66
+ configureInfrastructureService( false )
67
+ configureInterfaceService( true )
68
+
65
69
  @namespace = nil
66
70
 
67
71
  @cacheFile = nil
@@ -72,7 +76,7 @@ module Sbuilder
72
76
  # @!endgroup
73
77
 
74
78
  # ------------------------------------------------------------------
75
- # @!group Interface used by controller to configure the facade
79
+ # @!group Prepare Facade
76
80
 
77
81
  # Allow facade to access controller services
78
82
  # @param controller [Sbuilder::Controller] controller sets self
@@ -85,18 +89,26 @@ module Sbuilder
85
89
  def setFactory( factory )
86
90
  @factory = factory
87
91
  end
88
-
92
+
93
+ ##
89
94
  # Tag all interfaces created using this facadate with property 'infrastructureServices'
90
95
  #
91
- # @param infrastructureServices [Boolean] true/false set on all interfaces
96
+ # @param [Boolean] infrastructureServices true/false set on all interfaces
92
97
  #
93
98
  def configureInfrastructureService( infrastructureServices )
94
99
  @infrastructureServices = infrastructureServices
95
100
  end
96
101
 
102
+ ##
103
+ # Tag all interfaces created using this facadate with property 'interfaceService'
104
+ def configureInterfaceService( interfaceServices )
105
+ @interfaceServices = interfaceServices
106
+ end
107
+
108
+
97
109
  # Prefix all definititions with "#{namespace}." string
98
110
  #
99
- # @param namespace [String] string to prefix to all definitions
111
+ # @param [String] namespace to prefix to all definitions
100
112
  #
101
113
  def configureNamespace( namespace )
102
114
  @namespace = namespace
@@ -104,7 +116,7 @@ module Sbuilder
104
116
 
105
117
  # Cache string read into 'cacheFile'
106
118
  #
107
- # @param cacheFile [String] name of file to cache content in this facade
119
+ # @param [String] cacheFile name of file to cache content in this facade
108
120
  #
109
121
  def setInterfaceCacheFilePath( cacheFile )
110
122
  @cacheFile = cacheFile
@@ -113,16 +125,16 @@ module Sbuilder
113
125
  # @!endgroup
114
126
 
115
127
  # ------------------------------------------------------------------
116
- # @!group Read and cache api content
128
+ # @!group Cache API Metadata
117
129
 
118
130
  # Reader service: read String of interface definitions from
119
131
  # 'location'. The string is cached in '@cacheFile', which
120
132
  # controller has configured.
121
133
  #
122
- # @param location [String] uri/file/block parameter from which to
134
+ # @param [String] location uri/file/block parameter from which to
123
135
  # read the string
124
136
  #
125
- # @param blk [yield] yield block to read if no block given use
137
+ # @param [yield] blk yield block to read if no block given use
126
138
  # 'Sbuilder::Utils::NetIo.read_lines'. Block should return a
127
139
  # string.
128
140
  #
@@ -144,14 +156,14 @@ module Sbuilder
144
156
  # @param what [String] sub-content in cache
145
157
  # @return [String] cached content (nil if no cached content
146
158
  def get_cached( what=nil )
147
- Sbuilder::Utils::CacheLines.cache_read( get_cachefile(what) ) if doCache?
159
+ Sbuilder::Utils::FileIo.cache_read( get_cachefile(what) ) if doCache?
148
160
  end
149
161
 
150
162
  # Service for loader to save 'line' into cache
151
163
  # @param line [String] content to store
152
164
  # @param what [String] sub-content in cache
153
165
  def cache_line( line, what=nil )
154
- Sbuilder::Utils::CacheLines.cache_write( get_cachefile(what), line ) if doCache? && line
166
+ Sbuilder::Utils::FileIo.cache_write( get_cachefile(what), line ) if doCache? && line
155
167
  end
156
168
 
157
169
  # @return [Boolean] true if cache i.e. when cacheFile defined
@@ -159,20 +171,27 @@ module Sbuilder
159
171
  !cacheFile.nil?
160
172
  end
161
173
 
174
+ # Return cache directory location from opitions
175
+ #
176
+ # @return [String] path to cache -directory
177
+ def getCacheDir
178
+ controller.getCacheDir
179
+ end
180
+
181
+
162
182
  # @!endgroup
163
- # ------------------------------------------------------------------
164
183
 
165
184
  # ------------------------------------------------------------------
166
- # @!group Build model
185
+ # @!group Add to Sbuilder
167
186
 
168
187
  # Add 'newDefinition' to model
169
- # @param newDefinition [Sbuilder::ParamSetDef] definition to add
188
+ # @param [Sbuilder::ParamSetDef] newDefinition definition to add
170
189
  def modelDefinition( newDefinition )
171
190
  controller.modelDefinition( newDefinition )
172
191
  end
173
192
 
174
193
  # Add 'newInterface' to model
175
- # @param newInterface [Sbuilder::ParamSet_If] interface to add
194
+ # @param [Sbuilder::ParamSet_If] newInterface interface to add
176
195
  def modelInterface( newInterface )
177
196
  controller.modelInterface( newInterface )
178
197
  end
@@ -180,15 +199,32 @@ module Sbuilder
180
199
  # @!endgroup
181
200
 
182
201
  # ------------------------------------------------------------------
183
- # @!group Construct model objects
202
+ # @!group Construct Model Objects
184
203
 
185
204
  #
186
- # @param definitionName [String] name of defintition to create
187
- # @param isArray [Boolean] if array defined
205
+ # @param [String] definitionName name of defintition to create
206
+ # @param [Boolean] isArray true if array defined
188
207
  #
189
208
  # @return [Sbuilder::ParamSetDef] New definition object created
190
209
  def newDefinition( definitionName, isArray=false )
191
- paramSet = createParamSet( Sbuilder::Constants::SWAGGER_DEFINITION )
210
+ paramSet = createParamSet( Sbuilder::Constants::DEFINITION )
211
+ # optionally prefix within namespace
212
+ definitionName = namespacedReferenceName( definitionName )
213
+ paramSet.setDefinition( definitionName )
214
+ paramSet.setIsArray( isArray )
215
+ return paramSet
216
+ end
217
+
218
+ # Create a function definition (parameter set)
219
+ #
220
+ # @param [String] definitionName name of defintition to create
221
+ # @param [Boolean] isArray true if array defined
222
+ #
223
+ # @return [Sbuilder::ParamSetDefFunc] New definition object created
224
+
225
+ def newFunctionDefinition( definitionName, isArray=false )
226
+
227
+ paramSet = createParamSet( Sbuilder::Constants::DEFINITION_FUNCTION )
192
228
  # optionally prefix within namespace
193
229
  definitionName = namespacedReferenceName( definitionName )
194
230
  paramSet.setDefinition( definitionName )
@@ -196,11 +232,12 @@ module Sbuilder
196
232
  return paramSet
197
233
  end
198
234
 
199
- # Create new interface paramtereter sert (and response parameter set)
235
+ # Create new interface paramtereter set (and a response parameter
236
+ # set)
200
237
  #
201
- # @param path [String] path of restfull interface operation
238
+ # @param [String] path of restfull interface operation
202
239
  #
203
- # @param op [String] rest operation (get, put, post,...), defaults
240
+ # @param [String] op rest operation (get, put, post,...), defaults
204
241
  # to 'response' (ie. definiting return from a operation)
205
242
  #
206
243
  # @return [Sbuilder::ParamSet_If] New interface param set createds
@@ -213,8 +250,8 @@ module Sbuilder
213
250
  end
214
251
 
215
252
  # Cretate new pojo for a simple paramter
216
- # @param name [String] name of the simple paramter to create
217
- # @param isArray [Boolean] true if array
253
+ # @param [String] name of the simple paramter to create
254
+ # @param [Boolean] isArray true if array
218
255
  # @return [Sbuilder::Parameter_Dom] new parmater created
219
256
  def newParameter( name, isArray=false )
220
257
  swagger_parameter = createParameter( Sbuilder::Constants::PARAMETER )
@@ -224,34 +261,124 @@ module Sbuilder
224
261
  return swagger_parameter
225
262
  end
226
263
 
264
+ ##
265
+ # Add +paramter+ to +parameterSet+
266
+ #
267
+ # @param [ParamSet|ParamSetDef|ParamSet_If] paramSet where to add to
268
+ #
269
+ # @param [Parameter] parameter to add
270
+ #
271
+ # @param [String] name of domain to assign to +parameter+
272
+
273
+ def addParameter( paramSet, parameter, domain_name=nil )
274
+ paramSet.addParameter( parameter )
275
+ configParameterDomain( parameter, domain_name ) if domain_name
276
+ end
277
+
278
+ ##
279
+ # Add +paramter+ to +parameterSet+ response
280
+ #
281
+ # @param [ParamSet_If] paramSet of the response where to add to
282
+ #
283
+ # @param [Parameter] parameter to add
284
+ #
285
+ # @param [String] name of domain to assign to +parameter+
286
+
287
+ def addResponseParameter( paramSet, parameter, domain_name=nil )
288
+ responseParamSet = paramSet.response
289
+ responseParamSet.addParameter( parameter )
290
+ configParameterDomain( parameter, domain_name ) if domain_name
291
+ end
292
+
293
+ ##
294
+ # Set +domain_name+ to +parameter+
295
+ #
296
+ # @param [Parameter] parameter to add
297
+ #
298
+ # @param [String] name of domain to assign to +parameter+ private
299
+ def configParameterDomain( parameter, domain_name )
300
+
301
+ if !parameter.is_a?(Parameter_Dom) then
302
+ msg = <<-EOS
303
+ Only domain parameters can assgined domain
304
+
305
+ In this case domain '#{domain_name}' was assigned to #{parameter.class}
306
+ EOS
307
+ @logger.error "#{__method__}, msg"
308
+ raise PluginException, msg
309
+ end
310
+ # call static busines rule to set 'domain' on 'parameter' in model context
311
+ ResolverRuleMatch.setDomain( parameter, domain_name, controller.model )
312
+
313
+ end
314
+
315
+
227
316
  # Create new pojo for a reference to a definition
228
317
  #
229
- # @param name [String] name of the simple paramter to create
230
- # @param referenceName [String] definition name referenced
231
- # @param isArray [Boolean] true if array
318
+ # @param [String] name of the simple paramter to create
319
+ # @param [String] referenceName definition name referenced
320
+ # @param [Boolean] isArray true if array
232
321
  # @return [Sbuilder::Parameter_Ref] new parmater created
233
322
 
234
323
  def newParameterReference( name, referenceName, isArray )
235
- swagger_parameter = createParameter( Sbuilder::Constants::PARAMETER_REF )
236
- swagger_parameter.setName( name )
324
+ refParameter = createParameter( Sbuilder::Constants::PARAMETER_REF )
325
+ refParameter.setName( name )
237
326
  # namespace.name
238
327
  referenceName = namespacedReferenceName( referenceName )
239
- swagger_parameter.setReference( referenceName )
240
- swagger_parameter.setIsArray( isArray )
241
- return swagger_parameter
328
+ refParameter.setReference( referenceName )
329
+ refParameter.setIsArray( isArray )
330
+ return refParameter
242
331
  end
243
332
 
244
333
  # @!endgroup
334
+
245
335
  # ------------------------------------------------------------------
336
+ # @!group domain
337
+
338
+ ##
339
+ # Add +domainName+ to sbuilder. Pass +domainValues+ to controller
340
+ # using +setApplicationDomainValues+ api if defined.
341
+ #
342
+ # @param [String] domainName to define
343
+ #
344
+ # @param [String:Array] domainValues e.g. literals in application
345
+ #
346
+ def defineDomain( domainName, domainValues = nil )
347
+ controller.domainEncountered( domainName )
348
+ controller.setApplicationDomainValues( domainName, domainValues ) if domainValues && domainValues.is_a?( Array ) && domainValues.any?
349
+ end
350
+
351
+
352
+ # @!endgroup
246
353
 
247
354
  # ------------------------------------------------------------------
248
- # @!group misc
355
+ # @!group Access framework context
249
356
 
250
- # @return [String] semver number
357
+
358
+ ##
359
+ # Return array of base metatypes in sbuilder context
360
+ #
361
+ # @return [Hash] baseMetatypes
362
+ # @option baseMetatype [Symbol] :name of metatype
363
+ # @option baseMetatype [Symbol] :desc metatype description
364
+ def baseMetatypes
365
+ controller.baseMetatypes
366
+ end
367
+
368
+
369
+ # @!endgroup
370
+
371
+ # ------------------------------------------------------------------
372
+ # @!group Miscellaneous Operations
373
+
374
+
375
+
376
+ # # @return [String] semver number
251
377
  def version
252
- "1.0.2"
378
+ Sbuilder::version
253
379
  end
254
380
 
381
+
255
382
  # @param logname [String] progname to set on logger
256
383
  # @return [Logger] new logger object
257
384
  def createLogger( logname )
@@ -269,7 +396,11 @@ module Sbuilder
269
396
  def newParamset( path, op ='response' )
270
397
  interfaceParamSet = createParamSet( Sbuilder::Constants::INTERFACE_OPERATION )
271
398
  interfaceParamSet.setIdentity( path, op )
399
+ # infrastructureService (capability to return response), and
400
+ # infrastructureService (interface process) use values set using
401
+ # configure* -methods
272
402
  interfaceParamSet.setInfrastructureService( infrastructureServices )
403
+ interfaceParamSet.setInterfaceService( interfaceServices )
273
404
  return interfaceParamSet
274
405
  end
275
406
 
@@ -278,7 +409,7 @@ module Sbuilder
278
409
  "#{cacheFile}#{ what ? '.' + what : '' }"
279
410
  end
280
411
 
281
- # @return [String] 'definitionName' optionallayy prefixed with namespace
412
+ # @return [String] 'definitionName' possible prefixed with 'namespace'
282
413
  def namespacedReferenceName( definitionName )
283
414
  if namespace
284
415
  definitionName = "#{namespace}.#{definitionName}"
@@ -287,7 +418,7 @@ module Sbuilder
287
418
  end
288
419
 
289
420
 
290
- end # class ApiLoader
421
+ end # class ApiLoaderFacade
291
422
 
292
423
 
293
424
  end # module
@@ -9,47 +9,21 @@ module Sbuilder
9
9
  # - configure plugin
10
10
  #
11
11
 
12
- class ApiLoaderPlugin
12
+ class ApiLoaderPlugin < LoaderPluginRoot
13
13
 
14
-
15
- include Sbuilder::Utils::MyLogger # mix logger
14
+ # mix api loader plugin services
15
+ include ApiLoaderPluginMixer
16
16
 
17
17
  # ------------------------------------------------------------------
18
18
  # @!group Constructor and Object Initialize
19
19
 
20
- def initialize( factory, options = {} )
21
- end
22
-
23
- # Sbuilder controller calls 'setFacade' when new API loader object
24
- # is contstructed. Sets instance variable '@facade' and '@logger'.
25
- #
26
- # @param [Sbuilder::ApiLoader] facace to Sbuilder services
27
-
28
- def setFacade( facade )
29
- @facade = facade
30
- @logger = facade.createLogger( self.class.name.split('::').last )
20
+ def initialize( options = {} )
21
+ super
31
22
  end
32
23
 
33
-
34
- # @!endgroup
35
-
36
- # ------------------------------------------------------------------
37
- # @!group Framework Services
38
-
39
- # @return [Sbuilder::ApiLoader] facade to access Sbuilder servivices ( set in 'setFacade')
40
- def facade
41
- @facade
42
- end
43
-
44
- # @return [Logger] logger logging to Sbuiler log
45
- def logger
46
- # return STDERR logger - if logger not yet ready
47
- Logger.new( STDERR ) unless @logger
48
- @logger
49
- end
50
24
 
51
25
  # ------------------------------------------------------------------
52
- # @!group Configure services - MUST be implement by plugin class
26
+ # @!group Configure Plugin
53
27
 
54
28
  # Configure API loader - MUST be implemented by plugin class
55
29
  # @param configuration [Hash] properties to configure
@@ -0,0 +1,35 @@
1
+ module Sbuilder
2
+
3
+ # mixer module to include to API loader plugins
4
+ #
5
+ # Implement:
6
+ # - getter & setter for API loader facade
7
+
8
+ module ApiLoaderPluginMixer
9
+
10
+ # Sbuilder controller calls 'setFacade' when new API loader object
11
+ # is contstructed.
12
+ #
13
+ # @param [Sbuilder::ApiLoaderFacade] facace to Sbuilder services
14
+
15
+ def setFacade( facade )
16
+ @facade = facade
17
+ # @logger = facade.createLogger( self.class.name.split('::').last )
18
+ end
19
+
20
+
21
+ # @!endgroup
22
+
23
+ # ------------------------------------------------------------------
24
+ # @!group Framework Services
25
+
26
+ # @return [Sbuilder::ApiLoaderFacade] facade to access Sbuilder servivices ( set in 'setFacade')
27
+ def facade
28
+ @facade
29
+ end
30
+
31
+
32
+ end
33
+
34
+
35
+ end