Class JDBCGroupProvider

  • All Implemented Interfaces:
    GroupProvider

    public class JDBCGroupProvider
    extends AbstractGroupProvider
    The JDBC group provider allows you to use an external database to define the composition of groups. It is best used with the JDBCAuthProvider 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. To enable this provider, set the following in the system properties:
    • provider.group.className = org.jivesoftware.openfire.group.JDBCGroupProvider
    Then you need to set your driver, connection string and SQL statements:
    • jdbcProvider.driver = com.mysql.jdbc.Driver
    • jdbcProvider.connectionString = jdbc:mysql://localhost/dbname?user=username&password=secret
    • jdbcGroupProvider.groupCountSQL = SELECT count(*) FROM myGroups
    • jdbcGroupProvider.allGroupsSQL = SELECT groupName FROM myGroups
    • jdbcGroupProvider.userGroupsSQL = SELECT groupName FORM myGroupUsers WHERE username=?
    • jdbcGroupProvider.descriptionSQL = SELECT groupDescription FROM myGroups WHERE groupName=?
    • jdbcGroupProvider.loadMembersSQL = SELECT username FORM myGroupUsers WHERE groupName=? AND isAdmin='N'
    • jdbcGroupProvider.loadAdminsSQL = SELECT username FORM myGroupUsers WHERE groupName=? AND isAdmin='Y'
    In order to use the configured JDBC connection provider do not use a JDBC connection string, set the following property
    • jdbcGroupProvider.useConnectionProvider = true
    Author:
    David Snopek
    • Constructor Detail

      • JDBCGroupProvider

        public JDBCGroupProvider()
        Constructor of the JDBCGroupProvider class.
    • 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 'jdbcGroupProvider.isEscaped' property to 'false'.
        Returns:
        'false' if this implementation needs to escape database content before processing.
      • getGroupCount

        public int getGroupCount()
        Description copied from interface: GroupProvider
        Returns the number of groups in the system.
        Returns:
        the number of groups in the system.
      • getGroupNames

        public Collection<String> getGroupNames()
        Description copied from interface: GroupProvider
        Returns the Collection of all group names in the system.
        Returns:
        the Collection of all groups.
      • getGroupNames

        public Collection<String> getGroupNames​(int start,
                                                int num)
        Description copied from interface: GroupProvider
        Returns the Collection of all groups in the system.
        Parameters:
        start - start index in results.
        num - number of results to return.
        Returns:
        the Collection of all group names given the startIndex and numResults.
      • getGroupNames

        public Collection<String> getGroupNames​(org.xmpp.packet.JID user)
        Description copied from interface: GroupProvider
        Returns the Collection of group names that an entity belongs to. Implementations should use the bare JID representation of the JID passed as an argument to this method.
        Parameters:
        user - the (bare) JID of the entity.
        Returns:
        the Collection of group names that the user belongs to.