From 5e5b0c9ce3142dbe7ef121f860f9288307afe82f Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Christian=20R=C3=A4del?= Date: Mon, 24 Oct 2016 15:38:31 +0200 Subject: [PATCH] BAEL-325: Added UML diagrams reflecting the different filter strategies. --- .../filter/filters/TemplateFilter.java | 1 - .../intercepting_filter-custom_strategy.png | Bin 0 -> 26613 bytes .../intercepting_filter-custom_strategy.puml | 29 ++++++++++++++++++ .../intercepting_filter-standard_strategy.png | Bin 0 -> 25680 bytes ...intercepting_filter-standard_strategy.puml | 26 ++++++++++++++++ .../intercepting_filter-template_strategy.png | Bin 0 -> 25981 bytes ...intercepting_filter-template_strategy.puml | 25 +++++++++++++++ 7 files changed, 80 insertions(+), 1 deletion(-) create mode 100644 patterns/intercepting-filter/src/main/resources/intercepting_filter-custom_strategy.png create mode 100644 patterns/intercepting-filter/src/main/resources/intercepting_filter-custom_strategy.puml create mode 100644 patterns/intercepting-filter/src/main/resources/intercepting_filter-standard_strategy.png create mode 100644 patterns/intercepting-filter/src/main/resources/intercepting_filter-standard_strategy.puml create mode 100644 patterns/intercepting-filter/src/main/resources/intercepting_filter-template_strategy.png create mode 100644 patterns/intercepting-filter/src/main/resources/intercepting_filter-template_strategy.puml diff --git a/patterns/intercepting-filter/src/main/java/com/baeldung/patterns/intercepting/filter/filters/TemplateFilter.java b/patterns/intercepting-filter/src/main/java/com/baeldung/patterns/intercepting/filter/filters/TemplateFilter.java index 69c613fffe..64396ef931 100644 --- a/patterns/intercepting-filter/src/main/java/com/baeldung/patterns/intercepting/filter/filters/TemplateFilter.java +++ b/patterns/intercepting-filter/src/main/java/com/baeldung/patterns/intercepting/filter/filters/TemplateFilter.java @@ -9,7 +9,6 @@ import javax.servlet.http.HttpServletResponse; import java.io.IOException; public abstract class TemplateFilter extends BaseFilter { - protected abstract void preFilter( HttpServletRequest request, HttpServletResponse response diff --git a/patterns/intercepting-filter/src/main/resources/intercepting_filter-custom_strategy.png b/patterns/intercepting-filter/src/main/resources/intercepting_filter-custom_strategy.png new file mode 100644 index 0000000000000000000000000000000000000000..2f025fad5e2dfcd47253b39c7c50ddcbf47afc33 GIT binary patch literal 26613 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 literal 0 HcmV?d00001 diff --git a/patterns/intercepting-filter/src/main/resources/intercepting_filter-custom_strategy.puml b/patterns/intercepting-filter/src/main/resources/intercepting_filter-custom_strategy.puml new file mode 100644 index 0000000000..4090085d85 --- /dev/null +++ b/patterns/intercepting-filter/src/main/resources/intercepting_filter-custom_strategy.puml @@ -0,0 +1,29 @@ +@startuml +scale 1.5 + +class FrontControllerServlet { + void doGet() + void doPost() +} +class FilterManager { + {static} void process() +} +class FilterChainImpl { + void doFilter() +} +class AuthenticationFilter { + void doFilter() +} +class VisitorCounterFilter { + void doFilter() +} +class FrontCommand { + void process() +} + +FrontControllerServlet -- FrontCommand +FrontCommand .right.-- FilterManager +FilterManager -- FilterChainImpl +FilterChainImpl .right.-- AuthenticationFilter +AuthenticationFilter .right.-- VisitorCounterFilter +@enduml diff --git a/patterns/intercepting-filter/src/main/resources/intercepting_filter-standard_strategy.png b/patterns/intercepting-filter/src/main/resources/intercepting_filter-standard_strategy.png new file mode 100644 index 0000000000000000000000000000000000000000..0d8db711a7f22026db8313c9a1c16ce77b797dee GIT binary patch literal 25680 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 Ur7w>JuL!|`sp_g!D%pnpA1S+;3jhEB literal 0 HcmV?d00001 diff --git a/patterns/intercepting-filter/src/main/resources/intercepting_filter-standard_strategy.puml b/patterns/intercepting-filter/src/main/resources/intercepting_filter-standard_strategy.puml new file mode 100644 index 0000000000..1261d9ee4b --- /dev/null +++ b/patterns/intercepting-filter/src/main/resources/intercepting_filter-standard_strategy.puml @@ -0,0 +1,26 @@ +@startuml +scale 1.5 + +class FrontControllerServlet { + void doGet() + void doPost() +} +abstract class BaseFilter { + void init() + void destroy() +} +class LoggingFilter { + void doFilter() +} +class EncodingFilter { + void doFilter() +} +class FrontCommand { + void process() +} + +FrontControllerServlet .right.-- FrontCommand +FrontControllerServlet -- BaseFilter +BaseFilter <|-- LoggingFilter +BaseFilter <|-- EncodingFilter +@enduml diff --git a/patterns/intercepting-filter/src/main/resources/intercepting_filter-template_strategy.png b/patterns/intercepting-filter/src/main/resources/intercepting_filter-template_strategy.png new file mode 100644 index 0000000000000000000000000000000000000000..5c37aa2937914acce20739d697117c6cc5eb233c GIT binary patch literal 25981 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