HDIV and Struts 2 integration
-----------------------------

                 Key: WW-3718
                 URL: https://issues.apache.org/jira/browse/WW-3718
             Project: Struts 2
          Issue Type: New Feature
          Components: Other
    Affects Versions: 2.2.3.1
            Reporter: Gorka Vicente
            Priority: Minor


Nowadays there is an intregration between Struts2 and HDIV that can be used by 
adding the HDIV filter and by using Struts2's custom tag extension. This means 
that it is possible to apply HDIV to a web application developed in Struts2 in 
a declarative way, without making any change to the source code.

But this approach has a maintenability disadvantage that forces to release a 
new set of HDIV custom tags for every new version of Struts2. This does not 
happen to the HDIV core and web filter, as they are no intrusive extensions.

This problem arises because there isn't a clear extension point of the 
Struts2´s custom tags that will make possible a clear extension of the 
component's behaviour without having to create a new version of it.

Consecuently, it is necessary to create a new version of HDIV's custom tags for 
Struts2 each time a new version of the framework is released.

Also there is the risk that the behaviour of the Struts2's custom tags may 
change in the future and become not compatible with HDIV.

The objective of this new feature is to have an official integration between 
HDIV and Struts2 that eliminates the maintenance cost that exists today for new 
versions of Struts2. This integration will provide an integrated and compatible 
solution even for future versions of both frameworks.

In order to get this purpose, we propose the creation of a Java interface or 
contract that will be used by Struts2's custom tags. With this extension point 
it will no longer be necessary to create specific Struts2 custom tags for HDIV, 
reducing the integration task to only implementing the interface.

I have attached an interface proposal (RequestDataValueProcessor). Struts2 tags 
should use this new interface in order to avoid tags extension.

HDIV needs to process all urls sent to the client and needs to intercept 
redirects. Currently we extend Struts2 default ActionMapper, 
ServletRedirectResult, ServletActionRedirectResult and 
ServletActionRedirectResult. Struts2 should use the new interface in order to 
avoid these extensions.

At this moment, we are finishing HDIV for Struts2 (2.2.3.1), extending all tags 
as in the older releases. In a few days we will publish it and it can be the 
starting point to implement a new version of Struts2 using the proposed new 
interface.

IMPORTANT NOTES
---------------
1. Some time ago we spoke with Struts1 people team and they opened a discussion 
for this integration: http://wiki.apache.org/struts/HDIV
2. Other web frameworks like Spring MVC have been created a extension point 
like we are proposing here and a few weeks ago they have been integrated in the 
last version (3.1 RC1). You can see it here: 
https://jira.springsource.org/browse/SPR-7943




--
This message is automatically generated by JIRA.
If you think it was sent incorrectly, please contact your JIRA administrators: 
https://issues.apache.org/jira/secure/ContactAdministrators!default.jspa
For more information on JIRA, see: http://www.atlassian.com/software/jira


Reply via email to