BeanUtil { public boolean isWriteable( String propertyName ) { try { return propUtil.isWriteable( bean, propertyName ) || ( propUtil.getResolver().isIndexed( propertyName ) && propUtil.isReadable( bean, propertyName ) ); } catch ( IllegalArgumentException exception ) { logger.debug( "Exception rose. Return false value", exception ); return false; } } BeanUtil( final Object targetBean ); void setDefaultCallback( ValueSetErrorCallback defaultCallback ); boolean isReadable( String propertyName ); Object getValue( String propertyName ); Class<?> getPropertyType( String propertyName ); boolean isWriteable( String propertyName ); void setValue( String propertyName, Object value ); void setValue( final String propertyName, Object value, ValueSetErrorCallback callback ); void setValue( String propertyName, Object value, PropertyNameFormatter... formatters ); void setValue( String propertyName, Object value, ValueSetErrorCallback callback,
      PropertyNameFormatter... formatters ); void setValues( Map<String, Object> propValueMap ); void setValues( Map<String, Object> propValueMap, ValueSetErrorCallback callback ); void setValues( Map<String, Object> propValueMap, PropertyNameFormatter... formatters );  }
@Test public void testIsWriteable() { Assert.assertFalse( beanUtil.isWriteable( "[~!@#$%^&*(){}|.,]-=_+|;'\"?<>~`:" ) ); }