Merge "Separate metric name and dimension validation"

This commit is contained in:
Jenkins 2015-07-06 17:03:13 +00:00 committed by Gerrit Code Review
commit 5377aa6cb0
8 changed files with 19 additions and 36 deletions

View File

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

View File

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

View File

@ -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.
*/

View File

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

View File

@ -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),

View File

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

View File

@ -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),

View File

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