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
revert-70ac1926
tcdlpds@gmail.com 4 years ago
parent a61bd6b1db
commit 7b41e2cd0d

@ -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.exceptions.DeviceManagementException;
import org.wso2.carbon.device.mgt.common.general.GeneralConfig; 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.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.policy.mgt.PolicyMonitoringManager;
import org.wso2.carbon.device.mgt.common.pull.notification.PullNotificationSubscriber; 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.push.notification.PushNotificationConfig;
@ -80,4 +81,5 @@ public interface DeviceManagementService {
DeviceEnrollmentInvitationDetails getDeviceEnrollmentInvitationDetails(); DeviceEnrollmentInvitationDetails getDeviceEnrollmentInvitationDetails();
License getLicenseConfig();
} }

@ -964,4 +964,6 @@ public interface DeviceManagementProviderService {
int getActivitiesCount(ActivityPaginationRequest activityPaginationRequest) int getActivitiesCount(ActivityPaginationRequest activityPaginationRequest)
throws OperationManagementException; throws OperationManagementException;
License getLicenseConfig (String deviceTypeName) throws DeviceManagementException;
} }

@ -4349,4 +4349,18 @@ public class DeviceManagementProviderServiceImpl implements DeviceManagementProv
DeviceManagementDAOFactory.closeConnection(); 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();
}
} }

@ -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.exceptions.DeviceManagementException;
import org.wso2.carbon.device.mgt.common.general.GeneralConfig; 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.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.policy.mgt.PolicyMonitoringManager;
import org.wso2.carbon.device.mgt.common.pull.notification.PullNotificationSubscriber; 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.push.notification.PushNotificationConfig;
@ -148,4 +149,6 @@ public class TestDeviceManagementService implements DeviceManagementService {
public DeviceEnrollmentInvitationDetails getDeviceEnrollmentInvitationDetails() { public DeviceEnrollmentInvitationDetails getDeviceEnrollmentInvitationDetails() {
return null; return null;
} }
@Override public License getLicenseConfig() { return null; }
} }

@ -50,6 +50,10 @@
<groupId>org.wso2.carbon.devicemgt</groupId> <groupId>org.wso2.carbon.devicemgt</groupId>
<artifactId>org.wso2.carbon.device.mgt.common</artifactId> <artifactId>org.wso2.carbon.device.mgt.common</artifactId>
</dependency> </dependency>
<dependency>
<groupId>org.wso2.carbon.devicemgt</groupId>
<artifactId>org.wso2.carbon.device.mgt.core</artifactId>
</dependency>
<dependency> <dependency>
<groupId>org.apache.ws.commons.axiom.wso2</groupId> <groupId>org.apache.ws.commons.axiom.wso2</groupId>
<artifactId>axiom</artifactId> <artifactId>axiom</artifactId>
@ -180,6 +184,8 @@
org.wso2.carbon.registry.core.service, org.wso2.carbon.registry.core.service,
org.wso2.carbon.utils.dbcreator, org.wso2.carbon.utils.dbcreator,
org.wso2.carbon.utils.multitenancy, org.wso2.carbon.utils.multitenancy,
org.wso2.carbon.device.mgt.core.service,
com.google.gson,
org.osgi.framework org.osgi.framework
</Import-Package> </Import-Package>
<DynamicImport-Package>org.wso2.carbon.device.mgt.extensions.pull.notification, <DynamicImport-Package>org.wso2.carbon.device.mgt.extensions.pull.notification,

@ -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.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.DeviceTypePluginConstants;
import org.wso2.carbon.device.mgt.extensions.device.type.template.util.DeviceTypeUtils; 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.device.mgt.extensions.spi.DeviceTypePluginExtensionService;
import org.wso2.carbon.registry.api.RegistryException; import org.wso2.carbon.registry.api.RegistryException;
import org.wso2.carbon.registry.api.Resource; import org.wso2.carbon.registry.api.Resource;
@ -121,20 +121,11 @@ public class DeviceTypeManager implements DeviceManager {
requiredDeviceTypeAuthorization = true; requiredDeviceTypeAuthorization = true;
} }
//add license to registry. //add license to registry.
this.licenseManager = new RegistryBasedLicenseManager(); this.licenseManager = new MetaRepositoryBasedLicenseManager();
try { try {
if (licenseManager.getLicense(deviceType, DeviceTypePluginConstants.LANGUAGE_CODE_ENGLISH_US) == null) { 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) { } 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); throw new DeviceTypeDeployerPayloadException(msg, e);
} }

@ -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.configuration.mgt.PlatformConfiguration;
import org.wso2.carbon.device.mgt.common.general.GeneralConfig; 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.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.policy.mgt.PolicyMonitoringManager;
import org.wso2.carbon.device.mgt.common.pull.notification.PullNotificationSubscriber; 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.push.notification.PushNotificationConfig;
@ -90,6 +91,7 @@ public class DeviceTypeManagerService implements DeviceManagementService {
private PolicyMonitoringManager policyMonitoringManager; private PolicyMonitoringManager policyMonitoringManager;
private final InitialOperationConfig initialOperationConfig; private final InitialOperationConfig initialOperationConfig;
private StartupOperationConfig startupOperationConfig; private StartupOperationConfig startupOperationConfig;
private License licenseConfig;
private PullNotificationSubscriber pullNotificationSubscriber; private PullNotificationSubscriber pullNotificationSubscriber;
private final DeviceStatusTaskPluginConfig deviceStatusTaskPluginConfig; private final DeviceStatusTaskPluginConfig deviceStatusTaskPluginConfig;
private DeviceTypePlatformDetails deviceTypePlatformDetails; private DeviceTypePlatformDetails deviceTypePlatformDetails;
@ -120,6 +122,8 @@ public class DeviceTypeManagerService implements DeviceManagementService {
this.setGeneralConfig(deviceTypeConfiguration); this.setGeneralConfig(deviceTypeConfiguration);
this.deviceEnrollmentInvitationDetails = new DeviceEnrollmentInvitationDetails(); this.deviceEnrollmentInvitationDetails = new DeviceEnrollmentInvitationDetails();
this.setDeviceEnrollmentInvitationDetails(deviceTypeConfiguration); this.setDeviceEnrollmentInvitationDetails(deviceTypeConfiguration);
this.licenseConfig = new License();
this.setLicenseConfig(deviceTypeConfiguration);
} }
@Override @Override
@ -268,6 +272,11 @@ public class DeviceTypeManagerService implements DeviceManagementService {
return deviceEnrollmentInvitationDetails; return deviceEnrollmentInvitationDetails;
} }
@Override
public License getLicenseConfig() {
return licenseConfig;
}
private void setProvisioningConfig(String tenantDomain, DeviceTypeConfiguration deviceTypeConfiguration) { private void setProvisioningConfig(String tenantDomain, DeviceTypeConfiguration deviceTypeConfiguration) {
if (deviceTypeConfiguration.getProvisioningConfig() != null) { if (deviceTypeConfiguration.getProvisioningConfig() != null) {
boolean sharedWithAllTenants = deviceTypeConfiguration.getProvisioningConfig().isSharedWithAllTenants(); boolean sharedWithAllTenants = deviceTypeConfiguration.getProvisioningConfig().isSharedWithAllTenants();
@ -372,4 +381,15 @@ public class DeviceTypeManagerService implements DeviceManagementService {
deviceEnrollmentInvitationDetailsFromConfig.getEnrollmentDetails()); 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());
}
}
} }

@ -24,4 +24,6 @@ package org.wso2.carbon.device.mgt.extensions.device.type.template.util;
public class DeviceTypePluginConstants { public class DeviceTypePluginConstants {
public static final String MEDIA_TYPE_XML = "application/xml"; public static final String MEDIA_TYPE_XML = "application/xml";
public static final String LANGUAGE_CODE_ENGLISH_US = "en_US"; public static final String LANGUAGE_CODE_ENGLISH_US = "en_US";
public static final String UNDERSCORE = "_";
public static final String LICENCE_META_KEY_SUFFIX = "_Licence_";
} }

@ -18,6 +18,10 @@
*/ */
package org.wso2.carbon.device.mgt.extensions.internal; 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; import org.wso2.carbon.registry.core.service.RegistryService;
/** /**
@ -26,6 +30,8 @@ import org.wso2.carbon.registry.core.service.RegistryService;
public class DeviceTypeExtensionDataHolder { public class DeviceTypeExtensionDataHolder {
private RegistryService registryService; private RegistryService registryService;
private MetadataManagementService metadataManagementService;
private DeviceManagementProviderService deviceManagementProviderService;
private static DeviceTypeExtensionDataHolder thisInstance = new DeviceTypeExtensionDataHolder(); private static DeviceTypeExtensionDataHolder thisInstance = new DeviceTypeExtensionDataHolder();
@ -42,4 +48,30 @@ public class DeviceTypeExtensionDataHolder {
public void setRegistryService(RegistryService registryService) { public void setRegistryService(RegistryService registryService) {
this.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;
}
} }

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

@ -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.app.mgt.ApplicationManager;
import org.wso2.carbon.device.mgt.common.general.GeneralConfig; 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.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.policy.mgt.PolicyMonitoringManager;
import org.wso2.carbon.device.mgt.common.pull.notification.PullNotificationSubscriber; 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.push.notification.PushNotificationConfig;
@ -137,4 +138,6 @@ public class TypeXDeviceManagementService implements DeviceManagementService {
public DeviceEnrollmentInvitationDetails getDeviceEnrollmentInvitationDetails() { public DeviceEnrollmentInvitationDetails getDeviceEnrollmentInvitationDetails() {
return null; return null;
} }
@Override public License getLicenseConfig() { return null; }
} }

@ -568,7 +568,7 @@ CREATE TABLE IF NOT EXISTS DM_METADATA (
METADATA_ID INT AUTO_INCREMENT NOT NULL, METADATA_ID INT AUTO_INCREMENT NOT NULL,
DATA_TYPE VARCHAR(16) NOT NULL, DATA_TYPE VARCHAR(16) NOT NULL,
METADATA_KEY VARCHAR(128) 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, TENANT_ID INTEGER NOT NULL,
PRIMARY KEY (METADATA_ID), PRIMARY KEY (METADATA_ID),
CONSTRAINT METADATA_KEY_TENANT_ID UNIQUE (METADATA_KEY, TENANT_ID) CONSTRAINT METADATA_KEY_TENANT_ID UNIQUE (METADATA_KEY, TENANT_ID)

@ -609,7 +609,7 @@ CREATE TABLE DM_METADATA (
METADATA_ID INTEGER IDENTITY(1,1) NOT NULL, METADATA_ID INTEGER IDENTITY(1,1) NOT NULL,
DATA_TYPE VARCHAR(16) NOT NULL, DATA_TYPE VARCHAR(16) NOT NULL,
METADATA_KEY VARCHAR(128) 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, TENANT_ID INTEGER NOT NULL,
PRIMARY KEY (METADATA_ID), PRIMARY KEY (METADATA_ID),
CONSTRAINT METADATA_KEY_TENANT_ID UNIQUE(METADATA_KEY, TENANT_ID) CONSTRAINT METADATA_KEY_TENANT_ID UNIQUE(METADATA_KEY, TENANT_ID)

@ -625,7 +625,7 @@ CREATE TABLE IF NOT EXISTS DM_METADATA (
METADATA_ID INTEGER NOT NULL AUTO_INCREMENT, METADATA_ID INTEGER NOT NULL AUTO_INCREMENT,
DATA_TYPE VARCHAR(16) NOT NULL, DATA_TYPE VARCHAR(16) NOT NULL,
METADATA_KEY VARCHAR(128) 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, TENANT_ID INTEGER NOT NULL,
PRIMARY KEY (METADATA_ID), PRIMARY KEY (METADATA_ID),
UNIQUE KEY METADATA_KEY_TENANT_ID (METADATA_KEY,TENANT_ID) UNIQUE KEY METADATA_KEY_TENANT_ID (METADATA_KEY,TENANT_ID)

@ -959,7 +959,7 @@ CREATE TABLE DM_METADATA (
METADATA_ID NUMBER(10) NOT NULL, METADATA_ID NUMBER(10) NOT NULL,
DATA_TYPE VARCHAR2(16) NOT NULL, DATA_TYPE VARCHAR2(16) NOT NULL,
METADATA_KEY VARCHAR2(128) 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, TENANT_ID INTEGER NOT NULL,
CONSTRAINT PK_DM_METADATA PRIMARY KEY (METADATA_ID), CONSTRAINT PK_DM_METADATA PRIMARY KEY (METADATA_ID),
CONSTRAINT METADATA_KEY_TENANT_ID UNIQUE (METADATA_KEY, TENANT_ID) CONSTRAINT METADATA_KEY_TENANT_ID UNIQUE (METADATA_KEY, TENANT_ID)

@ -625,7 +625,7 @@ CREATE TABLE IF NOT EXISTS DM_METADATA (
METADATA_ID BIGSERIAL PRIMARY KEY, METADATA_ID BIGSERIAL PRIMARY KEY,
DATA_TYPE VARCHAR(16) NOT NULL, DATA_TYPE VARCHAR(16) NOT NULL,
METADATA_KEY VARCHAR(128) 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, TENANT_ID INTEGER NOT NULL,
CONSTRAINT METADATA_KEY_TENANT_ID UNIQUE(METADATA_KEY, TENANT_ID) CONSTRAINT METADATA_KEY_TENANT_ID UNIQUE(METADATA_KEY, TENANT_ID)
); );

Loading…
Cancel
Save