From 00510deced2bed88f7afdc43a428440846698e22 Mon Sep 17 00:00:00 2001 From: Ryan Brandt Date: Wed, 1 Jul 2015 14:30:07 -0600 Subject: [PATCH] Separate metric name and dimension validation Change-Id: I6519ac01ea9616f28ab8c8c7aa7605af08b787dc --- .../monasca/api/app/command/UpdateAlarmCommand.java | 1 + .../api/app/validation/MetricNameValidation.java | 4 ++-- .../java/monasca/api/app/validation/Validation.java | 12 ------------ .../java/monasca/api/resource/AlarmResource.java | 4 +++- .../monasca/api/resource/MeasurementResource.java | 7 ++++--- .../java/monasca/api/resource/MetricResource.java | 12 +++++------- .../java/monasca/api/resource/StatisticResource.java | 6 ++++-- .../monasca/api/app/validation/ValidationTest.java | 9 --------- 8 files changed, 19 insertions(+), 36 deletions(-) diff --git a/java/src/main/java/monasca/api/app/command/UpdateAlarmCommand.java b/java/src/main/java/monasca/api/app/command/UpdateAlarmCommand.java index 34769b61e..1e9cb98d6 100644 --- a/java/src/main/java/monasca/api/app/command/UpdateAlarmCommand.java +++ b/java/src/main/java/monasca/api/app/command/UpdateAlarmCommand.java @@ -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; diff --git a/java/src/main/java/monasca/api/app/validation/MetricNameValidation.java b/java/src/main/java/monasca/api/app/validation/MetricNameValidation.java index 5bb8a7b5e..eef3a0dac 100644 --- a/java/src/main/java/monasca/api/app/validation/MetricNameValidation.java +++ b/java/src/main/java/monasca/api/app/validation/MetricNameValidation.java @@ -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); } } diff --git a/java/src/main/java/monasca/api/app/validation/Validation.java b/java/src/main/java/monasca/api/app/validation/Validation.java index 30a29ca5f..b66972fb5 100644 --- a/java/src/main/java/monasca/api/app/validation/Validation.java +++ b/java/src/main/java/monasca/api/app/validation/Validation.java @@ -80,18 +80,6 @@ public final class Validation { } } - /** - * @throws WebApplicationException if the {@code value} is null or empty. - */ - public static Map parseAndValidateNameAndDimensions(String name, - String dimensionsStr, - boolean nameRequiredFlag) { - Map dimensions = parseAndValidateDimensions(dimensionsStr); - - MetricNameValidation.validate(name, nameRequiredFlag); - return dimensions; - } - /** * @throws WebApplicationException if the {@code value} is null or empty. */ diff --git a/java/src/main/java/monasca/api/resource/AlarmResource.java b/java/src/main/java/monasca/api/resource/AlarmResource.java index 67bc928bb..22894b12c 100644 --- a/java/src/main/java/monasca/api/resource/AlarmResource.java +++ b/java/src/main/java/monasca/api/resource/AlarmResource.java @@ -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 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); diff --git a/java/src/main/java/monasca/api/resource/MeasurementResource.java b/java/src/main/java/monasca/api/resource/MeasurementResource.java index c69bced73..9beb38bfe 100644 --- a/java/src/main/java/monasca/api/resource/MeasurementResource.java +++ b/java/src/main/java/monasca/api/resource/MeasurementResource.java @@ -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 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), diff --git a/java/src/main/java/monasca/api/resource/MetricResource.java b/java/src/main/java/monasca/api/resource/MetricResource.java index 65c92bf6a..942095d93 100644 --- a/java/src/main/java/monasca/api/resource/MetricResource.java +++ b/java/src/main/java/monasca/api/resource/MetricResource.java @@ -114,13 +114,11 @@ public class MetricResource { @QueryParam("offset") String offset, @QueryParam("limit") String limit) throws Exception { - Map dimensions = null; - - if (! Strings.isNullOrEmpty(dimensionsStr)) { - dimensions = Validation.parseAndValidateNameAndDimensions(name, dimensionsStr, false); - } else if (! Strings.isNullOrEmpty(name)) { - MetricNameValidation.validate(name, false); - } + Map + 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); diff --git a/java/src/main/java/monasca/api/resource/StatisticResource.java b/java/src/main/java/monasca/api/resource/StatisticResource.java index 25d03ccd4..bea5305b2 100644 --- a/java/src/main/java/monasca/api/resource/StatisticResource.java +++ b/java/src/main/java/monasca/api/resource/StatisticResource.java @@ -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 statistics = Validation.parseValidateAndNormalizeStatistics(COMMA_SPLITTER.split(statisticsStr)); Map 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), diff --git a/java/src/test/java/monasca/api/app/validation/ValidationTest.java b/java/src/test/java/monasca/api/app/validation/ValidationTest.java index a600bad75..7968d6c65 100644 --- a/java/src/test/java/monasca/api/app/validation/ValidationTest.java +++ b/java/src/test/java/monasca/api/app/validation/ValidationTest.java @@ -22,15 +22,6 @@ import java.util.Map; @Test public class ValidationTest { - - public void testSimpleParseAndValidateNameAndDimensions() { - final Map 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 dimensions = Validation.parseAndValidateDimensions("aa:bb,cc:dd"); assertEquals(dimensions.size(), 2);