Class JDBCUserPropertyProvider
- java.lang.Object
-
- org.jivesoftware.openfire.user.property.JDBCUserPropertyProvider
-
- All Implemented Interfaces:
UserPropertyProvider
public class JDBCUserPropertyProvider extends Object implements UserPropertyProvider
The JDBC user property provider allows you to use an external database to define the user properties. It is best used with the JDBCUserProvider, JDBCAuthProvider & JDBCGroupProvider to provide integration between your external system and Openfire. All data is treated as read-only so any set operations will result in an exception. This implementation will not explicitly verify if a user exists, when operating on its properties. The methods of this implementation will not throwUserNotFoundException
. To enable this provider, set the following in the system properties:provider.userproperty.className = org.jivesoftware.openfire.user.property.JDBCUserPropertyProvider
jdbcUserPropertyProvider.driver = com.mysql.jdbc.Driver
jdbcUserPropertyProvider.connectionString = jdbc:mysql://localhost/dbname?user=username&password=secret
jdbcUserPropertyProvider.loadPropertySQL = SELECT propName, propValue FROM myUser WHERE user = ? AND propName = ?
jdbcUserPropertyProvider.loadPropertiesSQL = SELECT propValue FROM myUser WHERE user = ?
jdbcUserPropertyProvider.useConnectionProvider = true
- Author:
- Guus der Kinderen, guus.der.kinderen@gmail.com
-
-
Constructor Summary
Constructors Constructor Description JDBCUserPropertyProvider()
Constructs a new JDBC user property provider.
-
Method Summary
All Methods Instance Methods Concrete Methods Modifier and Type Method Description protected boolean
assumePersistedDataIsEscaped()
XMPP disallows some characters in identifiers, requiring them to be escaped.void
deleteProperty(String username, String propName)
Removes one particular property for a particular user.void
insertProperty(String username, String propName, String propValue)
Adds a property for an user.boolean
isReadOnly()
Returns true if this UserPropertyProvider is read-only.Map<String,String>
loadProperties(String username)
Retrieves all properties for a particular user.String
loadProperty(String username, String propName)
Retrieves a property value for a user.void
updateProperty(String username, String propName, String propValue)
Changes a property value for an user.
-
-
-
Method Detail
-
assumePersistedDataIsEscaped
protected boolean assumePersistedDataIsEscaped()
XMPP disallows some characters in identifiers, requiring them to be escaped. This implementation assumes that the database returns properly escaped identifiers, but can apply escaping by setting the value of the 'jdbcUserPropertyProvider.isEscaped' property to 'false'.- Returns:
- 'false' if this implementation needs to escape database content before processing.
-
loadProperties
public Map<String,String> loadProperties(String username) throws UnsupportedOperationException
Description copied from interface:UserPropertyProvider
Retrieves all properties for a particular user.- Specified by:
loadProperties
in interfaceUserPropertyProvider
- Parameters:
username
- The identifier of the user (cannot be null or empty).- Returns:
- A collection, possibly empty, but never null.
- Throws:
UnsupportedOperationException
-
loadProperty
public String loadProperty(String username, String propName)
Description copied from interface:UserPropertyProvider
Retrieves a property value for a user. This method will return null when the desired property was not defined for the user (null values are not supported).- Specified by:
loadProperty
in interfaceUserPropertyProvider
- Parameters:
username
- The identifier of the user (cannot be null or empty).propName
- The property name (cannot be null or empty).- Returns:
- The property value (possibly null).
-
insertProperty
public void insertProperty(String username, String propName, String propValue) throws UnsupportedOperationException
Description copied from interface:UserPropertyProvider
Adds a property for an user. The behavior of inserting a duplicate property name is not defined by this interface.- Specified by:
insertProperty
in interfaceUserPropertyProvider
- Parameters:
username
- The identifier of the user (cannot be null or empty).propName
- The property name (cannot be null or empty).propValue
- The property value (cannot be null).- Throws:
UnsupportedOperationException
- if the property cannot be added
-
updateProperty
public void updateProperty(String username, String propName, String propValue) throws UnsupportedOperationException
Description copied from interface:UserPropertyProvider
Changes a property value for an user. The behavior of updating a non-existing property is not defined by this interface.- Specified by:
updateProperty
in interfaceUserPropertyProvider
- Parameters:
username
- The identifier of the user (cannot be null or empty).propName
- The property name (cannot be null or empty).propValue
- The property value (cannot be null).- Throws:
UnsupportedOperationException
- if the property cannot be updated
-
deleteProperty
public void deleteProperty(String username, String propName) throws UnsupportedOperationException
Description copied from interface:UserPropertyProvider
Removes one particular property for a particular user. The behavior of deleting a non-existing property is not defined by this interface.- Specified by:
deleteProperty
in interfaceUserPropertyProvider
- Parameters:
username
- The identifier of the user (cannot be null or empty).propName
- The property name (cannot be null or empty).- Throws:
UnsupportedOperationException
- if the property cannot be deleted
-
isReadOnly
public boolean isReadOnly()
Description copied from interface:UserPropertyProvider
Returns true if this UserPropertyProvider is read-only. When read-only, properties can not be created, deleted or modified. Invocation of the corresponding methods should result in anUnsupportedOperationException
.- Specified by:
isReadOnly
in interfaceUserPropertyProvider
- Returns:
- true if the user provider is read-only.
-
-