Merge pull request #98 from lukaszlenart/architects-guide
Architects guide
diff --git a/pom.xml b/pom.xml
index 06ca431..1984c3a 100644
--- a/pom.xml
+++ b/pom.xml
@@ -94,14 +94,14 @@
<argument>-a</argument>
<argument>${project.build.directory}/md/attachments</argument>
<argument>-o</argument>
- <argument>${project.build.directory}/md/architects-guide.md</argument>
+ <argument>${project.build.directory}/md/big-picture.md</argument>
<argument>-u</argument>
<argument>${confluence.user}:${confluence.password}</argument>
<argument>-server</argument>
<argument>https://cwiki.apache.org/confluence</argument>
<argument>+gfm</argument>
<argument>true</argument>
- <argument>45478</argument>
+ <argument>13859</argument>
</arguments>
</configuration>
</execution>
diff --git a/source/core-developers/attachments/Struts2-Architecture.png b/source/core-developers/attachments/Struts2-Architecture.png
new file mode 100644
index 0000000..dc4d5dd
--- /dev/null
+++ b/source/core-developers/attachments/Struts2-Architecture.png
Binary files differ
diff --git a/source/core-developers/big-picture.md b/source/core-developers/big-picture.md
new file mode 100644
index 0000000..fe5257b
--- /dev/null
+++ b/source/core-developers/big-picture.md
@@ -0,0 +1,38 @@
+---
+layout: core-developers
+title: Big Picture
+---
+
+# Big Picture
+
+The diagram describes the framework's architecture.
+
+![Struts2-Architecture.png](attachments/Struts2-Architecture.png)
+
+In the diagram, an initial request goes to the Servlet container (such as Jetty or Resin) which is passed through
+a standard filter chain. The chain includes the (optional) **ActionContextCleanUp** filter, which is useful when
+integrating technologies such as _SiteMesh Plugin_ . Next, the required **FilterDispatcher** is called, which in turn
+consults the [ActionMapper](action-mapper) to determine if the request should invoke an action.
+
+If the ActionMapper determines that an Action should be invoked, the FilterDispatcher delegates control
+to the **ActionProxy**. The ActionProxy consults the framework [Configuration Files](configuration-files) manager
+(initialized from the [struts.xml](struts-xml) file). Next, the ActionProxy creates an **ActionInvocation**, which is
+responsible for the command pattern implementation. This includes invoking any **Interceptors** (the [before](before-annotation)
+clause) in advance of invoking the **Action** itself.
+
+Once the Action returns, the ActionInvocation is responsible for looking up the proper **result** associated
+with the **Action result code** mapped in `struts.xml`.
+
+The result is then executed, which often (but not always, as is the case for [Action Chaining](action-chaining))
+involves a template written in [JSP](../tag-developers/jsp) or [FreeMarker](../tag-developers/freemarker) to be rendered.
+While rendering, the templates can use the [Struts Tags](../tag-developers/struts-tags) provided by the framework.
+Some of those components will work with the ActionMapper to render proper URLs for additional requests.
+
+
+> All objects in this architecture (Actions, [Results](result-types), [Interceptors](interceptors), and so forth) are
+> created by an [ObjectFactory](object-factory). This ObjectFactory is pluggable. We can provide our own ObjectFactory
+> for any reason that requires knowing when objects in the framework are created. A popular ObjectFactory implementation
+> uses Spring as provided by the [Spring Plugin](../plugins/).
+
+Interceptors are executed again (in reverse order, calling the [after](after-annotation) clause). Finally, the response
+returns through the filters configured in the web.xml.
diff --git a/source/core-developers/index.md b/source/core-developers/index.md
index ad24dd1..6a8c396 100644
--- a/source/core-developers/index.md
+++ b/source/core-developers/index.md
@@ -59,8 +59,11 @@
- [Configuration/Documentation] - export https://cwiki.apache.org/confluence/display/WW/Portlet+Plugin
- [Logging](logging.html)
- [Accessing application, session, request objects](accessing-application-session-request-objects.html)
-- [Action Mapper](action-mapper.html)
-- [Action Proxy & ActionProxy Factory](action-proxy-and-actionproxy-factory.html)
+- [Big Picture](big-picture)
+ - [ObjectFactory](object-factory)
+ - [Action Mapper](action-mapper.html)
+ - [Action Proxy & ActionProxy Factory](action-proxy-and-actionproxy-factory.html)
+ - [Configuration Provider & Configuration](configuration-provider-and-configuration)
- [FAQs](../faq/)
- [Struts 2 Maven Archetypes](../maven-archetypes/)
- [Cookbook]