Class: Needle::InterceptorChainBuilder::InterceptorChainElement
- Inherits:
-
Object
- Object
- Needle::InterceptorChainBuilder::InterceptorChainElement
- 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
-
#initialize(interceptor) ⇒ InterceptorChainElement
constructor
Create a new InterceptorChainElement that wraps the given interceptor.
-
#next=(next_obj) ⇒ Object
Set the next element in the interceptor chain to the given object.
-
#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.
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 |