Checking if the user store manager class is a sub class of the default

This commit is to modify the current logic which checks if the UserStoreManager class is equal to the JDBCUserStoreManager class to support subclasses of the JDBCUserStoreManager class to return correct total user count.

In this commit, instead of comparing the string name, tests the UserStoreManager instance is a type of JDBCUserStoreManager.

Resolves wso2/product-iots#1556
This commit is contained in:
Madawa Soysa 2017-12-21 17:06:28 +05:30
parent d397d73777
commit e786fa410b

View File

@ -222,14 +222,13 @@ public class DeviceMgtAPIUtils {
public static UserStoreCountRetriever getUserStoreCountRetrieverService()
throws UserStoreCounterException {
throws UserStoreCounterException, UserStoreException {
PrivilegedCarbonContext ctx = PrivilegedCarbonContext.getThreadLocalCarbonContext();
List<Object> countRetrieverFactories = ctx.getOSGiServices(AbstractCountRetrieverFactory.class, null);
RealmService realmService = (RealmService) ctx.getOSGiService(RealmService.class, null);
RealmConfiguration realmConfiguration = realmService.getBootstrapRealmConfiguration();
String userStoreType;
//Ignoring Sonar warning as getUserStoreClass() returning string name of the class. So cannot use 'instanceof'.
if (JDBCUserStoreManager.class.getName().equals(realmConfiguration.getUserStoreClass())) {
if(DeviceMgtAPIUtils.getUserStoreManager() instanceof JDBCUserStoreManager) {
userStoreType = JDBCCountRetrieverFactory.JDBC;
} else {
userStoreType = InternalCountRetrieverFactory.INTERNAL;