Class: Needle::InterceptorChainBuilder::InterceptorChainElement

Inherits:
Object
  • Object
show all
Defined in:
lib/needle/interceptor-chain.rb

Overview

A single element in an interceptor chain. Each interceptor object is wrapped in an instance of one of these. Calling #process_next on a given chain element, invokes the #process method on the corresponding interceptor, with the next element in the chain being passed in.

Instance Method Summary collapse

Constructor Details

#initialize(interceptor) ⇒ InterceptorChainElement

Create a new InterceptorChainElement that wraps the given interceptor.


40
41
42
# File 'lib/needle/interceptor-chain.rb', line 40

def initialize( interceptor )
  @interceptor = interceptor
end

Instance Method Details

#next=(next_obj) ⇒ Object

Set the next element in the interceptor chain to the given object. This must be either an InterceptorChainElement instance of a ProxyObjectChainElement instance.


47
48
49
# File 'lib/needle/interceptor-chain.rb', line 47

def next=( next_obj )
  @next_obj = next_obj
end

#process_next(context) ⇒ Object

Invokes the #process method of the interceptor encapsulated by this object, with the next element in the chain being passed to it.


53
54
55
56
57
58
59
# File 'lib/needle/interceptor-chain.rb', line 53

def process_next( context )
  if @next_obj.nil?
    raise Bug,
      "[BUG] interceptor chain should always terminate with proxy"
  end
  @interceptor.process( @next_obj, context )
end