Index: modules/beans/src/main/java/java/beans/PropertyDescriptor.java =================================================================== --- modules/beans/src/main/java/java/beans/PropertyDescriptor.java (revision 453165) +++ modules/beans/src/main/java/java/beans/PropertyDescriptor.java (working copy) @@ -58,17 +58,41 @@ this.setDisplayName(propertyName); if (setterName != null) { + if (setterName.length() == 0) { + throw new IntrospectionException(Messages.getString("beans.4A")); //$NON-NLS-1$ + } + if (hasMethod(beanClass, setterName)) { setWriteMethod(beanClass, setterName); } else { - throw new IntrospectionException(Messages.getString("beans.20")); //$NON-NLS-1$ + setterName = createDefaultMethodName(propertyName, "set"); //$NON-NLS-1$ + if (hasMethod(beanClass, setterName)) { + setWriteMethod(beanClass, setterName); + } else { + throw new IntrospectionException(Messages.getString("beans.20")); //$NON-NLS-1$ + } } } + if (getterName != null) { + if (getterName.length() == 0) { + throw new IntrospectionException(Messages.getString("beans.4A")); //$NON-NLS-1$ + } + if (hasMethod(beanClass, getterName)) { setReadMethod(beanClass, getterName); } else { - throw new IntrospectionException(Messages.getString("beans.1F")); //$NON-NLS-1$ + getterName = createDefaultMethodName(propertyName, "is"); //$NON-NLS-1$ + if (hasMethod(beanClass, getterName)) { + setReadMethod(beanClass, getterName); + } else { + getterName = createDefaultMethodName(propertyName, "get"); //$NON-NLS-1$ + if (hasMethod(beanClass, getterName)) { + setReadMethod(beanClass, getterName); + } else { + throw new IntrospectionException(Messages.getString("beans.1F")); //$NON-NLS-1$ + } + } } } } Index: modules/beans/src/main/java/org/apache/harmony/beans/internal/nls/messages.properties =================================================================== --- modules/beans/src/main/java/org/apache/harmony/beans/internal/nls/messages.properties (revision 453165) +++ modules/beans/src/main/java/org/apache/harmony/beans/internal/nls/messages.properties (working copy) @@ -89,3 +89,4 @@ beans.47=Unable to instantiate property editor beans.48=Property editor is not assignable from the PropertyEditor interface beans.49=Child cannot implement both BeanContextChild and BeanContextProxy +beans.4A=Read or write method name should not be the empty string Index: modules/swing/src/main/java/common/javax/swing/TransferHandler.java =================================================================== --- modules/swing/src/main/java/common/javax/swing/TransferHandler.java (revision 453165) +++ modules/swing/src/main/java/common/javax/swing/TransferHandler.java (working copy) @@ -153,10 +153,13 @@ private PropertyDescriptor getPropertyDescriptor(final JComponent c) { PropertyDescriptor result = null; try { - result = new PropertyDescriptor(propertyName, c.getClass()); + return result = new PropertyDescriptor(propertyName, c.getClass()); } catch (IntrospectionException e) { - } + try { + return result = new PropertyDescriptor(propertyName, c.getClass(), "1", null); + } catch (IntrospectionException e) { + } return result; } @@ -205,7 +208,7 @@ public boolean importData(final JComponent c, final Transferable t) { PropertyDescriptor descriptor = getPropertyDescriptor(c); - if (descriptor == null) { + if (descriptor == null || descriptor.getWriteMethod() == null) { return false; } Class propertyType = descriptor.getPropertyType();