Index: trunk/modules/beans/src/main/java/java/beans/beancontext/BeanContextSupport.java =================================================================== --- trunk/modules/beans/src/main/java/java/beans/beancontext/BeanContextSupport.java (revision 440698) +++ trunk/modules/beans/src/main/java/java/beans/beancontext/BeanContextSupport.java (working copy) @@ -656,6 +656,10 @@ return null; } + if (child instanceof BeanContextChild && child instanceof BeanContextProxy) { + throw new IllegalArgumentException("child cannot implement both BeanContextChild and BeanContextProxy"); + } + // See if the child implements BeanContextChild or BeanContextProxy. // Cast it to appropriate class or simply return null if (child instanceof BeanContextChild) { Index: trunk/modules/beans/src/test/java/org/apache/harmony/beans/tests/java/beans/beancontext/BeanContextSupportTest.java =================================================================== --- trunk/modules/beans/src/test/java/org/apache/harmony/beans/tests/java/beans/beancontext/BeanContextSupportTest.java (revision 440698) +++ trunk/modules/beans/src/test/java/org/apache/harmony/beans/tests/java/beans/beancontext/BeanContextSupportTest.java (working copy) @@ -22,6 +22,7 @@ import java.beans.Visibility; import java.beans.beancontext.BeanContext; import java.beans.beancontext.BeanContextChild; +import java.beans.beancontext.BeanContextChildSupport; import java.beans.beancontext.BeanContextMembershipEvent; import java.beans.beancontext.BeanContextMembershipListener; import java.beans.beancontext.BeanContextProxy; @@ -933,6 +934,21 @@ BeanContextChild result = MockBeanContextSupport .publicGetChildBeanContextChild(child); assertSame(child, result); + + //Regression for HARMONY-1393 + class TestBeanException extends BeanContextChildSupport implements BeanContextProxy { + private BeanContextChildSupport childSupport = new BeanContextChildSupport(); + public BeanContextChild getBeanContextProxy() { + return childSupport; + } + } + TestBeanException bean = new TestBeanException(); + try { + MockBeanContextSupport.publicGetChildBeanContextChild(bean); + fail("IllegalArgumentException expected"); + } catch (IllegalArgumentException e) { + //expected + } } public void testGetChildBeanContextChild_BeanContextProxy() {