@Deprecated(forRemoval = true, since = "5.0.0") // TODO Remove in or after Openfire 5.1.0
    public static UserPropertyProvider instantiate( String propertyName )
    {
        final String className = JiveGlobals.getProperty( propertyName );
        if ( className == null )
        {
            Log.debug( "Property '{}' is undefined. Skipping.", propertyName );
            return null;
        }
        Log.debug( "About to to instantiate an UserPropertyProvider '{}' based on the value of property '{}'.", className, propertyName );
        try
        {
            final Class c = ClassUtils.forName( className );
            final UserPropertyProvider provider = (UserPropertyProvider) c.newInstance();
            Log.debug( "Instantiated UserPropertyProvider '{}'", className );
            return provider;
        }
        catch ( Exception e )
        {
            Log.error( "Unable to load UserPropertyProvider '{}'. Users in this provider will be disabled.", className, e );
            return null;
        }
    }
Instantiates a UserPropertyProvider based on a property value (that is expected to be a class name). When the
property is not set, this method returns null. When the property is set, but an exception occurs while
instantiating the class, this method logs the error and returns null.

UserPropertyProvider classes are required to have a public, no-argument constructor.

@param propertyName A property name (cannot be null).
@return A user provider (can be null).
@deprecated Use {@link #instantiate(SystemProperty)} or {@link #instantiate(SystemProperty, SystemProperty)} instead.
xmppserver/src/main/java/org/jivesoftware/openfire/user/property/UserPropertyMultiProvider.java