Sha256: e222af6fdb840364a8938da5c64a0a993d35b407dac40745bf9fd47211ce0832

Contents?: true

Size: 1.75 KB

Versions: 1

Compression:

Stored size: 1.75 KB

Contents

module Sbuilder

  # Abstract Parent class for Sbuilder for API loaders.
  #
  # Class implements following service groups
  #
  # - Constructor and Object Initialize
  # - Framework Services for API loader
  # - configure plugin  
  #
  
  class ApiLoaderPlugin

    
    include Sbuilder::Utils::MyLogger    # mix logger

    # ------------------------------------------------------------------
    # @!group Constructor and Object Initialize

    def initialize( factory, options = {} )
    end

    # Sbuilder controller calls 'setFacade' when new API loader object
    # is contstructed. Sets instance variable '@facade' and '@logger'.
    #
    # @param [Sbuilder::ApiLoader] facace to Sbuilder  services
    
    def setFacade( facade )
      @facade = facade
      @logger = facade.createLogger( self.class.name.split('::').last )
    end


    # @!endgroup

    # ------------------------------------------------------------------
    # @!group Framework Services

    # @return [Sbuilder::ApiLoader] facade to access Sbuilder servivices ( set in 'setFacade')
    def facade
      @facade
    end
    
    # @return [Logger] logger logging to Sbuiler log
    def logger
      # return STDERR logger - if logger not yet ready
      Logger.new( STDERR ) unless @logger
      @logger
    end
    
    # ------------------------------------------------------------------
    # @!group Configure services - MUST be implement by  plugin class

    # Configure API loader - MUST be implemented by plugin class
    # @param configuration [Hash] properties to configure
    
    def self.configure( configuration )
      raise PluginException.new <<-EOS
      Plugin classes should implement method #{__method__}.
      EOS
    end

    # @!endgroup
    
  end # class  ApiLoaderPlugin
end

Version data entries

1 entries across 1 versions & 1 rubygems

Version Path
tla-sbuilder-0.2.2 lib/sbuilder/facade/api_loader_plugin.rb