commons-issues mailing list archives

Site index · List index
Message view « Date » · « Thread »
Top « Date » · « Thread »
From "Senthil Kumar Balakrishnan (JIRA)" <j...@apache.org>
Subject [jira] [Comment Edited] (BEANUTILS-409) BeanUtils - 'describe' method returning Incorrect array value
Date Sat, 02 Mar 2013 17:23:12 GMT

    [ https://issues.apache.org/jira/browse/BEANUTILS-409?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=13591439#comment-13591439
] 

Senthil Kumar Balakrishnan edited comment on BEANUTILS-409 at 3/2/13 5:21 PM:
------------------------------------------------------------------------------

Fix & Testcases as part of the attachment "BEANUTILS-409-FIX.patch"

Summary,

Test:

1. Jira409TestCase - Added to test Array Values return all values on describe() - (BeanUtilsBean2).
2. BeanUtils2TestCase - Updated testDescribe() to test the behaviour.
3. BeanUtilsTestCase - Updated testDescribe() to ensure the old behaviour is untouched due
the to backward compatibility (as Indicated by Niall).

Fix:

1. ConvertUtilsBean - Added a new method createConverterFacade to expose the actual converter
to the extending child class (Ex: ConvertUtilsBean2).
2. ConvertUtilsBean2 - Implement setOnlyFirstToString for all ArrayConverter types, using
the above exposed method (createConverterFacade).

{quote}
bq.
        protected ConverterFacade createConverterFacade(Converter converter) {
		if(converter instanceof ArrayConverter){
			((ArrayConverter) converter).setOnlyFirstToString(false);
		}
		return super.createConverterFacade(converter);
	}

{quote}
                
      was (Author: senhce):
    Fix & Testcases as part of the attachment "BEANUTILS-409-FIX.patch"

Summary,

Test:

1. Jira409TestCase - Added to test Array Values return all values on describe() - (BeanUtilsBean2).
2. BeanUtils2TestCase - Updated testDescribe() to test the behaviour.
3. BeanUtilsTestCase - Updated testDescribe() to ensure the old behaviour is untouched due
the to backward compatibility (as Indicated by Niall).

Fix:

1. ConvertUtilsBean - Added a new method createConverterFacade to expose the actual converter
to the extending child class (Ex: ConvertUtilsBean2).
2. ConvertUtilsBean2 - Implement setOnlyFirstToString for all ArrayConverter types, using
the above exposed method (createConverterFacade).

{quote}
bq
        protected ConverterFacade createConverterFacade(Converter converter) {
		if(converter instanceof ArrayConverter){
			((ArrayConverter) converter).setOnlyFirstToString(false);
		}
		return super.createConverterFacade(converter);
	}
bq
{quote}
                  
> BeanUtils - 'describe' method returning Incorrect array value
> -------------------------------------------------------------
>
>                 Key: BEANUTILS-409
>                 URL: https://issues.apache.org/jira/browse/BEANUTILS-409
>             Project: Commons BeanUtils
>          Issue Type: Bug
>    Affects Versions: 1.8.3
>         Environment: commons-beanutils 1.8.3, jdk 1.6.0_20
>            Reporter: benny
>            Assignee: Benedikt Ritter
>            Priority: Critical
>              Labels: describe
>             Fix For: 1.8.4
>
>         Attachments: BEANUTILS-409-FIX.patch, BEANUTILS-409-Test.patch
>
>
> I want to convert a bean class to a map (key=the name of the member,value=the value of
the member).
> I'm using the method BeanUtils.describe(beanClass);
> (I'm using commons-beanutils 1.8.3, jdk 1.6.0_20, on commons-beanutils 1.5 it works)
> The problem is that the return value is incorrect, (the map contain only the first item
from the array),
> the code:
> public class Demo { 
>         private ArrayList<String> myList = new ArrayList<String>(); 
>         public Demo() { 
>             myList.add("first_value"); 
>             myList.add("second_value"); 
>         } 
>  
>         public ArrayList<String> getMyList() { 
>             return myList; 
>         } 
>  
>         public void setMyList(ArrayList<String> myList) { 
>             this.myList = myList; 
>         } 
>  
>         public static void main(String[] args) { 
>             Demo myBean = new Demo(); 
>             try { 
>                 Map describe = BeanUtils.describe(myBean); 
>                 Iterator it = describe.entrySet().iterator(); 
>                 while (it.hasNext()) { 
>                     Map.Entry pairs = (Map.Entry) it.next(); 
>                     System.out.println(String.format("key=%s,value=%s", (String) pairs.getKey(),
(String) pairs.getValue())); 
>  
>                 } 
>             } catch (Exception e) { 
>                 e.printStackTrace(); 
>             } 
>         } 
>     } 
>  •The expected output:
>  
> key=myList,value=[first_value,second_value]
> key=class,value=class $Demo
>  •But the real output is:
>  
> key=myList,value=[first_value]
> key=class,value=class $Demo
> As you can see the array contains two values but the output(and the map) contains only
one,why??

--
This message is automatically generated by JIRA.
If you think it was sent incorrectly, please contact your JIRA administrators
For more information on JIRA, see: http://www.atlassian.com/software/jira

Mime
View raw message