[ 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.