diff --git a/components/device-mgt/io.entgra.device.mgt.core.device.mgt.api/src/main/java/io/entgra/device/mgt/core/device/mgt/api/jaxrs/service/impl/DeviceStatusFilterServiceImpl.java b/components/device-mgt/io.entgra.device.mgt.core.device.mgt.api/src/main/java/io/entgra/device/mgt/core/device/mgt/api/jaxrs/service/impl/DeviceStatusFilterServiceImpl.java index 7e5fd01437..1af284c039 100644 --- a/components/device-mgt/io.entgra.device.mgt.core.device.mgt.api/src/main/java/io/entgra/device/mgt/core/device/mgt/api/jaxrs/service/impl/DeviceStatusFilterServiceImpl.java +++ b/components/device-mgt/io.entgra.device.mgt.core.device.mgt.api/src/main/java/io/entgra/device/mgt/core/device/mgt/api/jaxrs/service/impl/DeviceStatusFilterServiceImpl.java @@ -43,10 +43,9 @@ public class DeviceStatusFilterServiceImpl implements DeviceStatusFilterService @Path("/{deviceType}") public Response getDeviceStatusFilters(@PathParam("deviceType") String deviceType) { List result; - int tenantId = CarbonContext.getThreadLocalCarbonContext().getTenantId(); try { DeviceStatusManagementService deviceManagementProviderService = DeviceMgtAPIUtils.getDeviceStatusManagmentService(); - result = deviceManagementProviderService.getDeviceStatusFilters(deviceType, tenantId); + result = deviceManagementProviderService.getDeviceStatusFilters(deviceType); if (result != null) { return Response.status(Response.Status.OK).entity(result).build(); } @@ -82,10 +81,9 @@ public class DeviceStatusFilterServiceImpl implements DeviceStatusFilterService @QueryParam("isEnabled") boolean isEnabled) { boolean result; - int tenantId = CarbonContext.getThreadLocalCarbonContext().getTenantId(); try { DeviceStatusManagementService deviceManagementProviderService = DeviceMgtAPIUtils.getDeviceStatusManagmentService(); - result = deviceManagementProviderService.updateDefaultDeviceStatusCheck(tenantId, isEnabled); + result = deviceManagementProviderService.updateDefaultDeviceStatusCheck(isEnabled); if (result) { return Response.status(Response.Status.OK).entity("Successfully updated device status check.").build(); } else { diff --git a/components/device-mgt/io.entgra.device.mgt.core.device.mgt.common/src/main/java/io/entgra/device/mgt/core/device/mgt/common/metadata/mgt/DeviceStatusManagementService.java b/components/device-mgt/io.entgra.device.mgt.core.device.mgt.common/src/main/java/io/entgra/device/mgt/core/device/mgt/common/metadata/mgt/DeviceStatusManagementService.java index 5ee7c8fce0..d4b140c9c0 100644 --- a/components/device-mgt/io.entgra.device.mgt.core.device.mgt.common/src/main/java/io/entgra/device/mgt/core/device/mgt/common/metadata/mgt/DeviceStatusManagementService.java +++ b/components/device-mgt/io.entgra.device.mgt.core.device.mgt.common/src/main/java/io/entgra/device/mgt/core/device/mgt/common/metadata/mgt/DeviceStatusManagementService.java @@ -31,7 +31,7 @@ public interface DeviceStatusManagementService { * * @throws MetadataManagementException if error while adding default device status */ - void addDefaultDeviceStatusFilterIfNotExist(int tenantId) throws MetadataManagementException; + void addDefaultDeviceStatusFilterIfNotExist() throws MetadataManagementException; /** * This method is useful to reset existing device status to default values in xml @@ -53,21 +53,21 @@ public interface DeviceStatusManagementService { * * @throws MetadataManagementException if error while updating existing device status */ - boolean updateDefaultDeviceStatusCheck(int tenantId, boolean isChecked) + boolean updateDefaultDeviceStatusCheck(boolean isChecked) throws MetadataManagementException; /** * This method is useful to get existing device status filters * * @throws MetadataManagementException if error while getting existing device status */ - List getDeviceStatusFilters(int tenantId) throws MetadataManagementException; + List getDeviceStatusFilters() throws MetadataManagementException; /** * This method is useful to get existing device status filters by device type and tenant id * * @throws MetadataManagementException if error while getting existing device status */ - List getDeviceStatusFilters(String deviceType, int tenantId) throws MetadataManagementException; + List getDeviceStatusFilters(String deviceType) throws MetadataManagementException; /** * This method is useful to get existing device status filters diff --git a/components/device-mgt/io.entgra.device.mgt.core.device.mgt.core/src/main/java/io/entgra/device/mgt/core/device/mgt/core/internal/DeviceManagementServiceComponent.java b/components/device-mgt/io.entgra.device.mgt.core.device.mgt.core/src/main/java/io/entgra/device/mgt/core/device/mgt/core/internal/DeviceManagementServiceComponent.java index b2e1529f40..6eee433fb0 100644 --- a/components/device-mgt/io.entgra.device.mgt.core.device.mgt.core/src/main/java/io/entgra/device/mgt/core/device/mgt/core/internal/DeviceManagementServiceComponent.java +++ b/components/device-mgt/io.entgra.device.mgt.core.device.mgt.core/src/main/java/io/entgra/device/mgt/core/device/mgt/core/internal/DeviceManagementServiceComponent.java @@ -383,10 +383,10 @@ public class DeviceManagementServiceComponent { bundleContext.registerService(WhiteLabelManagementService.class.getName(), whiteLabelManagementService, null); /* Registering DeviceState Filter Service */ - DeviceStatusManagementService deviceStatusManagemntService = new DeviceStatusManagementServiceImpl(); + DeviceStatusManagementService deviceStatusManagemntService = DeviceStatusManagementServiceImpl.getInstance(); DeviceManagementDataHolder.getInstance().setDeviceStatusManagementService(deviceStatusManagemntService); try { - deviceStatusManagemntService.addDefaultDeviceStatusFilterIfNotExist(tenantId); + deviceStatusManagemntService.addDefaultDeviceStatusFilterIfNotExist(); } catch (Throwable e) { log.error("Error occurred while adding default tenant device status", e); diff --git a/components/device-mgt/io.entgra.device.mgt.core.device.mgt.core/src/main/java/io/entgra/device/mgt/core/device/mgt/core/metadata/mgt/DeviceStatusManagementServiceImpl.java b/components/device-mgt/io.entgra.device.mgt.core.device.mgt.core/src/main/java/io/entgra/device/mgt/core/device/mgt/core/metadata/mgt/DeviceStatusManagementServiceImpl.java index 1daea9fd24..4e9cde85c8 100644 --- a/components/device-mgt/io.entgra.device.mgt.core.device.mgt.core/src/main/java/io/entgra/device/mgt/core/device/mgt/core/metadata/mgt/DeviceStatusManagementServiceImpl.java +++ b/components/device-mgt/io.entgra.device.mgt.core.device.mgt.core/src/main/java/io/entgra/device/mgt/core/device/mgt/core/metadata/mgt/DeviceStatusManagementServiceImpl.java @@ -18,64 +18,99 @@ package io.entgra.device.mgt.core.device.mgt.core.metadata.mgt; +import com.google.common.cache.Cache; +import com.google.common.cache.CacheBuilder; import com.google.gson.Gson; import com.google.gson.JsonObject; import com.google.gson.reflect.TypeToken; +import io.entgra.device.mgt.core.device.mgt.common.exceptions.MetadataKeyAlreadyExistsException; import io.entgra.device.mgt.core.device.mgt.common.exceptions.MetadataManagementException; -import io.entgra.device.mgt.core.device.mgt.common.exceptions.TransactionManagementException; import io.entgra.device.mgt.core.device.mgt.common.metadata.mgt.AllowedDeviceStatus; import io.entgra.device.mgt.core.device.mgt.common.metadata.mgt.DeviceStatusManagementService; import io.entgra.device.mgt.core.device.mgt.common.metadata.mgt.Metadata; +import io.entgra.device.mgt.core.device.mgt.common.metadata.mgt.MetadataManagementService; import io.entgra.device.mgt.core.device.mgt.core.config.ui.DeviceStatusConfigurations; import io.entgra.device.mgt.core.device.mgt.core.config.ui.DeviceStatusItem; import io.entgra.device.mgt.core.device.mgt.core.config.ui.UIConfigurationManager; -import io.entgra.device.mgt.core.device.mgt.core.metadata.mgt.dao.MetadataDAO; -import io.entgra.device.mgt.core.device.mgt.core.metadata.mgt.dao.MetadataManagementDAOException; -import io.entgra.device.mgt.core.device.mgt.core.metadata.mgt.dao.MetadataManagementDAOFactory; +import io.entgra.device.mgt.core.device.mgt.core.internal.DeviceManagementDataHolder; import io.entgra.device.mgt.core.device.mgt.core.metadata.mgt.dao.util.MetadataConstants; +import org.apache.commons.lang.StringUtils; import org.apache.commons.logging.Log; import org.apache.commons.logging.LogFactory; import java.lang.reflect.Type; -import java.sql.SQLException; import java.util.ArrayList; import java.util.Collections; import java.util.List; +import java.util.concurrent.TimeUnit; public class DeviceStatusManagementServiceImpl implements DeviceStatusManagementService { private static final Log log = LogFactory.getLog(DeviceStatusManagementServiceImpl.class); - private final MetadataDAO metadataDAO; + private static volatile DeviceStatusManagementServiceImpl instance; - public DeviceStatusManagementServiceImpl() { - this.metadataDAO = MetadataManagementDAOFactory.getMetadataDAO(); + private static final MetadataManagementService metadataManagementService = DeviceManagementDataHolder.getInstance().getMetadataManagementService(); + + private final Gson gson; + + private static final Cache> cache = CacheBuilder.newBuilder() + .expireAfterWrite(5, TimeUnit.HOURS) + .build(); + + private DeviceStatusManagementServiceImpl() { + this.gson = new Gson(); + } + + public static synchronized DeviceStatusManagementServiceImpl getInstance() { + if (instance == null) { + instance = new DeviceStatusManagementServiceImpl(); + } + return instance; } @Override - public void addDefaultDeviceStatusFilterIfNotExist(int tenantId) throws MetadataManagementException { + public void addDefaultDeviceStatusFilterIfNotExist() throws MetadataManagementException { try { - MetadataManagementDAOFactory.beginTransaction(); - if (!metadataDAO.isExist(tenantId, MetadataConstants.ALLOWED_DEVICE_STATUS_META_KEY) && !metadataDAO.isExist(tenantId, MetadataConstants.IS_DEVICE_STATUS_CHECK_META_KEY)) { Metadata defaultDeviceStatusMetadata = constructDeviceStatusMetadata(getDefaultDeviceStatus()); Metadata defaultDeviceStatusCheckMetadata = constructDeviceStatusCheckMetadata(getDefaultDeviceStatusCheck()); // Add default device status and device status check metadata entries - addMetadataEntry(tenantId, defaultDeviceStatusMetadata, MetadataConstants.ALLOWED_DEVICE_STATUS_META_KEY); - addMetadataEntry(tenantId, defaultDeviceStatusCheckMetadata, MetadataConstants.IS_DEVICE_STATUS_CHECK_META_KEY); - } - MetadataManagementDAOFactory.commitTransaction(); - } catch (MetadataManagementDAOException e) { - MetadataManagementDAOFactory.rollbackTransaction(); - String msg = "Error occurred while inserting default device status metadata entry."; - log.error(msg, e); - throw new MetadataManagementException(msg, e); - } catch (TransactionManagementException e) { - String msg = "Error occurred while opening a connection to the data source"; - log.error(msg, e); - throw new MetadataManagementException(msg, e); - } finally { - MetadataManagementDAOFactory.closeConnection(); + addMetadataEntry(defaultDeviceStatusMetadata, MetadataConstants.ALLOWED_DEVICE_STATUS_META_KEY); + addMetadataEntry(defaultDeviceStatusCheckMetadata, MetadataConstants.IS_DEVICE_STATUS_CHECK_META_KEY); + } catch (MetadataKeyAlreadyExistsException e) { + log.error("Metadata is already exist.", e); + } + } + + /** + * Adds default device status filters for a given tenant. + * + * @throws MetadataManagementException if an error occurs while adding the metadata or managing the transaction. + */ + private void addDefaultDeviceStatusFilters() throws MetadataManagementException { + try { + Metadata defaultDeviceStatusMetadata = constructDeviceStatusMetadata(getDefaultDeviceStatus()); + // Add default device status metadata entries + addMetadataEntry(defaultDeviceStatusMetadata, MetadataConstants.ALLOWED_DEVICE_STATUS_META_KEY); + } catch (MetadataKeyAlreadyExistsException e) { + log.error("Metadata is already exist.", e); + } + } + + /** + * Adds default device status filter enable or not for a given tenant. + * + * @param tenantId the tenant ID for which to add the device status filters. + * @throws MetadataManagementException if an error occurs while adding the metadata or managing the transaction. + */ + private void addDefaultDeviceStatusCheck(int tenantId) throws MetadataManagementException { + try { + Metadata defaultDeviceStatusCheckMetadata = constructDeviceStatusCheckMetadata(getDefaultDeviceStatusCheck()); + // Add default device status check metadata entries + addMetadataEntry(defaultDeviceStatusCheckMetadata, MetadataConstants.IS_DEVICE_STATUS_CHECK_META_KEY); + } catch (MetadataKeyAlreadyExistsException e) { + log.error("Metadata is already exist.", e); } } @@ -86,196 +121,130 @@ public class DeviceStatusManagementServiceImpl implements DeviceStatusManagement @Override public void updateDefaultDeviceStatusFilters(int tenantId, String deviceType, List deviceStatus) throws MetadataManagementException { - try { - MetadataManagementDAOFactory.beginTransaction(); - // Retrieve the current device status metadata - Metadata metadata = metadataDAO.getMetadata(tenantId, MetadataConstants.ALLOWED_DEVICE_STATUS_META_KEY); - if (metadata != null) { - Gson gson = new Gson(); - Type listType = new TypeToken>() { - }.getType(); - List currentStatusList = gson.fromJson(metadata.getMetaValue(), listType); - - // Find the status for the specified deviceType - for (AllowedDeviceStatus status : currentStatusList) { - if (status.getType().equalsIgnoreCase(deviceType)) { - // Update the status list for the specified deviceType - status.setStatus(deviceStatus); - break; - } + if (StringUtils.isEmpty(deviceType)) { + String msg = "Device type must not be empty or null"; + log.error(msg); + throw new IllegalArgumentException(msg); + } + // Retrieve the current device status metadata + Metadata metadata = metadataManagementService.retrieveMetadata(MetadataConstants.ALLOWED_DEVICE_STATUS_META_KEY); + if (metadata != null) { + Type listType = new TypeToken>() { + }.getType(); + List currentStatusList = gson.fromJson(metadata.getMetaValue(), listType); + + // Find the status for the specified deviceType + for (AllowedDeviceStatus status : currentStatusList) { + if (deviceType.equalsIgnoreCase(status.getType())) { + // Update the status list for the specified deviceType + status.setStatus(deviceStatus); + break; } - metadata.setMetaValue(gson.toJson(currentStatusList)); - updateMetadataEntry(tenantId, metadata, MetadataConstants.ALLOWED_DEVICE_STATUS_META_KEY); } - MetadataManagementDAOFactory.commitTransaction(); - } catch (MetadataManagementDAOException e) { - MetadataManagementDAOFactory.rollbackTransaction(); - String msg = "Error occurred while updating device status metadata entry."; - log.error(msg, e); - throw new MetadataManagementException(msg, e); - } catch (TransactionManagementException e) { - String msg = "Error occurred while opening a connection to the data source"; - log.error(msg, e); - throw new MetadataManagementException(msg, e); - } finally { - MetadataManagementDAOFactory.closeConnection(); + metadata.setMetaValue(gson.toJson(currentStatusList)); + updateMetadataEntry(metadata, MetadataConstants.ALLOWED_DEVICE_STATUS_META_KEY); } } @Override - public boolean updateDefaultDeviceStatusCheck(int tenantId, boolean isChecked) throws MetadataManagementException { - boolean success = false; - try { - MetadataManagementDAOFactory.beginTransaction(); - if (metadataDAO.isExist(tenantId, MetadataConstants.IS_DEVICE_STATUS_CHECK_META_KEY)) { - Metadata isDeviceStatusChecked = constructDeviceStatusCheckMetadata(isChecked); - // Add default device status check metadata entries - updateMetadataEntry(tenantId, isDeviceStatusChecked, MetadataConstants.IS_DEVICE_STATUS_CHECK_META_KEY); - success = true; - } - MetadataManagementDAOFactory.commitTransaction(); - } catch (MetadataManagementDAOException e) { - MetadataManagementDAOFactory.rollbackTransaction(); - String msg = "Error occurred while updating device status check metadata entry."; - log.error(msg, e); - throw new MetadataManagementException(msg, e); - } catch (TransactionManagementException e) { - String msg = "Error occurred while opening a connection to the data source"; - log.error(msg, e); - throw new MetadataManagementException(msg, e); - } finally { - MetadataManagementDAOFactory.closeConnection(); - } - return success; + public boolean updateDefaultDeviceStatusCheck(boolean isChecked) throws MetadataManagementException { + Metadata isDeviceStatusChecked = constructDeviceStatusCheckMetadata(isChecked); + // Add default device status check metadata entries + updateMetadataEntry(isDeviceStatusChecked, MetadataConstants.IS_DEVICE_STATUS_CHECK_META_KEY); + return true; } @Override - public List getDeviceStatusFilters(int tenantId) throws MetadataManagementException { - try { - MetadataManagementDAOFactory.openConnection(); - Metadata metadata = metadataDAO.getMetadata(tenantId, MetadataConstants.ALLOWED_DEVICE_STATUS_META_KEY); - Gson gson = new Gson(); - Type listType = new TypeToken>() {}.getType(); - List statusList = gson.fromJson(metadata.getMetaValue(), listType); - - return statusList; - } catch (MetadataManagementDAOException e) { - String msg = "Error occurred while retrieving device status meta data for tenant:" + tenantId; - log.error(msg, e); - throw new MetadataManagementException(msg, e); - } catch (SQLException e) { - String msg = "Error occurred while opening a connection to the data source"; - log.error(msg, e); - throw new MetadataManagementException(msg, e); - } finally { - MetadataManagementDAOFactory.closeConnection(); - } - + public List getDeviceStatusFilters() throws MetadataManagementException { + return retrieveAndParseMetadata(); } - public List getDeviceStatusFilters(String deviceType, int tenantId) throws MetadataManagementException { - try { - MetadataManagementDAOFactory.openConnection(); - Metadata metadata = metadataDAO.getMetadata(tenantId, MetadataConstants.ALLOWED_DEVICE_STATUS_META_KEY); - Gson gson = new Gson(); - Type listType = new TypeToken>() {}.getType(); - List statusList = gson.fromJson(metadata.getMetaValue(), listType); - - for (AllowedDeviceStatus status : statusList) { - if (status.getType().equalsIgnoreCase(deviceType)) { - return status.getStatus(); - } + public List getDeviceStatusFilters(String deviceType) throws MetadataManagementException { + List statusList = retrieveAndParseMetadata(); + for (AllowedDeviceStatus status : statusList) { + if (deviceType.equalsIgnoreCase(status.getType())) { + return status.getStatus(); } - // Device type not found in metadata - return Collections.emptyList(); - } catch (MetadataManagementDAOException e) { - String msg = "Error occurred while retrieving device status meta data for tenant: " + tenantId; - log.error(msg, e); - throw new MetadataManagementException(msg, e); - } catch (SQLException e) { - String msg = "Error occurred while opening a connection to the data source"; - log.error(msg, e); - throw new MetadataManagementException(msg, e); - } finally { - MetadataManagementDAOFactory.closeConnection(); } + // Device type not found in metadata + return Collections.emptyList(); + } + + /** + * Retrieves and parses the allowed device status metadata for the specified tenant. + * @return a list of {@link AllowedDeviceStatus} objects parsed from the metadata. + * @throws MetadataManagementException if an error occurs while retrieving or parsing the metadata. + */ + private List retrieveAndParseMetadata() throws MetadataManagementException { + Metadata metadata = metadataManagementService.retrieveMetadata(MetadataConstants.ALLOWED_DEVICE_STATUS_META_KEY); + String metaValue; + if (metadata != null) { + metaValue = metadata.getMetaValue(); + } else { + List defaultStatusList = getDefaultDeviceStatus(); + metaValue = gson.toJson(defaultStatusList); + addDefaultDeviceStatusFilters(); + } + Type listType = new TypeToken>() {}.getType(); + return gson.fromJson(metaValue, listType); } + @Override public boolean getDeviceStatusCheck(int tenantId) throws MetadataManagementException { - try { - MetadataManagementDAOFactory.openConnection(); - Metadata metadata = metadataDAO.getMetadata(tenantId, MetadataConstants.IS_DEVICE_STATUS_CHECK_META_KEY); - String metaValue = metadata.getMetaValue(); - return Boolean.parseBoolean(metaValue); - } catch (MetadataManagementDAOException e) { - String msg = "Error occurred while retrieving device status check meta data for tenant:" + tenantId; - log.error(msg, e); - throw new MetadataManagementException(msg, e); - } catch (SQLException e) { - String msg = "Error occurred while opening a connection to the data source"; - log.error(msg, e); - throw new MetadataManagementException(msg, e); - } finally { - MetadataManagementDAOFactory.closeConnection(); + Metadata metadata = metadataManagementService.retrieveMetadata(MetadataConstants.IS_DEVICE_STATUS_CHECK_META_KEY); + if (metadata != null) { + return Boolean.parseBoolean(metadata.getMetaValue()); + } else { + addDefaultDeviceStatusCheck(tenantId); + return getDefaultDeviceStatusCheck(); } } @Override public boolean isDeviceStatusValid(String deviceType, String deviceStatus, int tenantId) throws MetadataManagementException { - try { - MetadataManagementDAOFactory.openConnection(); - Metadata metadata = metadataDAO.getMetadata(tenantId, MetadataConstants.ALLOWED_DEVICE_STATUS_META_KEY); - - Gson gson = new Gson(); - Type listType = new TypeToken>() { - }.getType(); - List statusList = gson.fromJson(metadata.getMetaValue(), listType); - - for (AllowedDeviceStatus status : statusList) { - if (status.getType().equalsIgnoreCase(deviceType)) { - List allowedStatus = status.getStatus(); - return allowedStatus.contains(deviceStatus); - } + if (StringUtils.isEmpty(deviceType)) { + String msg = "Device type must not be empty or null"; + log.error(msg); + throw new IllegalArgumentException(msg); + } + List allowedDeviceStatus = cache.getIfPresent(Integer.toString(tenantId)); + if (allowedDeviceStatus == null) { + allowedDeviceStatus = retrieveAndParseMetadata(); + cache.put(Integer.toString(tenantId), allowedDeviceStatus); + } + for (AllowedDeviceStatus status : allowedDeviceStatus) { + if (deviceType.equalsIgnoreCase(status.getType())) { + List allowedStatus = status.getStatus(); + return allowedStatus.contains(deviceStatus); } - - return false; // Device type not found in metadata - } catch (MetadataManagementDAOException e) { - String msg = "Error occurred while retrieving device status meta data for tenant: " + tenantId; - log.error(msg, e); - throw new MetadataManagementException(msg, e); - } catch (SQLException e) { - String msg = "Error occurred while opening a connection to the data source"; - log.error(msg, e); - throw new MetadataManagementException(msg, e); - } finally { - MetadataManagementDAOFactory.closeConnection(); } + return false; // Device type not found in metadata } - private void addMetadataEntry(int tenantId, Metadata metadata, String key) throws MetadataManagementDAOException { - metadataDAO.addMetadata(tenantId, metadata); + private void addMetadataEntry(Metadata metadata, String key) throws MetadataManagementException, MetadataKeyAlreadyExistsException { + metadata.setMetaKey(key); + metadataManagementService.createMetadata(metadata); if (log.isDebugEnabled()) { log.debug(key + " metadata entry has been inserted successfully"); } } - private void updateMetadataEntry(int tenantId, Metadata metadata, String key) throws MetadataManagementDAOException { - metadataDAO.updateMetadata(tenantId, metadata); + private void updateMetadataEntry(Metadata metadata, String key) throws MetadataManagementException { + metadata.setMetaKey(key); + metadataManagementService.updateMetadata(metadata); if (log.isDebugEnabled()) { log.debug(key + " metadata entry has been updated successfully"); } } private Metadata constructDeviceStatusMetadata(List deviceStatusItems) { - Gson gson = new Gson(); String deviceStatusItemsJsonString = gson.toJson(deviceStatusItems); Metadata metadata = new Metadata(); metadata.setMetaKey(MetadataConstants.ALLOWED_DEVICE_STATUS_META_KEY); metadata.setMetaValue(deviceStatusItemsJsonString); - return metadata; } @@ -285,10 +254,16 @@ public class DeviceStatusManagementServiceImpl implements DeviceStatusManagement Metadata metadata = new Metadata(); metadata.setMetaKey(MetadataConstants.IS_DEVICE_STATUS_CHECK_META_KEY); metadata.setMetaValue(String.valueOf(deviceStatusCheck)); - return metadata; } + /** + * Retrieves the default device status items. + * This method fetches the device status configurations from the UI configuration manager. + * If the configurations are available, it returns the list of device status items. + * + * @return a list of {@code DeviceStatusItem} objects representing the default device statuses. + */ private List getDefaultDeviceStatus() { DeviceStatusConfigurations deviceStatusConfigurations = UIConfigurationManager.getInstance().getUIConfig().getDeviceStatusConfigurations(); List deviceStatusItems = new ArrayList<>(); @@ -301,10 +276,16 @@ public class DeviceStatusManagementServiceImpl implements DeviceStatusManagement log.debug("DeviceStatusConfigurations is null."); } } - return deviceStatusItems; } + /** + * Retrieves the default device status check flag. + * This method fetches the device status configurations from the UI configuration manager. + * If the configurations are available, it returns the device status check flag. + * + * @return a boolean value indicating the default device status check flag. + */ private boolean getDefaultDeviceStatusCheck() { DeviceStatusConfigurations deviceStatusConfigurations = UIConfigurationManager.getInstance().getUIConfig().getDeviceStatusConfigurations(); boolean deviceStatusCheck = false; diff --git a/components/device-mgt/io.entgra.device.mgt.core.device.mgt.core/src/test/java/io/entgra/device/mgt/core/device/mgt/core/search/DeviceDetails.java b/components/device-mgt/io.entgra.device.mgt.core.device.mgt.core/src/test/java/io/entgra/device/mgt/core/device/mgt/core/search/DeviceDetails.java index 8d6a4a5673..609fe4f7aa 100644 --- a/components/device-mgt/io.entgra.device.mgt.core.device.mgt.core/src/test/java/io/entgra/device/mgt/core/device/mgt/core/search/DeviceDetails.java +++ b/components/device-mgt/io.entgra.device.mgt.core.device.mgt.core/src/test/java/io/entgra/device/mgt/core/device/mgt/core/search/DeviceDetails.java @@ -20,7 +20,9 @@ package io.entgra.device.mgt.core.device.mgt.core.search; import io.entgra.device.mgt.core.device.mgt.common.metadata.mgt.DeviceStatusManagementService; +import io.entgra.device.mgt.core.device.mgt.common.metadata.mgt.MetadataManagementService; import io.entgra.device.mgt.core.device.mgt.core.metadata.mgt.DeviceStatusManagementServiceImpl; +import io.entgra.device.mgt.core.device.mgt.core.metadata.mgt.MetadataManagementServiceImpl; import org.apache.commons.logging.Log; import org.apache.commons.logging.LogFactory; import org.testng.annotations.BeforeClass; @@ -43,7 +45,10 @@ public class DeviceDetails extends BaseDeviceManagementTest { DeviceManagementProviderService deviceManagementProviderService = new DeviceManagementProviderServiceImpl(); DeviceManagementDataHolder.getInstance().setDeviceManagementProvider(deviceManagementProviderService); - DeviceStatusManagementService deviceStatusManagementService = new DeviceStatusManagementServiceImpl(); + MetadataManagementService metadataManagementService = new MetadataManagementServiceImpl(); + DeviceManagementDataHolder.getInstance().setMetadataManagementService(metadataManagementService); + + DeviceStatusManagementService deviceStatusManagementService = DeviceStatusManagementServiceImpl.getInstance(); DeviceManagementDataHolder.getInstance().setDeviceStatusManagementService(deviceStatusManagementService); } diff --git a/components/device-mgt/io.entgra.device.mgt.core.device.mgt.core/src/test/java/io/entgra/device/mgt/core/device/mgt/core/service/DeviceManagementProviderServiceTest.java b/components/device-mgt/io.entgra.device.mgt.core.device.mgt.core/src/test/java/io/entgra/device/mgt/core/device/mgt/core/service/DeviceManagementProviderServiceTest.java index 942cb2c8b0..032f11c7c4 100644 --- a/components/device-mgt/io.entgra.device.mgt.core.device.mgt.core/src/test/java/io/entgra/device/mgt/core/device/mgt/core/service/DeviceManagementProviderServiceTest.java +++ b/components/device-mgt/io.entgra.device.mgt.core.device.mgt.core/src/test/java/io/entgra/device/mgt/core/device/mgt/core/service/DeviceManagementProviderServiceTest.java @@ -215,7 +215,7 @@ public class DeviceManagementProviderServiceTest extends BaseDeviceManagementTes if (!isMock()) { DeviceStatusManagementService deviceStatusManagementService = DeviceManagementDataHolder .getInstance().getDeviceStatusManagementService(); - deviceStatusManagementService.addDefaultDeviceStatusFilterIfNotExist(MultitenantConstants.SUPER_TENANT_ID); + deviceStatusManagementService.addDefaultDeviceStatusFilterIfNotExist(); Device device = TestDataHolder.generateDummyDeviceData(new DeviceIdentifier(DEVICE_ID, DEVICE_TYPE)); boolean enrollment = deviceMgtService.enrollDevice(device); Assert.assertTrue(enrollment); diff --git a/components/tenant-mgt/io.entgra.device.mgt.core.tenant.mgt.core/src/main/java/io/entgra/device/mgt/core/tenant/mgt/core/impl/TenantManagerImpl.java b/components/tenant-mgt/io.entgra.device.mgt.core.tenant.mgt.core/src/main/java/io/entgra/device/mgt/core/tenant/mgt/core/impl/TenantManagerImpl.java index 00cdc801be..888036df0b 100644 --- a/components/tenant-mgt/io.entgra.device.mgt.core.tenant.mgt.core/src/main/java/io/entgra/device/mgt/core/tenant/mgt/core/impl/TenantManagerImpl.java +++ b/components/tenant-mgt/io.entgra.device.mgt.core.tenant.mgt.core/src/main/java/io/entgra/device/mgt/core/tenant/mgt/core/impl/TenantManagerImpl.java @@ -113,7 +113,7 @@ public class TenantManagerImpl implements TenantManager { initTenantFlow(tenantInfoBean); try { TenantMgtDataHolder.getInstance().getDeviceStatusManagementService(). - addDefaultDeviceStatusFilterIfNotExist(tenantInfoBean.getTenantId()); + addDefaultDeviceStatusFilterIfNotExist(); } catch (MetadataManagementException e) { String msg = "Error occurred while adding default device status filter"; log.error(msg, e); diff --git a/components/tenant-mgt/io.entgra.device.mgt.core.tenant.mgt.core/src/main/java/io/entgra/device/mgt/core/tenant/mgt/core/internal/TenantMgtServiceComponent.java b/components/tenant-mgt/io.entgra.device.mgt.core.tenant.mgt.core/src/main/java/io/entgra/device/mgt/core/tenant/mgt/core/internal/TenantMgtServiceComponent.java index fa2f26c972..10d02e699a 100644 --- a/components/tenant-mgt/io.entgra.device.mgt.core.tenant.mgt.core/src/main/java/io/entgra/device/mgt/core/tenant/mgt/core/internal/TenantMgtServiceComponent.java +++ b/components/tenant-mgt/io.entgra.device.mgt.core.tenant.mgt.core/src/main/java/io/entgra/device/mgt/core/tenant/mgt/core/internal/TenantMgtServiceComponent.java @@ -66,7 +66,7 @@ public class TenantMgtServiceComponent { componentContext.getBundleContext().registerService(WhiteLabelManagementServiceImpl.class.getName(), whiteLabelManagementService, null); TenantMgtDataHolder.getInstance().setWhiteLabelManagementService(whiteLabelManagementService); - DeviceStatusManagementService deviceStatusManagementService = new DeviceStatusManagementServiceImpl(); + DeviceStatusManagementService deviceStatusManagementService = DeviceStatusManagementServiceImpl.getInstance(); componentContext.getBundleContext().registerService(DeviceStatusManagementService.class.getName(), deviceStatusManagementService, null); TenantMgtDataHolder.getInstance().setDeviceStatusManagementService(deviceStatusManagementService);