[ 
https://issues.apache.org/jira/browse/OWB-435?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=12897944#action_12897944
 ] 

YING WANG commented on OWB-435:
-------------------------------

I know we did not break the spec ;)   But If I am a user who is not majored in 
computer science and bought 2 decorators from third parties to improve my 
current function X(),    d1(X())  and  d2(X()),  I would expect if I add d1 
then d2 in the decorator list, the result should be something like d2(d1(X())). 
 I know if I change order in the beans.xml for the above test case, I could 
workaround and get the result I want. 

But for more complicated processing, changing order will not work. So are we 
saying users will never be able to get d2(d1(X())) result if they want  d1(X()) 
 and  d2(X()) work together?  

Just a few thoughts for fun ;))

> What is the expected result for following 2 decorators?
> -------------------------------------------------------
>
>                 Key: OWB-435
>                 URL: https://issues.apache.org/jira/browse/OWB-435
>             Project: OpenWebBeans
>          Issue Type: Question
>          Components: Interceptor and Decorators
>            Reporter: YING WANG
>            Assignee: Gurkan Erdogdu
>            Priority: Minor
>
> While I am testing 2 decorators decorate the same getName() method of 
> UserBean, I found the result is:
> 1. "UserDecorator1(UserDecorator2(MYNAME)) "   <==  Did call 
> UserDecorator1.getName() first, but before it finishes, it recursively 
> invokes the UserDecorator2.getName() on the calling stack.
> 2. or  should the result be:
> "UserDecorator2(MYNAME)"      <==== should decorator2's result overwrite 
> decorator1's?
> 3. or should the result be:
> "UserDecorator2(UserDecorator1(MYNAME)) "    <==== should decorator1's result 
> to the one used for decorator2?
> I prefer 3, but I am not sure which result is the correct one....
> ===================Userbean ========================
> public class UserBean implements UserInterface, Serializable 
> {
>     public String getName()
>     {
>       return "MYNAME";
>     }
> }
> ===================UserDecorator1 ========================
> @Decorator
> public abstract class UserDecorator1 implements UserInterface, Serializable 
> {
>       @Inject @Delegate @Any UserInterface ui;
>       
>       public String getName() {
>               return "UserDecorator1(" + ui.getName() + ")";
>       }
> }
> ===================UserDecorator2 ========================
> @Decorator
> public abstract class UserDecorator2 implements UserInterface, Serializable 
> {
>       @Inject @Delegate @Any UserInterface ui;
>       
>       public String getName() {
>               return "UserDecorator2(" + ui.getName() + ")";
>       }
> }
> ========================================================
>         <decorators>
>                 <class>com.jcdi.test.UserDecorator1</class>
>                 <class>com.jcdi.test.UserDecorator2</class>
>         </decorators>

-- 
This message is automatically generated by JIRA.
-
You can reply to this email to add a comment to the issue online.

Reply via email to