Hi Martin,

For some reason, a proxied bean's equals cannot be called. Are you aware of this problem? Although the spec says:

The behavior of all methods declared by java.lang.Object, except for toString(), is
undefined for a client proxy. Portable applications should not invoke any method declared by
java.lang.Object, except for toString(), on a client proxy.

I thought the overridden equals is different from the methods defined by Object class and it should be invoked.

Please find attached a very simple test case that shows a .equals() method not being invoked on a bean proxied by Weld.

In a debugger one can see that GenericBean.equals() is not invoked within the Servlet:

        protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
                PrintWriter pw = response.getWriter();
                pw.println ("Hello");
                if (gb.equals(new GenericBean(10))) {    // GenericBean.equals() is not invoked; test prints 'fail'
                } else {
                        pw.println ("fail");

The .war contains source and object code. As you can see there's only two classes.

Many thanks,
Emily Jiang
WebSphere Application Server, CDI Development Lead

MP 211, DE3A20, Winchester, Hampshire, England, SO21 2JN
Phone:  +44 (0)1962 816278  Internal: 246278

Email: emijiang@uk.ibm.com
Lotus Notes: Emily Jiang/UK/IBM@IBMGB
Unless stated otherwise above:
IBM United Kingdom Limited - Registered in England and Wales with number 741598.
Registered office: PO Box 41, North Harbour, Portsmouth, Hampshire PO6 3AU