Download - Interceptor CS562 Spring 2002 Jan 29 2002 Anand Krishnan Morgan Deters Venkita Subramonian
![Page 1: Interceptor CS562 Spring 2002 Jan 29 2002 Anand Krishnan Morgan Deters Venkita Subramonian](https://reader036.vdocuments.mx/reader036/viewer/2022062317/5a4d1afe7f8b9ab059985c2a/html5/thumbnails/1.jpg)
InterceptorCS562 Spring 2002
Jan 29 2002
Anand KrishnanMorgan DetersVenkita Subramonian
![Page 2: Interceptor CS562 Spring 2002 Jan 29 2002 Anand Krishnan Morgan Deters Venkita Subramonian](https://reader036.vdocuments.mx/reader036/viewer/2022062317/5a4d1afe7f8b9ab059985c2a/html5/thumbnails/2.jpg)
Discussion Topics
• Interceptor definition• Motivating Examples• Problem definition and solutions• Implementation details• Scope for Generic Programming• Relationship with other patterns
![Page 3: Interceptor CS562 Spring 2002 Jan 29 2002 Anand Krishnan Morgan Deters Venkita Subramonian](https://reader036.vdocuments.mx/reader036/viewer/2022062317/5a4d1afe7f8b9ab059985c2a/html5/thumbnails/3.jpg)
Interceptor
• Architectural pattern• Allows services to be transparently added to a
framework• Services triggered automatically when certain
events occur
![Page 4: Interceptor CS562 Spring 2002 Jan 29 2002 Anand Krishnan Morgan Deters Venkita Subramonian](https://reader036.vdocuments.mx/reader036/viewer/2022062317/5a4d1afe7f8b9ab059985c2a/html5/thumbnails/4.jpg)
Problem
• Problem – How to integrate out-of-band tasks with in-band tasks
transparently ?
![Page 5: Interceptor CS562 Spring 2002 Jan 29 2002 Anand Krishnan Morgan Deters Venkita Subramonian](https://reader036.vdocuments.mx/reader036/viewer/2022062317/5a4d1afe7f8b9ab059985c2a/html5/thumbnails/5.jpg)
Example 1 – Java event modelpublic class Demo extends JApplet { public void init() { bHandler = new ButtonHandler(); button = new JButton("Click Me"); getContentPane().add(button,
BorderLayout.CENTER); button.addActionListener(bHandler); } public class ButtonHandler
implements ActionListenervoid actionPerformed(ActionEvent e) { Toolkit.getDefaultToolkit().beep(); }
}
AppletFramework
Button clicked
ActionListener
Some action
ActionEvent
![Page 6: Interceptor CS562 Spring 2002 Jan 29 2002 Anand Krishnan Morgan Deters Venkita Subramonian](https://reader036.vdocuments.mx/reader036/viewer/2022062317/5a4d1afe7f8b9ab059985c2a/html5/thumbnails/6.jpg)
Example 2 – Unix signals
void catch_int(int sig_num) {signal(SIGINT, catch_int); printf("Don't do that");fflush(stdout);
}main() {
…..signal(SIGINT, catch_int); for ( ;; )
pause();}
OSFramework
Ctrl + C
signalhandler
Some action
Signal info
![Page 7: Interceptor CS562 Spring 2002 Jan 29 2002 Anand Krishnan Morgan Deters Venkita Subramonian](https://reader036.vdocuments.mx/reader036/viewer/2022062317/5a4d1afe7f8b9ab059985c2a/html5/thumbnails/7.jpg)
Example 3 - Database Triggers
CREATE TRIGGER print_salary_changesBEFORE UPDATE ON emp FOR EACH ROW WHEN (new.empno > 0) DECLARE sal_diff number; BEGIN
sal_diff := new.sal - old.sal; dbms_output.put('Old salary: ' || :old.sal); dbms_output.put(' New salary: ' || :new.sal); dbms_output.put(' Difference ' || sal_diff);
END;
UPDATE emp SET sal = sal + 500.00 WHERE deptno = 10
Trigger will fire once for each row that isupdated, and it prints the new and oldsalaries, and the difference.
DatabaseFramework
Update Request
BeforeUpdateTrigger
AfterUpdateTrigger
Result
![Page 8: Interceptor CS562 Spring 2002 Jan 29 2002 Anand Krishnan Morgan Deters Venkita Subramonian](https://reader036.vdocuments.mx/reader036/viewer/2022062317/5a4d1afe7f8b9ab059985c2a/html5/thumbnails/8.jpg)
Example 4 – CORBA ORB
• In-band tasks– Connection management
with peer ORB– Request/reply
marshaling/demarshaling– Demultiplexing requests
to objects• Out-of-band tasks
– Added at interceptor points
– Security, Fault Tolerance
ORB ORB
SecurityService
FaultTolerance
Service
![Page 9: Interceptor CS562 Spring 2002 Jan 29 2002 Anand Krishnan Morgan Deters Venkita Subramonian](https://reader036.vdocuments.mx/reader036/viewer/2022062317/5a4d1afe7f8b9ab059985c2a/html5/thumbnails/9.jpg)
Solution • Problem
– How to integrate out-of-band tasks with in-band tasks transparently ?
• Solution– Out-of-band tasks
• register with framework via specific interfaces• get triggered by framework on certain events• are provided access to framework internals via specific
interfaces
![Page 10: Interceptor CS562 Spring 2002 Jan 29 2002 Anand Krishnan Morgan Deters Venkita Subramonian](https://reader036.vdocuments.mx/reader036/viewer/2022062317/5a4d1afe7f8b9ab059985c2a/html5/thumbnails/10.jpg)
UML Class Diagram
implement *
implement z4
Application
Concrete Interceptor
Interceptor
![Page 11: Interceptor CS562 Spring 2002 Jan 29 2002 Anand Krishnan Morgan Deters Venkita Subramonian](https://reader036.vdocuments.mx/reader036/viewer/2022062317/5a4d1afe7f8b9ab059985c2a/html5/thumbnails/11.jpg)
UML Class Diagram
implement *
implement
Application
Concrete Interceptor
Interceptor
![Page 12: Interceptor CS562 Spring 2002 Jan 29 2002 Anand Krishnan Morgan Deters Venkita Subramonian](https://reader036.vdocuments.mx/reader036/viewer/2022062317/5a4d1afe7f8b9ab059985c2a/html5/thumbnails/12.jpg)
UML Class Diagram
register
implement *
implement
Application
Concrete Interceptor
InterceptorDispatcher
![Page 13: Interceptor CS562 Spring 2002 Jan 29 2002 Anand Krishnan Morgan Deters Venkita Subramonian](https://reader036.vdocuments.mx/reader036/viewer/2022062317/5a4d1afe7f8b9ab059985c2a/html5/thumbnails/13.jpg)
UML Class Diagram
register
implement *
event /
trigger
implement
Application
Concrete Interceptor
InterceptorDispatcher
ConcreteFramework
![Page 14: Interceptor CS562 Spring 2002 Jan 29 2002 Anand Krishnan Morgan Deters Venkita Subramonian](https://reader036.vdocuments.mx/reader036/viewer/2022062317/5a4d1afe7f8b9ab059985c2a/html5/thumbnails/14.jpg)
UML Class Diagram
register
instantiate implement *
event /
trigger
implement
Application
Concrete Interceptor
InterceptorDispatcher
ConcreteFramework
ContextObject(CO)
![Page 15: Interceptor CS562 Spring 2002 Jan 29 2002 Anand Krishnan Morgan Deters Venkita Subramonian](https://reader036.vdocuments.mx/reader036/viewer/2022062317/5a4d1afe7f8b9ab059985c2a/html5/thumbnails/15.jpg)
UML Class Diagram
register
instantiate implement *
event /
trigger
*notify (CO)
implement
Application
Concrete Interceptor
InterceptorDispatcher
ConcreteFramework
ContextObject(CO)
![Page 16: Interceptor CS562 Spring 2002 Jan 29 2002 Anand Krishnan Morgan Deters Venkita Subramonian](https://reader036.vdocuments.mx/reader036/viewer/2022062317/5a4d1afe7f8b9ab059985c2a/html5/thumbnails/16.jpg)
UML Class Diagram
register
instantiate implement *
event /
trigger
*notify (CO)
(CO) 1..* implement
Application
Concrete Interceptor
InterceptorDispatcher
ConcreteFramework
ContextObject(CO)
![Page 17: Interceptor CS562 Spring 2002 Jan 29 2002 Anand Krishnan Morgan Deters Venkita Subramonian](https://reader036.vdocuments.mx/reader036/viewer/2022062317/5a4d1afe7f8b9ab059985c2a/html5/thumbnails/17.jpg)
UML Class Diagram
Application
Concrete Interceptor
InterceptorDispatcher
ConcreteFramework
ContextObject(CO)
![Page 18: Interceptor CS562 Spring 2002 Jan 29 2002 Anand Krishnan Morgan Deters Venkita Subramonian](https://reader036.vdocuments.mx/reader036/viewer/2022062317/5a4d1afe7f8b9ab059985c2a/html5/thumbnails/18.jpg)
Implementation
• Model Internal Behavior of Concrete Framework • Identify and model interception points
– Identify concrete framework state transitions– Partition interception points into reader / writer sets – Integrate them into state machine model– Partition them into disjoint interception groups
• Specify the context object– context object semantics– number of context object types– strategy for passing context objects to interceptors
• Per-registration / Per-event
![Page 19: Interceptor CS562 Spring 2002 Jan 29 2002 Anand Krishnan Morgan Deters Venkita Subramonian](https://reader036.vdocuments.mx/reader036/viewer/2022062317/5a4d1afe7f8b9ab059985c2a/html5/thumbnails/19.jpg)
Implementation
• Specify the interceptors• Specify the dispatchers
– interceptor registration interface– dispatcher callback interface
• Implement CallBack mechanisms in Concrete Framework
• Implement Concrete Interceptors
![Page 20: Interceptor CS562 Spring 2002 Jan 29 2002 Anand Krishnan Morgan Deters Venkita Subramonian](https://reader036.vdocuments.mx/reader036/viewer/2022062317/5a4d1afe7f8b9ab059985c2a/html5/thumbnails/20.jpg)
Interceptor Themes• A priori knowledge of engineering context
– Have you covered all the bases?• Flexibility
– How much influence can the Interceptor have?• Performance
– How simple can the Interceptor model be?• "in-band" vs. "out-of-band“
– Are the concerns that Interceptors realize orthogonal?
![Page 21: Interceptor CS562 Spring 2002 Jan 29 2002 Anand Krishnan Morgan Deters Venkita Subramonian](https://reader036.vdocuments.mx/reader036/viewer/2022062317/5a4d1afe7f8b9ab059985c2a/html5/thumbnails/21.jpg)
Generic Interceptors?
• Templatization of context object?– Use context_traits to achieve compile-time
negotiation of dispatcher & interceptor
![Page 22: Interceptor CS562 Spring 2002 Jan 29 2002 Anand Krishnan Morgan Deters Venkita Subramonian](https://reader036.vdocuments.mx/reader036/viewer/2022062317/5a4d1afe7f8b9ab059985c2a/html5/thumbnails/22.jpg)
Interceptors as a Language Construct
• Interception becomes 1st class language concern• Interception points are language constructs
– Variable mutation, method execution, object instantiation, etc...
• Concrete Framework need not be specially prepared for extension– This is a major consequence
• Aspect-Oriented Programming (AOP)
![Page 23: Interceptor CS562 Spring 2002 Jan 29 2002 Anand Krishnan Morgan Deters Venkita Subramonian](https://reader036.vdocuments.mx/reader036/viewer/2022062317/5a4d1afe7f8b9ab059985c2a/html5/thumbnails/23.jpg)
Interceptors and AOP• Join Points
– Language constructs (execution/data, static/dynamic)
– Correspond to interception points• Aspect
– Collection of (possibly abstract) Interceptors– Specifies the join points to operate on– Attach advice to a particular place in execution (or
piece of data) in the system, reflectively reason about its place in the system
![Page 24: Interceptor CS562 Spring 2002 Jan 29 2002 Anand Krishnan Morgan Deters Venkita Subramonian](https://reader036.vdocuments.mx/reader036/viewer/2022062317/5a4d1afe7f8b9ab059985c2a/html5/thumbnails/24.jpg)
Interceptors as a Language Construct:Examples
• Component Configurator– Infrequently-used features (e.g., backward-compatible
protocol support) can be loaded, unloaded without the application being aware of it
• Customization– Quality of Service– Fault-Tolerance
![Page 25: Interceptor CS562 Spring 2002 Jan 29 2002 Anand Krishnan Morgan Deters Venkita Subramonian](https://reader036.vdocuments.mx/reader036/viewer/2022062317/5a4d1afe7f8b9ab059985c2a/html5/thumbnails/25.jpg)
+ Separation of Concerns
+ (Future) Flexibility
+ Reusability/Portability
− Efficiency/Heterogenity
− Evil Interceptors
Consequences
![Page 26: Interceptor CS562 Spring 2002 Jan 29 2002 Anand Krishnan Morgan Deters Venkita Subramonian](https://reader036.vdocuments.mx/reader036/viewer/2022062317/5a4d1afe7f8b9ab059985c2a/html5/thumbnails/26.jpg)
Interceptor Variants• Bind Interceptor - Fault Tolerance• Client Request Interceptor - Load Balancing• Interceptor Proxy / Delegator - Customized
Service• Portable Interceptor• Strategies
– Single Interceptor Per Dispatcher– Interceptor Factory– Implicit Interceptor Registration
• Component Configurator Pattern• similar (partly) to AOP -- AOP languages can differ• load from a library at runtime, Concrete Framework creates
the Interceptors
![Page 27: Interceptor CS562 Spring 2002 Jan 29 2002 Anand Krishnan Morgan Deters Venkita Subramonian](https://reader036.vdocuments.mx/reader036/viewer/2022062317/5a4d1afe7f8b9ab059985c2a/html5/thumbnails/27.jpg)
Relationships to Other Patterns
• Chain of Responsibility (single handler)• Observer/Publisher-Subscriber (notification)• Template Method (localized interception)
– Interceptor reaches across multiple layers• Pipes & Filters• Reflection