From 7b41e2cd0d5c631f58e764ffb35e2de683efbb95 Mon Sep 17 00:00:00 2001 From: "tcdlpds@gmail.com" Date: Sat, 6 Feb 2021 19:34:10 +0530 Subject: [PATCH 1/4] Fix EULA loading issue for tenants Fix registry loading issue when SSO has enabled. Because of that issue device type EULA displaying page is broken --- .../common/spi/DeviceManagementService.java | 2 + .../DeviceManagementProviderService.java | 2 + .../DeviceManagementProviderServiceImpl.java | 14 ++ .../mgt/core/TestDeviceManagementService.java | 3 + .../pom.xml | 6 + .../type/template/DeviceTypeManager.java | 17 +-- .../template/DeviceTypeManagerService.java | 20 +++ .../util/DeviceTypePluginConstants.java | 2 + .../DeviceTypeExtensionDataHolder.java | 32 +++++ .../MetaRepositoryBasedLicenseManager.java | 121 ++++++++++++++++++ .../mock/TypeXDeviceManagementService.java | 3 + .../src/main/resources/dbscripts/cdm/h2.sql | 2 +- .../main/resources/dbscripts/cdm/mssql.sql | 2 +- .../main/resources/dbscripts/cdm/mysql.sql | 2 +- .../main/resources/dbscripts/cdm/oracle.sql | 2 +- .../resources/dbscripts/cdm/postgresql.sql | 2 +- 16 files changed, 214 insertions(+), 18 deletions(-) create mode 100644 components/device-mgt/org.wso2.carbon.device.mgt.extensions/src/main/java/org/wso2/carbon/device/mgt/extensions/license/mgt/meta/data/MetaRepositoryBasedLicenseManager.java diff --git a/components/device-mgt/org.wso2.carbon.device.mgt.common/src/main/java/org/wso2/carbon/device/mgt/common/spi/DeviceManagementService.java b/components/device-mgt/org.wso2.carbon.device.mgt.common/src/main/java/org/wso2/carbon/device/mgt/common/spi/DeviceManagementService.java index e6f33f85de..620ac7ce7e 100644 --- a/components/device-mgt/org.wso2.carbon.device.mgt.common/src/main/java/org/wso2/carbon/device/mgt/common/spi/DeviceManagementService.java +++ b/components/device-mgt/org.wso2.carbon.device.mgt.common/src/main/java/org/wso2/carbon/device/mgt/common/spi/DeviceManagementService.java @@ -39,6 +39,7 @@ import org.wso2.carbon.device.mgt.common.app.mgt.ApplicationManager; import org.wso2.carbon.device.mgt.common.exceptions.DeviceManagementException; import org.wso2.carbon.device.mgt.common.general.GeneralConfig; import org.wso2.carbon.device.mgt.common.invitation.mgt.DeviceEnrollmentInvitationDetails; +import org.wso2.carbon.device.mgt.common.license.mgt.License; import org.wso2.carbon.device.mgt.common.policy.mgt.PolicyMonitoringManager; import org.wso2.carbon.device.mgt.common.pull.notification.PullNotificationSubscriber; import org.wso2.carbon.device.mgt.common.push.notification.PushNotificationConfig; @@ -80,4 +81,5 @@ public interface DeviceManagementService { DeviceEnrollmentInvitationDetails getDeviceEnrollmentInvitationDetails(); + License getLicenseConfig(); } 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 03579f65b3..efc4c930e3 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 @@ -964,4 +964,6 @@ public interface DeviceManagementProviderService { int getActivitiesCount(ActivityPaginationRequest activityPaginationRequest) throws OperationManagementException; + License getLicenseConfig (String deviceTypeName) 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 769aad8583..0bbbb8a607 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 @@ -4349,4 +4349,18 @@ public class DeviceManagementProviderServiceImpl implements DeviceManagementProv DeviceManagementDAOFactory.closeConnection(); } } + + @Override + public License getLicenseConfig (String deviceTypeName) throws DeviceManagementException { + DeviceManagementService deviceManagementService = + pluginRepository.getDeviceManagementService(deviceTypeName, + this.getTenantId()); + if (deviceManagementService == null) { + String msg = "Device management service loading is failed for the device type: " + deviceTypeName; + log.error(msg); + throw new DeviceManagementException(msg); + } + return deviceManagementService.getLicenseConfig(); + } + } diff --git a/components/device-mgt/org.wso2.carbon.device.mgt.core/src/test/java/org/wso2/carbon/device/mgt/core/TestDeviceManagementService.java b/components/device-mgt/org.wso2.carbon.device.mgt.core/src/test/java/org/wso2/carbon/device/mgt/core/TestDeviceManagementService.java index c3789d47fa..46e50f8bf1 100644 --- a/components/device-mgt/org.wso2.carbon.device.mgt.core/src/test/java/org/wso2/carbon/device/mgt/core/TestDeviceManagementService.java +++ b/components/device-mgt/org.wso2.carbon.device.mgt.core/src/test/java/org/wso2/carbon/device/mgt/core/TestDeviceManagementService.java @@ -38,6 +38,7 @@ import org.wso2.carbon.device.mgt.common.app.mgt.ApplicationManager; import org.wso2.carbon.device.mgt.common.exceptions.DeviceManagementException; import org.wso2.carbon.device.mgt.common.general.GeneralConfig; import org.wso2.carbon.device.mgt.common.invitation.mgt.DeviceEnrollmentInvitationDetails; +import org.wso2.carbon.device.mgt.common.license.mgt.License; import org.wso2.carbon.device.mgt.common.policy.mgt.PolicyMonitoringManager; import org.wso2.carbon.device.mgt.common.pull.notification.PullNotificationSubscriber; import org.wso2.carbon.device.mgt.common.push.notification.PushNotificationConfig; @@ -148,4 +149,6 @@ public class TestDeviceManagementService implements DeviceManagementService { public DeviceEnrollmentInvitationDetails getDeviceEnrollmentInvitationDetails() { return null; } + + @Override public License getLicenseConfig() { return null; } } diff --git a/components/device-mgt/org.wso2.carbon.device.mgt.extensions/pom.xml b/components/device-mgt/org.wso2.carbon.device.mgt.extensions/pom.xml index d9feeb366d..5f522a4109 100644 --- a/components/device-mgt/org.wso2.carbon.device.mgt.extensions/pom.xml +++ b/components/device-mgt/org.wso2.carbon.device.mgt.extensions/pom.xml @@ -50,6 +50,10 @@ org.wso2.carbon.devicemgt org.wso2.carbon.device.mgt.common + + org.wso2.carbon.devicemgt + org.wso2.carbon.device.mgt.core + org.apache.ws.commons.axiom.wso2 axiom @@ -180,6 +184,8 @@ org.wso2.carbon.registry.core.service, org.wso2.carbon.utils.dbcreator, org.wso2.carbon.utils.multitenancy, + org.wso2.carbon.device.mgt.core.service, + com.google.gson, org.osgi.framework org.wso2.carbon.device.mgt.extensions.pull.notification, diff --git a/components/device-mgt/org.wso2.carbon.device.mgt.extensions/src/main/java/org/wso2/carbon/device/mgt/extensions/device/type/template/DeviceTypeManager.java b/components/device-mgt/org.wso2.carbon.device.mgt.extensions/src/main/java/org/wso2/carbon/device/mgt/extensions/device/type/template/DeviceTypeManager.java index 3805fd09d3..cfb86df3f9 100644 --- a/components/device-mgt/org.wso2.carbon.device.mgt.extensions/src/main/java/org/wso2/carbon/device/mgt/extensions/device/type/template/DeviceTypeManager.java +++ b/components/device-mgt/org.wso2.carbon.device.mgt.extensions/src/main/java/org/wso2/carbon/device/mgt/extensions/device/type/template/DeviceTypeManager.java @@ -64,7 +64,7 @@ import org.wso2.carbon.device.mgt.extensions.device.type.template.exception.Devi import org.wso2.carbon.device.mgt.extensions.device.type.template.feature.ConfigurationBasedFeatureManager; import org.wso2.carbon.device.mgt.extensions.device.type.template.util.DeviceTypePluginConstants; import org.wso2.carbon.device.mgt.extensions.device.type.template.util.DeviceTypeUtils; -import org.wso2.carbon.device.mgt.extensions.license.mgt.registry.RegistryBasedLicenseManager; +import org.wso2.carbon.device.mgt.extensions.license.mgt.meta.data.MetaRepositoryBasedLicenseManager; import org.wso2.carbon.device.mgt.extensions.spi.DeviceTypePluginExtensionService; import org.wso2.carbon.registry.api.RegistryException; import org.wso2.carbon.registry.api.Resource; @@ -121,20 +121,11 @@ public class DeviceTypeManager implements DeviceManager { requiredDeviceTypeAuthorization = true; } //add license to registry. - this.licenseManager = new RegistryBasedLicenseManager(); + this.licenseManager = new MetaRepositoryBasedLicenseManager(); try { - if (licenseManager.getLicense(deviceType, DeviceTypePluginConstants.LANGUAGE_CODE_ENGLISH_US) == null) { - - if (deviceTypeConfiguration.getLicense() != null) { - License defaultLicense = new License(); - defaultLicense.setLanguage(deviceTypeConfiguration.getLicense().getLanguage()); - defaultLicense.setVersion(deviceTypeConfiguration.getLicense().getVersion()); - defaultLicense.setText(deviceTypeConfiguration.getLicense().getText()); - licenseManager.addLicense(deviceType, defaultLicense); - } - } + licenseManager.getLicense(deviceType, DeviceTypePluginConstants.LANGUAGE_CODE_ENGLISH_US); } catch (LicenseManagementException e) { - String msg = "Error occurred while adding default license for " + deviceType + " devices."; + String msg = "Error occurred while loading license of device type: " + deviceType; throw new DeviceTypeDeployerPayloadException(msg, e); } diff --git a/components/device-mgt/org.wso2.carbon.device.mgt.extensions/src/main/java/org/wso2/carbon/device/mgt/extensions/device/type/template/DeviceTypeManagerService.java b/components/device-mgt/org.wso2.carbon.device.mgt.extensions/src/main/java/org/wso2/carbon/device/mgt/extensions/device/type/template/DeviceTypeManagerService.java index 5896039d99..587752458d 100644 --- a/components/device-mgt/org.wso2.carbon.device.mgt.extensions/src/main/java/org/wso2/carbon/device/mgt/extensions/device/type/template/DeviceTypeManagerService.java +++ b/components/device-mgt/org.wso2.carbon.device.mgt.extensions/src/main/java/org/wso2/carbon/device/mgt/extensions/device/type/template/DeviceTypeManagerService.java @@ -49,6 +49,7 @@ import org.wso2.carbon.device.mgt.common.configuration.mgt.ConfigurationEntry; import org.wso2.carbon.device.mgt.common.configuration.mgt.PlatformConfiguration; import org.wso2.carbon.device.mgt.common.general.GeneralConfig; import org.wso2.carbon.device.mgt.common.invitation.mgt.DeviceEnrollmentInvitationDetails; +import org.wso2.carbon.device.mgt.common.license.mgt.License; import org.wso2.carbon.device.mgt.common.policy.mgt.PolicyMonitoringManager; import org.wso2.carbon.device.mgt.common.pull.notification.PullNotificationSubscriber; import org.wso2.carbon.device.mgt.common.push.notification.PushNotificationConfig; @@ -90,6 +91,7 @@ public class DeviceTypeManagerService implements DeviceManagementService { private PolicyMonitoringManager policyMonitoringManager; private final InitialOperationConfig initialOperationConfig; private StartupOperationConfig startupOperationConfig; + private License licenseConfig; private PullNotificationSubscriber pullNotificationSubscriber; private final DeviceStatusTaskPluginConfig deviceStatusTaskPluginConfig; private DeviceTypePlatformDetails deviceTypePlatformDetails; @@ -120,6 +122,8 @@ public class DeviceTypeManagerService implements DeviceManagementService { this.setGeneralConfig(deviceTypeConfiguration); this.deviceEnrollmentInvitationDetails = new DeviceEnrollmentInvitationDetails(); this.setDeviceEnrollmentInvitationDetails(deviceTypeConfiguration); + this.licenseConfig = new License(); + this.setLicenseConfig(deviceTypeConfiguration); } @Override @@ -268,6 +272,11 @@ public class DeviceTypeManagerService implements DeviceManagementService { return deviceEnrollmentInvitationDetails; } + @Override + public License getLicenseConfig() { + return licenseConfig; + } + private void setProvisioningConfig(String tenantDomain, DeviceTypeConfiguration deviceTypeConfiguration) { if (deviceTypeConfiguration.getProvisioningConfig() != null) { boolean sharedWithAllTenants = deviceTypeConfiguration.getProvisioningConfig().isSharedWithAllTenants(); @@ -372,4 +381,15 @@ public class DeviceTypeManagerService implements DeviceManagementService { deviceEnrollmentInvitationDetailsFromConfig.getEnrollmentDetails()); } } + + public void setLicenseConfig(DeviceTypeConfiguration deviceTypeConfiguration) { + org.wso2.carbon.device.mgt.extensions.device.type.template.config.License license = deviceTypeConfiguration + .getLicense(); + if (license != null) { + licenseConfig.setName(deviceTypeConfiguration.getName()); + licenseConfig.setLanguage(license.getLanguage()); + licenseConfig.setVersion(license.getVersion()); + licenseConfig.setText(license.getText()); + } + } } diff --git a/components/device-mgt/org.wso2.carbon.device.mgt.extensions/src/main/java/org/wso2/carbon/device/mgt/extensions/device/type/template/util/DeviceTypePluginConstants.java b/components/device-mgt/org.wso2.carbon.device.mgt.extensions/src/main/java/org/wso2/carbon/device/mgt/extensions/device/type/template/util/DeviceTypePluginConstants.java index 140ff44cbe..93c83cf3e0 100644 --- a/components/device-mgt/org.wso2.carbon.device.mgt.extensions/src/main/java/org/wso2/carbon/device/mgt/extensions/device/type/template/util/DeviceTypePluginConstants.java +++ b/components/device-mgt/org.wso2.carbon.device.mgt.extensions/src/main/java/org/wso2/carbon/device/mgt/extensions/device/type/template/util/DeviceTypePluginConstants.java @@ -24,4 +24,6 @@ package org.wso2.carbon.device.mgt.extensions.device.type.template.util; public class DeviceTypePluginConstants { public static final String MEDIA_TYPE_XML = "application/xml"; public static final String LANGUAGE_CODE_ENGLISH_US = "en_US"; + public static final String UNDERSCORE = "_"; + public static final String LICENCE_META_KEY_SUFFIX = "_Licence_"; } diff --git a/components/device-mgt/org.wso2.carbon.device.mgt.extensions/src/main/java/org/wso2/carbon/device/mgt/extensions/internal/DeviceTypeExtensionDataHolder.java b/components/device-mgt/org.wso2.carbon.device.mgt.extensions/src/main/java/org/wso2/carbon/device/mgt/extensions/internal/DeviceTypeExtensionDataHolder.java index 69ac6b5d97..639187bd44 100644 --- a/components/device-mgt/org.wso2.carbon.device.mgt.extensions/src/main/java/org/wso2/carbon/device/mgt/extensions/internal/DeviceTypeExtensionDataHolder.java +++ b/components/device-mgt/org.wso2.carbon.device.mgt.extensions/src/main/java/org/wso2/carbon/device/mgt/extensions/internal/DeviceTypeExtensionDataHolder.java @@ -18,6 +18,10 @@ */ package org.wso2.carbon.device.mgt.extensions.internal; +import org.wso2.carbon.context.PrivilegedCarbonContext; +import org.wso2.carbon.device.mgt.common.metadata.mgt.MetadataManagementService; +import org.wso2.carbon.device.mgt.common.spi.DeviceTypeGeneratorService; +import org.wso2.carbon.device.mgt.core.service.DeviceManagementProviderService; import org.wso2.carbon.registry.core.service.RegistryService; /** @@ -26,6 +30,8 @@ import org.wso2.carbon.registry.core.service.RegistryService; public class DeviceTypeExtensionDataHolder { private RegistryService registryService; + private MetadataManagementService metadataManagementService; + private DeviceManagementProviderService deviceManagementProviderService; private static DeviceTypeExtensionDataHolder thisInstance = new DeviceTypeExtensionDataHolder(); @@ -42,4 +48,30 @@ public class DeviceTypeExtensionDataHolder { public void setRegistryService(RegistryService registryService) { this.registryService = registryService; } + + public MetadataManagementService getMetadataManagementService() { + if (metadataManagementService == null) { + PrivilegedCarbonContext ctx = PrivilegedCarbonContext.getThreadLocalCarbonContext(); + metadataManagementService = (MetadataManagementService) + ctx.getOSGiService(MetadataManagementService.class, null); + } + return metadataManagementService; + } + + public void setMetadataManagementService(MetadataManagementService metadataManagementService) { + this.metadataManagementService = metadataManagementService; + } + + public DeviceManagementProviderService getDeviceManagementProviderService() { + if (deviceManagementProviderService == null) { + PrivilegedCarbonContext ctx = PrivilegedCarbonContext.getThreadLocalCarbonContext(); + deviceManagementProviderService = (DeviceManagementProviderService) + ctx.getOSGiService(DeviceManagementProviderService.class, null); + } + return deviceManagementProviderService; + } + + public void setDeviceManagementProviderService(DeviceManagementProviderService deviceManagementProviderService) { + this.deviceManagementProviderService = deviceManagementProviderService; + } } diff --git a/components/device-mgt/org.wso2.carbon.device.mgt.extensions/src/main/java/org/wso2/carbon/device/mgt/extensions/license/mgt/meta/data/MetaRepositoryBasedLicenseManager.java b/components/device-mgt/org.wso2.carbon.device.mgt.extensions/src/main/java/org/wso2/carbon/device/mgt/extensions/license/mgt/meta/data/MetaRepositoryBasedLicenseManager.java new file mode 100644 index 0000000000..8760a1f2d1 --- /dev/null +++ b/components/device-mgt/org.wso2.carbon.device.mgt.extensions/src/main/java/org/wso2/carbon/device/mgt/extensions/license/mgt/meta/data/MetaRepositoryBasedLicenseManager.java @@ -0,0 +1,121 @@ +/* + * Copyright (c) 2021, Entgra (Pvt) Ltd. (http://www.entgra.io) All Rights Reserved. + * + * Entgra (Pvt) Ltd. licenses this file to you under the Apache License, + * Version 2.0 (the "License"); you may not use this file except + * in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, + * software distributed under the License is distributed on an + * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY + * KIND, either express or implied. See the License for the + * specific language governing permissions and limitations + * under the License. + */ + +package org.wso2.carbon.device.mgt.extensions.license.mgt.meta.data; + +import com.google.gson.Gson; +import org.apache.commons.lang.StringUtils; +import org.apache.commons.logging.Log; +import org.apache.commons.logging.LogFactory; +import org.wso2.carbon.context.PrivilegedCarbonContext; +import org.wso2.carbon.device.mgt.common.exceptions.DeviceManagementException; +import org.wso2.carbon.device.mgt.common.exceptions.MetadataKeyAlreadyExistsException; +import org.wso2.carbon.device.mgt.common.exceptions.MetadataManagementException; +import org.wso2.carbon.device.mgt.common.license.mgt.License; +import org.wso2.carbon.device.mgt.common.license.mgt.LicenseManagementException; +import org.wso2.carbon.device.mgt.common.license.mgt.LicenseManager; +import org.wso2.carbon.device.mgt.common.metadata.mgt.Metadata; +import org.wso2.carbon.device.mgt.common.metadata.mgt.MetadataManagementService; +import org.wso2.carbon.device.mgt.core.dto.DeviceType; +import org.wso2.carbon.device.mgt.core.service.DeviceManagementProviderService; +import org.wso2.carbon.device.mgt.core.util.DeviceManagerUtil; +import org.wso2.carbon.device.mgt.extensions.device.type.template.util.DeviceTypePluginConstants; +import org.wso2.carbon.device.mgt.extensions.internal.DeviceTypeExtensionDataHolder; + +public class MetaRepositoryBasedLicenseManager implements LicenseManager { + + private static final Log log = LogFactory.getLog(MetaRepositoryBasedLicenseManager.class); + + @Override + public License getLicense(String deviceType, String languageCode) throws LicenseManagementException { + MetadataManagementService metadataManagementService = DeviceTypeExtensionDataHolder.getInstance() + .getMetadataManagementService(); + String licenceKey = PrivilegedCarbonContext.getThreadLocalCarbonContext().getTenantDomain() + + DeviceTypePluginConstants.UNDERSCORE + deviceType + DeviceTypePluginConstants.LICENCE_META_KEY_SUFFIX + + languageCode; + + try { + Metadata metadata = metadataManagementService.retrieveMetadata(licenceKey); + if (metadata == null) { + DeviceType deviceTypeData = DeviceManagerUtil + .getDeviceType(deviceType, PrivilegedCarbonContext.getThreadLocalCarbonContext().getTenantId()); + + DeviceManagementProviderService deviceManagementProviderService = DeviceTypeExtensionDataHolder + .getInstance().getDeviceManagementProviderService(); + + License license = deviceManagementProviderService.getLicenseConfig(deviceTypeData.getName()); + + if (!StringUtils.isBlank(license.getLanguage()) || !StringUtils.isBlank(license.getName()) + || !StringUtils.isBlank(license.getText()) || !StringUtils.isBlank(license.getVersion())) { + addLicense(deviceTypeData.getName(), license); + return license; + } else { + license = new License(); + license.setName(deviceType); + license.setVersion("1.0.0"); + license.setLanguage("en_US"); + license.setText("This is license text"); + addLicense(deviceTypeData.getName(), license); + return license; + } + } + Gson g = new Gson(); + return g.fromJson(metadata.getMetaValue(), License.class); + } catch (MetadataManagementException e) { + String msg = "Error occurred while accessing meta data service to store licence data"; + log.error(msg, e); + throw new LicenseManagementException(msg, e); + } catch (DeviceManagementException e) { + String msg = "Error occurred while getting device details."; + log.error(msg, e); + throw new LicenseManagementException(msg, e); } + } + + @Override + public void addLicense(String deviceType, License license) throws LicenseManagementException { + + String languageCode = license.getLanguage(); + if (StringUtils.isBlank(languageCode)) { + languageCode = DeviceTypePluginConstants.LANGUAGE_CODE_ENGLISH_US; + } + + String licenceKey = PrivilegedCarbonContext.getThreadLocalCarbonContext().getTenantDomain() + + DeviceTypePluginConstants.UNDERSCORE + deviceType + DeviceTypePluginConstants.LICENCE_META_KEY_SUFFIX + + languageCode; + + Metadata metadata = new Metadata(); + metadata.setMetaKey(licenceKey); + metadata.setMetaValue(new Gson().toJson(license)); + + MetadataManagementService metadataManagementService = DeviceTypeExtensionDataHolder.getInstance() + .getMetadataManagementService(); + try { + metadataManagementService.createMetadata(metadata); + } catch (MetadataManagementException e) { + String msg = "Error occurred while saving the licence value in meta data repository"; + log.error(msg, e); + throw new LicenseManagementException(msg, e); + } catch (MetadataKeyAlreadyExistsException e) { + String msg = + "Error occurred while saving the licence key and licence key exist. Licence Key: " + licenceKey; + log.error(msg, e); + throw new LicenseManagementException(msg, e); + } + + } +} diff --git a/components/policy-mgt/org.wso2.carbon.policy.mgt.core/src/test/java/org/wso2/carbon/policy/mgt/core/mock/TypeXDeviceManagementService.java b/components/policy-mgt/org.wso2.carbon.policy.mgt.core/src/test/java/org/wso2/carbon/policy/mgt/core/mock/TypeXDeviceManagementService.java index de7a16c0b1..e42735fcc2 100644 --- a/components/policy-mgt/org.wso2.carbon.policy.mgt.core/src/test/java/org/wso2/carbon/policy/mgt/core/mock/TypeXDeviceManagementService.java +++ b/components/policy-mgt/org.wso2.carbon.policy.mgt.core/src/test/java/org/wso2/carbon/policy/mgt/core/mock/TypeXDeviceManagementService.java @@ -45,6 +45,7 @@ import org.wso2.carbon.device.mgt.common.StartupOperationConfig; import org.wso2.carbon.device.mgt.common.app.mgt.ApplicationManager; import org.wso2.carbon.device.mgt.common.general.GeneralConfig; import org.wso2.carbon.device.mgt.common.invitation.mgt.DeviceEnrollmentInvitationDetails; +import org.wso2.carbon.device.mgt.common.license.mgt.License; import org.wso2.carbon.device.mgt.common.policy.mgt.PolicyMonitoringManager; import org.wso2.carbon.device.mgt.common.pull.notification.PullNotificationSubscriber; import org.wso2.carbon.device.mgt.common.push.notification.PushNotificationConfig; @@ -137,4 +138,6 @@ public class TypeXDeviceManagementService implements DeviceManagementService { public DeviceEnrollmentInvitationDetails getDeviceEnrollmentInvitationDetails() { return null; } + + @Override public License getLicenseConfig() { return null; } } diff --git a/features/device-mgt/org.wso2.carbon.device.mgt.basics.feature/src/main/resources/dbscripts/cdm/h2.sql b/features/device-mgt/org.wso2.carbon.device.mgt.basics.feature/src/main/resources/dbscripts/cdm/h2.sql index 2de968cb81..a45ec56bb2 100644 --- a/features/device-mgt/org.wso2.carbon.device.mgt.basics.feature/src/main/resources/dbscripts/cdm/h2.sql +++ b/features/device-mgt/org.wso2.carbon.device.mgt.basics.feature/src/main/resources/dbscripts/cdm/h2.sql @@ -568,7 +568,7 @@ CREATE TABLE IF NOT EXISTS DM_METADATA ( METADATA_ID INT AUTO_INCREMENT NOT NULL, DATA_TYPE VARCHAR(16) NOT NULL, METADATA_KEY VARCHAR(128) NOT NULL, - METADATA_VALUE VARCHAR(512) NOT NULL, + METADATA_VALUE VARCHAR(4000) NOT NULL, TENANT_ID INTEGER NOT NULL, PRIMARY KEY (METADATA_ID), CONSTRAINT METADATA_KEY_TENANT_ID UNIQUE (METADATA_KEY, TENANT_ID) diff --git a/features/device-mgt/org.wso2.carbon.device.mgt.basics.feature/src/main/resources/dbscripts/cdm/mssql.sql b/features/device-mgt/org.wso2.carbon.device.mgt.basics.feature/src/main/resources/dbscripts/cdm/mssql.sql index 28f36b63ff..1face03ab3 100644 --- a/features/device-mgt/org.wso2.carbon.device.mgt.basics.feature/src/main/resources/dbscripts/cdm/mssql.sql +++ b/features/device-mgt/org.wso2.carbon.device.mgt.basics.feature/src/main/resources/dbscripts/cdm/mssql.sql @@ -609,7 +609,7 @@ CREATE TABLE DM_METADATA ( METADATA_ID INTEGER IDENTITY(1,1) NOT NULL, DATA_TYPE VARCHAR(16) NOT NULL, METADATA_KEY VARCHAR(128) NOT NULL, - METADATA_VALUE VARCHAR(512) NOT NULL, + METADATA_VALUE VARCHAR(4000) NOT NULL, TENANT_ID INTEGER NOT NULL, PRIMARY KEY (METADATA_ID), CONSTRAINT METADATA_KEY_TENANT_ID UNIQUE(METADATA_KEY, TENANT_ID) diff --git a/features/device-mgt/org.wso2.carbon.device.mgt.basics.feature/src/main/resources/dbscripts/cdm/mysql.sql b/features/device-mgt/org.wso2.carbon.device.mgt.basics.feature/src/main/resources/dbscripts/cdm/mysql.sql index 56cb0022b3..8d0f511b95 100644 --- a/features/device-mgt/org.wso2.carbon.device.mgt.basics.feature/src/main/resources/dbscripts/cdm/mysql.sql +++ b/features/device-mgt/org.wso2.carbon.device.mgt.basics.feature/src/main/resources/dbscripts/cdm/mysql.sql @@ -625,7 +625,7 @@ CREATE TABLE IF NOT EXISTS DM_METADATA ( METADATA_ID INTEGER NOT NULL AUTO_INCREMENT, DATA_TYPE VARCHAR(16) NOT NULL, METADATA_KEY VARCHAR(128) NOT NULL, - METADATA_VALUE VARCHAR(512) NOT NULL, + METADATA_VALUE VARCHAR(4000) NOT NULL, TENANT_ID INTEGER NOT NULL, PRIMARY KEY (METADATA_ID), UNIQUE KEY METADATA_KEY_TENANT_ID (METADATA_KEY,TENANT_ID) diff --git a/features/device-mgt/org.wso2.carbon.device.mgt.basics.feature/src/main/resources/dbscripts/cdm/oracle.sql b/features/device-mgt/org.wso2.carbon.device.mgt.basics.feature/src/main/resources/dbscripts/cdm/oracle.sql index 42b32d5ab2..ee40ecf4f5 100644 --- a/features/device-mgt/org.wso2.carbon.device.mgt.basics.feature/src/main/resources/dbscripts/cdm/oracle.sql +++ b/features/device-mgt/org.wso2.carbon.device.mgt.basics.feature/src/main/resources/dbscripts/cdm/oracle.sql @@ -959,7 +959,7 @@ CREATE TABLE DM_METADATA ( METADATA_ID NUMBER(10) NOT NULL, DATA_TYPE VARCHAR2(16) NOT NULL, METADATA_KEY VARCHAR2(128) NOT NULL, - METADATA_VALUE VARCHAR2(512) NOT NULL, + METADATA_VALUE VARCHAR2(4000) NOT NULL, TENANT_ID INTEGER NOT NULL, CONSTRAINT PK_DM_METADATA PRIMARY KEY (METADATA_ID), CONSTRAINT METADATA_KEY_TENANT_ID UNIQUE (METADATA_KEY, TENANT_ID) diff --git a/features/device-mgt/org.wso2.carbon.device.mgt.basics.feature/src/main/resources/dbscripts/cdm/postgresql.sql b/features/device-mgt/org.wso2.carbon.device.mgt.basics.feature/src/main/resources/dbscripts/cdm/postgresql.sql index 9e3408577a..814b88c05b 100644 --- a/features/device-mgt/org.wso2.carbon.device.mgt.basics.feature/src/main/resources/dbscripts/cdm/postgresql.sql +++ b/features/device-mgt/org.wso2.carbon.device.mgt.basics.feature/src/main/resources/dbscripts/cdm/postgresql.sql @@ -625,7 +625,7 @@ CREATE TABLE IF NOT EXISTS DM_METADATA ( METADATA_ID BIGSERIAL PRIMARY KEY, DATA_TYPE VARCHAR(16) NOT NULL, METADATA_KEY VARCHAR(128) NOT NULL, - METADATA_VALUE VARCHAR(512) NOT NULL, + METADATA_VALUE VARCHAR(4000) NOT NULL, TENANT_ID INTEGER NOT NULL, CONSTRAINT METADATA_KEY_TENANT_ID UNIQUE(METADATA_KEY, TENANT_ID) ); From 175205b95944b6d31e099d78bf687c5fec69c89b Mon Sep 17 00:00:00 2001 From: "tcdlpds@gmail.com" Date: Tue, 9 Feb 2021 10:36:23 +0530 Subject: [PATCH 2/4] Fix build failure --- .../mgt/core/impl/ApplicationManagerImpl.java | 3 +- .../DeviceTypeExtensionDataHolder.java | 1 - .../MetaRepositoryBasedLicenseManager.java | 25 ++-- .../extensions/common/DataSourceConfig.java | 76 ++++++++++ .../type/template/BaseExtensionsTest.java | 92 ++++++++++++- .../DeviceTypeManagerNegativeTest.java | 5 +- .../mock/TypeXDeviceManagementService.java | 127 +++++++++++++++++ .../extensions/mock/TypeXDeviceManager.java | 130 ++++++++++++++++++ .../conf/datasource/data-source-config.xml | 33 +++++ .../src/test/resources/sql-files/h2.sql | 12 ++ .../mock/TypeXDeviceManagementService.java | 3 +- 11 files changed, 487 insertions(+), 20 deletions(-) create mode 100644 components/device-mgt/org.wso2.carbon.device.mgt.extensions/src/test/java/org/wso2/carbon/device/mgt/extensions/common/DataSourceConfig.java create mode 100644 components/device-mgt/org.wso2.carbon.device.mgt.extensions/src/test/java/org/wso2/carbon/device/mgt/extensions/mock/TypeXDeviceManagementService.java create mode 100644 components/device-mgt/org.wso2.carbon.device.mgt.extensions/src/test/java/org/wso2/carbon/device/mgt/extensions/mock/TypeXDeviceManager.java create mode 100644 components/device-mgt/org.wso2.carbon.device.mgt.extensions/src/test/resources/carbon-home/repository/conf/datasource/data-source-config.xml diff --git a/components/application-mgt/org.wso2.carbon.device.application.mgt.core/src/main/java/org/wso2/carbon/device/application/mgt/core/impl/ApplicationManagerImpl.java b/components/application-mgt/org.wso2.carbon.device.application.mgt.core/src/main/java/org/wso2/carbon/device/application/mgt/core/impl/ApplicationManagerImpl.java index b7b32ca34d..2cebd98c61 100644 --- a/components/application-mgt/org.wso2.carbon.device.application.mgt.core/src/main/java/org/wso2/carbon/device/application/mgt/core/impl/ApplicationManagerImpl.java +++ b/components/application-mgt/org.wso2.carbon.device.application.mgt.core/src/main/java/org/wso2/carbon/device/application/mgt/core/impl/ApplicationManagerImpl.java @@ -109,7 +109,8 @@ import java.util.stream.Stream; /** * Default Concrete implementation of Application Management related implementations. */ -public class ApplicationManagerImpl implements ApplicationManager { +public class +ApplicationManagerImpl implements ApplicationManager { private static final Log log = LogFactory.getLog(ApplicationManagerImpl.class); private VisibilityDAO visibilityDAO; diff --git a/components/device-mgt/org.wso2.carbon.device.mgt.extensions/src/main/java/org/wso2/carbon/device/mgt/extensions/internal/DeviceTypeExtensionDataHolder.java b/components/device-mgt/org.wso2.carbon.device.mgt.extensions/src/main/java/org/wso2/carbon/device/mgt/extensions/internal/DeviceTypeExtensionDataHolder.java index 639187bd44..663d34bfbf 100644 --- a/components/device-mgt/org.wso2.carbon.device.mgt.extensions/src/main/java/org/wso2/carbon/device/mgt/extensions/internal/DeviceTypeExtensionDataHolder.java +++ b/components/device-mgt/org.wso2.carbon.device.mgt.extensions/src/main/java/org/wso2/carbon/device/mgt/extensions/internal/DeviceTypeExtensionDataHolder.java @@ -20,7 +20,6 @@ package org.wso2.carbon.device.mgt.extensions.internal; import org.wso2.carbon.context.PrivilegedCarbonContext; import org.wso2.carbon.device.mgt.common.metadata.mgt.MetadataManagementService; -import org.wso2.carbon.device.mgt.common.spi.DeviceTypeGeneratorService; import org.wso2.carbon.device.mgt.core.service.DeviceManagementProviderService; import org.wso2.carbon.registry.core.service.RegistryService; diff --git a/components/device-mgt/org.wso2.carbon.device.mgt.extensions/src/main/java/org/wso2/carbon/device/mgt/extensions/license/mgt/meta/data/MetaRepositoryBasedLicenseManager.java b/components/device-mgt/org.wso2.carbon.device.mgt.extensions/src/main/java/org/wso2/carbon/device/mgt/extensions/license/mgt/meta/data/MetaRepositoryBasedLicenseManager.java index 8760a1f2d1..2b5aab2f36 100644 --- a/components/device-mgt/org.wso2.carbon.device.mgt.extensions/src/main/java/org/wso2/carbon/device/mgt/extensions/license/mgt/meta/data/MetaRepositoryBasedLicenseManager.java +++ b/components/device-mgt/org.wso2.carbon.device.mgt.extensions/src/main/java/org/wso2/carbon/device/mgt/extensions/license/mgt/meta/data/MetaRepositoryBasedLicenseManager.java @@ -31,9 +31,7 @@ import org.wso2.carbon.device.mgt.common.license.mgt.LicenseManagementException; import org.wso2.carbon.device.mgt.common.license.mgt.LicenseManager; import org.wso2.carbon.device.mgt.common.metadata.mgt.Metadata; import org.wso2.carbon.device.mgt.common.metadata.mgt.MetadataManagementService; -import org.wso2.carbon.device.mgt.core.dto.DeviceType; import org.wso2.carbon.device.mgt.core.service.DeviceManagementProviderService; -import org.wso2.carbon.device.mgt.core.util.DeviceManagerUtil; import org.wso2.carbon.device.mgt.extensions.device.type.template.util.DeviceTypePluginConstants; import org.wso2.carbon.device.mgt.extensions.internal.DeviceTypeExtensionDataHolder; @@ -52,17 +50,15 @@ public class MetaRepositoryBasedLicenseManager implements LicenseManager { try { Metadata metadata = metadataManagementService.retrieveMetadata(licenceKey); if (metadata == null) { - DeviceType deviceTypeData = DeviceManagerUtil - .getDeviceType(deviceType, PrivilegedCarbonContext.getThreadLocalCarbonContext().getTenantId()); - DeviceManagementProviderService deviceManagementProviderService = DeviceTypeExtensionDataHolder .getInstance().getDeviceManagementProviderService(); - License license = deviceManagementProviderService.getLicenseConfig(deviceTypeData.getName()); + License license = deviceManagementProviderService.getLicenseConfig(deviceType); - if (!StringUtils.isBlank(license.getLanguage()) || !StringUtils.isBlank(license.getName()) - || !StringUtils.isBlank(license.getText()) || !StringUtils.isBlank(license.getVersion())) { - addLicense(deviceTypeData.getName(), license); + if (license != null && !StringUtils.isBlank(license.getLanguage()) && !StringUtils + .isBlank(license.getName()) && !StringUtils.isBlank(license.getText()) && !StringUtils + .isBlank(license.getVersion())) { + addLicense(deviceType, license); return license; } else { license = new License(); @@ -70,7 +66,7 @@ public class MetaRepositoryBasedLicenseManager implements LicenseManager { license.setVersion("1.0.0"); license.setLanguage("en_US"); license.setText("This is license text"); - addLicense(deviceTypeData.getName(), license); + addLicense(deviceType, license); return license; } } @@ -83,7 +79,8 @@ public class MetaRepositoryBasedLicenseManager implements LicenseManager { } catch (DeviceManagementException e) { String msg = "Error occurred while getting device details."; log.error(msg, e); - throw new LicenseManagementException(msg, e); } + throw new LicenseManagementException(msg, e); + } } @Override @@ -105,7 +102,11 @@ public class MetaRepositoryBasedLicenseManager implements LicenseManager { MetadataManagementService metadataManagementService = DeviceTypeExtensionDataHolder.getInstance() .getMetadataManagementService(); try { - metadataManagementService.createMetadata(metadata); + if (metadataManagementService.retrieveMetadata(licenceKey) != null) { + metadataManagementService.updateMetadata(metadata); + } else { + metadataManagementService.createMetadata(metadata); + } } catch (MetadataManagementException e) { String msg = "Error occurred while saving the licence value in meta data repository"; log.error(msg, e); diff --git a/components/device-mgt/org.wso2.carbon.device.mgt.extensions/src/test/java/org/wso2/carbon/device/mgt/extensions/common/DataSourceConfig.java b/components/device-mgt/org.wso2.carbon.device.mgt.extensions/src/test/java/org/wso2/carbon/device/mgt/extensions/common/DataSourceConfig.java new file mode 100644 index 0000000000..86582007c6 --- /dev/null +++ b/components/device-mgt/org.wso2.carbon.device.mgt.extensions/src/test/java/org/wso2/carbon/device/mgt/extensions/common/DataSourceConfig.java @@ -0,0 +1,76 @@ +/* + * Copyright (c) 2021, Entgra (Pvt) Ltd. (http://www.entgra.io) All Rights Reserved. + * + * Entgra (Pvt) Ltd. licenses this file to you under the Apache License, + * Version 2.0 (the "License"); you may not use this file except + * in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, + * software distributed under the License is distributed on an + * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY + * KIND, either express or implied. See the License for the + * specific language governing permissions and limitations + * under the License. + */ +package org.wso2.carbon.device.mgt.extensions.common; + +import javax.xml.bind.annotation.XmlElement; +import javax.xml.bind.annotation.XmlRootElement; + +@XmlRootElement(name = "DataSourceConfig") +public class DataSourceConfig { + + private String url; + private String driverClassName; + private String user; + private String password; + + @Override public String toString() { + return "DataSourceConfig[" + + " Url ='" + url + '\'' + + ", DriverClassName ='" + driverClassName + '\'' + + ", UserName ='" + user + '\'' + + ", Password ='" + password + '\'' + + "]"; + } + + @XmlElement(name = "Url", nillable = false) + public String getUrl() { + return url; + } + + public void setUrl(String url) { + this.url = url; + } + + @XmlElement(name = "DriverClassName", nillable = false) + public String getDriverClassName() { + return driverClassName; + } + + public void setDriverClassName(String driverClassName) { + this.driverClassName = driverClassName; + } + + @XmlElement(name = "User", nillable = false) + public String getUser() { + return user; + } + + public void setUser(String user) { + this.user = user; + } + + @XmlElement(name = "Password", nillable = false) + public String getPassword() { + return password; + } + + public void setPassword(String password) { + this.password = password; + } + +} diff --git a/components/device-mgt/org.wso2.carbon.device.mgt.extensions/src/test/java/org/wso2/carbon/device/mgt/extensions/device/type/template/BaseExtensionsTest.java b/components/device-mgt/org.wso2.carbon.device.mgt.extensions/src/test/java/org/wso2/carbon/device/mgt/extensions/device/type/template/BaseExtensionsTest.java index 3ec819a10b..e4859a8b97 100644 --- a/components/device-mgt/org.wso2.carbon.device.mgt.extensions/src/test/java/org/wso2/carbon/device/mgt/extensions/device/type/template/BaseExtensionsTest.java +++ b/components/device-mgt/org.wso2.carbon.device.mgt.extensions/src/test/java/org/wso2/carbon/device/mgt/extensions/device/type/template/BaseExtensionsTest.java @@ -19,28 +19,50 @@ package org.wso2.carbon.device.mgt.extensions.device.type.template; +import org.apache.tomcat.jdbc.pool.PoolProperties; +import org.mockito.Mockito; import org.testng.annotations.BeforeSuite; +import org.testng.annotations.Optional; +import org.testng.annotations.Parameters; +import org.w3c.dom.Document; import org.wso2.carbon.CarbonConstants; import org.wso2.carbon.base.MultitenantConstants; import org.wso2.carbon.context.PrivilegedCarbonContext; import org.wso2.carbon.context.RegistryType; import org.wso2.carbon.context.internal.OSGiDataHolder; +import org.wso2.carbon.device.mgt.common.exceptions.DeviceManagementException; +import org.wso2.carbon.device.mgt.common.license.mgt.License; +import org.wso2.carbon.device.mgt.common.spi.DeviceManagementService; +import org.wso2.carbon.device.mgt.core.dao.DeviceManagementDAOFactory; +import org.wso2.carbon.device.mgt.core.metadata.mgt.MetadataManagementServiceImpl; +import org.wso2.carbon.device.mgt.core.metadata.mgt.dao.MetadataManagementDAOFactory; +import org.wso2.carbon.device.mgt.core.service.DeviceManagementProviderService; +import org.wso2.carbon.device.mgt.core.service.DeviceManagementProviderServiceImpl; +import org.wso2.carbon.device.mgt.core.util.DeviceManagerUtil; +import org.wso2.carbon.device.mgt.extensions.common.DataSourceConfig; import org.wso2.carbon.device.mgt.extensions.internal.DeviceTypeExtensionDataHolder; +import org.wso2.carbon.device.mgt.extensions.license.mgt.meta.data.MetaRepositoryBasedLicenseManager; +import org.wso2.carbon.device.mgt.extensions.mock.TypeXDeviceManagementService; import org.wso2.carbon.device.mgt.extensions.utils.Utils; import org.wso2.carbon.governance.api.util.GovernanceArtifactConfiguration; import org.wso2.carbon.governance.api.util.GovernanceUtils; import org.wso2.carbon.registry.core.Registry; -import org.wso2.carbon.registry.core.exceptions.RegistryException; import org.wso2.carbon.registry.core.service.RegistryService; import org.wso2.carbon.registry.core.session.UserRegistry; import org.wso2.carbon.utils.FileUtil; +import javax.sql.DataSource; +import javax.xml.bind.JAXBContext; +import javax.xml.bind.JAXBException; +import javax.xml.bind.Unmarshaller; import java.io.File; -import java.io.IOException; import java.net.URL; +import java.sql.Connection; +import java.sql.Statement; import java.util.ArrayList; import java.util.List; +import static org.mockito.Matchers.anyString; import static org.wso2.carbon.governance.api.util.GovernanceUtils.getGovernanceArtifactConfiguration; /** @@ -48,8 +70,20 @@ import static org.wso2.carbon.governance.api.util.GovernanceUtils.getGovernanceA */ public class BaseExtensionsTest { + protected static final String DATASOURCE_EXT = ".xml"; + private DataSource dataSource; + private static String datasourceLocation; + @BeforeSuite - public void init() throws RegistryException, IOException { + @Parameters({"datasource"}) + public void init( + @Optional("src/test/resources/carbon-home/repository/conf/datasource/data-source-config") String datasource) + throws Exception { + + datasourceLocation = datasource; + this.initDataSource(); + this.initSQLScript(); + ClassLoader classLoader = getClass().getClassLoader(); URL resourceUrl = classLoader.getResource(Utils.DEVICE_TYPE_FOLDER + "license.rxt"); String rxt = null; @@ -78,7 +112,59 @@ public class BaseExtensionsTest { GovernanceUtils.loadGovernanceArtifacts(systemRegistry, configurations); Registry governanceSystemRegistry = registryService.getConfigSystemRegistry(); DeviceTypeExtensionDataHolder.getInstance().setRegistryService(registryService); + + DeviceManagementProviderService deviceManagementProviderService = new DeviceManagementProviderServiceImpl(); + deviceManagementProviderService.registerDeviceType(new TypeXDeviceManagementService("defectiveDeviceType")); + deviceManagementProviderService.registerDeviceType(new TypeXDeviceManagementService("arduino")); + deviceManagementProviderService.registerDeviceType(new TypeXDeviceManagementService("androidsense")); + deviceManagementProviderService.registerDeviceType(new TypeXDeviceManagementService("sample")); + deviceManagementProviderService.registerDeviceType(new TypeXDeviceManagementService("wrong")); + + DeviceTypeExtensionDataHolder.getInstance().setDeviceManagementProviderService(deviceManagementProviderService); + DeviceTypeExtensionDataHolder.getInstance().setMetadataManagementService(new MetadataManagementServiceImpl()); + PrivilegedCarbonContext.getThreadLocalCarbonContext() .setRegistry(RegistryType.SYSTEM_CONFIGURATION, governanceSystemRegistry); } + + protected void initDataSource() throws Exception { + this.dataSource = this.getDataSource(this. + readDataSourceConfig(datasourceLocation + DATASOURCE_EXT)); + DeviceManagementDAOFactory.init(dataSource); + MetadataManagementDAOFactory.init(dataSource); + } + + protected DataSourceConfig readDataSourceConfig(String configLocation) throws DeviceManagementException { + try { + File file = new File(configLocation); + Document doc = DeviceManagerUtil.convertToDocument(file); + JAXBContext testDBContext = JAXBContext.newInstance(DataSourceConfig.class); + Unmarshaller unmarshaller = testDBContext.createUnmarshaller(); + return (DataSourceConfig) unmarshaller.unmarshal(doc); + } catch (JAXBException e) { + throw new DeviceManagementException("Error occurred while reading data source configuration", e); + } + } + + protected DataSource getDataSource(DataSourceConfig config) { + PoolProperties properties = new PoolProperties(); + properties.setUrl(config.getUrl()); + properties.setDriverClassName(config.getDriverClassName()); + properties.setUsername(config.getUser()); + properties.setPassword(config.getPassword()); + return new org.apache.tomcat.jdbc.pool.DataSource(properties); + } + + protected DataSource getDataSource() { + return dataSource; + } + + private void initSQLScript() throws Exception { + try (Connection conn = this.getDataSource().getConnection()) { + try (Statement stmt = conn.createStatement()) { + stmt.executeUpdate("RUNSCRIPT FROM './src/test/resources/sql-files/h2.sql'"); + stmt.executeUpdate("RUNSCRIPT FROM './src/test/resources/sql-files/android_h2.sql'"); + } + } + } } diff --git a/components/device-mgt/org.wso2.carbon.device.mgt.extensions/src/test/java/org/wso2/carbon/device/mgt/extensions/device/type/template/DeviceTypeManagerNegativeTest.java b/components/device-mgt/org.wso2.carbon.device.mgt.extensions/src/test/java/org/wso2/carbon/device/mgt/extensions/device/type/template/DeviceTypeManagerNegativeTest.java index 4307316c36..5ce556836f 100644 --- a/components/device-mgt/org.wso2.carbon.device.mgt.extensions/src/test/java/org/wso2/carbon/device/mgt/extensions/device/type/template/DeviceTypeManagerNegativeTest.java +++ b/components/device-mgt/org.wso2.carbon.device.mgt.extensions/src/test/java/org/wso2/carbon/device/mgt/extensions/device/type/template/DeviceTypeManagerNegativeTest.java @@ -26,6 +26,7 @@ import org.wso2.carbon.base.MultitenantConstants; import org.wso2.carbon.device.mgt.common.Device; import org.wso2.carbon.device.mgt.common.DeviceIdentifier; import org.wso2.carbon.device.mgt.common.exceptions.DeviceManagementException; +import org.wso2.carbon.device.mgt.common.license.mgt.LicenseManagementException; import org.wso2.carbon.device.mgt.extensions.device.type.template.config.DataSource; import org.wso2.carbon.device.mgt.extensions.device.type.template.config.DeviceDetails; import org.wso2.carbon.device.mgt.extensions.device.type.template.config.DeviceTypeConfiguration; @@ -72,7 +73,7 @@ public class DeviceTypeManagerNegativeTest { @BeforeClass public void setup() throws SAXException, JAXBException, ParserConfigurationException, DeviceTypeConfigurationException, - IOException, NoSuchFieldException, IllegalAccessException { + IOException, NoSuchFieldException, IllegalAccessException, LicenseManagementException { ClassLoader classLoader = getClass().getClassLoader(); URL resourceUrl = classLoader.getResource(Utils.DEVICE_TYPE_FOLDER + "defective-devicetype.xml"); File configurationFile = null; @@ -291,7 +292,7 @@ public class DeviceTypeManagerNegativeTest { */ private void createDefectiveDeviceTypeManager() throws NoSuchFieldException, SAXException, JAXBException, ParserConfigurationException, - DeviceTypeConfigurationException, IOException, IllegalAccessException { + DeviceTypeConfigurationException, IOException, IllegalAccessException, LicenseManagementException { Field datasourceField = DeviceTypeDAOHandler.class.getDeclaredField("dataSource"); datasourceField.setAccessible(true); Field currentConnection = DeviceTypeDAOHandler.class.getDeclaredField("currentConnection"); diff --git a/components/device-mgt/org.wso2.carbon.device.mgt.extensions/src/test/java/org/wso2/carbon/device/mgt/extensions/mock/TypeXDeviceManagementService.java b/components/device-mgt/org.wso2.carbon.device.mgt.extensions/src/test/java/org/wso2/carbon/device/mgt/extensions/mock/TypeXDeviceManagementService.java new file mode 100644 index 0000000000..f6f641f165 --- /dev/null +++ b/components/device-mgt/org.wso2.carbon.device.mgt.extensions/src/test/java/org/wso2/carbon/device/mgt/extensions/mock/TypeXDeviceManagementService.java @@ -0,0 +1,127 @@ +/* + * Copyright (c) 2021, Entgra (Pvt) Ltd. (http://www.entgra.io) All Rights Reserved. + * + * Entgra (Pvt) Ltd. licenses this file to you under the Apache License, + * Version 2.0 (the "License"); you may not use this file except + * in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, + * software distributed under the License is distributed on an + * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY + * KIND, either express or implied. See the License for the + * specific language governing permissions and limitations + * under the License. + */ +package org.wso2.carbon.device.mgt.extensions.mock; + +import org.wso2.carbon.device.mgt.common.exceptions.DeviceManagementException; +import org.wso2.carbon.device.mgt.common.DeviceManager; +import org.wso2.carbon.device.mgt.common.DeviceStatusTaskPluginConfig; +import org.wso2.carbon.device.mgt.common.InitialOperationConfig; +import org.wso2.carbon.device.mgt.common.MonitoringOperation; +import org.wso2.carbon.device.mgt.common.OperationMonitoringTaskConfig; +import org.wso2.carbon.device.mgt.common.ProvisioningConfig; +import org.wso2.carbon.device.mgt.common.StartupOperationConfig; +import org.wso2.carbon.device.mgt.common.app.mgt.ApplicationManager; +import org.wso2.carbon.device.mgt.common.general.GeneralConfig; +import org.wso2.carbon.device.mgt.common.invitation.mgt.DeviceEnrollmentInvitationDetails; +import org.wso2.carbon.device.mgt.common.license.mgt.License; +import org.wso2.carbon.device.mgt.common.policy.mgt.PolicyMonitoringManager; +import org.wso2.carbon.device.mgt.common.pull.notification.PullNotificationSubscriber; +import org.wso2.carbon.device.mgt.common.push.notification.PushNotificationConfig; +import org.wso2.carbon.device.mgt.common.spi.DeviceManagementService; +import org.wso2.carbon.device.mgt.common.type.mgt.DeviceTypePlatformDetails; + +import java.util.ArrayList; + +public class TypeXDeviceManagementService implements DeviceManagementService { + + private String deviceType; + + public TypeXDeviceManagementService(String deviceType) { + this.deviceType = deviceType; + } + + @Override + public void init() throws DeviceManagementException { + + } + + @Override + public String getType() { + return deviceType; + } + + @Override + public OperationMonitoringTaskConfig getOperationMonitoringConfig() { + OperationMonitoringTaskConfig operationMonitoringTaskConfig = new OperationMonitoringTaskConfig(); + operationMonitoringTaskConfig.setMonitoringOperation(new ArrayList()); + return operationMonitoringTaskConfig; + } + + @Override + public DeviceManager getDeviceManager() { + return new TypeXDeviceManager(); + } + + @Override + public ApplicationManager getApplicationManager() { + return null; + } + + @Override + public ProvisioningConfig getProvisioningConfig() { + return new ProvisioningConfig("carbon.super", true); + } + + @Override + public PushNotificationConfig getPushNotificationConfig() { + return null; + } + + @Override + public PolicyMonitoringManager getPolicyMonitoringManager() { + return null; + } + + @Override + public InitialOperationConfig getInitialOperationConfig() { + return null; + } + + @Override + public StartupOperationConfig getStartupOperationConfig() { + return null; + } + + @Override + public PullNotificationSubscriber getPullNotificationSubscriber() { + return null; + } + + @Override + public DeviceStatusTaskPluginConfig getDeviceStatusTaskPluginConfig() { + return null; + } + + @Override + public GeneralConfig getGeneralConfig() { + return null; + } + + @Override + public DeviceTypePlatformDetails getDeviceTypePlatformDetails() { + return null; + } + + @Override + public DeviceEnrollmentInvitationDetails getDeviceEnrollmentInvitationDetails() { + return null; + } + + @Override + public License getLicenseConfig() { return null; } +} diff --git a/components/device-mgt/org.wso2.carbon.device.mgt.extensions/src/test/java/org/wso2/carbon/device/mgt/extensions/mock/TypeXDeviceManager.java b/components/device-mgt/org.wso2.carbon.device.mgt.extensions/src/test/java/org/wso2/carbon/device/mgt/extensions/mock/TypeXDeviceManager.java new file mode 100644 index 0000000000..509c40a0d7 --- /dev/null +++ b/components/device-mgt/org.wso2.carbon.device.mgt.extensions/src/test/java/org/wso2/carbon/device/mgt/extensions/mock/TypeXDeviceManager.java @@ -0,0 +1,130 @@ +/* + * Copyright (c) 2021, Entgra (Pvt) Ltd. (http://www.entgra.io) All Rights Reserved. + * + * Entgra (Pvt) Ltd. licenses this file to you under the Apache License, + * Version 2.0 (the "License"); you may not use this file except + * in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, + * software distributed under the License is distributed on an + * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY + * KIND, either express or implied. See the License for the + * specific language governing permissions and limitations + * under the License. + */ +package org.wso2.carbon.device.mgt.extensions.mock; + +import org.wso2.carbon.device.mgt.common.Device; +import org.wso2.carbon.device.mgt.common.DeviceIdentifier; +import org.wso2.carbon.device.mgt.common.DeviceManager; +import org.wso2.carbon.device.mgt.common.EnrolmentInfo; +import org.wso2.carbon.device.mgt.common.FeatureManager; +import org.wso2.carbon.device.mgt.common.configuration.mgt.PlatformConfiguration; +import org.wso2.carbon.device.mgt.common.exceptions.DeviceManagementException; +import org.wso2.carbon.device.mgt.common.license.mgt.License; +import org.wso2.carbon.device.mgt.common.license.mgt.LicenseManagementException; + +import java.util.List; + +public class TypeXDeviceManager implements DeviceManager { + + @Override + public FeatureManager getFeatureManager() { + return null; + } + + @Override + public boolean saveConfiguration(PlatformConfiguration configuration) + throws DeviceManagementException { + return false; + } + + @Override public PlatformConfiguration getConfiguration() throws DeviceManagementException { + return null; + } + + @Override + public boolean enrollDevice(Device device) throws DeviceManagementException { + return true; + } + + @Override + public boolean modifyEnrollment(Device device) throws DeviceManagementException { + return false; + } + + @Override + public boolean disenrollDevice(DeviceIdentifier deviceId) throws DeviceManagementException { + return false; + } + + @Override + public void deleteDevices(List deviceIdentifiers) throws DeviceManagementException { + } + + @Override + public boolean isEnrolled(DeviceIdentifier deviceId) throws DeviceManagementException { + return false; + } + + @Override + public boolean isActive(DeviceIdentifier deviceId) throws DeviceManagementException { + return false; + } + + @Override + public boolean setActive(DeviceIdentifier deviceId, boolean status) throws DeviceManagementException { + return false; + } + + @Override + public List getAllDevices() throws DeviceManagementException { + return null; + } + + @Override + public Device getDevice(DeviceIdentifier deviceId) throws DeviceManagementException { + return null; + } + + @Override public boolean updateDeviceProperties(DeviceIdentifier deviceId, List list) + throws DeviceManagementException { + return false; + } + + @Override + public boolean updateDeviceInfo(DeviceIdentifier deviceIdentifier, Device device) + throws DeviceManagementException { + return false; + } + + @Override + public boolean setOwnership(DeviceIdentifier deviceId, String ownershipType) + throws DeviceManagementException { + return false; + } + + @Override + public boolean setStatus(DeviceIdentifier deviceId, String currentOwner, EnrolmentInfo.Status status) + throws DeviceManagementException { + return false; + } + + @Override + public License getLicense(String languageCode) throws LicenseManagementException { + return null; + } + + @Override + public void addLicense(License license) throws LicenseManagementException { + + } + + @Override + public boolean requireDeviceAuthorization() { + return false; + } +} diff --git a/components/device-mgt/org.wso2.carbon.device.mgt.extensions/src/test/resources/carbon-home/repository/conf/datasource/data-source-config.xml b/components/device-mgt/org.wso2.carbon.device.mgt.extensions/src/test/resources/carbon-home/repository/conf/datasource/data-source-config.xml new file mode 100644 index 0000000000..1f670566e5 --- /dev/null +++ b/components/device-mgt/org.wso2.carbon.device.mgt.extensions/src/test/resources/carbon-home/repository/conf/datasource/data-source-config.xml @@ -0,0 +1,33 @@ + + + + + jdbc:h2:mem:cdm-test-db;DB_CLOSE_ON_EXIT=FALSE;MVCC=true + org.h2.Driver + wso2carbon + wso2carbon + + + + + + + + + diff --git a/components/device-mgt/org.wso2.carbon.device.mgt.extensions/src/test/resources/sql-files/h2.sql b/components/device-mgt/org.wso2.carbon.device.mgt.extensions/src/test/resources/sql-files/h2.sql index c6a935cfc4..eedbcd875a 100644 --- a/components/device-mgt/org.wso2.carbon.device.mgt.extensions/src/test/resources/sql-files/h2.sql +++ b/components/device-mgt/org.wso2.carbon.device.mgt.extensions/src/test/resources/sql-files/h2.sql @@ -477,6 +477,18 @@ CREATE TABLE IF NOT EXISTS DM_DEVICE_GROUP_POLICY ( ); -- END OF POLICY AND DEVICE GROUP MAPPING -- +-- METADATA TABLE -- +CREATE TABLE IF NOT EXISTS DM_METADATA ( + METADATA_ID INT AUTO_INCREMENT NOT NULL, + DATA_TYPE VARCHAR(16) NOT NULL, + METADATA_KEY VARCHAR(128) NOT NULL, + METADATA_VALUE VARCHAR(4000) NOT NULL, + TENANT_ID INTEGER NOT NULL, + PRIMARY KEY (METADATA_ID), + CONSTRAINT METADATA_KEY_TENANT_ID UNIQUE (METADATA_KEY, TENANT_ID) + ); +-- END OF METADATA TABLE -- + -- DASHBOARD RELATED VIEWS -- CREATE VIEW POLICY_COMPLIANCE_INFO AS SELECT diff --git a/components/policy-mgt/org.wso2.carbon.policy.mgt.core/src/test/java/org/wso2/carbon/policy/mgt/core/mock/TypeXDeviceManagementService.java b/components/policy-mgt/org.wso2.carbon.policy.mgt.core/src/test/java/org/wso2/carbon/policy/mgt/core/mock/TypeXDeviceManagementService.java index e42735fcc2..f134f02ee8 100644 --- a/components/policy-mgt/org.wso2.carbon.policy.mgt.core/src/test/java/org/wso2/carbon/policy/mgt/core/mock/TypeXDeviceManagementService.java +++ b/components/policy-mgt/org.wso2.carbon.policy.mgt.core/src/test/java/org/wso2/carbon/policy/mgt/core/mock/TypeXDeviceManagementService.java @@ -139,5 +139,6 @@ public class TypeXDeviceManagementService implements DeviceManagementService { return null; } - @Override public License getLicenseConfig() { return null; } + @Override + public License getLicenseConfig() { return null; } } From 572e93a3574c3b8635d5e904b7cefdfbca0acadf Mon Sep 17 00:00:00 2001 From: "tcdlpds@gmail.com" Date: Wed, 10 Feb 2021 09:24:38 +0530 Subject: [PATCH 3/4] Fix server startup issues --- .../device/type/template/DeviceTypeManager.java | 10 ++++++++-- .../meta/data/MetaRepositoryBasedLicenseManager.java | 1 - 2 files changed, 8 insertions(+), 3 deletions(-) diff --git a/components/device-mgt/org.wso2.carbon.device.mgt.extensions/src/main/java/org/wso2/carbon/device/mgt/extensions/device/type/template/DeviceTypeManager.java b/components/device-mgt/org.wso2.carbon.device.mgt.extensions/src/main/java/org/wso2/carbon/device/mgt/extensions/device/type/template/DeviceTypeManager.java index cfb86df3f9..2022447e64 100644 --- a/components/device-mgt/org.wso2.carbon.device.mgt.extensions/src/main/java/org/wso2/carbon/device/mgt/extensions/device/type/template/DeviceTypeManager.java +++ b/components/device-mgt/org.wso2.carbon.device.mgt.extensions/src/main/java/org/wso2/carbon/device/mgt/extensions/device/type/template/DeviceTypeManager.java @@ -123,9 +123,15 @@ public class DeviceTypeManager implements DeviceManager { //add license to registry. this.licenseManager = new MetaRepositoryBasedLicenseManager(); try { - licenseManager.getLicense(deviceType, DeviceTypePluginConstants.LANGUAGE_CODE_ENGLISH_US); + if (deviceTypeConfiguration.getLicense() != null) { + License defaultLicense = new License(); + defaultLicense.setLanguage(deviceTypeConfiguration.getLicense().getLanguage()); + defaultLicense.setVersion(deviceTypeConfiguration.getLicense().getVersion()); + defaultLicense.setText(deviceTypeConfiguration.getLicense().getText()); + licenseManager.addLicense(deviceType, defaultLicense); + } } catch (LicenseManagementException e) { - String msg = "Error occurred while loading license of device type: " + deviceType; + String msg = "Error occurred while adding default license of device type: " + deviceType; throw new DeviceTypeDeployerPayloadException(msg, e); } diff --git a/components/device-mgt/org.wso2.carbon.device.mgt.extensions/src/main/java/org/wso2/carbon/device/mgt/extensions/license/mgt/meta/data/MetaRepositoryBasedLicenseManager.java b/components/device-mgt/org.wso2.carbon.device.mgt.extensions/src/main/java/org/wso2/carbon/device/mgt/extensions/license/mgt/meta/data/MetaRepositoryBasedLicenseManager.java index 2b5aab2f36..391e3e1fe3 100644 --- a/components/device-mgt/org.wso2.carbon.device.mgt.extensions/src/main/java/org/wso2/carbon/device/mgt/extensions/license/mgt/meta/data/MetaRepositoryBasedLicenseManager.java +++ b/components/device-mgt/org.wso2.carbon.device.mgt.extensions/src/main/java/org/wso2/carbon/device/mgt/extensions/license/mgt/meta/data/MetaRepositoryBasedLicenseManager.java @@ -117,6 +117,5 @@ public class MetaRepositoryBasedLicenseManager implements LicenseManager { log.error(msg, e); throw new LicenseManagementException(msg, e); } - } } From 5cbe5a65cc3e53f9abe366dda052517b2b657dd9 Mon Sep 17 00:00:00 2001 From: "tcdlpds@gmail.com" Date: Wed, 10 Feb 2021 10:46:45 +0530 Subject: [PATCH 4/4] Increase METADATA_VALUE field size --- .../src/main/resources/dbscripts/cdm/h2.sql | 2 +- .../src/main/resources/dbscripts/cdm/mssql.sql | 2 +- .../src/main/resources/dbscripts/cdm/mysql.sql | 2 +- .../src/main/resources/dbscripts/cdm/oracle.sql | 2 +- .../src/main/resources/dbscripts/cdm/postgresql.sql | 2 +- 5 files changed, 5 insertions(+), 5 deletions(-) diff --git a/features/device-mgt/org.wso2.carbon.device.mgt.basics.feature/src/main/resources/dbscripts/cdm/h2.sql b/features/device-mgt/org.wso2.carbon.device.mgt.basics.feature/src/main/resources/dbscripts/cdm/h2.sql index a45ec56bb2..d7d68c2fcc 100644 --- a/features/device-mgt/org.wso2.carbon.device.mgt.basics.feature/src/main/resources/dbscripts/cdm/h2.sql +++ b/features/device-mgt/org.wso2.carbon.device.mgt.basics.feature/src/main/resources/dbscripts/cdm/h2.sql @@ -568,7 +568,7 @@ CREATE TABLE IF NOT EXISTS DM_METADATA ( METADATA_ID INT AUTO_INCREMENT NOT NULL, DATA_TYPE VARCHAR(16) NOT NULL, METADATA_KEY VARCHAR(128) NOT NULL, - METADATA_VALUE VARCHAR(4000) NOT NULL, + METADATA_VALUE VARCHAR(8000) NOT NULL, TENANT_ID INTEGER NOT NULL, PRIMARY KEY (METADATA_ID), CONSTRAINT METADATA_KEY_TENANT_ID UNIQUE (METADATA_KEY, TENANT_ID) diff --git a/features/device-mgt/org.wso2.carbon.device.mgt.basics.feature/src/main/resources/dbscripts/cdm/mssql.sql b/features/device-mgt/org.wso2.carbon.device.mgt.basics.feature/src/main/resources/dbscripts/cdm/mssql.sql index 1face03ab3..c70277074a 100644 --- a/features/device-mgt/org.wso2.carbon.device.mgt.basics.feature/src/main/resources/dbscripts/cdm/mssql.sql +++ b/features/device-mgt/org.wso2.carbon.device.mgt.basics.feature/src/main/resources/dbscripts/cdm/mssql.sql @@ -609,7 +609,7 @@ CREATE TABLE DM_METADATA ( METADATA_ID INTEGER IDENTITY(1,1) NOT NULL, DATA_TYPE VARCHAR(16) NOT NULL, METADATA_KEY VARCHAR(128) NOT NULL, - METADATA_VALUE VARCHAR(4000) NOT NULL, + METADATA_VALUE VARCHAR(8000) NOT NULL, TENANT_ID INTEGER NOT NULL, PRIMARY KEY (METADATA_ID), CONSTRAINT METADATA_KEY_TENANT_ID UNIQUE(METADATA_KEY, TENANT_ID) diff --git a/features/device-mgt/org.wso2.carbon.device.mgt.basics.feature/src/main/resources/dbscripts/cdm/mysql.sql b/features/device-mgt/org.wso2.carbon.device.mgt.basics.feature/src/main/resources/dbscripts/cdm/mysql.sql index 8d0f511b95..71d7f4f5f3 100644 --- a/features/device-mgt/org.wso2.carbon.device.mgt.basics.feature/src/main/resources/dbscripts/cdm/mysql.sql +++ b/features/device-mgt/org.wso2.carbon.device.mgt.basics.feature/src/main/resources/dbscripts/cdm/mysql.sql @@ -625,7 +625,7 @@ CREATE TABLE IF NOT EXISTS DM_METADATA ( METADATA_ID INTEGER NOT NULL AUTO_INCREMENT, DATA_TYPE VARCHAR(16) NOT NULL, METADATA_KEY VARCHAR(128) NOT NULL, - METADATA_VALUE VARCHAR(4000) NOT NULL, + METADATA_VALUE VARCHAR(8000) NOT NULL, TENANT_ID INTEGER NOT NULL, PRIMARY KEY (METADATA_ID), UNIQUE KEY METADATA_KEY_TENANT_ID (METADATA_KEY,TENANT_ID) diff --git a/features/device-mgt/org.wso2.carbon.device.mgt.basics.feature/src/main/resources/dbscripts/cdm/oracle.sql b/features/device-mgt/org.wso2.carbon.device.mgt.basics.feature/src/main/resources/dbscripts/cdm/oracle.sql index ee40ecf4f5..de19680e81 100644 --- a/features/device-mgt/org.wso2.carbon.device.mgt.basics.feature/src/main/resources/dbscripts/cdm/oracle.sql +++ b/features/device-mgt/org.wso2.carbon.device.mgt.basics.feature/src/main/resources/dbscripts/cdm/oracle.sql @@ -959,7 +959,7 @@ CREATE TABLE DM_METADATA ( METADATA_ID NUMBER(10) NOT NULL, DATA_TYPE VARCHAR2(16) NOT NULL, METADATA_KEY VARCHAR2(128) NOT NULL, - METADATA_VALUE VARCHAR2(4000) NOT NULL, + METADATA_VALUE VARCHAR2(8000) NOT NULL, TENANT_ID INTEGER NOT NULL, CONSTRAINT PK_DM_METADATA PRIMARY KEY (METADATA_ID), CONSTRAINT METADATA_KEY_TENANT_ID UNIQUE (METADATA_KEY, TENANT_ID) diff --git a/features/device-mgt/org.wso2.carbon.device.mgt.basics.feature/src/main/resources/dbscripts/cdm/postgresql.sql b/features/device-mgt/org.wso2.carbon.device.mgt.basics.feature/src/main/resources/dbscripts/cdm/postgresql.sql index 814b88c05b..db431497e8 100644 --- a/features/device-mgt/org.wso2.carbon.device.mgt.basics.feature/src/main/resources/dbscripts/cdm/postgresql.sql +++ b/features/device-mgt/org.wso2.carbon.device.mgt.basics.feature/src/main/resources/dbscripts/cdm/postgresql.sql @@ -625,7 +625,7 @@ CREATE TABLE IF NOT EXISTS DM_METADATA ( METADATA_ID BIGSERIAL PRIMARY KEY, DATA_TYPE VARCHAR(16) NOT NULL, METADATA_KEY VARCHAR(128) NOT NULL, - METADATA_VALUE VARCHAR(4000) NOT NULL, + METADATA_VALUE VARCHAR(8000) NOT NULL, TENANT_ID INTEGER NOT NULL, CONSTRAINT METADATA_KEY_TENANT_ID UNIQUE(METADATA_KEY, TENANT_ID) );