[ http://issues.apache.org/jira/browse/BEANUTILS-177?page=all ]

Henri Yandell updated BEANUTILS-177:
------------------------------------

      Bugzilla Id:   (was: 17501)
    Fix Version/s: LATER THAN 1.8.0

> [beanutils] Add dynamic discovery of mapped properties to PropertyUtils
> -----------------------------------------------------------------------
>
>                 Key: BEANUTILS-177
>                 URL: http://issues.apache.org/jira/browse/BEANUTILS-177
>             Project: Commons BeanUtils
>          Issue Type: Improvement
>          Components: Bean / Property Utils
>    Affects Versions: 1.6
>         Environment: Operating System: All
> Platform: All
>            Reporter: Kris Schneider
>            Priority: Minor
>             Fix For: LATER THAN 1.8.0
>
>
> I had thought that the getMappedPropertyDescriptors method would dynamically
> discover the mapped properties of a given bean (as the getPropertyDescriptors
> method does for simple and indexed properties), but it looks like all it does 
> is
> return a map of cached descriptors. It also looks like the only place entries
> are added to that cache is in the getPropertyDescriptor method. Which means 
> you
> have to know the name of the mapped property ahead of time. It would be nice 
> for
> PropertyUtils to provide a method that returns an array of
> MappedPropertyDescriptor for a given bean. As an example, here's a couple of
> utility methods I'm currently using:
>     public static MappedPropertyDescriptor[] 
> getMappedPropertyDescriptors(Object
> bean) {
>         if (bean == null) {
>             throw new NullPointerException("No bean specified");
>         }
>         return (getMappedPropertyDescriptors(bean.getClass()));
>     }
>     public static MappedPropertyDescriptor[] 
> getMappedPropertyDescriptors(Class
> beanClass) {
>         if (beanClass == null) {
>             throw new NullPointerException("No bean class specified");
>         }
>         Method[] allMethods = beanClass.getMethods();
>         Map descriptorMap = new HashMap();
>         for (int i = 0, n = allMethods.length; i < n; i++) {
>             String methodName = allMethods[i].getName();
>             if ((methodName.startsWith("get")) || 
> (methodName.startsWith("set"))) {
>                 String propName =
> Introspector.decapitalize(methodName.substring(3));
>                 if ((propName.length() > 0) && (descriptorMap.get(propName) ==
> null)) {
>                     try {
>                         MappedPropertyDescriptor descriptor = new
> MappedPropertyDescriptor(propName, beanClass);
>                         descriptorMap.put(propName, descriptor);
>                     } catch (IntrospectionException ignore) {}
>                 }
>             }
>         }
>         MappedPropertyDescriptor[] descriptors = null;
>         int numDescriptors = descriptorMap.size();
>         if (numDescriptors > 0) {
>             descriptors = new MappedPropertyDescriptor[numDescriptors];
>             Iterator iter = descriptorMap.values().iterator();
>             int i = 0;
>             while (iter.hasNext()) {
>                 descriptors[i++] = (MappedPropertyDescriptor)iter.next();
>             }
>         }
>         if (descriptors == null) {
>             descriptors = new MappedPropertyDescriptor[0];
>         }
>         return descriptors;
>     }

-- 
This message is automatically generated by JIRA.
-
If you think it was sent incorrectly contact one of the administrators: 
http://issues.apache.org/jira/secure/Administrators.jspa
-
For more information on JIRA, see: http://www.atlassian.com/software/jira

        

---------------------------------------------------------------------
To unsubscribe, e-mail: [EMAIL PROTECTED]
For additional commands, e-mail: [EMAIL PROTECTED]

Reply via email to