As far as I can see the only dependency between REST and Codebehind is
this class:

http://svn.apache.org/viewvc/struts/struts2/trunk/plugins/rest/src/main/java/org/apache/struts2/rest/ControllerClasspathPackageProvider.java?view=markup

which all it does is use Codebehind to detect actions that end in
"Controller", and optionally disable package scanning. These 2
settings could be constants declared in Codebehind and overwritten by
REST and the hard dependency would be gone(that's what I did with
Convention in order to plug REST in).

I think the problem with REST is easy to fix; one blocker down. Now,
about supporting Codebehind from Convention, any other opinions
(before pulling a vote on it)?

musachy

On Fri, May 16, 2008 at 2:30 AM, Jeromy Evans
<[EMAIL PROTECTED]> wrote:
> Jeromy Evans wrote:
>>
>> I wouldn't rush into this decision.
>>
>> Users of the REST plugin require @Namespace, @Result, etc annotations.
>>  Creating a duplicate set of annotations with the same purpose is not
>> sensible.
>>
>> It's appropriate that the REST plugin has a dependency on the plugin that
>> auto-populates the Configuration, despite the contrary statement on the
>> plugins page.
>> Merging the REST plugin with Convention is also not possible as the
>> implementation of ActionInvocation and ActionMapper are entirely different
>> (the conventions cannot currently be mixed).
>>
>> There are several issues here:
>>  - creating a Configuration (via XML, via Annotation)
>>  - ActionMapping (no problems here, each plugin sets up their own)
>>  - ActionInvocation (standard or RESTful; they are incompatible)
>>  - handling unknowns
>>
>> One situation could be that Configuration is separate from Convention; so
>> the developer can choose how the Configuration is setup and then choose
>> which mapping & invocation, and unknown handling approach to use. However
>> that would require another refactoring.
>>
>> I think making REST dependent on the Convention plugin is the way to go,
>> such that the Configuration is created by Convention (but customized for
>> REST *Controller class) and extended with the REST ActionMapper and
>> RestActionInvocation.
>
> On further thought, if it is possible to split up the Convention plugin,
> then it could be solved like so:
> - Zero Configuration: for all annotations relating to the setup of
> Configuration (merge from Convention)
> - CodeBehind: implements action mapping, invocation, unknown handling, index
> handling (the other half of Convention)
> - REST alternative implementation of action mapping, invocation, unknown
> handling
>
> Ideally then REST can be used with ZeroConf or XMLConf, or CodeBehind used
> with ZeroConf or XMLConf.  Sweet.
>
>
> ---------------------------------------------------------------------
> To unsubscribe, e-mail: [EMAIL PROTECTED]
> For additional commands, e-mail: [EMAIL PROTECTED]
>
>



-- 
"Hey you! Would you help me to carry the stone?" Pink Floyd

---------------------------------------------------------------------
To unsubscribe, e-mail: [EMAIL PROTECTED]
For additional commands, e-mail: [EMAIL PROTECTED]

Reply via email to