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
revert-70aa11f8
Madawa Soysa 7 years ago
parent d397d73777
commit e786fa410b

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

Loading…
Cancel
Save