Browse Source

Bug/several credentials for device (#3089)

* fix for device credentials

* fix in validateCreate
pull/3138/head
BohdanSmetanyuk 6 years ago
committed by GitHub
parent
commit
30210c7079
No known key found for this signature in database GPG Key ID: 4AEE18F83AFDEB23
  1. 16
      dao/src/main/java/org/thingsboard/server/dao/device/DeviceCredentialsServiceImpl.java
  2. 3
      dao/src/main/resources/sql/schema-entities-hsql.sql
  3. 3
      dao/src/main/resources/sql/schema-entities.sql

16
dao/src/main/java/org/thingsboard/server/dao/device/DeviceCredentialsServiceImpl.java

@ -84,7 +84,8 @@ public class DeviceCredentialsServiceImpl extends AbstractEntityService implemen
return deviceCredentialsDao.save(tenantId, deviceCredentials); return deviceCredentialsDao.save(tenantId, deviceCredentials);
} catch (Exception t) { } catch (Exception t) {
ConstraintViolationException e = extractConstraintViolationException(t).orElse(null); ConstraintViolationException e = extractConstraintViolationException(t).orElse(null);
if (e != null && e.getConstraintName() != null && e.getConstraintName().equalsIgnoreCase("device_credentials_id_unq_key")) { if (e != null && e.getConstraintName() != null
&& (e.getConstraintName().equalsIgnoreCase("device_credentials_id_unq_key") || e.getConstraintName().equalsIgnoreCase("device_credentials_device_id_unq_key"))) {
throw new DataValidationException("Specified credentials are already registered!"); throw new DataValidationException("Specified credentials are already registered!");
} else { } else {
throw t; throw t;
@ -111,14 +112,23 @@ public class DeviceCredentialsServiceImpl extends AbstractEntityService implemen
@Override @Override
protected void validateCreate(TenantId tenantId, DeviceCredentials deviceCredentials) { protected void validateCreate(TenantId tenantId, DeviceCredentials deviceCredentials) {
if (deviceCredentialsDao.findByDeviceId(tenantId, deviceCredentials.getDeviceId().getId()) != null) {
throw new DataValidationException("Credentials for this device are already specified!");
}
if (deviceCredentialsDao.findByCredentialsId(tenantId, deviceCredentials.getCredentialsId()) != null) {
throw new DataValidationException("Device credentials are already assigned to another device!");
}
} }
@Override @Override
protected void validateUpdate(TenantId tenantId, DeviceCredentials deviceCredentials) { protected void validateUpdate(TenantId tenantId, DeviceCredentials deviceCredentials) {
DeviceCredentials existingCredentials = deviceCredentialsDao.findById(tenantId, deviceCredentials.getUuidId()); if (deviceCredentialsDao.findById(tenantId, deviceCredentials.getUuidId()) == null) {
if (existingCredentials == null) {
throw new DataValidationException("Unable to update non-existent device credentials!"); throw new DataValidationException("Unable to update non-existent device credentials!");
} }
DeviceCredentials existingCredentials = deviceCredentialsDao.findByCredentialsId(tenantId, deviceCredentials.getCredentialsId());
if (existingCredentials != null && !existingCredentials.getId().equals(deviceCredentials.getId())) {
throw new DataValidationException("Device credentials are already assigned to another device!");
}
} }
@Override @Override

3
dao/src/main/resources/sql/schema-entities-hsql.sql

@ -142,7 +142,8 @@ CREATE TABLE IF NOT EXISTS device_credentials (
credentials_type varchar(255), credentials_type varchar(255),
credentials_value varchar, credentials_value varchar,
device_id uuid, device_id uuid,
CONSTRAINT device_credentials_id_unq_key UNIQUE (credentials_id) CONSTRAINT device_credentials_id_unq_key UNIQUE (credentials_id),
CONSTRAINT device_credentials_device_id_unq_key UNIQUE (device_id)
); );
CREATE TABLE IF NOT EXISTS event ( CREATE TABLE IF NOT EXISTS event (

3
dao/src/main/resources/sql/schema-entities.sql

@ -142,7 +142,8 @@ CREATE TABLE IF NOT EXISTS device_credentials (
credentials_type varchar(255), credentials_type varchar(255),
credentials_value varchar, credentials_value varchar,
device_id uuid, device_id uuid,
CONSTRAINT device_credentials_id_unq_key UNIQUE (credentials_id) CONSTRAINT device_credentials_id_unq_key UNIQUE (credentials_id),
CONSTRAINT device_credentials_device_id_unq_key UNIQUE (device_id)
); );
CREATE TABLE IF NOT EXISTS event ( CREATE TABLE IF NOT EXISTS event (

Loading…
Cancel
Save