diff --git a/components/device-mgt/org.wso2.carbon.device.mgt.core/pom.xml b/components/device-mgt/org.wso2.carbon.device.mgt.core/pom.xml
index f2b7a661a40..bfca19892e4 100644
--- a/components/device-mgt/org.wso2.carbon.device.mgt.core/pom.xml
+++ b/components/device-mgt/org.wso2.carbon.device.mgt.core/pom.xml
@@ -89,7 +89,6 @@
org.scannotation.*
- !org.wso2.carbon.device.mgt.core.internal,
org.wso2.carbon.device.mgt.core.*
diff --git a/components/device-mgt/org.wso2.carbon.device.mgt.core/src/main/java/org/wso2/carbon/device/mgt/core/dao/DeviceDAO.java b/components/device-mgt/org.wso2.carbon.device.mgt.core/src/main/java/org/wso2/carbon/device/mgt/core/dao/DeviceDAO.java
index 1eb39fc5020..a634fe93b67 100644
--- a/components/device-mgt/org.wso2.carbon.device.mgt.core/src/main/java/org/wso2/carbon/device/mgt/core/dao/DeviceDAO.java
+++ b/components/device-mgt/org.wso2.carbon.device.mgt.core/src/main/java/org/wso2/carbon/device/mgt/core/dao/DeviceDAO.java
@@ -420,5 +420,12 @@ public interface DeviceDAO {
*/
List getEnrolmentsByStatus(List deviceIds, Status status,
int tenantId) throws DeviceManagementDAOException;
+
+ /**
+ * Retrieving the tenants which are have device enrolled.
+ * @return
+ * @throws DeviceManagementDAOException
+ */
+ List getDeviceEnrolledTenants() throws DeviceManagementDAOException;
}
diff --git a/components/device-mgt/org.wso2.carbon.device.mgt.core/src/main/java/org/wso2/carbon/device/mgt/core/dao/impl/AbstractDeviceDAOImpl.java b/components/device-mgt/org.wso2.carbon.device.mgt.core/src/main/java/org/wso2/carbon/device/mgt/core/dao/impl/AbstractDeviceDAOImpl.java
index ffb9aacc1f1..7131d973237 100644
--- a/components/device-mgt/org.wso2.carbon.device.mgt.core/src/main/java/org/wso2/carbon/device/mgt/core/dao/impl/AbstractDeviceDAOImpl.java
+++ b/components/device-mgt/org.wso2.carbon.device.mgt.core/src/main/java/org/wso2/carbon/device/mgt/core/dao/impl/AbstractDeviceDAOImpl.java
@@ -1062,4 +1062,26 @@ public abstract class AbstractDeviceDAOImpl implements DeviceDAO {
return devices;
}
+ public List getDeviceEnrolledTenants() throws DeviceManagementDAOException {
+ Connection conn;
+ PreparedStatement stmt = null;
+ ResultSet rs = null;
+ List tenants = new ArrayList<>();
+ try {
+ conn = this.getConnection();
+ String sql = "SELECT distinct(TENANT_ID) FROM DM_DEVICE";
+ stmt = conn.prepareStatement(sql);
+ rs = stmt.executeQuery();
+ while (rs.next()) {
+ tenants.add(rs.getInt("TENANT_ID"));
+ }
+ } catch (SQLException e) {
+ throw new DeviceManagementDAOException("Error occurred while retrieving tenants which have " +
+ "device registered.", e);
+ } finally {
+ DeviceManagementDAOUtil.cleanupResources(stmt, rs);
+ }
+ return tenants;
+ }
+
}
diff --git a/components/device-mgt/org.wso2.carbon.device.mgt.core/src/main/java/org/wso2/carbon/device/mgt/core/service/DeviceManagementProviderService.java b/components/device-mgt/org.wso2.carbon.device.mgt.core/src/main/java/org/wso2/carbon/device/mgt/core/service/DeviceManagementProviderService.java
index 082b155658f..bef274e572c 100644
--- a/components/device-mgt/org.wso2.carbon.device.mgt.core/src/main/java/org/wso2/carbon/device/mgt/core/service/DeviceManagementProviderService.java
+++ b/components/device-mgt/org.wso2.carbon.device.mgt.core/src/main/java/org/wso2/carbon/device/mgt/core/service/DeviceManagementProviderService.java
@@ -307,4 +307,6 @@ public interface DeviceManagementProviderService {
PolicyMonitoringManager getPolicyMonitoringManager(String deviceType);
+ List getDeviceEnrolledTenants() throws DeviceManagementException;
+
}
diff --git a/components/device-mgt/org.wso2.carbon.device.mgt.core/src/main/java/org/wso2/carbon/device/mgt/core/service/DeviceManagementProviderServiceImpl.java b/components/device-mgt/org.wso2.carbon.device.mgt.core/src/main/java/org/wso2/carbon/device/mgt/core/service/DeviceManagementProviderServiceImpl.java
index a9d974b4af6..f21e091316d 100644
--- a/components/device-mgt/org.wso2.carbon.device.mgt.core/src/main/java/org/wso2/carbon/device/mgt/core/service/DeviceManagementProviderServiceImpl.java
+++ b/components/device-mgt/org.wso2.carbon.device.mgt.core/src/main/java/org/wso2/carbon/device/mgt/core/service/DeviceManagementProviderServiceImpl.java
@@ -316,6 +316,22 @@ public class DeviceManagementProviderServiceImpl implements DeviceManagementProv
}
@Override
+ public List getDeviceEnrolledTenants() throws DeviceManagementException {
+ try {
+ DeviceManagementDAOFactory.openConnection();
+ return deviceDAO.getDeviceEnrolledTenants();
+ } catch (DeviceManagementDAOException e) {
+ throw new DeviceManagementException("Error occurred while retrieving the tenants " +
+ "which have device enrolled.", e);
+ } catch (SQLException e) {
+ throw new DeviceManagementException("Error occurred while opening a connection to the data source", e);
+ } finally {
+ DeviceManagementDAOFactory.closeConnection();
+ }
+ }
+
+
+ @Override
public boolean disenrollDevice(DeviceIdentifier deviceId) throws DeviceManagementException {
DeviceManager deviceManager = this.getDeviceManager(deviceId.getType());
if (deviceManager == null) {
diff --git a/components/device-mgt/org.wso2.carbon.device.mgt.core/src/main/java/org/wso2/carbon/device/mgt/core/task/impl/DeviceDetailsRetrieverTask.java b/components/device-mgt/org.wso2.carbon.device.mgt.core/src/main/java/org/wso2/carbon/device/mgt/core/task/impl/DeviceDetailsRetrieverTask.java
index f13f0134783..fcd10a349ef 100644
--- a/components/device-mgt/org.wso2.carbon.device.mgt.core/src/main/java/org/wso2/carbon/device/mgt/core/task/impl/DeviceDetailsRetrieverTask.java
+++ b/components/device-mgt/org.wso2.carbon.device.mgt.core/src/main/java/org/wso2/carbon/device/mgt/core/task/impl/DeviceDetailsRetrieverTask.java
@@ -30,6 +30,8 @@ import org.wso2.carbon.device.mgt.core.task.DeviceTaskManager;
import org.wso2.carbon.ntask.core.Task;
import org.wso2.carbon.user.api.Tenant;
import org.wso2.carbon.user.api.UserStoreException;
+import org.wso2.carbon.device.mgt.common.DeviceManagementException;
+import java.util.List;
import java.util.Map;
@@ -58,20 +60,22 @@ public class DeviceDetailsRetrieverTask implements Task {
@Override
public void execute() {
-
if (log.isDebugEnabled()) {
log.debug("Device details retrieving task started to run.");
}
try {
- Tenant tenants[] = DeviceManagementDataHolder.getInstance().
- getRealmService().getTenantManager().getAllTenants();
-
- for (Tenant tenant : tenants) {
-
+// Tenant tenants[] = DeviceManagementDataHolder.getInstance().
+// getRealmService().getTenantManager().getAllTenants();
+
+ List tenants = DeviceManagementDataHolder.getInstance().
+ getDeviceManagementProvider().getDeviceEnrolledTenants();
+ for (Integer tenant : tenants) {
+ String tenantDomain = DeviceManagementDataHolder.getInstance().
+ getRealmService().getTenantManager().getDomain(tenant);
try {
PrivilegedCarbonContext.startTenantFlow();
- PrivilegedCarbonContext.getThreadLocalCarbonContext().setTenantDomain(tenant.getDomain());
- PrivilegedCarbonContext.getThreadLocalCarbonContext().setTenantId(tenant.getId());
+ PrivilegedCarbonContext.getThreadLocalCarbonContext().setTenantDomain(tenantDomain);
+ PrivilegedCarbonContext.getThreadLocalCarbonContext().setTenantId(tenant);
DeviceTaskManager deviceTaskManager = new DeviceTaskManagerImpl(deviceType,
operationMonitoringTaskConfig);
//pass the configurations also from here, monitoring tasks
@@ -87,8 +91,12 @@ public class DeviceDetailsRetrieverTask implements Task {
}
} catch (UserStoreException e) {
log.error("Error occurred while trying to get the available tenants", e);
+ } catch (DeviceManagementException e) {
+ log.error("Error occurred while trying to get the available tenants " +
+ "from device manager provider service.", e);
}
+
}
}
diff --git a/components/policy-mgt/org.wso2.carbon.policy.mgt.core/pom.xml b/components/policy-mgt/org.wso2.carbon.policy.mgt.core/pom.xml
index a61f6d8fdbf..2deba5e2124 100644
--- a/components/policy-mgt/org.wso2.carbon.policy.mgt.core/pom.xml
+++ b/components/policy-mgt/org.wso2.carbon.policy.mgt.core/pom.xml
@@ -71,7 +71,7 @@
org.wso2.carbon.device.mgt.core.*,
org.wso2.carbon.device.mgt.common.*,
org.wso2.carbon.ntask.*,
- org.wso2.carbon.caching.*
+ org.wso2.carbon.caching.*,
!org.wso2.carbon.policy.mgt.core.internal,
diff --git a/components/policy-mgt/org.wso2.carbon.policy.mgt.core/src/main/java/org/wso2/carbon/policy/mgt/core/task/MonitoringTask.java b/components/policy-mgt/org.wso2.carbon.policy.mgt.core/src/main/java/org/wso2/carbon/policy/mgt/core/task/MonitoringTask.java
index dce753ba514..4237b25d7a8 100644
--- a/components/policy-mgt/org.wso2.carbon.policy.mgt.core/src/main/java/org/wso2/carbon/policy/mgt/core/task/MonitoringTask.java
+++ b/components/policy-mgt/org.wso2.carbon.policy.mgt.core/src/main/java/org/wso2/carbon/policy/mgt/core/task/MonitoringTask.java
@@ -32,6 +32,10 @@ import org.wso2.carbon.policy.mgt.core.internal.PolicyManagementDataHolder;
import org.wso2.carbon.policy.mgt.core.mgt.MonitoringManager;
import org.wso2.carbon.user.api.Tenant;
import org.wso2.carbon.user.api.UserStoreException;
+import org.wso2.carbon.device.mgt.common.DeviceManagementException;
+import org.wso2.carbon.device.mgt.common.policy.mgt.monitor.PolicyComplianceException;
+import org.wso2.carbon.device.mgt.core.internal.DeviceManagementDataHolder;
+import org.wso2.carbon.device.mgt.core.service.DeviceManagementProviderServiceImpl;
import java.util.ArrayList;
import java.util.List;
@@ -61,15 +65,22 @@ public class MonitoringTask implements Task {
}
try {
- Tenant tenants[] = PolicyManagementDataHolder.getInstance().
- getRealmService().getTenantManager().getAllTenants();
+// Tenant tenants[] = PolicyManagementDataHolder.getInstance().
+// getRealmService().getTenantManager().getAllTenants();
+
+ // for (Tenant tenant : tenants) {
+
- for (Tenant tenant : tenants) {
+ DeviceManagementProviderService deviceManagementService = new DeviceManagementProviderServiceImpl();
+ List tenants = deviceManagementService.getDeviceEnrolledTenants();
+ for (Integer tenant : tenants) {
+ String tenantDomain = DeviceManagementDataHolder.getInstance().
+ getRealmService().getTenantManager().getDomain(tenant);
try {
PrivilegedCarbonContext.startTenantFlow();
- PrivilegedCarbonContext.getThreadLocalCarbonContext().setTenantDomain(tenant.getDomain());
- PrivilegedCarbonContext.getThreadLocalCarbonContext().setTenantId(tenant.getId());
+ PrivilegedCarbonContext.getThreadLocalCarbonContext().setTenantDomain(tenantDomain);
+ PrivilegedCarbonContext.getThreadLocalCarbonContext().setTenantId(tenant);
MonitoringManager monitoringManager = PolicyManagementDataHolder.getInstance().getMonitoringManager();
List deviceTypes = new ArrayList<>();
@@ -142,6 +153,8 @@ public class MonitoringTask implements Task {
} catch (UserStoreException e) {
log.error("Error occurred while trying to get the available tenants", e);
+ } catch (DeviceManagementException e) {
+ log.error("Error occurred while trying to get the available tenants from device manager service ", e);
}
}