[Top][All Lists]
[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
[cp-patches] FYI: implemented rest of EventSetDescriptor - NOTE
From: |
Robert Schuster |
Subject: |
[cp-patches] FYI: implemented rest of EventSetDescriptor - NOTE |
Date: |
Tue, 10 Jan 2006 12:28:40 +0100 |
User-agent: |
Mozilla/5.0 (X11; U; Linux i686; de-AT; rv:1.7.12) Gecko/20051208 |
Hi,
for some unknown reasons this patch did not contain the getGetListenerMethod. I
fix the ChangeLog to:
2006-01-09 Robert Schuster <address@hidden>
* java/beans/EventSetDescriptor.java: Implemented the two 1.4
constructors.
cya
Robert
Index: java/beans/EventSetDescriptor.java
===================================================================
RCS file: /cvsroot/classpath/classpath/java/beans/EventSetDescriptor.java,v
retrieving revision 1.8
diff -u -r1.8 EventSetDescriptor.java
--- java/beans/EventSetDescriptor.java 2 Jul 2005 20:32:37 -0000 1.8
+++ java/beans/EventSetDescriptor.java 9 Jan 2006 23:36:22 -0000
@@ -42,6 +42,7 @@
import java.lang.reflect.Method;
import java.lang.reflect.Modifier;
+import java.util.EventListener;
import java.util.Vector;
/**
@@ -94,6 +95,7 @@
private Class listenerType;
private MethodDescriptor[] listenerMethodDescriptors;
private Method[] listenerMethods;
+ private Method getListenerMethod;
private boolean unicast;
private boolean inDefaultEventSet = true;
@@ -190,7 +192,113 @@
throw new IntrospectionException("Listener remove
method throws exceptions.");
}
}
-
+
+ /** Create a new EventSetDescriptor.
+ *
+ * <p>This variant of the constructor allows you to specify the names
+ * of the methods and adds no new constraints on top of the rules
+ * already described at the top of the class.</p>
+ *
+ * <p>A valid GetListener method is public, flags no exceptions and
+ * has one argument which is of type <code>Class</code>
+ * address@hidden java.awt.Component#getListeners(Class)} is such a
method.</p>
+ *
+ * <p>Note: The validity of the return value of the GetListener method
+ * is not checked.</p>
+ *
+ * @param eventSourceClass the class containing the add and remove
listener methods.
+ * @param eventSetName the programmatic name of the event set, generally
starting
+ * with a lowercase letter (i.e. fooManChu instead of FooManChu).
+ * @param listenerType the class containing the event firing methods.
+ * @param listenerMethodNames the names of the even firing methods.
+ * @param addListenerMethodName the name of the add listener method.
+ * @param removeListenerMethodName the name of the remove listener method.
+ * @param getListenerMethodName Name of a method which returns the array
of listeners.
+ * @exception IntrospectionException if listenerType is not an
EventListener
+ * or if methods are not found or are
invalid.
+ * @since 1.4
+ */
+ public EventSetDescriptor(Class eventSourceClass,
+ String eventSetName,
+ Class listenerType,
+ String[] listenerMethodNames,
+ String addListenerMethodName,
+ String removeListenerMethodName,
+ String getListenerMethodName)
+ throws IntrospectionException {
+ this(eventSourceClass, eventSetName, listenerType, listenerMethodNames,
+ addListenerMethodName, removeListenerMethodName);
+
+ Method newGetListenerMethod = null;
+
+ try
+ {
+ newGetListenerMethod =
eventSourceClass.getMethod(getListenerMethodName, new Class[] { Class.class });
+ } catch (NoSuchMethodException nsme)
+ {
+ throw (IntrospectionException)
+ new IntrospectionException("No method named "
+ + getListenerMethodName
+ + " in class " + listenerType
+ + " which can be used as"
+ + " getListenerMethod.")
+ .initCause(nsme);
+ }
+
+ // Note: This does not check the return value (which
+ // should be EventListener[]) but the JDK does not either.
+
+ getListenerMethod = newGetListenerMethod;
+
+ }
+
+ /** Create a new EventSetDescriptor.
+ *
+ * <p>This variant of the constructor allows you to specify the names
+ * of the methods and adds no new constraints on top of the rules
+ * already described at the top of the class.</p>
+ *
+ * <p>A valid GetListener method is public, flags no exceptions and
+ * has one argument which is of type <code>Class</code>
+ * address@hidden java.awt.Component#getListeners(Class)} is such a
method.</p>
+ *
+ * <p>Note: The validity of the return value of the GetListener method
+ * is not checked.</p>
+ *
+ * @param eventSetName the programmatic name of the event set, generally
starting
+ * with a lowercase letter (i.e. fooManChu instead of FooManChu).
+ * @param listenerType the class containing the listenerMethods.
+ * @param listenerMethods the event firing methods.
+ * @param addListenerMethod the add listener method.
+ * @param removeListenerMethod the remove listener method.
+ * @param getListenerMethod The method which returns an array of the
listeners.
+ * @exception IntrospectionException if the listenerType is not an
EventListener,
+ * or any of the methods are invalid.
+ * @since 1.4
+ **/
+ public EventSetDescriptor(String eventSetName,
+ Class listenerType, Method[] listenerMethods,
+ Method addListenerMethod,
+ Method removeListenerMethod,
+ Method getListenerMethod)
+ throws IntrospectionException
+ {
+ this(eventSetName, listenerType, listenerMethods, addListenerMethod,
+ removeListenerMethod);
+
+ // Do no checks if the getListenerMethod is null.
+ if (getListenerMethod.getParameterTypes().length != 1
+ || getListenerMethod.getParameterTypes()[0] != Class.class
+ || getListenerMethod.getExceptionTypes().length > 0
+ || !Modifier.isPublic(getListenerMethod.getModifiers()))
+ throw new IntrospectionException("GetListener method is invalid.");
+
+ // Note: This does not check the return value (which
+ // should be EventListener[]) but the JDK does not either.
+
+ this.getListenerMethod = getListenerMethod;
+ }
+
/** Create a new EventSetDescriptor.
** This form of constructor allows you to explicitly say which methods
do what, and
** no reflection is done by the EventSetDescriptor. The methods are,
however,
signature.asc
Description: PGP signature
signature.asc
Description: OpenPGP digital signature
[Prev in Thread] |
Current Thread |
[Next in Thread] |
- [cp-patches] FYI: implemented rest of EventSetDescriptor - NOTE,
Robert Schuster <=