/** * Sets the method that should be used to read the property value. * * @param readMethod The new read method. */ public synchronized void setReadMethod(Method readMethod) throws IntrospectionException { if (readMethod == null) { readMethodName = null; readMethodRef = null; return; } // The property type is determined by the read method. setPropertyType(findPropertyType(readMethod, getWriteMethod0())); setClass0(readMethod.getDeclaringClass()); readMethodName = readMethod.getName(); readMethodRef = createReference(readMethod, true); }
/** * Sets the method that should be used to write the property value. * * @param writeMethod The new write method. */ public synchronized void setWriteMethod(Method writeMethod) throws IntrospectionException { if (writeMethod == null) { writeMethodName = null; writeMethodRef = null; return; } // Set the property type - which validates the method setPropertyType(findPropertyType(getReadMethod(), writeMethod)); setClass0(writeMethod.getDeclaringClass()); writeMethodName = writeMethod.getName(); writeMethodRef = createReference(writeMethod, true); }
/** * This constructor takes the name of a simple property, and method names for reading and writing * the property. * * @param propertyName The programmatic name of the property. * @param beanClass The Class object for the target bean. For example sun.beans.OurButton.class. * @param readMethodName The name of the method used for reading the property value. May be null * if the property is write-only. * @param writeMethodName The name of the method used for writing the property value. May be null * if the property is read-only. * @exception IntrospectionException if an exception occurs during introspection. */ public PropertyDescriptor( String propertyName, Class<?> beanClass, String readMethodName, String writeMethodName) throws IntrospectionException { if (beanClass == null) { throw new IntrospectionException("Target Bean class is null"); } if (propertyName == null || propertyName.length() == 0) { throw new IntrospectionException("bad property name"); } if ("".equals(readMethodName) || "".equals(writeMethodName)) { throw new IntrospectionException("read or write method name should not be the empty string"); } setName(propertyName); setClass0(beanClass); this.readMethodName = readMethodName; if (readMethodName != null && getReadMethod() == null) { throw new IntrospectionException("Method not found: " + readMethodName); } this.writeMethodName = writeMethodName; if (writeMethodName != null && getWriteMethod() == null) { throw new IntrospectionException("Method not found: " + writeMethodName); } }