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
4.x.x
Madawa Soysa 7 years ago
parent d397d73777
commit e786fa410b

@ -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;

Loading…
Cancel
Save