refactored queue validator
This commit is contained in:
parent
c21a9c1164
commit
ac3b133ec0
@ -17,6 +17,7 @@ package org.thingsboard.server.dao.service;
|
|||||||
|
|
||||||
import com.fasterxml.jackson.databind.JsonNode;
|
import com.fasterxml.jackson.databind.JsonNode;
|
||||||
import lombok.extern.slf4j.Slf4j;
|
import lombok.extern.slf4j.Slf4j;
|
||||||
|
import org.apache.commons.lang3.StringUtils;
|
||||||
import org.thingsboard.server.common.data.BaseData;
|
import org.thingsboard.server.common.data.BaseData;
|
||||||
import org.thingsboard.server.common.data.EntityType;
|
import org.thingsboard.server.common.data.EntityType;
|
||||||
import org.thingsboard.server.common.data.id.TenantId;
|
import org.thingsboard.server.common.data.id.TenantId;
|
||||||
@ -36,6 +37,11 @@ public abstract class DataValidator<D extends BaseData<?>> {
|
|||||||
private static final Pattern EMAIL_PATTERN =
|
private static final Pattern EMAIL_PATTERN =
|
||||||
Pattern.compile("^[A-Z0-9._%+-]+@[A-Z0-9.-]+\\.[A-Z]{2,}$", Pattern.CASE_INSENSITIVE);
|
Pattern.compile("^[A-Z0-9._%+-]+@[A-Z0-9.-]+\\.[A-Z]{2,}$", Pattern.CASE_INSENSITIVE);
|
||||||
|
|
||||||
|
private static final Pattern QUEUE_PATTERN = Pattern.compile("^[a-zA-Z0-9_.\\-]+$");
|
||||||
|
|
||||||
|
private static final String NAME = "name";
|
||||||
|
private static final String TOPIC = "topic";
|
||||||
|
|
||||||
// Returns old instance of the same object that is fetched during validation.
|
// Returns old instance of the same object that is fetched during validation.
|
||||||
public D validate(D data, Function<D, TenantId> tenantIdFunction) {
|
public D validate(D data, Function<D, TenantId> tenantIdFunction) {
|
||||||
try {
|
try {
|
||||||
@ -134,4 +140,22 @@ public abstract class DataValidator<D extends BaseData<?>> {
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
protected static void validateQueueName(String name) {
|
||||||
|
validateQueueNameOrTopic(name, NAME);
|
||||||
|
}
|
||||||
|
|
||||||
|
protected static void validateQueueTopic(String topic) {
|
||||||
|
validateQueueNameOrTopic(topic, TOPIC);
|
||||||
|
}
|
||||||
|
|
||||||
|
private static void validateQueueNameOrTopic(String value, String fieldName) {
|
||||||
|
if (StringUtils.isEmpty(value)) {
|
||||||
|
throw new DataValidationException(String.format("Queue %s should be specified!", fieldName));
|
||||||
|
}
|
||||||
|
if (!QUEUE_PATTERN.matcher(value).matches()) {
|
||||||
|
throw new DataValidationException(
|
||||||
|
String.format("Queue %s contains a character other than ASCII alphanumerics, '.', '_' and '-'!", fieldName));
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|||||||
@ -15,7 +15,6 @@
|
|||||||
*/
|
*/
|
||||||
package org.thingsboard.server.dao.service.validator;
|
package org.thingsboard.server.dao.service.validator;
|
||||||
|
|
||||||
import org.apache.commons.lang3.StringUtils;
|
|
||||||
import org.springframework.beans.factory.annotation.Autowired;
|
import org.springframework.beans.factory.annotation.Autowired;
|
||||||
import org.springframework.stereotype.Component;
|
import org.springframework.stereotype.Component;
|
||||||
import org.thingsboard.server.common.data.TenantProfile;
|
import org.thingsboard.server.common.data.TenantProfile;
|
||||||
@ -29,8 +28,6 @@ import org.thingsboard.server.dao.queue.QueueDao;
|
|||||||
import org.thingsboard.server.dao.service.DataValidator;
|
import org.thingsboard.server.dao.service.DataValidator;
|
||||||
import org.thingsboard.server.dao.tenant.TbTenantProfileCache;
|
import org.thingsboard.server.dao.tenant.TbTenantProfileCache;
|
||||||
|
|
||||||
import java.util.regex.Pattern;
|
|
||||||
|
|
||||||
@Component
|
@Component
|
||||||
public class QueueValidator extends DataValidator<Queue> {
|
public class QueueValidator extends DataValidator<Queue> {
|
||||||
|
|
||||||
@ -40,8 +37,6 @@ public class QueueValidator extends DataValidator<Queue> {
|
|||||||
@Autowired
|
@Autowired
|
||||||
private TbTenantProfileCache tenantProfileCache;
|
private TbTenantProfileCache tenantProfileCache;
|
||||||
|
|
||||||
private final Pattern queueTopicPattern = Pattern.compile("^[a-zA-Z0-9_.\\-]+$");
|
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
protected void validateCreate(TenantId tenantId, Queue queue) {
|
protected void validateCreate(TenantId tenantId, Queue queue) {
|
||||||
if (queueDao.findQueueByTenantIdAndName(tenantId, queue.getName()) != null) {
|
if (queueDao.findQueueByTenantIdAndName(tenantId, queue.getName()) != null) {
|
||||||
@ -77,18 +72,9 @@ public class QueueValidator extends DataValidator<Queue> {
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
if (StringUtils.isEmpty(queue.getName())) {
|
validateQueueName(queue.getName());
|
||||||
throw new DataValidationException("Queue name should be specified!");
|
validateQueueTopic(queue.getTopic());
|
||||||
}
|
|
||||||
if (!queueTopicPattern.matcher(queue.getName()).matches()) {
|
|
||||||
throw new DataValidationException("Queue name contains a character other than ASCII alphanumerics, '.', '_' and '-'!");
|
|
||||||
}
|
|
||||||
if (StringUtils.isEmpty(queue.getTopic())) {
|
|
||||||
throw new DataValidationException("Queue topic should be specified!");
|
|
||||||
}
|
|
||||||
if (!queueTopicPattern.matcher(queue.getTopic()).matches()) {
|
|
||||||
throw new DataValidationException("Queue topic contains a character other than ASCII alphanumerics, '.', '_' and '-'!");
|
|
||||||
}
|
|
||||||
if (queue.getPollInterval() < 1) {
|
if (queue.getPollInterval() < 1) {
|
||||||
throw new DataValidationException("Queue poll interval should be more then 0!");
|
throw new DataValidationException("Queue poll interval should be more then 0!");
|
||||||
}
|
}
|
||||||
|
|||||||
@ -34,7 +34,6 @@ import java.util.HashSet;
|
|||||||
import java.util.List;
|
import java.util.List;
|
||||||
import java.util.Optional;
|
import java.util.Optional;
|
||||||
import java.util.Set;
|
import java.util.Set;
|
||||||
import java.util.regex.Pattern;
|
|
||||||
|
|
||||||
@Component
|
@Component
|
||||||
public class TenantProfileDataValidator extends DataValidator<TenantProfile> {
|
public class TenantProfileDataValidator extends DataValidator<TenantProfile> {
|
||||||
@ -46,8 +45,6 @@ public class TenantProfileDataValidator extends DataValidator<TenantProfile> {
|
|||||||
@Lazy
|
@Lazy
|
||||||
private TenantProfileService tenantProfileService;
|
private TenantProfileService tenantProfileService;
|
||||||
|
|
||||||
private final Pattern queueTopicPattern = Pattern.compile("^[a-zA-Z0-9_.\\-]+$");
|
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
protected void validateDataImpl(TenantId tenantId, TenantProfile tenantProfile) {
|
protected void validateDataImpl(TenantId tenantId, TenantProfile tenantProfile) {
|
||||||
if (StringUtils.isEmpty(tenantProfile.getName())) {
|
if (StringUtils.isEmpty(tenantProfile.getName())) {
|
||||||
@ -110,18 +107,9 @@ public class TenantProfileDataValidator extends DataValidator<TenantProfile> {
|
|||||||
}
|
}
|
||||||
|
|
||||||
private void validateQueueConfiguration(TenantProfileQueueConfiguration queue) {
|
private void validateQueueConfiguration(TenantProfileQueueConfiguration queue) {
|
||||||
if (StringUtils.isEmpty(queue.getName())) {
|
validateQueueName(queue.getName());
|
||||||
throw new DataValidationException("Queue name should be specified!");
|
validateQueueTopic(queue.getTopic());
|
||||||
}
|
|
||||||
if (!queueTopicPattern.matcher(queue.getName()).matches()) {
|
|
||||||
throw new DataValidationException("Queue name contains a character other than ASCII alphanumerics, '.', '_' and '-'!");
|
|
||||||
}
|
|
||||||
if (StringUtils.isEmpty(queue.getTopic())) {
|
|
||||||
throw new DataValidationException("Queue topic should be specified!");
|
|
||||||
}
|
|
||||||
if (!queueTopicPattern.matcher(queue.getTopic()).matches()) {
|
|
||||||
throw new DataValidationException("Queue topic contains a character other than ASCII alphanumerics, '.', '_' and '-'!");
|
|
||||||
}
|
|
||||||
if (queue.getPollInterval() < 1) {
|
if (queue.getPollInterval() < 1) {
|
||||||
throw new DataValidationException("Queue poll interval should be more then 0!");
|
throw new DataValidationException("Queue poll interval should be more then 0!");
|
||||||
}
|
}
|
||||||
|
|||||||
Loading…
x
Reference in New Issue
Block a user