Index: trunk/modules/beans/src/main/java/java/beans/PropertyDescriptor.java =================================================================== --- trunk/modules/beans/src/main/java/java/beans/PropertyDescriptor.java (revision 442818) +++ trunk/modules/beans/src/main/java/java/beans/PropertyDescriptor.java (working copy) @@ -64,8 +64,20 @@ this.setName(propertyName); this.setDisplayName(propertyName); - setWriteMethod(beanClass, setterName); - setReadMethod(beanClass, getterName); + if (setterName != null) { + if(hasMethod(beanClass, setterName)) { + setWriteMethod(beanClass, setterName); + } else { + throw new IntrospectionException(Messages.getString("beans.20")); + } + } + if (getterName != null) { + if(hasMethod(beanClass, getterName)) { + setReadMethod(beanClass, getterName); + } else { + throw new IntrospectionException(Messages.getString("beans.1F")); + } + } } /** @@ -83,7 +95,7 @@ this.setName(propertyName); this.setDisplayName(propertyName); - setWriteMethod(setter); + setWriteMethod(setter); setReadMethod(getter); } @@ -112,6 +124,8 @@ getterName = createDefaultMethodName(propertyName, "get"); //$NON-NLS-1$ if(hasMethod(beanClass, getterName)) { setReadMethod(beanClass, getterName); + } else { + throw new IntrospectionException(Messages.getString("beans.1F")); } } String setterName = createDefaultMethodName(propertyName, "set"); //$NON-NLS-1$ @@ -117,6 +131,8 @@ String setterName = createDefaultMethodName(propertyName, "set"); //$NON-NLS-1$ if(hasMethod(beanClass, setterName)) { setWriteMethod(beanClass, setterName); + } else { + throw new IntrospectionException(Messages.getString("beans.20")); } } @@ -166,6 +182,10 @@ } Class returnType = getter.getReturnType(); + if(returnType.equals(Void.TYPE)) { + throw new IntrospectionException( + Messages.getString("beans.33")); //$NON-NLS-1$ + } Class propertyType = getPropertyType(); if((propertyType != null) && !returnType.equals(propertyType)) { throw new IntrospectionException( Index: trunk/modules/beans/src/main/java/java/beans/BeanInfoImpl.java =================================================================== --- trunk/modules/beans/src/main/java/java/beans/BeanInfoImpl.java (revision 442818) +++ trunk/modules/beans/src/main/java/java/beans/BeanInfoImpl.java (working copy) @@ -393,10 +391,32 @@ try { propertyDescriptor = new PropertyDescriptor(propertyName, beanClass); - hmPropertyDescriptors.put(propertyName, propertyDescriptor); } catch (IntrospectionException ie) { - System.out.println(ie.getClass() + ": " + ie.getMessage()); //$NON-NLS-1$ + //no setter or getter + if (methodName.startsWith("set")) { + try { + propertyDescriptor = new PropertyDescriptor(propertyName, + beanClass, null, methodName); + } catch (IntrospectionException e) { + //no getter + } + } else if (methodName.startsWith("get") || methodName.startsWith("is")){ + try { + propertyDescriptor = new PropertyDescriptor(propertyName, + beanClass, methodName, null); + } catch (IntrospectionException e) { + //no setter + } + } else { + try { + propertyDescriptor = new PropertyDescriptor(propertyName, + beanClass, null, null); + } catch (IntrospectionException e) { + } + } } + if (propertyDescriptor != null) + hmPropertyDescriptors.put(propertyName, propertyDescriptor); } } } @@ -418,7 +438,7 @@ hmPropertyDescriptors.put(propertyName, indexedPropertyDescriptor); } catch (IntrospectionException ie) { - System.out.println(ie.getClass() + ": " + ie.getMessage()); //$NON-NLS-1$ + //System.out.println(ie.getClass() + ": " + ie.getMessage()); //$NON-NLS-1$ } } }