Index: src/test/java/org/apache/harmony/beans/tests/java/beans/EventHandlerTest.java =================================================================== --- src/test/java/org/apache/harmony/beans/tests/java/beans/EventHandlerTest.java (revision 485462) +++ src/test/java/org/apache/harmony/beans/tests/java/beans/EventHandlerTest.java (working copy) @@ -732,6 +732,14 @@ new Class[] { Object.class }); assertEquals(Boolean.FALSE, handler.invoke(proxy, equalsMethod, new String[] { "mock" })); + // Test null method with non-proxy Object. + handler = new EventHandler(new Object(), "a", "a", "a"); + try { + handler.invoke(new Object(), null, new Object[] {}); + fail("should throw NPE."); + } catch (NullPointerException e) { + // expected; + } } public void testIncompatibleMethod() { Index: src/main/java/java/beans/EventHandler.java =================================================================== --- src/main/java/java/beans/EventHandler.java (revision 485462) +++ src/main/java/java/beans/EventHandler.java (working copy) @@ -60,7 +60,6 @@ // if a valid object if (handler instanceof EventHandler) { - // if the method from the Object class is called if (method.getDeclaringClass().equals(Object.class)) { if (method.getName().equals("hashCode") && //$NON-NLS-1$ @@ -99,6 +98,13 @@ } } } + }else{ + if (null == method) { + // RI throws NPE here so we should do the same. + // beans.55: Method is null. + throw new NullPointerException(Messages.getString( + "beans.55")); //$NON-NLS-1$ + } } return result; Index: src/main/java/org/apache/harmony/beans/internal/nls/messages.properties =================================================================== --- src/main/java/org/apache/harmony/beans/internal/nls/messages.properties (revision 485462) +++ src/main/java/org/apache/harmony/beans/internal/nls/messages.properties (working copy) @@ -100,3 +100,4 @@ beans.52=listenerMethodName(s) is null beans.53=eventSetName is null beans.54=listenerType is null +beans.55=Method is null