@Override
    public PropertyDescriptor[] getPropertyDescriptors() {
        Class<?> beanClass = getBeanClass();
        String[] properties = getPropertyNames();

        PropertyDescriptor[] descriptors = new PropertyDescriptor[properties.length];
        try {
            // For each property, create a property descriptor and set the
            // name and description using the localized data.
            for (int i = 0; i < descriptors.length; i++) {
                PropertyDescriptor newDescriptor =
                        new PropertyDescriptor(properties[i], beanClass);
                if (bundle != null) {
                    newDescriptor.setDisplayName(bundle.getString(properties[i] + ".displayName"));
                    newDescriptor.setShortDescription(bundle.getString(properties[i] + ".shortDescription"));
                }
                descriptors[i] = newDescriptor;
            }
            return descriptors;
        }
        catch (IntrospectionException ie) {
            Log.error(ie.getMessage(), ie);
            throw new Error(ie.toString());
        }
    }
Returns the name of the class that the bean info applies to (which
corresponds to the resource bundle that will be loaded). For example,
for the class {@code com.foo.ExampleClass}, the name would be
{@code ExampleClass}.

@return the name of the JavaBean that the BeanInfo is for.
xmppserver/src/main/java/org/jivesoftware/util/JiveBeanInfo.java