You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@harmony.apache.org by py...@apache.org on 2007/07/09 08:41:17 UTC
svn commit: r554537 - in /harmony/enhanced/classlib/trunk/modules/beans/src:
main/java/java/beans/EventHandler.java
test/java/org/apache/harmony/beans/tests/java/beans/EventHandlerTest.java
Author: pyang
Date: Sun Jul 8 23:41:16 2007
New Revision: 554537
URL: http://svn.apache.org/viewvc?view=rev&rev=554537
Log:
1. modify EventHanderTest according to RI's behavior 2. fix java.beans.EventHandler
Modified:
harmony/enhanced/classlib/trunk/modules/beans/src/main/java/java/beans/EventHandler.java
harmony/enhanced/classlib/trunk/modules/beans/src/test/java/org/apache/harmony/beans/tests/java/beans/EventHandlerTest.java
Modified: harmony/enhanced/classlib/trunk/modules/beans/src/main/java/java/beans/EventHandler.java
URL: http://svn.apache.org/viewvc/harmony/enhanced/classlib/trunk/modules/beans/src/main/java/java/beans/EventHandler.java?view=diff&rev=554537&r1=554536&r2=554537
==============================================================================
--- harmony/enhanced/classlib/trunk/modules/beans/src/main/java/java/beans/EventHandler.java (original)
+++ harmony/enhanced/classlib/trunk/modules/beans/src/main/java/java/beans/EventHandler.java Sun Jul 8 23:41:16 2007
@@ -37,6 +37,9 @@
public EventHandler(Object target, String action, String eventPropertyName,
String listenerMethodName) {
+ if(target == null || action == null){
+ throw new NullPointerException();
+ }
this.target = target;
this.action = action;
this.eventPropertyName = eventPropertyName;
@@ -128,6 +131,9 @@
@SuppressWarnings("unchecked")
public static <T> T create(Class<T> listenerInterface, Object target,
String action, String eventPropertyName, String listenerMethodName) {
+ if(action == null || target == null || listenerInterface == null){
+ throw new NullPointerException();
+ }
return (T) Proxy.newProxyInstance(target.getClass().getClassLoader(),
new Class[] { listenerInterface }, new EventHandler(target,
action, eventPropertyName, listenerMethodName));
@@ -136,17 +142,13 @@
@SuppressWarnings("unchecked")
public static <T> T create(Class<T> listenerInterface, Object target,
String action, String eventPropertyName) {
- return (T) Proxy.newProxyInstance(target.getClass().getClassLoader(),
- new Class[] { listenerInterface }, new EventHandler(target,
- action, eventPropertyName, null));
+ return create(listenerInterface, target, action, eventPropertyName, null);
}
@SuppressWarnings("unchecked")
public static <T> T create(Class<T> listenerInterface, Object target,
String action) {
- return (T) Proxy.newProxyInstance(target.getClass().getClassLoader(),
- new Class[] { listenerInterface }, new EventHandler(target,
- action, null, null));
+ return create(listenerInterface, target, action, null, null);
}
private boolean isValidInvocation(Method method, Object[] arguments) {
Modified: harmony/enhanced/classlib/trunk/modules/beans/src/test/java/org/apache/harmony/beans/tests/java/beans/EventHandlerTest.java
URL: http://svn.apache.org/viewvc/harmony/enhanced/classlib/trunk/modules/beans/src/test/java/org/apache/harmony/beans/tests/java/beans/EventHandlerTest.java?view=diff&rev=554537&r1=554536&r2=554537
==============================================================================
--- harmony/enhanced/classlib/trunk/modules/beans/src/test/java/org/apache/harmony/beans/tests/java/beans/EventHandlerTest.java (original)
+++ harmony/enhanced/classlib/trunk/modules/beans/src/test/java/org/apache/harmony/beans/tests/java/beans/EventHandlerTest.java Sun Jul 8 23:41:16 2007
@@ -122,7 +122,7 @@
Method m = SampleListener.class.getMethod("fireSampleEvent",
new Class[] { SampleEvent.class });
- handler.invoke(proxy, m, new Object[] {new SampleEvent("")});
+ handler.invoke(proxy, m, new Object[] { new SampleEvent("") });
assertEquals(invocationObject, handler.getTarget());
assertEquals("doSomething", getMethodName());
@@ -225,10 +225,11 @@
*
*/
public static Test suite() {
-// TestSuite suite = new TestSuite();
-//
-// suite.addTest(new EventHandlerTest("testCreateClassObjectStringStringString_PropertyNull"));
-// return suite;
+ // TestSuite suite = new TestSuite();
+ //
+ // suite.addTest(new
+ // EventHandlerTest("testCreateClassObjectStringStringString_PropertyNull"));
+ // return suite;
return new TestSuite(EventHandlerTest.class);
}
@@ -317,13 +318,19 @@
public void testCreateClassObjectString_MethodNull() {
MockTarget target = new MockTarget();
MockButton button = new MockButton();
+ try {
+ PropertyChangeListener proxy = EventHandler.create(
+ PropertyChangeListener.class, target, null);
+ fail("Should throw NullPointerException.");
+ } catch (NullPointerException e) {
+ }
PropertyChangeListener proxy = EventHandler.create(
- PropertyChangeListener.class, target, null);
+ PropertyChangeListener.class, target, "");
button.addPropertyChangeListener(proxy);
try {
button.setLabel("new label value");
- fail("Should throw NullPointerException.");
- } catch (NullPointerException e) {
+ fail("Should throw RuntimeException.");
+ } catch (RuntimeException e) {
}
assertTrue(Proxy.isProxyClass(proxy.getClass()));
}
@@ -339,8 +346,8 @@
button.addPropertyChangeListener(proxy);
try {
button.setLabel("new label value");
- fail("Should throw IndexOutOfBoundsException.");
- } catch (IndexOutOfBoundsException e) {
+ fail("Should throw RuntimeException.");
+ } catch (RuntimeException e) {
}
assertTrue(Proxy.isProxyClass(proxy.getClass()));
}
@@ -393,17 +400,13 @@
public void testCreateClassObjectStringString_ActionNull() {
MockTarget target = new MockTarget();
MockButton button = new MockButton();
- PropertyChangeListener proxy = EventHandler.create(
- PropertyChangeListener.class, target, null, "source.label");
- assertTrue(Proxy.isProxyClass(proxy.getClass()));
-
- button.addPropertyChangeListener(proxy);
- String newLabel = "New Value: set text.";
try {
- button.setLabel(newLabel);
- fail("Should throw NullPointerException.");
+ PropertyChangeListener proxy = EventHandler.create(
+ PropertyChangeListener.class, target, null, "source.label");
+ fail("should throw NPE");
} catch (NullPointerException e) {
- }
+
+ }
}
/*
@@ -506,8 +509,8 @@
public void testCreateClassObjectStringStringString_ClassInvalid() {
MockTarget target = new MockTarget();
try {
- EventHandler.create(String.class, target, "text",
- "source.label", "propertyChange");
+ EventHandler.create(String.class, target, "text", "source.label",
+ "propertyChange");
fail("Should throw IllegalArgumentException.");
} catch (IllegalArgumentException e) {
}
@@ -531,18 +534,14 @@
public void testCreateClassObjectStringStringString_ActionNull() {
MockTarget target = new MockTarget();
MockButton button = new MockButton();
- PropertyChangeListener proxy = EventHandler.create(
- PropertyChangeListener.class, target, null, "source.label",
- "propertyChange");
- assertTrue(Proxy.isProxyClass(proxy.getClass()));
-
- button.addPropertyChangeListener(proxy);
- String newLabel = "New Value: set text.";
try {
- button.setLabel(newLabel);
- fail("Should throw NullPointerException.");
+ PropertyChangeListener proxy = EventHandler.create(
+ PropertyChangeListener.class, target, null, "source.label",
+ "propertyChange");
+ fail("should throw NPE");
} catch (NullPointerException e) {
- }
+
+ }
}
/*
@@ -666,12 +665,13 @@
String action = "text";
String eventPropertyName = "source.label";
String listenerMethodName = "propertyChange";
- EventHandler handler = new EventHandler(null, action,
- eventPropertyName, listenerMethodName);
- assertNull(handler.getTarget());
- assertSame(action, handler.getAction());
- assertSame(eventPropertyName, handler.getEventPropertyName());
- assertSame(listenerMethodName, handler.getListenerMethodName());
+ try {
+ EventHandler handler = new EventHandler(null, action,
+ eventPropertyName, listenerMethodName);
+ fail("should throw NPE");
+ } catch (NullPointerException e) {
+
+ }
}
/*
@@ -681,10 +681,17 @@
MockTarget target = new MockTarget();
String eventPropertyName = "source.label";
String listenerMethodName = "propertyChange";
- EventHandler handler = new EventHandler(target, null,
+ try {
+ EventHandler handler = new EventHandler(target, null,
+ eventPropertyName, listenerMethodName);
+ fail("should throw NPE");
+ } catch (NullPointerException e) {
+
+ }
+ EventHandler handler = new EventHandler(target, "action",
eventPropertyName, listenerMethodName);
assertSame(target, handler.getTarget());
- assertNull(handler.getAction());
+ assertEquals("action", handler.getAction());
assertSame(eventPropertyName, handler.getEventPropertyName());
assertSame(listenerMethodName, handler.getListenerMethodName());
}
@@ -863,7 +870,7 @@
PropertyChangeSupport support = new PropertyChangeSupport(fish);
Object proxy = EventHandler.create(PropertyChangeListener.class,
target, "a", "source.booleanObject");
-
+
support.addPropertyChangeListener((PropertyChangeListener) proxy);
PropertyChangeEvent event = new PropertyChangeEvent(fish, "name", "1",
"5");
@@ -972,54 +979,58 @@
.fireFredEvent(new FredEvent("bean2"));
}
-
/**
- * Checks some invalid property cases
- * Regression for HARMONY-1884
+ * Checks some invalid property cases Regression for HARMONY-1884
+ *
+ * Note: this test fails on RI and it is considered as Non-Bug Difference,
+ * please refer HARMONY-1884 for details
*/
public void testInvalidProperties_HY1884() {
- BeanWithInvalidProps bean = new BeanWithInvalidProps();
- Object proxy;
+ BeanWithInvalidProps bean = new BeanWithInvalidProps();
+ Object proxy;
+
+ // "prop1" and "prop2" is neither the name of valid property nor the
+ // name of any public method
- // "prop1" and "prop2" is neither the name of valid property nor the
- // name of any public method
-
// setter without parameter
- proxy = EventHandler.create(
- PropertyChangeListener.class, bean, "prop1");
- try {
- ((PropertyChangeListener) proxy).propertyChange(
- new PropertyChangeEvent(bean, "prop1", "1", "2"));
- //fail();
- } catch (Exception e) {
- // expected
- }
+ proxy = EventHandler
+ .create(PropertyChangeListener.class, bean, "prop1");
+ try {
+ ((PropertyChangeListener) proxy)
+ .propertyChange(new PropertyChangeEvent(bean, "prop1", "1",
+ "2"));
+ fail();
+ } catch (Exception e) {
+ // expected
+ }
// "is" prefix for big Boolean
- proxy = EventHandler.create(
- PropertyChangeListener.class, bean, "goodProp3", "source.prop2");
- try {
- ((PropertyChangeListener) proxy).propertyChange(
- new PropertyChangeEvent(bean, "goodProp3", Boolean.TRUE, Boolean.FALSE));
- fail();
- } catch (Exception e) {
- // expected
- }
+ proxy = EventHandler.create(PropertyChangeListener.class, bean,
+ "goodProp3", "source.prop2");
+ try{
+ ((PropertyChangeListener) proxy)
+ .propertyChange(new PropertyChangeEvent(bean, "goodProp3",
+ Boolean.TRUE, Boolean.FALSE));
+ fail("Should throw NPE");
+ }catch(NullPointerException e){
+ }
}
-
+
public static class BeanWithInvalidProps {
// setter should have a parameter
- public void setProp1() {}
-
- // Introspector doesn't support "is" prefix for big Boolean
+ public void setProp1() {
+ }
+
+ // Introspector doesn't support "is" prefix for big Boolean
public Boolean isProp2() {
return new Boolean(true);
}
// needed to test prop2
- public void setGoodProp3(boolean value) {}
+ public void setGoodProp3(boolean value) {
+ }
}
-
+
public interface FredListener extends EventListener {
public void fireFredEvent(FredEvent event);