Merge "Separate metric name and dimension validation"
This commit is contained in:
commit
5377aa6cb0
|
@ -19,6 +19,7 @@ import javax.validation.constraints.NotNull;
|
|||
import monasca.common.model.alarm.AlarmState;
|
||||
|
||||
public class UpdateAlarmCommand {
|
||||
|
||||
@NotNull
|
||||
public AlarmState state;
|
||||
public String lifecycleState;
|
||||
|
|
|
@ -55,9 +55,9 @@ public class MetricNameValidation {
|
|||
|
||||
if (metricName.length() > CreateMetricCommand.MAX_NAME_LENGTH)
|
||||
throw Exceptions.unprocessableEntity("Metric name %s must be %d characters or less",
|
||||
metricName, CreateMetricCommand.MAX_NAME_LENGTH);
|
||||
metricName, CreateMetricCommand.MAX_NAME_LENGTH);
|
||||
if (!VALID_METRIC_NAME.matcher(metricName).matches())
|
||||
throw Exceptions.unprocessableEntity("Metric name %s may not contain: > < = { } ( ) ' \" \\ , ; &",
|
||||
metricName);
|
||||
metricName);
|
||||
}
|
||||
}
|
||||
|
|
|
@ -80,18 +80,6 @@ public final class Validation {
|
|||
}
|
||||
}
|
||||
|
||||
/**
|
||||
* @throws WebApplicationException if the {@code value} is null or empty.
|
||||
*/
|
||||
public static Map<String, String> parseAndValidateNameAndDimensions(String name,
|
||||
String dimensionsStr,
|
||||
boolean nameRequiredFlag) {
|
||||
Map<String, String> dimensions = parseAndValidateDimensions(dimensionsStr);
|
||||
|
||||
MetricNameValidation.validate(name, nameRequiredFlag);
|
||||
return dimensions;
|
||||
}
|
||||
|
||||
/**
|
||||
* @throws WebApplicationException if the {@code value} is null or empty.
|
||||
*/
|
||||
|
|
|
@ -41,6 +41,7 @@ import javax.ws.rs.core.UriInfo;
|
|||
|
||||
import monasca.api.app.AlarmService;
|
||||
import monasca.api.app.command.UpdateAlarmCommand;
|
||||
import monasca.api.app.validation.MetricNameValidation;
|
||||
import monasca.api.app.validation.Validation;
|
||||
import monasca.api.domain.model.alarm.Alarm;
|
||||
import monasca.api.domain.model.alarm.AlarmRepo;
|
||||
|
@ -156,7 +157,8 @@ public class AlarmResource {
|
|||
|
||||
Map<String, String> metricDimensions =
|
||||
Strings.isNullOrEmpty(metricDimensionsStr) ? null : Validation
|
||||
.parseAndValidateNameAndDimensions(metricName, metricDimensionsStr, false);
|
||||
.parseAndValidateDimensions(metricDimensionsStr);
|
||||
MetricNameValidation.validate(metricName, false);
|
||||
DateTime stateUpdatedStart =
|
||||
Validation.parseAndValidateDate(stateUpdatedStartStr,
|
||||
"state_updated_start_time", false);
|
||||
|
|
|
@ -31,6 +31,7 @@ import javax.ws.rs.core.Context;
|
|||
import javax.ws.rs.core.MediaType;
|
||||
import javax.ws.rs.core.UriInfo;
|
||||
|
||||
import monasca.api.app.validation.MetricNameValidation;
|
||||
import monasca.api.app.validation.Validation;
|
||||
import monasca.api.domain.model.measurement.MeasurementRepo;
|
||||
import monasca.api.infrastructure.persistence.PersistUtils;
|
||||
|
@ -65,14 +66,14 @@ public class MeasurementResource {
|
|||
@QueryParam("merge_metrics") String mergeMetricsFlag) throws Exception {
|
||||
|
||||
// Validate query parameters
|
||||
Validation.validateNotNullOrEmpty(name, "name");
|
||||
DateTime startTime = Validation.parseAndValidateDate(startTimeStr, "start_time", true);
|
||||
DateTime endTime = Validation.parseAndValidateDate(endTimeStr, "end_time", false);
|
||||
Validation.validateTimes(startTime, endTime);
|
||||
Map<String, String>
|
||||
dimensions =
|
||||
Strings.isNullOrEmpty(dimensionsStr) ? null : Validation
|
||||
.parseAndValidateNameAndDimensions(name, dimensionsStr, true);
|
||||
Strings.isNullOrEmpty(dimensionsStr) ? null : Validation
|
||||
.parseAndValidateDimensions(dimensionsStr);
|
||||
MetricNameValidation.validate(name, true);
|
||||
Boolean mergeMetricsFlagBool = Validation.validateAndParseMergeMetricsFlag(mergeMetricsFlag);
|
||||
|
||||
return Links.paginateMeasurements(this.persistUtils.getLimit(limit),
|
||||
|
|
|
@ -114,13 +114,11 @@ public class MetricResource {
|
|||
@QueryParam("offset") String offset,
|
||||
@QueryParam("limit") String limit)
|
||||
throws Exception {
|
||||
Map<String, String> dimensions = null;
|
||||
|
||||
if (! Strings.isNullOrEmpty(dimensionsStr)) {
|
||||
dimensions = Validation.parseAndValidateNameAndDimensions(name, dimensionsStr, false);
|
||||
} else if (! Strings.isNullOrEmpty(name)) {
|
||||
MetricNameValidation.validate(name, false);
|
||||
}
|
||||
Map<String, String>
|
||||
dimensions =
|
||||
Strings.isNullOrEmpty(dimensionsStr) ? null : Validation
|
||||
.parseAndValidateDimensions(dimensionsStr);
|
||||
MetricNameValidation.validate(name, false);
|
||||
|
||||
return Links.paginate(this.persistUtils.getLimit(limit),
|
||||
metricRepo.find(tenantId, name, dimensions, offset, this.persistUtils.getLimit(limit)), uriInfo);
|
||||
|
|
|
@ -34,6 +34,7 @@ import javax.ws.rs.core.Context;
|
|||
import javax.ws.rs.core.MediaType;
|
||||
import javax.ws.rs.core.UriInfo;
|
||||
|
||||
import monasca.api.app.validation.MetricNameValidation;
|
||||
import monasca.api.app.validation.Validation;
|
||||
import monasca.api.domain.model.statistic.StatisticRepo;
|
||||
import monasca.api.infrastructure.persistence.PersistUtils;
|
||||
|
@ -83,8 +84,9 @@ public class StatisticResource {
|
|||
List<String> statistics =
|
||||
Validation.parseValidateAndNormalizeStatistics(COMMA_SPLITTER.split(statisticsStr));
|
||||
Map<String, String> dimensions =
|
||||
Strings.isNullOrEmpty(dimensionsStr) ? null : Validation.parseAndValidateNameAndDimensions(
|
||||
name, dimensionsStr, true);
|
||||
Strings.isNullOrEmpty(dimensionsStr) ? null : Validation
|
||||
.parseAndValidateDimensions(dimensionsStr);
|
||||
MetricNameValidation.validate(name, true);
|
||||
Boolean mergeMetricsFlagBool = Validation.validateAndParseMergeMetricsFlag(mergeMetricsFlag);
|
||||
|
||||
return Links.paginateStatistics(this.persistUtils.getLimit(limit),
|
||||
|
|
|
@ -22,15 +22,6 @@ import java.util.Map;
|
|||
|
||||
@Test
|
||||
public class ValidationTest {
|
||||
|
||||
public void testSimpleParseAndValidateNameAndDimensions() {
|
||||
final Map<String, String> dimensions = Validation.parseAndValidateNameAndDimensions("cpu.idle_perc", "aa:bb,cc:dd",
|
||||
true);
|
||||
assertEquals(dimensions.size(), 2);
|
||||
assertEquals(dimensions.get("aa"), "bb");
|
||||
assertEquals(dimensions.get("cc"), "dd");
|
||||
}
|
||||
|
||||
public void testSimpleParseAndValidateDimensions() {
|
||||
final Map<String, String> dimensions = Validation.parseAndValidateDimensions("aa:bb,cc:dd");
|
||||
assertEquals(dimensions.size(), 2);
|
||||
|
|
Loading…
Reference in New Issue