Class: Sbuilder::Factory
- Inherits:
-
Object
- Object
- Sbuilder::Factory
- Includes:
- Utils::MyLogger
- Defined in:
- lib/sbuilder/factory.rb
Overview
signleton class
Constant Summary collapse
- PROGNAME =
mixer
nil- @@singleton =
initiallly no factory object
nil
Constants included from Utils::MyLogger
Instance Attribute Summary collapse
-
#domains ⇒ Object
readonly
hash.
-
#extension_loaders ⇒ Object
readonly
hash.
-
#loaderPlugins ⇒ Object
readonly
hash with configure method.
-
#mapperLoaders ⇒ Object
readonly
hash.
-
#mapperRules ⇒ Object
readonly
hash.
- #namedPluginObjects ⇒ Object
-
#options ⇒ Object
readonly
remembers options.
-
#parameters ⇒ Object
readonly
hash.
-
#paramSets ⇒ Object
readonly
hash.
- #setup_loaders ⇒ Object readonly
Plugin extensions collapse
-
#addLoaders(arrOfLoaders, names = nil) ⇒ Object
Configure additional plugin extensions.
-
#getLoaderPlugin(className, configuration = nil, objectName = nil) ⇒ ApiLoaderPlugin
return ‘objectName’ plugin instance, or create new plugin object with ‘className.new’.configure( configuration ).
Class Method Summary collapse
Instance Method Summary collapse
-
#createDomain(type = Sbuilder::Constants::TYPE_DOMAIN) ⇒ Object
—————————————————————— domain.
-
#createModel ⇒ Sbuilder::Model
Model created.
- #createParameter(type) ⇒ Object
-
#createParamSet(type) ⇒ Object
create new Resolver object.
-
#createParserFacade ⇒ Sbuilder::ParserFacade
Facade to parser.
-
#createResolver(type) ⇒ Object
create new Resolver object.
-
#createResolverRule(type) ⇒ Object
create new ResolverRule object.
-
#createSymbolTable ⇒ Sbuilder::SymbolTable
Symbol table created.
-
#getApiFacade(controller) ⇒ Sbuilder::ApiLoaderFacade
Api loader facade to Sbuilder.
- #getExtensionLoader(type, setupName) ⇒ Object
-
#getResolverLoader(type) ⇒ Object
return object to load mappers.
- #getSetupLoader(type, controller, setupName) ⇒ Object
-
#getSnippetFacade(controller) ⇒ Sbuilder::SnippetLoaderFacade
Api loader facade to Sbuilder.
-
#getSnippetFacadeMustache ⇒ mustache
Template to accept.
- #getStepGenerator ⇒ Object
-
#getTemplate(reader) ⇒ Template
—————————————————————— template.
-
#getTemplateReader(controller) ⇒ TemplateReader|TemplateContextReader
Create file reader for template generator if options-> return TemplateContextReader else return TemplateReader .
-
#getTemplateResolver(controller) ⇒ Sbuilder::TemplateResolve
Mustache template generator to resolver partials.
-
#initialize(options = {}) ⇒ Factory
constructor
—————————————————————— constructore.
- #initializeFactories ⇒ Object
Methods included from Utils::MyLogger
Constructor Details
Instance Attribute Details
#domains ⇒ Object (readonly)
15 16 17 |
# File 'lib/sbuilder/factory.rb', line 15 def domains @domains end |
#extension_loaders ⇒ Object (readonly)
16 17 18 |
# File 'lib/sbuilder/factory.rb', line 16 def extension_loaders @extension_loaders end |
#loaderPlugins ⇒ Object (readonly)
hash with configure method
10 11 12 |
# File 'lib/sbuilder/factory.rb', line 10 def loaderPlugins @loaderPlugins end |
#mapperLoaders ⇒ Object (readonly)
12 13 14 |
# File 'lib/sbuilder/factory.rb', line 12 def mapperLoaders @mapperLoaders end |
#mapperRules ⇒ Object (readonly)
11 12 13 |
# File 'lib/sbuilder/factory.rb', line 11 def mapperRules @mapperRules end |
#namedPluginObjects ⇒ Object
24 25 26 |
# File 'lib/sbuilder/factory.rb', line 24 def namedPluginObjects @namedPluginObjects end |
#options ⇒ Object (readonly)
remembers options
8 9 10 |
# File 'lib/sbuilder/factory.rb', line 8 def @options end |
#parameters ⇒ Object (readonly)
13 14 15 |
# File 'lib/sbuilder/factory.rb', line 13 def parameters @parameters end |
#paramSets ⇒ Object (readonly)
14 15 16 |
# File 'lib/sbuilder/factory.rb', line 14 def paramSets @paramSets end |
#setup_loaders ⇒ Object (readonly)
19 20 21 |
# File 'lib/sbuilder/factory.rb', line 19 def setup_loaders @setup_loaders end |
Class Method Details
.getFactory(options = {}) ⇒ Object
236 237 238 239 |
# File 'lib/sbuilder/factory.rb', line 236 def getFactory( ={} ) return @@singleton unless @@singleton.nil? @@singleton = new( ) end |
Instance Method Details
#addLoaders(arrOfLoaders, names = nil) ⇒ Object
Configure additional plugin extensions
:name,:className
className)
111 112 113 114 115 116 117 118 119 120 121 122 123 124 125 126 127 128 129 130 131 132 133 134 135 136 137 138 139 140 141 142 143 144 145 146 147 148 149 150 151 152 153 154 155 156 157 158 159 160 161 162 163 164 165 166 167 |
# File 'lib/sbuilder/factory.rb', line 111 def addLoaders( arrOfLoaders, names=nil ) arrOfLoaders.each_with_index do |loader,index| # validateProperties( loader, ['className', ], ['configuration', 'gem', 'objects'] ) Utils::Validate.validateProperties( loader, Constants::VALIDATION[:extend_loader][:required], Constants::VALIDATION[:extend_loader][:allowed] ) # load class module to context - unless Class already defined if ! Class.const_defined?( loader['className'] ) Utils::Validate.validateProperties( loader, Constants::VALIDATION[:extend_loader][:required_after_classname], Constants::VALIDATION[:extend_loader][:allowed] ) if loader['gem'][0] == '.' require_relative loader['gem'] else require loader['gem'] end end begin @logger.info "#{__method__} loader['className']=#{loader['className']}" klass = Object.const_get( loader['className'] ) rescue Exception => e msg = <<-EOS Unknown class: #{loader['className']}, #{e.} On loader extension #{loader} EOS @logger.error( "#{__method__} #{msg}" ) raise NameError, msg, e.backtrace end # using className name = loader['className'] loaderPlugins[name] = klass # @logger.info "#{__method__}, name=#{name}, configuration: #{loader['configuration']} " klass.configure( loader['configuration'] ) # optional alias name loaderPlugins[names[index]] = klass if names && names[index] # if 'objects property defined' loader['objects'] && loader['objects'].each do |objectConfiguration| @logger.info "#{__method__}, objectConfiguration=#{objectConfiguration}" Utils::Validate.validateProperties( objectConfiguration, Constants::VALIDATION[:extend_loader_object][:required], Constants::VALIDATION[:extend_loader_object][:allowed] ) # # create & configure object for 'className' # o = klass.new( options ).configure( objectConfiguration['configuration'] ) o = getLoaderPlugin( loader['className'], objectConfiguration['configuration'] ) # add it to dictionary @logger.info "#{__method__}, add=#{objectConfiguration['objectName']}, #{o}" namedPluginObjects[ objectConfiguration['objectName'] ] = o end # each object end # each end |
#createDomain(type = Sbuilder::Constants::TYPE_DOMAIN) ⇒ Object
domain
414 415 416 417 418 419 420 421 422 423 424 425 426 427 |
# File 'lib/sbuilder/factory.rb', line 414 def createDomain( type = Sbuilder::Constants::TYPE_DOMAIN ) if domains[type].nil? then msg = <<-EOS Unknown domain type #{type}" Validate types #{domains.keys} EOS @logger.error( "#{__method__} #{msg}" ) raise NameError.new( msg ) end return domains[type].new( ) end |
#createModel ⇒ Sbuilder::Model
Returns model created.
334 335 336 |
# File 'lib/sbuilder/factory.rb', line 334 def createModel Sbuilder::Model.new( self, ) end |
#createParameter(type) ⇒ Object
442 443 444 445 446 447 448 449 |
# File 'lib/sbuilder/factory.rb', line 442 def createParameter( type ) if parameters[type].nil? then msg = "Unknown parameter type #{type}" @logger.error( "#{__method__} #{msg}" ) raise NameError.new( msg ) end parameters[type].new( ) end |
#createParamSet(type) ⇒ Object
create new Resolver object
433 434 435 436 437 438 439 440 |
# File 'lib/sbuilder/factory.rb', line 433 def createParamSet( type ) if paramSets[type].nil? then msg = "Unknown parameter type #{type}" @logger.error( "#{__method__} #{msg}" ) raise NameError.new( msg ) end return paramSets[type].new( ) end |
#createParserFacade ⇒ Sbuilder::ParserFacade
Returns facade to parser.
455 456 457 |
# File 'lib/sbuilder/factory.rb', line 455 def createParserFacade Sbuilder::ParserFacade.new( ) end |
#createResolver(type) ⇒ Object
create new Resolver object
396 397 398 |
# File 'lib/sbuilder/factory.rb', line 396 def createResolver( type ) return Resolver.new( ) end |
#createResolverRule(type) ⇒ Object
create new ResolverRule object
401 402 403 404 405 406 407 408 409 |
# File 'lib/sbuilder/factory.rb', line 401 def createResolverRule( type ) if mapperRules[type].nil? then msg = "Unknown mapper rule type #{type}" @logger.error( "#{__method__} #{msg}" ) raise NameError.new( msg ) end return mapperRules[type].new( ) end |
#createSymbolTable ⇒ Sbuilder::SymbolTable
Returns symbol table created.
339 340 341 |
# File 'lib/sbuilder/factory.rb', line 339 def createSymbolTable Sbuilder::SymbolTable.new( ) end |
#getApiFacade(controller) ⇒ Sbuilder::ApiLoaderFacade
Returns api loader facade to Sbuilder.
266 267 268 269 270 |
# File 'lib/sbuilder/factory.rb', line 266 def getApiFacade( controller ) facade = Sbuilder::ApiLoaderFacade.new( Factory.getFactory(), ) facade.setController( controller ) return facade end |
#getExtensionLoader(type, setupName) ⇒ Object
348 349 350 351 352 353 354 355 356 357 358 359 360 361 362 363 |
# File 'lib/sbuilder/factory.rb', line 348 def getExtensionLoader( type, setupName ) if extension_loaders[type].nil? then msg = <<-EOS Unknown extension type #{type}" Valid extension types #{extension_loaders.keys} EOS @logger.error( "#{__method__} #{msg}" ) raise NameError.new( msg ) end ldr = extension_loaders[type].new( ) ldr.setupName = setupName ldr # Sbuilder::ExtensionLoader.new( options ) end |
#getLoaderPlugin(className, configuration = nil, objectName = nil) ⇒ ApiLoaderPlugin
return ‘objectName’ plugin instance, or create new plugin object with ‘className.new’.configure( configuration )
must be nil
className must be non nil.
183 184 185 186 187 188 189 190 191 192 193 194 195 196 197 198 199 200 201 202 203 204 205 206 207 208 209 210 211 212 213 214 215 216 217 218 219 220 221 222 223 224 225 226 227 |
# File 'lib/sbuilder/factory.rb', line 183 def getLoaderPlugin( className, configuration=nil, objectName=nil ) @logger.info "#{__method__}, className=#{className}, configuration=#{configuration}, objectName=#{objectName}" raise FactoryException, "Must give either 'className' or 'objectName'" if className.nil? && objectName.nil? || !className.nil? && !objectName.nil? if objectName then # get usign objectName o = namedPluginObjects[objectName] if o.nil? then msg = <<-EOS Unknown loader plugin object #{objectName} Check array 'extend.loaders.objects' for 'objectName' Known loader plugin object names: #{namedPluginObjects.keys.join(',')} EOS @logger.error( "#{__method__} #{msg}" ) raise NameError.new( msg ) end @logger.info "#{__method__}, found #{objectName} --> #{o.class}" return o else # create new 'unnamed object' if loaderPlugins[className].nil? then msg = <<-EOS Unknown parameter className #{className}" Validate classNames #{loaderPlugins.keys} EOS @logger.error( "#{__method__} #{msg}" ) raise NameError.new( msg ) end newObject = loaderPlugins[className].new( ) newObject.configure( configuration ) if configuration return newObject end end |
#getResolverLoader(type) ⇒ Object
return object to load mappers
250 251 252 253 254 255 256 257 258 259 260 261 262 263 |
# File 'lib/sbuilder/factory.rb', line 250 def getResolverLoader( type ) if mapperLoaders[type].nil? then msg = <<-EOS Unknown mapper type #{type} Valid types: #{mapperLoaders.keys} EOS @logger.error( "#{__method__} #{msg}" ) raise NameError.new( msg ) end return mapperLoaders[type].new( Factory.getFactory(), ) end |
#getSetupLoader(type, controller, setupName) ⇒ Object
370 371 372 373 374 375 376 377 378 379 380 381 382 383 384 385 386 |
# File 'lib/sbuilder/factory.rb', line 370 def getSetupLoader( type, controller, setupName ) if setup_loaders[type].nil? then msg = <<-EOS Unknown setup extension type #{type}" Valid setup extesion types: #{setup_loaders.keys} EOS @logger.error( "#{__method__} #{msg}" ) raise NameError.new( msg ) end ldr = setup_loaders[type].new( , ) ldr.controller = controller ldr.setupName = setupName # Sbuilder::ExtensionLoader.new( options ) ldr end |
#getSnippetFacade(controller) ⇒ Sbuilder::SnippetLoaderFacade
Returns api loader facade to Sbuilder.
273 274 275 276 277 |
# File 'lib/sbuilder/factory.rb', line 273 def getSnippetFacade( controller ) facade = Sbuilder::SnippetLoaderFacade.new( Factory.getFactory(), ) facade.setController( controller ) return facade end |
#getSnippetFacadeMustache ⇒ mustache
Returns template to accept.
319 320 321 |
# File 'lib/sbuilder/factory.rb', line 319 def getSnippetFacadeMustache return Mustache.new end |
#getStepGenerator ⇒ Object
388 389 390 |
# File 'lib/sbuilder/factory.rb', line 388 def getStepGenerator Sbuilder::StepGenerator.new( ) end |
#getTemplate(reader) ⇒ Template
template
311 312 313 314 315 316 |
# File 'lib/sbuilder/factory.rb', line 311 def getTemplate( reader ) Template.new( reader, @options ) # return @template if @template # @template = Template.new( getTemplateReader, @options ) # @template end |
#getTemplateReader(controller) ⇒ TemplateReader|TemplateContextReader
Create file reader for template generator if options-> return TemplateContextReader else return TemplateReader
‘get_template’ -method for template generator.
290 291 292 293 294 295 296 297 298 299 300 |
# File 'lib/sbuilder/factory.rb', line 290 def getTemplateReader( controller ) if [:filter_src] Sbuilder::TemplateContextReader.new( controller, @options ) else getDefaultTemplateReader( controller ) # Sbuilder::TemplateReader.new( controller, @options ) end # return @template_reader if @template_reader # @template_reader = Sbuilder::TemplateReader.new( @options ) # @template_reader end |
#getTemplateResolver(controller) ⇒ Sbuilder::TemplateResolve
Returns mustache template generator to resolver partials.
325 326 327 328 |
# File 'lib/sbuilder/factory.rb', line 325 def getTemplateResolver( controller ) reader = getDefaultTemplateReader( controller ) Sbuilder::TemplateResolve.new( reader, @options ) end |
#initializeFactories ⇒ Object
46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 |
# File 'lib/sbuilder/factory.rb', line 46 def initializeFactories @extension_loaders={ Sbuilder::Constants::EXTENSION_LOADER_YAML => ExtensionLoader, } @setup_loaders = { Sbuilder::Constants::SETUP_LOADER_ENVIRONMENT => SetupLoaderEnv, Sbuilder::Constants::SETUP_LOADER_STEP => SetupLoaderEnv, Sbuilder::Constants::SETUP_PREFERENCES_EXTENSION => SetupLoaderPref, } @parameters={ Sbuilder::Constants::PARAMETER => Parameter_Dom, Sbuilder::Constants::PARAMETER_REF => Parameter_Ref, } @paramSets = { Sbuilder::Constants::INTERFACE_OPERATION => ParamSet_If, Sbuilder::Constants::DEFINITION => ParamSetDef, Sbuilder::Constants::DEFINITION_FUNCTION => ParamSetDefFunc, Sbuilder::Constants::PARAM_SET_STEPS => ParamSetStep, } @loaderPlugins = { # Sbuilder::Constants::LOADER_SWAGGER => ParamSetLoaderSwagger } # add default loaders to sbuilder addLoaders( [ { 'gem' => './param_set_loader_swagger', 'className' => 'Sbuilder::ParamSetLoaderSwagger', 'configuration' => nil, }, { 'gem' => './snippet_loader_simple', 'className' => 'Sbuilder::SnippetLoaderSimple', 'configuration' => { 'src_dir' => [:src_dir] }, }, ], [ Sbuilder::Constants::LOADER_SWAGGER, nil] ) @mapperLoaders = { Sbuilder::Constants::MAPPER_YAML => ResolverLoader_YAML } @mapperRules = { Sbuilder::Constants::MAPPER_RULE_MATCH => ResolverRuleMatch, Sbuilder::Constants::MAPPER_RULE_REF => ResolverRuleRef, } @domains = { Sbuilder::Constants::TYPE_DOMAIN => Domain, Sbuilder::Constants::TYPE_DOMAIN_TYPE => DomainType, Sbuilder::Constants::TYPE_RANGE_DOMAIN => DomainRange, Sbuilder::Constants::TYPE_VALUE_DOMAIN => DomainValue, Sbuilder::Constants::TYPE_CARDINALITY_DOMAIN => DomainCardinality , } end |