Sha256: 3ad838db51c0fc8d7fbae3090ba5a0f48f8eeb284d3ca8eba81c7d79332a5b04

Contents?: true

Size: 950 Bytes

Versions: 6

Compression:

Stored size: 950 Bytes

Contents

require 'alephant/broker/component_meta'
require 'alephant/broker/errors/content_not_found'
require 'alephant/broker/error_component'
require 'alephant/logger'

module Alephant
  module Broker
    class ComponentFactory
      include Logger

      def initialize(load_strategy)
        @load_strategy = load_strategy
      end

      def create(id, batch_id, options)
        component_meta = ComponentMeta.new(id, batch_id, options)
        Component.new(
          component_meta,
          @load_strategy.load(component_meta)
        )
      rescue Alephant::Broker::Errors::ContentNotFound => e
        logger.warn 'Broker.ComponentFactory.create: Exception raised (ContentNotFound)'
        ErrorComponent.new(component_meta, 404, e)
      rescue => e
        logger.warn("Broker.ComponentFactory.create: Exception raised (#{e.message}, #{e.backtrace.join('\n')})")
        ErrorComponent.new(component_meta, 500, e)
      end
    end
  end
end

Version data entries

6 entries across 6 versions & 1 rubygems

Version Path
alephant-broker-3.0.1 lib/alephant/broker/component_factory.rb
alephant-broker-3.0.0 lib/alephant/broker/component_factory.rb
alephant-broker-2.1.3 lib/alephant/broker/component_factory.rb
alephant-broker-2.1.2 lib/alephant/broker/component_factory.rb
alephant-broker-2.1.1 lib/alephant/broker/component_factory.rb
alephant-broker-2.0.1 lib/alephant/broker/component_factory.rb